# frozen_string_literal: true

# Copyright (c) 2017-2018 THL A29 Limited, a Tencent company. All Rights Reserved.
#
# Licensed 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.

require 'json'

module TencentCloud
  module Essbasic
    module V20210526
      class Client < TencentCloud::Common::AbstractClient

        def initialize(credential, region, profile = nil)
            api_version = '2021-05-26'
            api_endpoint = 'essbasic.tencentcloudapi.com'
            sdk_version = 'ESSBASIC_' + File.read(File.expand_path('../VERSION', __dir__)).strip
            super(credential, region, api_version, api_endpoint, sdk_version, profile)
        end


        # 用于批量撤销合同流程<br/>
        # 适用场景:
        # 如果某些合同流程当前至少还有一方没有签署,则可通过该接口取消该合同流程。常用于合同发错、内容填错,需要及时撤销的场景。<br/>
        # 通过签署流程编号批量撤销合同,单次最多支持撤销100份合同。只有合同的发起人或者发起方企业的超管/法人才能进行合同撤销。需要注意的是,若合同处于以下已终止状态,则不可撤销:<br/>
        # - 已全部签署完成
        # - 已拒签
        # - 已过期
        # - 已撤回
        # - 拒绝填写
        # - 已解除

        # <br/>
        # 满足撤销条件的合同会发起异步撤销流程,而不满足撤销条件的合同将返回失败原因。合同撤销成功后,会通过合同状态为 CANCEL 的回调消息通知调用方。具体的回调消息内容可参考 <a href="https://qian.tencent.com/developers/partner/callback_types_contracts_sign" target="_blank">合同状态变更回调消息</a>。
        # <br/><br/>
        # 注:
        # `如果合同流程中的参与方均已签署完毕,则无法通过该接口撤销合同,`签署完毕的合同需要双方走解除流程将合同作废,可以参考<a href="https://qian.tencent.com/developers/partnerApis/startFlows/ChannelCreateReleaseFlow" target="_blank">发起解除合同流程</a>接口。

        # @param request: Request instance for ChannelBatchCancelFlows.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelBatchCancelFlowsRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelBatchCancelFlowsResponse`
        def ChannelBatchCancelFlows(request)
          body = send_request('ChannelBatchCancelFlows', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelBatchCancelFlowsResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 撤销签署流程接口

        # 适用场景:如果某个合同流程当前至少还有一方没有签署,则可通过该接口取消该合同流程。常用于合同发错、内容填错,需要及时撤销的场景。
        # <ul><li> `可撤回合同状态` :未全部签署完成</li>
        # <li> `不撤回合同状态` :已全部签署完成、已拒签、已过期、已撤回、拒绝填写、已解除等合同状态。</li></ul>
        # 注:
        # <ul><li>能撤回合同的只能是 `合同的发起人或者发起方企业的超管、法人`  </li>
        # <li>签署完毕的合同需要双方走解除流程将合同作废,可以参考<a href="https://qian.tencent.com/developers/partnerApis/startFlows/ChannelCreateReleaseFlow" target="_blank">发起解除合同流程接口</a>。</li></ul>

        # @param request: Request instance for ChannelCancelFlow.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelCancelFlowRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelCancelFlowResponse`
        def ChannelCancelFlow(request)
          body = send_request('ChannelCancelFlow', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelCancelFlowResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 此接口(CancelMultiFlowSignQRCode)用于废除一码多扫流程签署二维码。
        # 该接口所需的二维码ID,源自[创建一码多扫流程签署二维码](https://qian.tencent.com/developers/partnerApis/templates/ChannelCreateMultiFlowSignQRCode)生成的。
        # 如果该二维码尚处于有效期内,可通过本接口将其设置为失效状态。

        # @param request: Request instance for ChannelCancelMultiFlowSignQRCode.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelCancelMultiFlowSignQRCodeRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelCancelMultiFlowSignQRCodeResponse`
        def ChannelCancelMultiFlowSignQRCode(request)
          body = send_request('ChannelCancelMultiFlowSignQRCode', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelCancelMultiFlowSignQRCodeResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 此接口(ChannelCancelUserAutoSignEnableUrl)用来撤销发送给个人用户的自动签开通链接,撤销后对应的个人用户开通链接失效。若个人用户已经完成开通,将无法撤销。(处方单场景专用,使用此接口请与客户经理确认)

        # @param request: Request instance for ChannelCancelUserAutoSignEnableUrl.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelCancelUserAutoSignEnableUrlRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelCancelUserAutoSignEnableUrlResponse`
        def ChannelCancelUserAutoSignEnableUrl(request)
          body = send_request('ChannelCancelUserAutoSignEnableUrl', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelCancelUserAutoSignEnableUrlResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 指定需要批量撤销的签署流程Id,获取批量撤销链接 - 不建议使用此接口,可使用ChannelBatchCancelFlows
        # 客户指定需要撤销的签署流程Id,最多100个,超过100不处理;
        # 接口调用成功返回批量撤销合同的链接,通过链接跳转到电子签小程序完成批量撤销;

        # 可以撤回:未全部签署完成
        #  不可以撤回:已全部签署完成、已拒签、已过期、已撤回、拒绝填写、已解除等合同状态。

        # 注意:
        # 能撤回合同的只能是合同的发起人或者发起企业的超管、法人

        # @param request: Request instance for ChannelCreateBatchCancelFlowUrl.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateBatchCancelFlowUrlRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateBatchCancelFlowUrlResponse`
        def ChannelCreateBatchCancelFlowUrl(request)
          body = send_request('ChannelCreateBatchCancelFlowUrl', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelCreateBatchCancelFlowUrlResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 通过此接口,创建小程序批量签署链接,个人/企业员工点击此链接即可跳转小程序进行批量签署。
        # 请确保生成链接时候的身份信息和签署合同参与方的信息保持一致。

        # 注:
        # - 参与人点击链接后需短信验证码才能查看合同内容。
        # - 企业用户批量签署,需要传OrganizationName(参与方所在企业名称)参数生成签署链接,`请确保此企业已完成腾讯电子签企业认证`。
        # - 个人批量签署,签名区`仅支持手写签名`。

        # @param request: Request instance for ChannelCreateBatchSignUrl.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateBatchSignUrlRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateBatchSignUrlResponse`
        def ChannelCreateBatchSignUrl(request)
          body = send_request('ChannelCreateBatchSignUrl', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelCreateBatchSignUrlResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 此接口(ChannelCreateBoundFlows)用于子客领取合同,经办人需要有相应的角色,合同不能重复领取。

        # @param request: Request instance for ChannelCreateBoundFlows.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateBoundFlowsRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateBoundFlowsResponse`
        def ChannelCreateBoundFlows(request)
          body = send_request('ChannelCreateBoundFlows', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelCreateBoundFlowsResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 上传了word、excel、图片文件后,通过该接口发起文件转换任务,将word、excel、图片文件转换为pdf文件。

        # @param request: Request instance for ChannelCreateConvertTaskApi.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateConvertTaskApiRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateConvertTaskApiResponse`
        def ChannelCreateConvertTaskApi(request)
          body = send_request('ChannelCreateConvertTaskApi', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelCreateConvertTaskApiResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 本接口(ChannelCreateEmbedWebUrl)用于创建常规模块嵌入web的链接
        # 本接口支持创建:创建印章,创建模板,修改模板,预览模板,预览合同流程的web链接
        # 进入web连接后与当前控制台操作保持一致

        # @param request: Request instance for ChannelCreateEmbedWebUrl.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateEmbedWebUrlRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateEmbedWebUrlResponse`
        def ChannelCreateEmbedWebUrl(request)
          body = send_request('ChannelCreateEmbedWebUrl', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelCreateEmbedWebUrlResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 适用场景:
        # 当通过模板或文件发起合同时,若未指定企业签署人信息,则可调用此接口动态补充签署人。同一签署人只允许补充一人,最终实际签署人取决于谁先领取合同完成签署。

        # 限制条件:
        # 1. 本企业(发起方企业)企业签署人仅支持通过企业名称+姓名+手机号进行补充。
        # 2. 个人签署人仅支持通过姓名+手机号进行补充。

        # @param request: Request instance for ChannelCreateFlowApprovers.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateFlowApproversRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateFlowApproversResponse`
        def ChannelCreateFlowApprovers(request)
          body = send_request('ChannelCreateFlowApprovers', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelCreateFlowApproversResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 接口(ChannelCreateFlowByFiles)用PDF文件创建签署流程。

        # 适用场景:适用非制式的合同文件签署,开发者有每个签署流程的PDF,可以通过该接口传入完整的PDF文件及流程信息生成待签署的合同流程。

        # **注**:
        # <ul>
        # <li>此接口静默签(企业自动签)能力为白名单功能,使用前请联系对接的客户经理沟通。</li>
        # <li>此接口需要依赖<a href="https://qian.tencent.com/developers/partnerApis/files/UploadFiles" target="_blank">文件上传接口</a>生成pdf资源编号(FileIds)进行使用。整体的逻辑如下图</li>
        # </ul>

        # ![image](https://dyn.ess.tencent.cn/guide/capi/ChannelCreateFlowByFiles.png)

        # **可以作为发起方和签署方的角色列表**
        # <table>
        # <thead>
        # <tr>
        # <th>场景编号</th>
        # <th>可作为发起方类型</th>
        # <th>可作为签署方的类型</th>
        # </tr>
        # </thead>

        # <tbody>
        # <tr>
        # <td>场景一</td>
        # <td>第三方子企业A员工</td>
        # <td>第三方子企业A员工</td>
        # </tr>

        # <tr>
        # <td>场景二</td>
        # <td>第三方子企业A员工</td>
        # <td>第三方子企业B(不指定经办人)</td>
        # </tr>

        # <tr>
        # <td>场景三</td>
        # <td>第三方子企业A员工</td>
        # <td>第三方子企业B员工</td>
        # </tr>

        # <tr>
        # <td>场景四</td>
        # <td>第三方子企业A员工</td>
        # <td>个人/自然人</td>
        # </tr>

        # <tr>
        # <td>场景五</td>
        # <td>第三方子企业A员工</td>
        # <td>SaaS平台企业员工</td>
        # </tr>
        # </tbody>
        # </table>

        # **注**:
        # `1. 发起合同时候,  作为发起方的第三方子企业A员工的企业和员工必须经过实名, 而作为签署方的第三方子企业A员工/个人/自然人/SaaS平台企业员工/第三方子企业B员工企业中的企业和个人/员工可以未实名`
        # `2. 不同类型的签署方传参不同, 可以参考开发者中心的FlowApproverInfo结构体说明`

        # @param request: Request instance for ChannelCreateFlowByFiles.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateFlowByFilesRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateFlowByFilesResponse`
        def ChannelCreateFlowByFiles(request)
          body = send_request('ChannelCreateFlowByFiles', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelCreateFlowByFilesResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 接口(ChannelCreateFlowGroupByFiles)用于使用 PDF 文件创建合同组签署流程。

        # 合同组是将多个合同签署流程组织在一起,多个合同同时创建,每个签署方得到一个签署链接,`一次完成合同组中多个合同的签署`。合同组的合同`不能拆分一个一个签署`,只能作为一个整体签署。

        # 适用场景:该接口适用于需要一次性完成多份合同签署的情况,多份合同一般具有关联性,用户以目录的形式查看合同。



        # **注**:
        # <ul>
        # <li>此接口静默签(企业自动签)能力为白名单功能,使用前请联系对接的客户经理沟通。</li>
        # <li>合同组暂不支持抄送功能</li>
        # <li>此接口需要依赖<a href="https://qian.tencent.com/developers/partnerApis/files/UploadFiles" target="_blank">文件上传接口</a>生成pdf资源编号(FileIds)进行使用。</li>
        # </ul>

        # **可以作为发起方和签署方的角色列表**
        # <table>
        # <thead>
        # <tr>
        # <th>场景编号</th>
        # <th>可作为发起方类型</th>
        # <th>可作为签署方的类型</th>
        # </tr>
        # </thead>

        # <tbody>
        # <tr>
        # <td>场景一</td>
        # <td>第三方子企业A员工</td>
        # <td>第三方子企业A员工</td>
        # </tr>

        # <tr>
        # <td>场景二</td>
        # <td>第三方子企业A员工</td>
        # <td>第三方子企业B(不指定经办人)</td>
        # </tr>

        # <tr>
        # <td>场景三</td>
        # <td>第三方子企业A员工</td>
        # <td>第三方子企业B员工</td>
        # </tr>

        # <tr>
        # <td>场景四</td>
        # <td>第三方子企业A员工</td>
        # <td>个人/自然人</td>
        # </tr>

        # <tr>
        # <td>场景五</td>
        # <td>第三方子企业A员工</td>
        # <td>SaaS平台企业员工</td>
        # </tr>
        # </tbody>
        # </table>

        # **注**:
        # `1. 发起合同时候,  作为发起方的第三方子企业A员工的企业和员工必须经过实名, 而作为签署方的第三方子企业A员工/个人/自然人/SaaS平台企业员工/第三方子企业B员工企业中的企业和个人/员工可以未实名`

        # `2. 不同类型的签署方传参不同, 可以参考开发者中心的FlowApproverInfo结构体说明`

        # @param request: Request instance for ChannelCreateFlowGroupByFiles.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateFlowGroupByFilesRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateFlowGroupByFilesResponse`
        def ChannelCreateFlowGroupByFiles(request)
          body = send_request('ChannelCreateFlowGroupByFiles', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelCreateFlowGroupByFilesResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 接口(ChannelCreateFlowGroupByTemplates)用于通过多模板创建合同组签署流程。

        # 合同组是将多个合同签署流程组织在一起,多个合同同时创建,每个签署方得到一个签署链接,`一次完成合同组中多个合同的签署`。合同组的合同`不能拆分一个一个签署`,只能作为一个整体签署。

        # 适用场景:该接口适用于需要一次性完成多份合同签署的情况,多份合同一般具有关联性,用户以目录的形式查看合同。

        # **注**:
        # <ul>
        # <li>此接口静默签(企业自动签)能力为白名单功能,使用前请联系对接的客户经理沟通。</li>
        # <li>合同组暂不支持抄送功能</li>
        # </ul>

        # **可以作为发起方和签署方的角色列表**
        # <table>
        # <thead>
        # <tr>
        # <th>场景编号</th>
        # <th>可作为发起方类型</th>
        # <th>可作为签署方的类型</th>
        # </tr>
        # </thead>

        # <tbody>
        # <tr>
        # <td>场景一</td>
        # <td>第三方子企业A员工</td>
        # <td>第三方子企业A员工</td>
        # </tr>

        # <tr>
        # <td>场景二</td>
        # <td>第三方子企业A员工</td>
        # <td>第三方子企业B(不指定经办人)</td>
        # </tr>

        # <tr>
        # <td>场景三</td>
        # <td>第三方子企业A员工</td>
        # <td>第三方子企业B员工</td>
        # </tr>

        # <tr>
        # <td>场景四</td>
        # <td>第三方子企业A员工</td>
        # <td>个人/自然人</td>
        # </tr>

        # <tr>
        # <td>场景五</td>
        # <td>第三方子企业A员工</td>
        # <td>SaaS平台企业员工</td>
        # </tr>
        # </tbody>
        # </table>

        # **注**:
        # `1. 发起合同时候,  作为发起方的第三方子企业A员工的企业和员工必须经过实名, 而作为签署方的第三方子企业A员工/个人/自然人/SaaS平台企业员工/第三方子企业B员工企业中的企业和个人/员工可以未实名`

        # `2. 不同类型的签署方传参不同, 可以参考开发者中心的FlowApproverInfo结构体说明`

        # @param request: Request instance for ChannelCreateFlowGroupByTemplates.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateFlowGroupByTemplatesRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateFlowGroupByTemplatesResponse`
        def ChannelCreateFlowGroupByTemplates(request)
          body = send_request('ChannelCreateFlowGroupByTemplates', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelCreateFlowGroupByTemplatesResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 指定需要批量催办的签署流程ID,批量催办合同,最多100个。需要符合以下条件的合同才可被催办:

        # 1. 合同中当前状态为“待签署”的签署人是催办的对象
        # 2. 每个合同只能催办一次

        # 注意:该接口无法直接调用,请联系客户经理申请使用。

        # @param request: Request instance for ChannelCreateFlowReminds.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateFlowRemindsRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateFlowRemindsResponse`
        def ChannelCreateFlowReminds(request)
          body = send_request('ChannelCreateFlowReminds', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelCreateFlowRemindsResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 提交企业流程审批结果
        # 目前存在两种审核操作,签署审核,发起审核
        # 签署审核:通过接口(CreateFlowsByTemplates或ChannelCreateFlowByFiles或ChannelCreatePrepareFlow)发起签署流程后,若指定了参数 NeedSignReview 为true,则可以调用此接口,指定operate=SignReview,提交企业内部签署审批结果;若签署流程状态正常,且本企业存在签署方未签署,同一签署流程可以多次提交签署审批结果,签署时的最后一个“审批结果”有效

        # 发起审核:通过接口ChannelCreatePrepareFlow指定发起后需要审核,则可以通过调用此接口,指定operate=CreateReview,提交企业内部审批结果,可多次提交,当通过后,后续提交结果无效

        # @param request: Request instance for ChannelCreateFlowSignReview.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateFlowSignReviewRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateFlowSignReviewResponse`
        def ChannelCreateFlowSignReview(request)
          body = send_request('ChannelCreateFlowSignReview', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelCreateFlowSignReviewResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 该接口用于发起合同后,生成C端签署人的签署链接<br/>
        # 注意:该接口目前签署人类型仅支持个人签署方(PERSON)<br/>
        # 注意:该接口可生成签署链接的C端签署人必须仅有手写签名和时间类型的签署控件<br/>
        # 注意:该接口返回的签署链接是用于APP集成的场景,支持APP打开或浏览器直接打开,不支持微信小程序嵌入。微信小程序请使用小程序跳转或半屏弹窗的方式<br/>

        # @param request: Request instance for ChannelCreateFlowSignUrl.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateFlowSignUrlRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateFlowSignUrlResponse`
        def ChannelCreateFlowSignUrl(request)
          body = send_request('ChannelCreateFlowSignUrl', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelCreateFlowSignUrlResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 此接口(ChannelCreateMultiFlowSignQRCode)用于创建一码多扫流程签署二维码。
        # 适用场景:无需填写签署人信息,可通过模板id生成签署二维码,签署人可通过扫描二维码补充签署信息进行实名签署。
        # 常用于提前不知道签署人的身份信息场景,例如:劳务工招工、大批量员工入职等场景。

        # **本接口适用于发起方没有填写控件的 B2C或者单C模板**

        # **若是B2C模板,还要满足以下任意一个条件**

        # - 模板中配置的签署顺序是无序
        # - B端企业的签署方式是静默签署
        # - B端企业是非首位签署

        # 通过一码多扫二维码发起的合同,合同涉及到的回调消息可参考文档[合同发起及签署相关回调
        # ]( https://qian.tencent.com/developers/partner/callback_types_contracts_sign)

        # 用户通过签署二维码发起合同时,因企业额度不足导致失败 会触发签署二维码相关回调,具体参考文档[签署二维码相关回调](https://qian.tencent.com/developers/partner/callback_types_commons#%E7%AD%BE%E7%BD%B2%E4%BA%8C%E7%BB%B4%E7%A0%81%E7%9B%B8%E5%85%B3%E5%9B%9E%E8%B0%83)

        # @param request: Request instance for ChannelCreateMultiFlowSignQRCode.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateMultiFlowSignQRCodeRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateMultiFlowSignQRCodeResponse`
        def ChannelCreateMultiFlowSignQRCode(request)
          body = send_request('ChannelCreateMultiFlowSignQRCode', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelCreateMultiFlowSignQRCodeResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 通过此接口,创建小程序批量签署链接,可以创建企业批量签署链接,员工只需点击链接即可跳转至控制台进行批量签署。

        # 注:
        # - 员工必须在企业下完成实名认证,且需作为批量签署合同的签署方或者领取方。
        # - 仅支持传入待签署或者待领取的合同,待填写暂不支持。
        # - 员工批量签署,支持多种签名方式,包括手写签名、临摹签名、系统签名、个人印章,暂不支持签批控件

        # @param request: Request instance for ChannelCreateOrganizationBatchSignUrl.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateOrganizationBatchSignUrlRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateOrganizationBatchSignUrlResponse`
        def ChannelCreateOrganizationBatchSignUrl(request)
          body = send_request('ChannelCreateOrganizationBatchSignUrl', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelCreateOrganizationBatchSignUrlResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 生成渠道子客编辑企业信息二维码

        # @param request: Request instance for ChannelCreateOrganizationModifyQrCode.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateOrganizationModifyQrCodeRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateOrganizationModifyQrCodeResponse`
        def ChannelCreateOrganizationModifyQrCode(request)
          body = send_request('ChannelCreateOrganizationModifyQrCode', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelCreateOrganizationModifyQrCodeResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 创建预发起合同
        # 通过此接口指定:合同,签署人,填写控件信息,生成预创建合同链接,点击后跳转到web页面完成合同创建并发起
        # 可指定合同信息不可更改,签署人信息不可更改
        # 合同发起后,填写及签署流程与现有操作流程一致
        # 注意:目前仅支持模板发起

        # @param request: Request instance for ChannelCreatePrepareFlow.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelCreatePrepareFlowRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelCreatePrepareFlowResponse`
        def ChannelCreatePrepareFlow(request)
          body = send_request('ChannelCreatePrepareFlow', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelCreatePrepareFlowResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 本接口(ChannelCreatePreparedPersonalEsign)用于创建导入个人印章(处方单场景专用,使用此接口请与客户经理确认)。

        # @param request: Request instance for ChannelCreatePreparedPersonalEsign.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelCreatePreparedPersonalEsignRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelCreatePreparedPersonalEsignResponse`
        def ChannelCreatePreparedPersonalEsign(request)
          body = send_request('ChannelCreatePreparedPersonalEsign', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelCreatePreparedPersonalEsignResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 发起解除协议,主要应用场景为:基于一份已经签署的合同,进行解除操作。
        # 合同发起人必须在电子签已经进行实名。

        # @param request: Request instance for ChannelCreateReleaseFlow.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateReleaseFlowRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateReleaseFlowResponse`
        def ChannelCreateReleaseFlow(request)
          body = send_request('ChannelCreateReleaseFlow', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelCreateReleaseFlowResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 此接口(ChannelCreateRole)用来创建企业自定义角色。

        # 适用场景1:创建当前企业的自定义角色,并且创建时不进行权限的设置(PermissionGroups 参数不传),角色中的权限内容可通过接口 ChannelModifyRole 完成更新。

        # 适用场景2:创建当前企业的自定义角色,并且创建时进行权限的设置(PermissionGroups 参数要传),权限树内容 PermissionGroups 可参考接口 ChannelDescribeRoles 的输出。此处注意权限树内容可能会更新,需尽量拉取最新的权限树内容,并且权限树内容 PermissionGroups 必须是一颗完整的权限树。

        # @param request: Request instance for ChannelCreateRole.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateRoleRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateRoleResponse`
        def ChannelCreateRole(request)
          body = send_request('ChannelCreateRole', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelCreateRoleResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 将指定印章授权给第三方平台子客企业下的某些员工

        # @param request: Request instance for ChannelCreateSealPolicy.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateSealPolicyRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateSealPolicyResponse`
        def ChannelCreateSealPolicy(request)
          body = send_request('ChannelCreateSealPolicy', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelCreateSealPolicyResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 企业方可以通过此接口获取个人用户开启自动签的跳转链接

        # @param request: Request instance for ChannelCreateUserAutoSignEnableUrl.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateUserAutoSignEnableUrlRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateUserAutoSignEnableUrlResponse`
        def ChannelCreateUserAutoSignEnableUrl(request)
          body = send_request('ChannelCreateUserAutoSignEnableUrl', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelCreateUserAutoSignEnableUrlResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 获取设置自动签印章小程序链接。

        # 注意:
        # <ul><li>需要<code>企业开通自动签</code>后使用。</li>
        # <li>仅支持<code>已经开通了自动签的个人</code>更换自动签印章。</li>
        # <li>链接有效期默认7天,<code>最多30天</code>。</li>
        # <li>该接口的链接适用于<code>小程序</code>端。</li>
        # <li>该接口不会扣除您的合同套餐,暂不参与计费。</li></ul>

        # @param request: Request instance for ChannelCreateUserAutoSignSealUrl.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateUserAutoSignSealUrlRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateUserAutoSignSealUrlResponse`
        def ChannelCreateUserAutoSignSealUrl(request)
          body = send_request('ChannelCreateUserAutoSignSealUrl', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelCreateUserAutoSignSealUrlResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 通过此接口,绑定员工角色,支持以电子签userId、客户系统userId两种方式调用。

        # @param request: Request instance for ChannelCreateUserRoles.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateUserRolesRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateUserRolesResponse`
        def ChannelCreateUserRoles(request)
          body = send_request('ChannelCreateUserRoles', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelCreateUserRolesResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 用来创建嵌入式页面个性化主题配置(例如是否展示电子签logo、定义主题色等),该接口配合其他所有可嵌入页面接口使用
        # 创建配置对当前第三方应用全局生效,如果多次调用,会以最后一次的配置为准

        # @param request: Request instance for ChannelCreateWebThemeConfig.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateWebThemeConfigRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelCreateWebThemeConfigResponse`
        def ChannelCreateWebThemeConfig(request)
          body = send_request('ChannelCreateWebThemeConfig', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelCreateWebThemeConfigResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 此接口(ChannelDeleteRole)用来删除企业自定义角色。

        # 注意:系统角色不可删除。

        # @param request: Request instance for ChannelDeleteRole.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelDeleteRoleRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelDeleteRoleResponse`
        def ChannelDeleteRole(request)
          body = send_request('ChannelDeleteRole', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelDeleteRoleResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 通过此接口,删除员工绑定的角色,支持以电子签userId、客户系统userId两种方式调用。

        # @param request: Request instance for ChannelDeleteRoleUsers.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelDeleteRoleUsersRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelDeleteRoleUsersResponse`
        def ChannelDeleteRoleUsers(request)
          body = send_request('ChannelDeleteRoleUsers', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelDeleteRoleUsersResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 删除指定印章下多个授权信息

        # @param request: Request instance for ChannelDeleteSealPolicies.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelDeleteSealPoliciesRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelDeleteSealPoliciesResponse`
        def ChannelDeleteSealPolicies(request)
          body = send_request('ChannelDeleteSealPolicies', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelDeleteSealPoliciesResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 用于分页查询企业员工信息列表,支持设置过滤条件以筛选员工查询结果。

        # @param request: Request instance for ChannelDescribeEmployees.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelDescribeEmployeesRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelDescribeEmployeesResponse`
        def ChannelDescribeEmployees(request)
          body = send_request('ChannelDescribeEmployees', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelDescribeEmployeesResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 查询流程填写控件内容,可以根据流程Id查询该流程相关联的填写控件信息和填写内容。 注意:使用此接口前,需要在【企业应用管理】-【应用集成】-【第三方应用管理】中开通【下载应用内全量合同文件及内容数据】功能。

        # @param request: Request instance for ChannelDescribeFlowComponents.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelDescribeFlowComponentsRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelDescribeFlowComponentsResponse`
        def ChannelDescribeFlowComponents(request)
          body = send_request('ChannelDescribeFlowComponents', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelDescribeFlowComponentsResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 查询子客企业电子印章,需要操作者具有管理印章权限
        # 客户指定需要获取的印章数量和偏移量,数量最多100,超过100按100处理;入参InfoType控制印章是否携带授权人信息,为1则携带,为0则返回的授权人信息为空数组。接口调用成功返回印章的信息列表还有企业印章的总数,只返回启用的印章。

        # @param request: Request instance for ChannelDescribeOrganizationSeals.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelDescribeOrganizationSealsRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelDescribeOrganizationSealsResponse`
        def ChannelDescribeOrganizationSeals(request)
          body = send_request('ChannelDescribeOrganizationSeals', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelDescribeOrganizationSealsResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 分页查询企业角色列表,法人的角色是系统保留角色,不会返回,按照角色创建时间升序排列。
        # 相关系统默认角色说明可参考文档:https://cloud.tencent.com/document/product/1323/61355

        # @param request: Request instance for ChannelDescribeRoles.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelDescribeRolesRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelDescribeRolesResponse`
        def ChannelDescribeRoles(request)
          body = send_request('ChannelDescribeRoles', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelDescribeRolesResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 通过此接口获取个人用户自动签的开通状态。

        # 注意: `处方单等特殊场景专用,此接口为白名单功能,使用前请联系对接的客户经理沟通。`

        # @param request: Request instance for ChannelDescribeUserAutoSignStatus.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelDescribeUserAutoSignStatusRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelDescribeUserAutoSignStatusResponse`
        def ChannelDescribeUserAutoSignStatus(request)
          body = send_request('ChannelDescribeUserAutoSignStatus', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelDescribeUserAutoSignStatusResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 通过此接口可以关闭个人用户自动签功能。
        # 无需对应的用户刷脸等方式同意即可关闭。

        # 注意:

        # <ul><li>处方单等特殊场景专用,此接口为白名单功能,使用前请联系对接的客户经理沟通。</li>
        # <li>如果此用户在开通时候绑定过个人自动签账号许可,  关闭此用户的自动签不会归还个人自动签账号许可的额度。</li></ul>

        # @param request: Request instance for ChannelDisableUserAutoSign.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelDisableUserAutoSignRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelDisableUserAutoSignResponse`
        def ChannelDisableUserAutoSign(request)
          body = send_request('ChannelDisableUserAutoSign', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelDisableUserAutoSignResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 查询转换任务的状态。转换任务Id通过发起转换任务接口(ChannelCreateConvertTaskApi)获取。
        # 注意:大文件转换所需的时间可能会比较长。

        # @param request: Request instance for ChannelGetTaskResultApi.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelGetTaskResultApiRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelGetTaskResultApiResponse`
        def ChannelGetTaskResultApi(request)
          body = send_request('ChannelGetTaskResultApi', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelGetTaskResultApiResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 此接口(ChannelModifyRole)用来更新企业自定义角色。

        # 适用场景1:更新当前企业的自定义角色的名称或描述等其他信息,更新时不进行权限的设置(PermissionGroups 参数不传)。

        # 适用场景2:更新当前企业的自定义角色的权限信息,更新时进行权限的设置(PermissionGroups 参数要传),权限树内容 PermissionGroups 可参考接口 ChannelDescribeRoles 的输出。此处注意权限树内容可能会更新,需尽量拉取最新的权限树内容,并且权限树内容 PermissionGroups 必须是一颗完整的权限树。

        # @param request: Request instance for ChannelModifyRole.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelModifyRoleRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelModifyRoleResponse`
        def ChannelModifyRole(request)
          body = send_request('ChannelModifyRole', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelModifyRoleResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 本接口(ChannelUpdateSealStatus)用于第三方应用平台为子客企业更新印章状态

        # @param request: Request instance for ChannelUpdateSealStatus.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelUpdateSealStatusRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelUpdateSealStatusResponse`
        def ChannelUpdateSealStatus(request)
          body = send_request('ChannelUpdateSealStatus', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelUpdateSealStatusResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 对合同流程文件进行数字签名验证,判断数字签名是否有效,合同文件内容是否被篡改。

        # @param request: Request instance for ChannelVerifyPdf.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ChannelVerifyPdfRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ChannelVerifyPdfResponse`
        def ChannelVerifyPdf(request)
          body = send_request('ChannelVerifyPdf', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ChannelVerifyPdfResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 提交申请出证报告任务并返回报告ID。

        # 注意:
        # <ul><li>使用此功能`需搭配出证套餐` ,使用前请联系对接的客户经理沟通。</li>
        # <li>操作人必须是`发起方或者签署方企业的(非走授权书认证)法人或者超管`。</li>
        # <li>合同流程必须所有参与方`已经签署完成`。</li>
        # <li>出证过程需一定时间,建议在`提交出证任务后的24小时之后`,通过<a href="https://qian.tencent.com/developers/partnerApis/certificate/DescribeChannelFlowEvidenceReport" target="_blank">获取出证报告任务执行结果</a>接口进行查询执行结果和出证报告的下载URL。</li></ul>

        # <svg id="SvgjsSvg1006" width="262" height="229" xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.com/svgjs"><defs id="SvgjsDefs1007"><pattern patternUnits="userSpaceOnUse" id="pattern_mark_0" width="300" height="300"><text x="150" y="100" fill="rgba(229,229,229,0.8)" font-size="18" transform="rotate(-45, 150, 150)" style="dominant-baseline: middle; text-anchor: middle;"></text></pattern><pattern patternUnits="userSpaceOnUse" id="pattern_mark_1" width="300" height="300"><text x="150" y="200" fill="rgba(229,229,229,0.8)" font-size="18" transform="rotate(-45, 150, 150)" style="dominant-baseline: middle; text-anchor: middle;"></text></pattern><marker id="SvgjsMarker1021" markerWidth="12" markerHeight="8" refX="9" refY="4" viewBox="0 0 12 8" orient="auto" markerUnits="userSpaceOnUse" stroke-dasharray="0,0"><path id="SvgjsPath1022" d="M0,0 L12,4 L0,8 L0,0" fill="#323232" stroke="#323232" stroke-width="1"></path></marker></defs><rect id="svgbackgroundid" width="262" height="229" fill="transparent"></rect><rect id="SvgjsRect1009" width="262" height="229" fill="url(#pattern_mark_0)"></rect><rect id="SvgjsRect1010" width="262" height="229" fill="url(#pattern_mark_1)"></rect><g id="SvgjsG1011" transform="translate(31.75,25)"><path id="SvgjsPath1012" d="M 0 0L 198 0L 198 59L 0 59Z" stroke="rgba(86,146,48,1)" stroke-width="1" fill-opacity="1" fill="#e7ebed"></path><g id="SvgjsG1013"><text id="SvgjsText1014" font-family="微软雅黑" text-anchor="middle" font-size="13px" width="178px" fill="#323232" font-weight="400" align="middle" lineHeight="125%" anchor="middle" family="微软雅黑" size="13px" weight="400" font-style="" opacity="1" y="10.375" transform="rotate(0)"><tspan id="SvgjsTspan1015" dy="16" x="99"><tspan id="SvgjsTspan1016" style="text-decoration:;fill: rgb(28, 30, 33);">CreateFlowEvidenceReport</tspan></tspan><tspan id="SvgjsTspan1017" dy="16" x="99"><tspan id="SvgjsTspan1018" style="text-decoration:;fill: rgb(51, 51, 51);">提交申请出证报告任务</tspan></tspan></text></g></g><g id="SvgjsG1019"><path id="SvgjsPath1020" d="M130.75 84.5L130.75 114.5L130.75 114.5L130.75 143.2" stroke="#323232" stroke-width="1" fill="none" marker-end="url(#SvgjsMarker1021)"></path></g><g id="SvgjsG1023" transform="translate(25,145)"><path id="SvgjsPath1024" d="M 0 0L 211.5 0L 211.5 59L 0 59Z" stroke="rgba(86,146,48,1)" stroke-width="1" fill-opacity="1" fill="#e7ebed"></path><g id="SvgjsG1025"><text id="SvgjsText1026" font-family="微软雅黑" text-anchor="middle" font-size="13px" width="192px" fill="#323232" font-weight="400" align="middle" lineHeight="125%" anchor="middle" family="微软雅黑" size="13px" weight="400" font-style="" opacity="1" y="10.375" transform="rotate(0)"><tspan id="SvgjsTspan1027" dy="16" x="106"><tspan id="SvgjsTspan1028" style="text-decoration:;fill: rgb(28, 30, 33);">DescribeFlowEvidenceReport</tspan></tspan><tspan id="SvgjsTspan1029" dy="16" x="106"><tspan id="SvgjsTspan1030" style="text-decoration:;fill: rgb(51, 51, 51);">获取出证报告任务执行结果</tspan></tspan></text></g></g></svg>

        # @param request: Request instance for CreateChannelFlowEvidenceReport.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::CreateChannelFlowEvidenceReportRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::CreateChannelFlowEvidenceReportResponse`
        def CreateChannelFlowEvidenceReport(request)
          body = send_request('CreateChannelFlowEvidenceReport', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = CreateChannelFlowEvidenceReportResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 此接口(CreateChannelOrganizationInfoChangeUrl)用于创建子客企业信息变更链接(需要在移动端打开,会跳转到微信小程序),支持创建企业超管变更链接或企业基础信息变更链接,通过入参 ChangeType 指定。


        # <h3 id="1-企业超管变更">1. 企业超管变更</h3>

        # <p>换成企业的其他员工来当超管</p>

        # <h3 id="2-企业基础信息变更">2. 企业基础信息变更</h3>

        # <h4 id="可以变动">可以变动</h4>

        # <ul>
        # <li>企业名称<br>
        # </li>
        # <li>法定代表人姓名(新法人有邀请链接)<br>
        # </li>
        # <li>企业地址和所在地</li>
        # </ul>

        # <h4 id="不可变动">不可变动</h4>

        # <ul>
        # <li>统一社会信用代码<br>
        # </li>
        # <li>企业主体类型</li>
        # </ul>

        # <p>如果企业名称变动会引起下面的变动</p>

        # <ul>
        # <li>合同:   老合同不做任何处理,   新发起的合同需要用新的企业名字作为签署方, 否则无法签署</li>
        # <li>印章:   会删除所有的印章所有的机构公章和合同专用章,  然后用新企业名称生成新的机构公章 和合同专用章,  而法人章, 财务专用章和人事专用章不会处理</li>
        # <li>证书:   企业证书会重新请求CA机构用新企业名称生成新的证书</li>
        # </ul>

        # @param request: Request instance for CreateChannelOrganizationInfoChangeUrl.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::CreateChannelOrganizationInfoChangeUrlRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::CreateChannelOrganizationInfoChangeUrlResponse`
        def CreateChannelOrganizationInfoChangeUrl(request)
          body = send_request('CreateChannelOrganizationInfoChangeUrl', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = CreateChannelOrganizationInfoChangeUrlResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 此接口(CreateConsoleLoginUrl)用于创建第三方平台子客企业控制台Web/移动登录链接。支持web控制台、电子签小程序和H5链接。登录链接是进入子客web企业控制台的唯一入口。

        # Web链接访问后,会根据子客企业(**Agent中ProxyOrganizationOpenId表示**)和员工(**Agent中OpenId表示**)的状态,进入不同的流程,主要情况分类如下:
        # <table>
        # <thead>
        # <tr>
        # <th>子客企业状态</th>
        # <th>子客企业员工状态</th>
        # <th>点击链接进入的流程</th>
        # </tr>
        # </thead>
        # <tbody>
        # <tr>
        # <td>企业未激活</td>
        # <td>员工未认证</td>
        # <td>进入企业激活流程,首次完成企业激活流程的员工会成为超管</td>
        # </tr>
        # <tr>
        # <td>企业已激活</td>
        # <td>员工未认证</td>
        # <td>进入员认证并加入企业流程</td>
        # </tr>
        # <tr>
        # <td>企业已激活</td>
        # <td>员工已认证</td>
        # <td>进入子客企业Web控制台</td>
        # </tr>
        # </tbody>
        # </table>
        # 如果是企业激活流程,需要注意如下情况:

        # 1. 若在激活过程中,**更换用户OpenID重新生成链接,之前的认证会被清理**。因此不要在企业认证过程生成多个链接给多人同时操作,会导致认证过程互相影响。
        # 2. 若您认证中发现信息有误需要重新认证,**可通过更换用户OpenID重新生成链接的方式,来清理掉已有的流程**。

        # @param request: Request instance for CreateConsoleLoginUrl.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::CreateConsoleLoginUrlRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::CreateConsoleLoginUrlResponse`
        def CreateConsoleLoginUrl(request)
          body = send_request('CreateConsoleLoginUrl', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = CreateConsoleLoginUrlResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 接口(CreateFlowsByTemplates)用于使用模板批量创建签署流程。当前可批量发起合同(签署流程)数量为1-20个。
        # 如若在模板中配置了动态表格, 上传的附件必须为A4大小
        # 合同发起人必须在电子签已经进行实名。

        # **整体的逻辑如下**

        # ![image](https://dyn.ess.tencent.cn/guide/capi/CreateFlowsByTemplates.png)

        # **可以作为发起方和签署方的角色列表**
        # <table>
        # <thead>
        # <tr>
        # <th>场景编号</th>
        # <th>可作为发起方类型</th>
        # <th>可作为签署方的类型</th>
        # </tr>
        # </thead>

        # <tbody>
        # <tr>
        # <td>场景一</td>
        # <td>第三方子企业A员工</td>
        # <td>第三方子企业A员工</td>
        # </tr>

        # <tr>
        # <td>场景二</td>
        # <td>第三方子企业A员工</td>
        # <td>第三方子企业B(不指定经办人)</td>
        # </tr>

        # <tr>
        # <td>场景三</td>
        # <td>第三方子企业A员工</td>
        # <td>第三方子企业B员工</td>
        # </tr>

        # <tr>
        # <td>场景四</td>
        # <td>第三方子企业A员工</td>
        # <td>个人/自然人</td>
        # </tr>

        # <tr>
        # <td>场景五</td>
        # <td>第三方子企业A员工</td>
        # <td>SaaS平台企业员工</td>
        # </tr>
        # </tbody>
        # </table>

        # **注**:
        # `1. 发起合同时候,  作为发起方的第三方子企业A员工的企业和员工必须经过实名, 而作为签署方的第三方子企业A员工/个人/自然人/SaaS平台企业员工/第三方子企业B员工企业中的企业和个人/员工可以未实名`
        # `2. 不同类型的签署方传参不同, 可以参考开发者中心的FlowApproverInfo结构体说明`

        # @param request: Request instance for CreateFlowsByTemplates.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::CreateFlowsByTemplatesRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::CreateFlowsByTemplatesResponse`
        def CreateFlowsByTemplates(request)
          body = send_request('CreateFlowsByTemplates', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = CreateFlowsByTemplatesResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 1. 可以**通过图片**为子客企业代创建印章,图片最大5MB

        # 2. 可以**系统创建**子客企业代创建印章, 系统创建的印章样子下图(样式可以调整)

        # ![image](https://dyn.ess.tencent.cn/guide/capi/CreateSealByImage.png)

        # @param request: Request instance for CreateSealByImage.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::CreateSealByImageRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::CreateSealByImageResponse`
        def CreateSealByImage(request)
          body = send_request('CreateSealByImage', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = CreateSealByImageResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 创建跳转小程序查看或签署的链接

        # **腾讯电子签小程序的AppID 和 原始Id如下:**

        # | 小程序 | AppID | 原始ID |
        # | ------------ | ------------ | ------------ |
        # | 腾讯电子签(正式版) | wxa023b292fd19d41d | gh_da88f6188665 |
        # | 腾讯电子签Demo | wx371151823f6f3edf | gh_39a5d3de69fa |

        # **主要使用场景可以更加EndPoint分类如下**

        # |EndPoint| 场景| 说明和示例|
        # |  ----  | ----  | --- |
        # |  WEIXINAPP  | 短链跳转腾讯电子签小程序签署场景  |  点击链接打开电子签小程序(与腾讯电子签官方短信提醒用户签署形式一样)<br> 示例: https://essurl.cn/x9nvWU8fTg|
        # |  LONGURL2WEIXINAPP  | 长链跳转腾讯电子签小程序签署场景  |  点击链接打开电子签小程序, 是WEIXINAPP生成短链代表的那个长链|
        # |  CHANNEL  | 带有H5引导页的跳转腾讯电子签小程序签署场景 |  点击链接打开一个H5引导页面, 页面中有个"前往小程序"的按钮, 点击后会跳转到腾讯电子签小程序签署场景;  签署完成会回到H5引导页面, 然后跳转到指定创建链接指定的JumpUrl<br>示例: https://res.ess.tencent.cn/cdn/h5-activity-beta/jump-mp.html?use=channel-guide&type=warning&token=uIFKIU8fTd |
        # |APP| 贵方App跳转腾讯电子签小程序签署场景|  贵方App直接跳转到小程序后, 在腾讯电子签小程序签署完成后返回贵方App的场景<br>跳转到腾讯电子签小程序的实现可以参考微信的官方文档:<a href="https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/launchApp.html" target="_blank">开放能力/打开 App</a> <br> 示例: pages/guide?from=default&where=mini& to=CONTRACT_DETAIL& id=yDwiBUUc*duRvquCSX8wd& shortKey=yDwivUA**W1yRsTre3 |
        # |APP| 贵方小程序跳转腾讯电子签小程序签署场景|  贵方App直接跳转到小程序后, 在腾讯电子签小程序签署完成后返回贵方小程序的场景<br>跳转到腾讯电子签小程序的实现可以参考微信官方文档<a href="https://developers.weixin.qq.com/miniprogram/dev/api/navigate/wx.navigateToMiniProgram.html" target="_blank">全屏方式</a>和<a href="https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/openEmbeddedMiniProgram.html " target="_blank">半屏方式</a><br>此时返回的SignUrl就是官方文档中的path<br> 示例:pages/guide?from=default&where=mini& to=CONTRACT_DETAIL& id=yDwiBUUc*duRvquCSX8wd& shortKey=yDwivUA**W1yRsTre3  |

        # @param request: Request instance for CreateSignUrls.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::CreateSignUrlsRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::CreateSignUrlsResponse`
        def CreateSignUrls(request)
          body = send_request('CreateSignUrls', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = CreateSignUrlsResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 查询出证报告,返回报告 URL。

        # @param request: Request instance for DescribeChannelFlowEvidenceReport.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::DescribeChannelFlowEvidenceReportRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::DescribeChannelFlowEvidenceReportResponse`
        def DescribeChannelFlowEvidenceReport(request)
          body = send_request('DescribeChannelFlowEvidenceReport', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = DescribeChannelFlowEvidenceReportResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 查询企业扩展服务的开通和授权情况,当前支持查询以下内容:
        # 1. 企业自动签
        # 2. 企业与港澳台居民签署合同
        # 3. 使用手机号验证签署方身份
        # 4. 骑缝章
        # 5. 拓宽签署方年龄限制
        # 6. 下载企业合同/文件

        # 注: 此接口 参数Agent. ProxyOperator.OpenId 需要传递超管或者法人的OpenId

        # @param request: Request instance for DescribeExtendedServiceAuthInfo.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::DescribeExtendedServiceAuthInfoRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::DescribeExtendedServiceAuthInfoResponse`
        def DescribeExtendedServiceAuthInfo(request)
          body = send_request('DescribeExtendedServiceAuthInfo', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = DescribeExtendedServiceAuthInfoResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 此接口(DescribeFlowDetailInfo)用于查询合同(签署流程)的详细信息。

        # @param request: Request instance for DescribeFlowDetailInfo.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::DescribeFlowDetailInfoRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::DescribeFlowDetailInfoResponse`
        def DescribeFlowDetailInfo(request)
          body = send_request('DescribeFlowDetailInfo', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = DescribeFlowDetailInfoResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 获取合同流程PDF的下载链接,可以下载签署中、签署完的此子企业创建的合同

        # **注意**:
        # 有两种开通权限的途径

        # **第一种**:   需第三方应用的子企业登录控制台进行授权,  授权在**企业中心**的**授权管理**区域,  界面如下图
        # 授权过程需要**子企业超管**扫描跳转到电子签小程序签署<<渠道端下载渠道子客合同功能授权委托书>>

        # ![image](https://dyn.ess.tencent.cn/guide/capi/channel_DescribeResourceUrlsByFlows2.png)

        # **第二种**: 第三方应用的配置接口打开全第三个应用下的所有自己起开通, 需要**渠道方企业的超管**扫描二维码跳转到电子签小程序签署 <<渠道端下载渠道子客合同功能开通知情同意书>>
        # ![image](https://dyn.ess.tencent.cn/guide/capi/channel_DescribeResourceUrlsByFlows_appilications2.png)

        # @param request: Request instance for DescribeResourceUrlsByFlows.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::DescribeResourceUrlsByFlowsRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::DescribeResourceUrlsByFlowsResponse`
        def DescribeResourceUrlsByFlows(request)
          body = send_request('DescribeResourceUrlsByFlows', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = DescribeResourceUrlsByFlowsResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 通过此接口(DescribeTemplates)查询该第三方平台子客企业在电子签拥有的有效模板,不包括第三方平台模板。

        # > **适用场景**
        # >
        # >  该接口常用来配合“使用模板创建签署流程”接口作为前置的接口使用。
        # >  一个模板通常会包含以下结构信息
        # >- 模板基本信息
        # >- 发起方参与信息Promoter、签署参与方 Recipients,后者会在模板发起合同时用于指定参与方
        # >- 填写控件 Components
        # >- 签署控件 SignComponents
        # >- 生成模板的文件基础信息 FileInfos

        # @param request: Request instance for DescribeTemplates.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::DescribeTemplatesRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::DescribeTemplatesResponse`
        def DescribeTemplates(request)
          body = send_request('DescribeTemplates', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = DescribeTemplatesResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 此接口(DescribeUsage)用于获取第三方平台所有合作企业流量消耗情况。
        #  注: 此接口每日限频50次,若要扩大限制次数,请提前与客服经理或邮件至e-contract@tencent.com进行联系。

        # @param request: Request instance for DescribeUsage.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::DescribeUsageRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::DescribeUsageResponse`
        def DescribeUsage(request)
          body = send_request('DescribeUsage', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = DescribeUsageResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 此接口(GetDownloadFlowUrl)用户获取合同控制台下载页面链接,  点击链接后会跳转至本企业合同管理控制台(会筛选出传入的合同列表), 点击**下载**按钮后就会下载传入的合同列表, 下载页面如下图
        # ![image](https://dyn.ess.tencent.cn/guide/capi/channel_GetDownloadFlowUrl.png)

        # 注:
        # <ul>
        # <li>仅支持下载 **本企业** 下合同,链接会 **登录企业控制台** </li>
        # <li> **链接仅可使用一次**,不可重复使用</li>
        # </ul>

        # @param request: Request instance for GetDownloadFlowUrl.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::GetDownloadFlowUrlRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::GetDownloadFlowUrlResponse`
        def GetDownloadFlowUrl(request)
          body = send_request('GetDownloadFlowUrl', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = GetDownloadFlowUrlResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 修改(操作)企业扩展服务 ,企业经办人需要是企业超管或者法人。

        # 跳转小程序的几种方式:主要是设置不同的EndPoint
        # 1. 通过链接Url直接跳转到小程序,不需要返回
        # 设置EndPoint为WEIXINAPP,得到链接打开即可。

        # 2. 客户App直接跳转到小程序-->腾讯电子签小程序操作完成-->返回App
        # 跳转到小程序的实现,参考官方文档
        # https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/launchApp.html
        # 其中小程序的原始Id,请联系<对接技术人员>获取,或者查看小程序信息自助获取。
        # 设置EndPoint为APP,得到path。

        # 4. 客户小程序直接跳到电子签小程序-->腾讯电子签小程序操作完成--->回到客户小程序
        # 跳转到小程序的实现,参考官方文档(分为全屏、半屏两种方式)
        # 全屏方式:
        # (https://developers.weixin.qq.com/miniprogram/dev/api/navigate/wx.navigateToMiniProgram.html)
        # 半屏方式:
        # (https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/openEmbeddedMiniProgram.html)
        # 其中小程序的原始Id,请联系<对接技术人员>获取,或者查看小程序信息自助获取。
        # 设置EndPoint为APP,得到path。

        # 其中小程序的原始Id如下,或者查看小程序信息自助获取。

        # | 小程序 | AppID | 原始ID |
        # | ------------ | ------------ | ------------ |
        # | 腾讯电子签(正式版) | wxa023b292fd19d41d | gh_da88f6188665 |
        # | 腾讯电子签Demo | wx371151823f6f3edf | gh_39a5d3de69fa |

        # @param request: Request instance for ModifyExtendedService.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::ModifyExtendedServiceRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::ModifyExtendedServiceResponse`
        def ModifyExtendedService(request)
          body = send_request('ModifyExtendedService', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ModifyExtendedServiceResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 此接口(OperateChannelTemplate)用于针对第三方应用平台模板库中的模板对子客企业可见性的查询和设置。

        # > **使用场景**
        # >
        # >  1:查询 OperateType=SELECT
        # > - 查询第三方应用平台模板库的可见性以及授权的子客列表。
        # >
        # >  2:修改部分子客授权 OperateType=UPDATE
        # > - 对子客企业进行模板库中模板可见性的进行修改操作。
        # >- 当模板未发布时,可以修改可见性AuthTag(part/all),当模板发布后,不可做此修改
        # > - 若模板已发布且可见性AuthTag是part,可以通过ProxyOrganizationOpenIds增加子客的授权范围。如果是自动领取的模板,增加授权范围后会自动下发。
        # >
        # >  3:取消部分子客授权 OperateType=DELETE
        # > - 对子客企业进行模板库中模板可见性的进行删除操作。
        # > - 主要对于手动领取的模板,去除授权后子客在模板库中看不到,就无法再领取了。但是已经领取过成为自有模板的不会同步删除。
        # > - 对于自动领取的模板,由于已经下发,更改授权不会影响。
        # > - 如果要同步删除子客自有模板库中的模板,请使用OperateType=UPDATE+Available参数处理。

        # @param request: Request instance for OperateChannelTemplate.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::OperateChannelTemplateRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::OperateChannelTemplateResponse`
        def OperateChannelTemplate(request)
          body = send_request('OperateChannelTemplate', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = OperateChannelTemplateResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 该接口 (PrepareFlows) 用于创建待发起文件
        # 用户通过该接口进入签署流程发起的确认页面,进行发起信息二次确认, 如果确认则进行正常发起。
        # 目前该接口只支持B2C,不建议使用,将会废弃。

        # @param request: Request instance for PrepareFlows.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::PrepareFlowsRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::PrepareFlowsResponse`
        def PrepareFlows(request)
          body = send_request('PrepareFlows', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = PrepareFlowsResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 此接口(SyncProxyOrganization)用于同步第三方平台子客企业信息,包括企业名称,企业营业执照,企业统一社会信用代码和法人姓名等,便于子客企业在企业激活过程中无需手动上传营业执照或补充企业信息。注意:
        # 1. 需要在子客企业激活前调用该接口,如果您的企业已经提交企业信息或者企业已经激活,同步的企业信息将不会生效。
        # 2. 如果您同时传递了营业执照信息和企业名称等信息,在认证过程中将以营业执照中的企业信息为准,请注意企业信息需要和营业执照信息对应。

        # @param request: Request instance for SyncProxyOrganization.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::SyncProxyOrganizationRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::SyncProxyOrganizationResponse`
        def SyncProxyOrganization(request)
          body = send_request('SyncProxyOrganization', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = SyncProxyOrganizationResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 此接口(SyncProxyOrganizationOperators)用于同步 第三方平台子客企业经办人列表,主要是同步经办人的离职状态。子客Web控制台的组织架构管理,是依赖于第三方应用平台的,无法针对员工做新增/更新/离职等操作。
        # 若经办人信息有误,或者需要修改,也可以先将之前的经办人做离职操作,然后重新使用控制台链接CreateConsoleLoginUrl让经办人重新实名。

        # @param request: Request instance for SyncProxyOrganizationOperators.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::SyncProxyOrganizationOperatorsRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::SyncProxyOrganizationOperatorsResponse`
        def SyncProxyOrganizationOperators(request)
          body = send_request('SyncProxyOrganizationOperators', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = SyncProxyOrganizationOperatorsResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 此接口(UploadFiles)文件上传。<br/>

        # 适用场景:用于合同,印章的文件上传。文件上传以后,
        # 如果是PDF格式文件可配合<a href="https://qian.tencent.com/developers/partnerApis/startFlows/ChannelCreateFlowByFiles" target="_blank">用PDF文件创建签署流程</a>接口进行合同流程的发起
        # 如果是其他类型可以配合<a href="https://qian.tencent.com/developers/partnerApis/files/ChannelCreateConvertTaskApi" target="_blank">创建文件转换任务</a>接口转换成PDF文件

        # 注:
        # 1. `图片类型(png/jpg/jpeg)限制大小为5M以下, PDF/word/excel等其他格式限制大小为60M以下`
        # 2. `联调开发环境调用时需要设置Domain接口请求域名为 file.test.ess.tencent.cn,正式环境需要设置为file.ess.tencent.cn,代码示例`
        # ```
        # HttpProfile httpProfile = new HttpProfile();
        # httpProfile.setEndpoint("file.test.ess.tencent.cn");
        # ```

        # @param request: Request instance for UploadFiles.
        # @type request: :class:`Tencentcloud::essbasic::V20210526::UploadFilesRequest`
        # @rtype: :class:`Tencentcloud::essbasic::V20210526::UploadFilesResponse`
        def UploadFiles(request)
          body = send_request('UploadFiles', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = UploadFilesResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end


      end
    end
  end
end