# 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.

module TencentCloud
  module Essbasic
    module V20210526
      # 应用相关信息
      class Agent < TencentCloud::Common::AbstractModel
        # @param AppId: 应用的唯一标识。不同的业务系统可以采用不同的AppId,不同AppId下的数据是隔离的。可以由控制台开发者中心-应用集成自主生成。
        # @type AppId: String
        # @param ProxyOrganizationOpenId: 第三方应用平台自定义,对应第三方平台子客企业的唯一标识。一个第三方平台子客企业主体与子客企业ProxyOrganizationOpenId是一一对应的,不可更改,不可重复使用。(例如,可以使用企业名称的hash值,或者社会统一信用代码的hash值,或者随机hash值,需要第三方应用平台保存),最大64位字符串
        # @type ProxyOrganizationOpenId: String
        # @param ProxyOperator: 第三方平台子客企业中的员工/经办人,通过第三方应用平台进入电子签完成实名、且被赋予相关权限后,可以参与到企业资源的管理或签署流程中。
        # @type ProxyOperator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`
        # @param ProxyAppId: 在第三方平台子客企业开通电子签后,会生成唯一的子客应用Id(ProxyAppId)用于代理调用时的鉴权,在子客开通的回调中获取。
        # @type ProxyAppId: String
        # @param ProxyOrganizationId: 内部参数,暂未开放使用
        # @type ProxyOrganizationId: String

        attr_accessor :AppId, :ProxyOrganizationOpenId, :ProxyOperator, :ProxyAppId, :ProxyOrganizationId
        extend Gem::Deprecate
        deprecate :ProxyOrganizationId, :none, 2023, 6
        deprecate :ProxyOrganizationId=, :none, 2023, 6

        def initialize(appid=nil, proxyorganizationopenid=nil, proxyoperator=nil, proxyappid=nil, proxyorganizationid=nil)
          @AppId = appid
          @ProxyOrganizationOpenId = proxyorganizationopenid
          @ProxyOperator = proxyoperator
          @ProxyAppId = proxyappid
          @ProxyOrganizationId = proxyorganizationid
        end

        def deserialize(params)
          @AppId = params['AppId']
          @ProxyOrganizationOpenId = params['ProxyOrganizationOpenId']
          unless params['ProxyOperator'].nil?
            @ProxyOperator = UserInfo.new
            @ProxyOperator.deserialize(params['ProxyOperator'])
          end
          @ProxyAppId = params['ProxyAppId']
          @ProxyOrganizationId = params['ProxyOrganizationId']
        end
      end

      # 签署人个性化能力信息
      class ApproverOption < TencentCloud::Common::AbstractModel
        # @param HideOneKeySign: 是否隐藏一键签署 false-不隐藏,默认 true-隐藏
        # @type HideOneKeySign: Boolean

        attr_accessor :HideOneKeySign

        def initialize(hideonekeysign=nil)
          @HideOneKeySign = hideonekeysign
        end

        def deserialize(params)
          @HideOneKeySign = params['HideOneKeySign']
        end
      end

      # 指定签署人限制项
      class ApproverRestriction < TencentCloud::Common::AbstractModel
        # @param Name: 指定签署人姓名
        # @type Name: String
        # @param Mobile: 指定签署人手机号,11位数字
        # @type Mobile: String
        # @param IdCardType: 指定签署人证件类型,ID_CARD-身份证,HONGKONG_AND_MACAO-港澳居民来往内地通行证,HONGKONG_MACAO_AND_TAIWAN-港澳台居民居住证
        # @type IdCardType: String
        # @param IdCardNumber: 指定签署人证件号码,其中字母大写
        # @type IdCardNumber: String

        attr_accessor :Name, :Mobile, :IdCardType, :IdCardNumber

        def initialize(name=nil, mobile=nil, idcardtype=nil, idcardnumber=nil)
          @Name = name
          @Mobile = mobile
          @IdCardType = idcardtype
          @IdCardNumber = idcardnumber
        end

        def deserialize(params)
          @Name = params['Name']
          @Mobile = params['Mobile']
          @IdCardType = params['IdCardType']
          @IdCardNumber = params['IdCardNumber']
        end
      end

      # 授权出错信息
      class AuthFailMessage < TencentCloud::Common::AbstractModel
        # @param ProxyOrganizationOpenId: 第三方应用平台的子客企业OpenId
        # @type ProxyOrganizationOpenId: String
        # @param Message: 错误信息
        # @type Message: String

        attr_accessor :ProxyOrganizationOpenId, :Message

        def initialize(proxyorganizationopenid=nil, message=nil)
          @ProxyOrganizationOpenId = proxyorganizationopenid
          @Message = message
        end

        def deserialize(params)
          @ProxyOrganizationOpenId = params['ProxyOrganizationOpenId']
          @Message = params['Message']
        end
      end

      # 授权用户
      class AuthorizedUser < TencentCloud::Common::AbstractModel
        # @param OpenId: 第三方应用平台的用户openid
        # @type OpenId: String

        attr_accessor :OpenId

        def initialize(openid=nil)
          @OpenId = openid
        end

        def deserialize(params)
          @OpenId = params['OpenId']
        end
      end

      # 基础流程信息
      class BaseFlowInfo < TencentCloud::Common::AbstractModel
        # @param FlowName: 合同流程名称
        # @type FlowName: String
        # @param FlowType: 合同流程类型
        # @type FlowType: String
        # @param FlowDescription: 合同流程描述信息
        # @type FlowDescription: String
        # @param Deadline: 合同流程截止时间,unix时间戳,单位秒
        # @type Deadline: Integer
        # @param Unordered: 是否顺序签署(true:无序签,false:顺序签)
        # @type Unordered: Boolean
        # @param IntelligentStatus: 是否打开智能添加填写区(默认开启,打开:"OPEN" 关闭:"CLOSE")
        # @type IntelligentStatus: String
        # @param FormFields: 填写控件内容
        # @type FormFields: Array
        # @param NeedSignReview: 本企业(发起方企业)是否需要签署审批,true:开启本企业签署审批。使用ChannelCreateFlowSignReview接口提交审批结果,才能继续完成签署
        # @type NeedSignReview: Boolean
        # @param UserData: 用户流程自定义数据参数
        # @type UserData: String
        # @param CcInfos: 抄送人信息
        # @type CcInfos: Array
        # @param NeedCreateReview: 是否需要发起前审核,当指定NeedCreateReview=true,则发起后,需要使用接口:ChannelCreateFlowSignReview,来完成发起前审核,审核通过后,可以继续查看,签署合同
        # @type NeedCreateReview: Boolean

        attr_accessor :FlowName, :FlowType, :FlowDescription, :Deadline, :Unordered, :IntelligentStatus, :FormFields, :NeedSignReview, :UserData, :CcInfos, :NeedCreateReview

        def initialize(flowname=nil, flowtype=nil, flowdescription=nil, deadline=nil, unordered=nil, intelligentstatus=nil, formfields=nil, needsignreview=nil, userdata=nil, ccinfos=nil, needcreatereview=nil)
          @FlowName = flowname
          @FlowType = flowtype
          @FlowDescription = flowdescription
          @Deadline = deadline
          @Unordered = unordered
          @IntelligentStatus = intelligentstatus
          @FormFields = formfields
          @NeedSignReview = needsignreview
          @UserData = userdata
          @CcInfos = ccinfos
          @NeedCreateReview = needcreatereview
        end

        def deserialize(params)
          @FlowName = params['FlowName']
          @FlowType = params['FlowType']
          @FlowDescription = params['FlowDescription']
          @Deadline = params['Deadline']
          @Unordered = params['Unordered']
          @IntelligentStatus = params['IntelligentStatus']
          unless params['FormFields'].nil?
            @FormFields = []
            params['FormFields'].each do |i|
              formfield_tmp = FormField.new
              formfield_tmp.deserialize(i)
              @FormFields << formfield_tmp
            end
          end
          @NeedSignReview = params['NeedSignReview']
          @UserData = params['UserData']
          unless params['CcInfos'].nil?
            @CcInfos = []
            params['CcInfos'].each do |i|
              ccinfo_tmp = CcInfo.new
              ccinfo_tmp.deserialize(i)
              @CcInfos << ccinfo_tmp
            end
          end
          @NeedCreateReview = params['NeedCreateReview']
        end
      end

      # 抄送信息
      class CcInfo < TencentCloud::Common::AbstractModel
        # @param Mobile: 被抄送人手机号,大陆11位手机号
        # @type Mobile: String
        # @param Name: 被抄送人姓名
        # @type Name: String
        # @param CcType: 被抄送人类型
        # 0--个人. 1--员工
        # @type CcType: Integer
        # @param CcPermission: 被抄送人权限
        # 0--可查看
        # 1--可查看也可下载
        # @type CcPermission: Integer

        attr_accessor :Mobile, :Name, :CcType, :CcPermission

        def initialize(mobile=nil, name=nil, cctype=nil, ccpermission=nil)
          @Mobile = mobile
          @Name = name
          @CcType = cctype
          @CcPermission = ccpermission
        end

        def deserialize(params)
          @Mobile = params['Mobile']
          @Name = params['Name']
          @CcType = params['CcType']
          @CcPermission = params['CcPermission']
        end
      end

      # ChannelBatchCancelFlows请求参数结构体
      class ChannelBatchCancelFlowsRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param FlowIds: 签署流程Id数组,最多100个,超过100不处理
        # @type FlowIds: Array
        # @param CancelMessage: 撤销理由,不超过200个字符
        # @type CancelMessage: String
        # @param CancelMessageFormat: 撤销理由自定义格式;选项:
        # 0 默认格式
        # 1 只保留身份信息:展示为【发起方】
        # 2 保留身份信息+企业名称:展示为【发起方xxx公司】
        # 3 保留身份信息+企业名称+经办人名称:展示为【发起方xxxx公司-经办人姓名】
        # @type CancelMessageFormat: Integer
        # @param Operator: 暂未开放
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Agent, :FlowIds, :CancelMessage, :CancelMessageFormat, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, flowids=nil, cancelmessage=nil, cancelmessageformat=nil, operator=nil)
          @Agent = agent
          @FlowIds = flowids
          @CancelMessage = cancelmessage
          @CancelMessageFormat = cancelmessageformat
          @Operator = operator
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @FlowIds = params['FlowIds']
          @CancelMessage = params['CancelMessage']
          @CancelMessageFormat = params['CancelMessageFormat']
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # ChannelBatchCancelFlows返回参数结构体
      class ChannelBatchCancelFlowsResponse < TencentCloud::Common::AbstractModel
        # @param FailMessages: 签署流程批量撤销失败原因,错误信息与流程Id一一对应,成功为“”,失败则对应失败消息
        # @type FailMessages: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :FailMessages, :RequestId

        def initialize(failmessages=nil, requestid=nil)
          @FailMessages = failmessages
          @RequestId = requestid
        end

        def deserialize(params)
          @FailMessages = params['FailMessages']
          @RequestId = params['RequestId']
        end
      end

      # ChannelCancelFlow请求参数结构体
      class ChannelCancelFlowRequest < TencentCloud::Common::AbstractModel
        # @param FlowId: 签署流程编号
        # @type FlowId: String
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param CancelMessage: 撤回原因,最大不超过200字符
        # @type CancelMessage: String
        # @param CancelMessageFormat: 撤销理由自定义格式;选项:
        # 0 默认格式
        # 1 只保留身份信息:展示为【发起方】
        # 2 保留身份信息+企业名称:展示为【发起方xxx公司】
        # 3 保留身份信息+企业名称+经办人名称:展示为【发起方xxxx公司-经办人姓名】
        # @type CancelMessageFormat: Integer
        # @param Operator: 暂未开放
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :FlowId, :Agent, :CancelMessage, :CancelMessageFormat, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(flowid=nil, agent=nil, cancelmessage=nil, cancelmessageformat=nil, operator=nil)
          @FlowId = flowid
          @Agent = agent
          @CancelMessage = cancelmessage
          @CancelMessageFormat = cancelmessageformat
          @Operator = operator
        end

        def deserialize(params)
          @FlowId = params['FlowId']
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @CancelMessage = params['CancelMessage']
          @CancelMessageFormat = params['CancelMessageFormat']
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # ChannelCancelFlow返回参数结构体
      class ChannelCancelFlowResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # ChannelCancelMultiFlowSignQRCode请求参数结构体
      class ChannelCancelMultiFlowSignQRCodeRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param QrCodeId: 二维码id
        # @type QrCodeId: String
        # @param Operator: 暂未开放
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Agent, :QrCodeId, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, qrcodeid=nil, operator=nil)
          @Agent = agent
          @QrCodeId = qrcodeid
          @Operator = operator
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @QrCodeId = params['QrCodeId']
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # ChannelCancelMultiFlowSignQRCode返回参数结构体
      class ChannelCancelMultiFlowSignQRCodeResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # ChannelCreateBatchCancelFlowUrl请求参数结构体
      class ChannelCreateBatchCancelFlowUrlRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param FlowIds: 签署流程Id数组
        # @type FlowIds: Array
        # @param Operator: 暂未开放
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Agent, :FlowIds, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, flowids=nil, operator=nil)
          @Agent = agent
          @FlowIds = flowids
          @Operator = operator
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @FlowIds = params['FlowIds']
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # ChannelCreateBatchCancelFlowUrl返回参数结构体
      class ChannelCreateBatchCancelFlowUrlResponse < TencentCloud::Common::AbstractModel
        # @param BatchCancelFlowUrl: 批量撤销url
        # @type BatchCancelFlowUrl: String
        # @param FailMessages: 签署流程批量撤销失败原因
        # @type FailMessages: Array
        # @param UrlExpireOn: 签署撤销url过期时间-年月日-时分秒
        # @type UrlExpireOn: String
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :BatchCancelFlowUrl, :FailMessages, :UrlExpireOn, :RequestId

        def initialize(batchcancelflowurl=nil, failmessages=nil, urlexpireon=nil, requestid=nil)
          @BatchCancelFlowUrl = batchcancelflowurl
          @FailMessages = failmessages
          @UrlExpireOn = urlexpireon
          @RequestId = requestid
        end

        def deserialize(params)
          @BatchCancelFlowUrl = params['BatchCancelFlowUrl']
          @FailMessages = params['FailMessages']
          @UrlExpireOn = params['UrlExpireOn']
          @RequestId = params['RequestId']
        end
      end

      # ChannelCreateBoundFlows请求参数结构体
      class ChannelCreateBoundFlowsRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用信息
        # 此接口Agent.AppId、Agent.ProxyOrganizationOpenId 和 Agent. ProxyOperator.OpenId 必填
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param FlowIds: 领取的合同id列表
        # @type FlowIds: Array
        # @param Operator: 暂未开放
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Agent, :FlowIds, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, flowids=nil, operator=nil)
          @Agent = agent
          @FlowIds = flowids
          @Operator = operator
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @FlowIds = params['FlowIds']
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # ChannelCreateBoundFlows返回参数结构体
      class ChannelCreateBoundFlowsResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # ChannelCreateConvertTaskApi请求参数结构体
      class ChannelCreateConvertTaskApiRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param ResourceType: 资源类型 支持doc,docx,html,xls,xlsx,jpg,jpeg,png,bmp文件类型
        # @type ResourceType: String
        # @param ResourceName: 资源名称,长度限制为256字符
        # @type ResourceName: String
        # @param ResourceId: 资源Id,通过UploadFiles获取
        # @type ResourceId: String
        # @param Operator: 调用方用户信息,不用传
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`
        # @param Organization: 暂未开放
        # @type Organization: :class:`Tencentcloud::Essbasic.v20210526.models.OrganizationInfo`

        attr_accessor :Agent, :ResourceType, :ResourceName, :ResourceId, :Operator, :Organization
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6
        deprecate :Organization, :none, 2023, 6
        deprecate :Organization=, :none, 2023, 6

        def initialize(agent=nil, resourcetype=nil, resourcename=nil, resourceid=nil, operator=nil, organization=nil)
          @Agent = agent
          @ResourceType = resourcetype
          @ResourceName = resourcename
          @ResourceId = resourceid
          @Operator = operator
          @Organization = organization
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @ResourceType = params['ResourceType']
          @ResourceName = params['ResourceName']
          @ResourceId = params['ResourceId']
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
          unless params['Organization'].nil?
            @Organization = OrganizationInfo.new
            @Organization.deserialize(params['Organization'])
          end
        end
      end

      # ChannelCreateConvertTaskApi返回参数结构体
      class ChannelCreateConvertTaskApiResponse < TencentCloud::Common::AbstractModel
        # @param TaskId: 任务id
        # @type TaskId: String
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TaskId, :RequestId

        def initialize(taskid=nil, requestid=nil)
          @TaskId = taskid
          @RequestId = requestid
        end

        def deserialize(params)
          @TaskId = params['TaskId']
          @RequestId = params['RequestId']
        end
      end

      # ChannelCreateEmbedWebUrl请求参数结构体
      class ChannelCreateEmbedWebUrlRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 渠道应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param EmbedType: WEB嵌入资源类型,取值范围:CREATE_SEAL创建印章,CREATE_TEMPLATE创建模板,MODIFY_TEMPLATE修改模板,PREVIEW_TEMPLATE预览模板,PREVIEW_FLOW预览流程
        # @type EmbedType: String
        # @param BusinessId: WEB嵌入的业务资源ID,EmbedType取值MODIFY_TEMPLATE或PREVIEW_TEMPLATE或 PREVIEW_FLOW时BusinessId必填
        # @type BusinessId: String
        # @param HiddenComponents: 是否隐藏控件,只有预览模板时生效
        # @type HiddenComponents: Boolean
        # @param Operator: 渠道操作者信息
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Agent, :EmbedType, :BusinessId, :HiddenComponents, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, embedtype=nil, businessid=nil, hiddencomponents=nil, operator=nil)
          @Agent = agent
          @EmbedType = embedtype
          @BusinessId = businessid
          @HiddenComponents = hiddencomponents
          @Operator = operator
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @EmbedType = params['EmbedType']
          @BusinessId = params['BusinessId']
          @HiddenComponents = params['HiddenComponents']
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # ChannelCreateEmbedWebUrl返回参数结构体
      class ChannelCreateEmbedWebUrlResponse < TencentCloud::Common::AbstractModel
        # @param WebUrl: 嵌入的web链接
        # @type WebUrl: String
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :WebUrl, :RequestId

        def initialize(weburl=nil, requestid=nil)
          @WebUrl = weburl
          @RequestId = requestid
        end

        def deserialize(params)
          @WebUrl = params['WebUrl']
          @RequestId = params['RequestId']
        end
      end

      # ChannelCreateFlowByFiles请求参数结构体
      class ChannelCreateFlowByFilesRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param FlowName: 签署流程名称,长度不超过200个字符
        # @type FlowName: String
        # @param FlowApprovers: 签署流程签约方列表,最多不超过50个参与方
        # @type FlowApprovers: Array
        # @param FileIds: 签署文件资源Id列表,目前仅支持单个文件
        # @type FileIds: Array
        # @param Components: 签署文件中的发起方的填写控件,需要在发起的时候进行填充
        # @type Components: Array
        # @param Deadline: 签署流程截止时间,十位数时间戳,最大值为33162419560,即3020年
        # @type Deadline: Integer
        # @param CallbackUrl: 签署流程回调地址,长度不超过255个字符
        # @type CallbackUrl: String
        # @param Unordered: 合同签署顺序类型(无序签,顺序签),默认为false,即有序签署。有序签署时以传入FlowApprovers数组的顺序作为签署顺序
        # @type Unordered: Boolean
        # @param FlowType: 签署流程的类型,长度不超过255个字符
        # @type FlowType: String
        # @param FlowDescription: 签署流程的描述,长度不超过1000个字符
        # @type FlowDescription: String
        # @param CustomShowMap: 合同显示的页卡模板,说明:只支持{合同名称}, {发起方企业}, {发起方姓名}, {签署方N企业}, {签署方N姓名},且N不能超过签署人的数量,N从1开始
        # @type CustomShowMap: String
        # @param CustomerData: 业务信息,最大长度1000个字符。
        # @type CustomerData: String
        # @param NeedSignReview: 发起方企业的签署人进行签署操作是否需要企业内部审批。 若设置为true,审核结果需通过接口 ChannelCreateFlowSignReview 通知电子签,审核通过后,发起方企业签署人方可进行签署操作,否则会阻塞其签署操作。  注:企业可以通过此功能与企业内部的审批流程进行关联,支持手动、静默签署合同。
        # @type NeedSignReview: Boolean
        # @param ApproverVerifyType: 签署人校验方式
        # VerifyCheck: 人脸识别(默认)
        # MobileCheck:手机号验证
        # 参数说明:可选人脸识别或手机号验证两种方式,若选择后者,未实名个人签署方在签署合同时,无需经过实名认证和意愿确认两次人脸识别,该能力仅适用于个人签署方。
        # @type ApproverVerifyType: String
        # @param SignBeanTag: 标识是否允许发起后添加控件。0为不允许1为允许。如果为1,创建的时候不能有签署控件,只能创建后添加。注意发起后添加控件功能不支持添加骑缝章和签批控件
        # @type SignBeanTag: Integer
        # @param CcInfos: 被抄送人信息列表
        # @type CcInfos: Array
        # @param CcNotifyType: 给关注人发送短信通知的类型,0-合同发起时通知 1-签署完成后通知
        # @type CcNotifyType: Integer
        # @param AutoSignScene: 个人自动签场景。发起自动签署时,需设置对应自动签署场景,目前仅支持场景:处方单-E_PRESCRIPTION_AUTO_SIGN
        # @type AutoSignScene: String
        # @param Operator: 操作者的信息,不用传
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Agent, :FlowName, :FlowApprovers, :FileIds, :Components, :Deadline, :CallbackUrl, :Unordered, :FlowType, :FlowDescription, :CustomShowMap, :CustomerData, :NeedSignReview, :ApproverVerifyType, :SignBeanTag, :CcInfos, :CcNotifyType, :AutoSignScene, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, flowname=nil, flowapprovers=nil, fileids=nil, components=nil, deadline=nil, callbackurl=nil, unordered=nil, flowtype=nil, flowdescription=nil, customshowmap=nil, customerdata=nil, needsignreview=nil, approververifytype=nil, signbeantag=nil, ccinfos=nil, ccnotifytype=nil, autosignscene=nil, operator=nil)
          @Agent = agent
          @FlowName = flowname
          @FlowApprovers = flowapprovers
          @FileIds = fileids
          @Components = components
          @Deadline = deadline
          @CallbackUrl = callbackurl
          @Unordered = unordered
          @FlowType = flowtype
          @FlowDescription = flowdescription
          @CustomShowMap = customshowmap
          @CustomerData = customerdata
          @NeedSignReview = needsignreview
          @ApproverVerifyType = approververifytype
          @SignBeanTag = signbeantag
          @CcInfos = ccinfos
          @CcNotifyType = ccnotifytype
          @AutoSignScene = autosignscene
          @Operator = operator
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @FlowName = params['FlowName']
          unless params['FlowApprovers'].nil?
            @FlowApprovers = []
            params['FlowApprovers'].each do |i|
              flowapproverinfo_tmp = FlowApproverInfo.new
              flowapproverinfo_tmp.deserialize(i)
              @FlowApprovers << flowapproverinfo_tmp
            end
          end
          @FileIds = params['FileIds']
          unless params['Components'].nil?
            @Components = []
            params['Components'].each do |i|
              component_tmp = Component.new
              component_tmp.deserialize(i)
              @Components << component_tmp
            end
          end
          @Deadline = params['Deadline']
          @CallbackUrl = params['CallbackUrl']
          @Unordered = params['Unordered']
          @FlowType = params['FlowType']
          @FlowDescription = params['FlowDescription']
          @CustomShowMap = params['CustomShowMap']
          @CustomerData = params['CustomerData']
          @NeedSignReview = params['NeedSignReview']
          @ApproverVerifyType = params['ApproverVerifyType']
          @SignBeanTag = params['SignBeanTag']
          unless params['CcInfos'].nil?
            @CcInfos = []
            params['CcInfos'].each do |i|
              ccinfo_tmp = CcInfo.new
              ccinfo_tmp.deserialize(i)
              @CcInfos << ccinfo_tmp
            end
          end
          @CcNotifyType = params['CcNotifyType']
          @AutoSignScene = params['AutoSignScene']
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # ChannelCreateFlowByFiles返回参数结构体
      class ChannelCreateFlowByFilesResponse < TencentCloud::Common::AbstractModel
        # @param FlowId: 合同签署流程ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FlowId: String
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :FlowId, :RequestId

        def initialize(flowid=nil, requestid=nil)
          @FlowId = flowid
          @RequestId = requestid
        end

        def deserialize(params)
          @FlowId = params['FlowId']
          @RequestId = params['RequestId']
        end
      end

      # ChannelCreateFlowGroupByFiles请求参数结构体
      class ChannelCreateFlowGroupByFilesRequest < TencentCloud::Common::AbstractModel
        # @param FlowFileInfos: 每个子合同的发起所需的信息,数量限制2-100
        # @type FlowFileInfos: Array
        # @param FlowGroupName: 合同组名称,长度不超过200个字符
        # @type FlowGroupName: String
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param ApproverVerifyType: 签署人校验方式
        # VerifyCheck: 人脸识别(默认)
        # MobileCheck:手机号验证
        # 参数说明:若选择后者,未实名的个人签署方查看合同时,无需进行人脸识别实名认证(但签署合同时仍然需要人脸实名),该能力仅适用于个人签署方。
        # @type ApproverVerifyType: String
        # @param Operator: 操作者的信息,此参数不用传
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :FlowFileInfos, :FlowGroupName, :Agent, :ApproverVerifyType, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(flowfileinfos=nil, flowgroupname=nil, agent=nil, approververifytype=nil, operator=nil)
          @FlowFileInfos = flowfileinfos
          @FlowGroupName = flowgroupname
          @Agent = agent
          @ApproverVerifyType = approververifytype
          @Operator = operator
        end

        def deserialize(params)
          unless params['FlowFileInfos'].nil?
            @FlowFileInfos = []
            params['FlowFileInfos'].each do |i|
              flowfileinfo_tmp = FlowFileInfo.new
              flowfileinfo_tmp.deserialize(i)
              @FlowFileInfos << flowfileinfo_tmp
            end
          end
          @FlowGroupName = params['FlowGroupName']
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @ApproverVerifyType = params['ApproverVerifyType']
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # ChannelCreateFlowGroupByFiles返回参数结构体
      class ChannelCreateFlowGroupByFilesResponse < TencentCloud::Common::AbstractModel
        # @param FlowGroupId: 合同组ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FlowGroupId: String
        # @param FlowIds: 子合同ID列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FlowIds: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :FlowGroupId, :FlowIds, :RequestId

        def initialize(flowgroupid=nil, flowids=nil, requestid=nil)
          @FlowGroupId = flowgroupid
          @FlowIds = flowids
          @RequestId = requestid
        end

        def deserialize(params)
          @FlowGroupId = params['FlowGroupId']
          @FlowIds = params['FlowIds']
          @RequestId = params['RequestId']
        end
      end

      # ChannelCreateFlowReminds请求参数结构体
      class ChannelCreateFlowRemindsRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param FlowIds: 签署流程Id数组,最多100个,超过100不处理
        # @type FlowIds: Array

        attr_accessor :Agent, :FlowIds

        def initialize(agent=nil, flowids=nil)
          @Agent = agent
          @FlowIds = flowids
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @FlowIds = params['FlowIds']
        end
      end

      # ChannelCreateFlowReminds返回参数结构体
      class ChannelCreateFlowRemindsResponse < TencentCloud::Common::AbstractModel
        # @param RemindFlowRecords: 合同催办详情信息
        # @type RemindFlowRecords: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RemindFlowRecords, :RequestId

        def initialize(remindflowrecords=nil, requestid=nil)
          @RemindFlowRecords = remindflowrecords
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['RemindFlowRecords'].nil?
            @RemindFlowRecords = []
            params['RemindFlowRecords'].each do |i|
              remindflowrecords_tmp = RemindFlowRecords.new
              remindflowrecords_tmp.deserialize(i)
              @RemindFlowRecords << remindflowrecords_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # ChannelCreateFlowSignReview请求参数结构体
      class ChannelCreateFlowSignReviewRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param FlowId: 签署流程编号
        # @type FlowId: String
        # @param ReviewType: 企业内部审核结果
        # PASS: 通过
        # REJECT: 拒绝
        # SIGN_REJECT:拒签(流程结束)
        # @type ReviewType: String
        # @param ReviewMessage: 审核原因
        # 当ReviewType 是REJECT 时此字段必填,字符串长度不超过200
        # @type ReviewMessage: String
        # @param RecipientId: 签署节点审核时需要指定
        # @type RecipientId: String
        # @param OperateType: 操作类型,默认:SignReview;SignReview:签署审核,CreateReview:发起审核
        # 注:接口通过该字段区分操作类型
        # 该字段不传或者为空,则默认为SignReview签署审核,走签署审核流程
        # 若想使用发起审核,请指定该字段为:CreateReview
        # @type OperateType: String

        attr_accessor :Agent, :FlowId, :ReviewType, :ReviewMessage, :RecipientId, :OperateType

        def initialize(agent=nil, flowid=nil, reviewtype=nil, reviewmessage=nil, recipientid=nil, operatetype=nil)
          @Agent = agent
          @FlowId = flowid
          @ReviewType = reviewtype
          @ReviewMessage = reviewmessage
          @RecipientId = recipientid
          @OperateType = operatetype
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @FlowId = params['FlowId']
          @ReviewType = params['ReviewType']
          @ReviewMessage = params['ReviewMessage']
          @RecipientId = params['RecipientId']
          @OperateType = params['OperateType']
        end
      end

      # ChannelCreateFlowSignReview返回参数结构体
      class ChannelCreateFlowSignReviewResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # ChannelCreateFlowSignUrl请求参数结构体
      class ChannelCreateFlowSignUrlRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param FlowId: 流程编号
        # @type FlowId: String
        # @param FlowApproverInfos: 流程签署人,其中Name和Mobile必传,其他可不传,ApproverType目前只支持PERSON类型的签署人,如果不传默认为该值。还需注意签署人只能有手写签名和时间类型的签署控件,其他类型的填写控件和签署控件暂时都未支持。
        # @type FlowApproverInfos: Array
        # @param Operator: 用户信息,暂未开放
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`
        # @param Organization: 机构信息,暂未开放
        # @type Organization: :class:`Tencentcloud::Essbasic.v20210526.models.OrganizationInfo`

        attr_accessor :Agent, :FlowId, :FlowApproverInfos, :Operator, :Organization
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6
        deprecate :Organization, :none, 2023, 6
        deprecate :Organization=, :none, 2023, 6

        def initialize(agent=nil, flowid=nil, flowapproverinfos=nil, operator=nil, organization=nil)
          @Agent = agent
          @FlowId = flowid
          @FlowApproverInfos = flowapproverinfos
          @Operator = operator
          @Organization = organization
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @FlowId = params['FlowId']
          unless params['FlowApproverInfos'].nil?
            @FlowApproverInfos = []
            params['FlowApproverInfos'].each do |i|
              flowapproverinfo_tmp = FlowApproverInfo.new
              flowapproverinfo_tmp.deserialize(i)
              @FlowApproverInfos << flowapproverinfo_tmp
            end
          end
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
          unless params['Organization'].nil?
            @Organization = OrganizationInfo.new
            @Organization.deserialize(params['Organization'])
          end
        end
      end

      # ChannelCreateFlowSignUrl返回参数结构体
      class ChannelCreateFlowSignUrlResponse < TencentCloud::Common::AbstractModel
        # @param FlowApproverUrlInfos: 签署人签署链接信息
        # @type FlowApproverUrlInfos: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :FlowApproverUrlInfos, :RequestId

        def initialize(flowapproverurlinfos=nil, requestid=nil)
          @FlowApproverUrlInfos = flowapproverurlinfos
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['FlowApproverUrlInfos'].nil?
            @FlowApproverUrlInfos = []
            params['FlowApproverUrlInfos'].each do |i|
              flowapproverurlinfo_tmp = FlowApproverUrlInfo.new
              flowapproverurlinfo_tmp.deserialize(i)
              @FlowApproverUrlInfos << flowapproverurlinfo_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # ChannelCreateMultiFlowSignQRCode请求参数结构体
      class ChannelCreateMultiFlowSignQRCodeRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。
        # 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param TemplateId: 模版ID
        # @type TemplateId: String
        # @param FlowName: 签署流程名称,最大长度200个字符。
        # @type FlowName: String
        # @param MaxFlowNum: 最大可发起签署流程份数,默认5份;发起签署流程数量超过此上限后,二维码自动失效。
        # @type MaxFlowNum: Integer
        # @param FlowEffectiveDay: 签署流程有效天数 默认7天 最高设置不超过30天
        # @type FlowEffectiveDay: Integer
        # @param QrEffectiveDay: 二维码有效天数 默认7天 最高设置不超过90天
        # @type QrEffectiveDay: Integer
        # @param Restrictions: 限制二维码用户条件
        # @type Restrictions: Array
        # @param CallbackUrl: 回调地址,最大长度1000个字符
        # 不传默认使用第三方应用号配置的回调地址
        # 回调时机:用户通过签署二维码发起合同时,企业额度不足导致失败
        # @type CallbackUrl: String
        # @param ApproverRestrictions: 限制二维码用户条件(已弃用)
        # @type ApproverRestrictions: :class:`Tencentcloud::Essbasic.v20210526.models.ApproverRestriction`
        # @param Operator: 暂未开放
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Agent, :TemplateId, :FlowName, :MaxFlowNum, :FlowEffectiveDay, :QrEffectiveDay, :Restrictions, :CallbackUrl, :ApproverRestrictions, :Operator
        extend Gem::Deprecate
        deprecate :ApproverRestrictions, :none, 2023, 6
        deprecate :ApproverRestrictions=, :none, 2023, 6
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, templateid=nil, flowname=nil, maxflownum=nil, floweffectiveday=nil, qreffectiveday=nil, restrictions=nil, callbackurl=nil, approverrestrictions=nil, operator=nil)
          @Agent = agent
          @TemplateId = templateid
          @FlowName = flowname
          @MaxFlowNum = maxflownum
          @FlowEffectiveDay = floweffectiveday
          @QrEffectiveDay = qreffectiveday
          @Restrictions = restrictions
          @CallbackUrl = callbackurl
          @ApproverRestrictions = approverrestrictions
          @Operator = operator
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @TemplateId = params['TemplateId']
          @FlowName = params['FlowName']
          @MaxFlowNum = params['MaxFlowNum']
          @FlowEffectiveDay = params['FlowEffectiveDay']
          @QrEffectiveDay = params['QrEffectiveDay']
          unless params['Restrictions'].nil?
            @Restrictions = []
            params['Restrictions'].each do |i|
              approverrestriction_tmp = ApproverRestriction.new
              approverrestriction_tmp.deserialize(i)
              @Restrictions << approverrestriction_tmp
            end
          end
          @CallbackUrl = params['CallbackUrl']
          unless params['ApproverRestrictions'].nil?
            @ApproverRestrictions = ApproverRestriction.new
            @ApproverRestrictions.deserialize(params['ApproverRestrictions'])
          end
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # ChannelCreateMultiFlowSignQRCode返回参数结构体
      class ChannelCreateMultiFlowSignQRCodeResponse < TencentCloud::Common::AbstractModel
        # @param QrCode: 签署二维码对象
        # @type QrCode: :class:`Tencentcloud::Essbasic.v20210526.models.SignQrCode`
        # @param SignUrls: 签署链接对象
        # @type SignUrls: :class:`Tencentcloud::Essbasic.v20210526.models.SignUrl`
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :QrCode, :SignUrls, :RequestId

        def initialize(qrcode=nil, signurls=nil, requestid=nil)
          @QrCode = qrcode
          @SignUrls = signurls
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['QrCode'].nil?
            @QrCode = SignQrCode.new
            @QrCode.deserialize(params['QrCode'])
          end
          unless params['SignUrls'].nil?
            @SignUrls = SignUrl.new
            @SignUrls.deserialize(params['SignUrls'])
          end
          @RequestId = params['RequestId']
        end
      end

      # ChannelCreatePrepareFlow请求参数结构体
      class ChannelCreatePrepareFlowRequest < TencentCloud::Common::AbstractModel
        # @param ResourceId: 资源id,与ResourceType对应
        # @type ResourceId: String
        # @param ResourceType: 资源类型,1:模板,目前仅支持模板,与ResourceId对应
        # @type ResourceType: Integer
        # @param FlowInfo: 合同流程基础信息
        # @type FlowInfo: :class:`Tencentcloud::Essbasic.v20210526.models.BaseFlowInfo`
        # @param FlowApproverList: 合同签署人信息
        # @type FlowApproverList: Array
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param FlowOption: 合同流程配置信息
        # @type FlowOption: :class:`Tencentcloud::Essbasic.v20210526.models.CreateFlowOption`
        # @param FlowId: 通过flowid快速获得之前成功通过页面发起的合同生成链接
        # @type FlowId: String
        # @param NeedPreview: 该参数不可用,请通过获取 web 可嵌入接口获取合同流程预览 URL
        # @type NeedPreview: Boolean
        # @param Organization: 企业机构信息,不用传
        # @type Organization: :class:`Tencentcloud::Essbasic.v20210526.models.OrganizationInfo`
        # @param Operator: 操作人(用户)信息,不用传
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :ResourceId, :ResourceType, :FlowInfo, :FlowApproverList, :Agent, :FlowOption, :FlowId, :NeedPreview, :Organization, :Operator
        extend Gem::Deprecate
        deprecate :Organization, :none, 2023, 6
        deprecate :Organization=, :none, 2023, 6
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(resourceid=nil, resourcetype=nil, flowinfo=nil, flowapproverlist=nil, agent=nil, flowoption=nil, flowid=nil, needpreview=nil, organization=nil, operator=nil)
          @ResourceId = resourceid
          @ResourceType = resourcetype
          @FlowInfo = flowinfo
          @FlowApproverList = flowapproverlist
          @Agent = agent
          @FlowOption = flowoption
          @FlowId = flowid
          @NeedPreview = needpreview
          @Organization = organization
          @Operator = operator
        end

        def deserialize(params)
          @ResourceId = params['ResourceId']
          @ResourceType = params['ResourceType']
          unless params['FlowInfo'].nil?
            @FlowInfo = BaseFlowInfo.new
            @FlowInfo.deserialize(params['FlowInfo'])
          end
          unless params['FlowApproverList'].nil?
            @FlowApproverList = []
            params['FlowApproverList'].each do |i|
              commonflowapprover_tmp = CommonFlowApprover.new
              commonflowapprover_tmp.deserialize(i)
              @FlowApproverList << commonflowapprover_tmp
            end
          end
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          unless params['FlowOption'].nil?
            @FlowOption = CreateFlowOption.new
            @FlowOption.deserialize(params['FlowOption'])
          end
          @FlowId = params['FlowId']
          @NeedPreview = params['NeedPreview']
          unless params['Organization'].nil?
            @Organization = OrganizationInfo.new
            @Organization.deserialize(params['Organization'])
          end
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # ChannelCreatePrepareFlow返回参数结构体
      class ChannelCreatePrepareFlowResponse < TencentCloud::Common::AbstractModel
        # @param PrepareFlowUrl: 预发起的合同链接
        # @type PrepareFlowUrl: String
        # @param PreviewFlowUrl: 合同发起后预览链接
        # @type PreviewFlowUrl: String
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :PrepareFlowUrl, :PreviewFlowUrl, :RequestId

        def initialize(prepareflowurl=nil, previewflowurl=nil, requestid=nil)
          @PrepareFlowUrl = prepareflowurl
          @PreviewFlowUrl = previewflowurl
          @RequestId = requestid
        end

        def deserialize(params)
          @PrepareFlowUrl = params['PrepareFlowUrl']
          @PreviewFlowUrl = params['PreviewFlowUrl']
          @RequestId = params['RequestId']
        end
      end

      # ChannelCreateReleaseFlow请求参数结构体
      class ChannelCreateReleaseFlowRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param NeedRelievedFlowId: 待解除的流程编号(即原流程的编号)
        # @type NeedRelievedFlowId: String
        # @param ReliveInfo: 解除协议内容
        # @type ReliveInfo: :class:`Tencentcloud::Essbasic.v20210526.models.RelieveInfo`
        # @param ReleasedApprovers: 非必须,解除协议的本企业签署人列表,默认使用原流程的签署人列表;当解除协议的签署人与原流程的签署人不能相同时(例如原流程签署人离职了),需要指定本企业的其他签署人来替换原流程中的原签署人,注意需要指明ApproverNumber来代表需要替换哪一个签署人,解除协议的签署人数量不能多于原流程的签署人数量
        # @type ReleasedApprovers: Array
        # @param CallbackUrl: 签署完回调url,最大长度1000个字符
        # @type CallbackUrl: String
        # @param Organization: 暂未开放
        # @type Organization: :class:`Tencentcloud::Essbasic.v20210526.models.OrganizationInfo`
        # @param Operator: 暂未开放
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Agent, :NeedRelievedFlowId, :ReliveInfo, :ReleasedApprovers, :CallbackUrl, :Organization, :Operator
        extend Gem::Deprecate
        deprecate :Organization, :none, 2023, 6
        deprecate :Organization=, :none, 2023, 6
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, needrelievedflowid=nil, reliveinfo=nil, releasedapprovers=nil, callbackurl=nil, organization=nil, operator=nil)
          @Agent = agent
          @NeedRelievedFlowId = needrelievedflowid
          @ReliveInfo = reliveinfo
          @ReleasedApprovers = releasedapprovers
          @CallbackUrl = callbackurl
          @Organization = organization
          @Operator = operator
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @NeedRelievedFlowId = params['NeedRelievedFlowId']
          unless params['ReliveInfo'].nil?
            @ReliveInfo = RelieveInfo.new
            @ReliveInfo.deserialize(params['ReliveInfo'])
          end
          unless params['ReleasedApprovers'].nil?
            @ReleasedApprovers = []
            params['ReleasedApprovers'].each do |i|
              releasedapprover_tmp = ReleasedApprover.new
              releasedapprover_tmp.deserialize(i)
              @ReleasedApprovers << releasedapprover_tmp
            end
          end
          @CallbackUrl = params['CallbackUrl']
          unless params['Organization'].nil?
            @Organization = OrganizationInfo.new
            @Organization.deserialize(params['Organization'])
          end
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # ChannelCreateReleaseFlow返回参数结构体
      class ChannelCreateReleaseFlowResponse < TencentCloud::Common::AbstractModel
        # @param FlowId: 解除协议流程编号
        # @type FlowId: String
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :FlowId, :RequestId

        def initialize(flowid=nil, requestid=nil)
          @FlowId = flowid
          @RequestId = requestid
        end

        def deserialize(params)
          @FlowId = params['FlowId']
          @RequestId = params['RequestId']
        end
      end

      # ChannelCreateSealPolicy请求参数结构体
      class ChannelCreateSealPolicyRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param SealId: 指定印章ID
        # @type SealId: String
        # @param UserIds: 指定待授权的用户ID数组,电子签的用户ID
        # 可以填写OpenId,系统会通过组织+渠道+OpenId查询得到UserId进行授权。
        # @type UserIds: Array
        # @param Operator: 操作人(用户)信息,不用传
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`
        # @param Organization: 企业机构信息,不用传
        # @type Organization: :class:`Tencentcloud::Essbasic.v20210526.models.OrganizationInfo`

        attr_accessor :Agent, :SealId, :UserIds, :Operator, :Organization
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6
        deprecate :Organization, :none, 2023, 6
        deprecate :Organization=, :none, 2023, 6

        def initialize(agent=nil, sealid=nil, userids=nil, operator=nil, organization=nil)
          @Agent = agent
          @SealId = sealid
          @UserIds = userids
          @Operator = operator
          @Organization = organization
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @SealId = params['SealId']
          @UserIds = params['UserIds']
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
          unless params['Organization'].nil?
            @Organization = OrganizationInfo.new
            @Organization.deserialize(params['Organization'])
          end
        end
      end

      # ChannelCreateSealPolicy返回参数结构体
      class ChannelCreateSealPolicyResponse < TencentCloud::Common::AbstractModel
        # @param UserIds: 最终授权成功的电子签系统用户ID数组。其他的跳过的是已经授权了的。
        # 请求参数填写OpenId时,返回授权成功的 Openid。
        # @type UserIds: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :UserIds, :RequestId

        def initialize(userids=nil, requestid=nil)
          @UserIds = userids
          @RequestId = requestid
        end

        def deserialize(params)
          @UserIds = params['UserIds']
          @RequestId = params['RequestId']
        end
      end

      # ChannelCreateUserRoles请求参数结构体
      class ChannelCreateUserRolesRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param RoleIds: 绑定角色的角色id列表
        # @type RoleIds: Array
        # @param UserIds: 电子签用户ID列表,与OpenIds参数二选一,优先UserIds参数
        # @type UserIds: Array
        # @param OpenIds: 客户系统用户ID列表,与UserIds参数二选一,优先UserIds参数
        # @type OpenIds: Array
        # @param Operator: 操作者信息
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Agent, :RoleIds, :UserIds, :OpenIds, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, roleids=nil, userids=nil, openids=nil, operator=nil)
          @Agent = agent
          @RoleIds = roleids
          @UserIds = userids
          @OpenIds = openids
          @Operator = operator
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @RoleIds = params['RoleIds']
          @UserIds = params['UserIds']
          @OpenIds = params['OpenIds']
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # ChannelCreateUserRoles返回参数结构体
      class ChannelCreateUserRolesResponse < TencentCloud::Common::AbstractModel
        # @param FailedCreateRoleData: 绑定失败的用户角色列表
        # @type FailedCreateRoleData: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :FailedCreateRoleData, :RequestId

        def initialize(failedcreateroledata=nil, requestid=nil)
          @FailedCreateRoleData = failedcreateroledata
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['FailedCreateRoleData'].nil?
            @FailedCreateRoleData = []
            params['FailedCreateRoleData'].each do |i|
              failedcreateroledata_tmp = FailedCreateRoleData.new
              failedcreateroledata_tmp.deserialize(i)
              @FailedCreateRoleData << failedcreateroledata_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # ChannelDeleteRoleUsers请求参数结构体
      class ChannelDeleteRoleUsersRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 代理信息
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param RoleId: 角色Id(非超管或法人角色Id)
        # @type RoleId: String
        # @param UserIds: 电子签用户ID列表,与OpenIds参数二选一,优先UserIds参数
        # @type UserIds: Array
        # @param Operator: 操作人信息
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`
        # @param OpenIds: 客户系统用户ID列表,与UserIds参数二选一,优先UserIds参数
        # @type OpenIds: Array

        attr_accessor :Agent, :RoleId, :UserIds, :Operator, :OpenIds
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, roleid=nil, userids=nil, operator=nil, openids=nil)
          @Agent = agent
          @RoleId = roleid
          @UserIds = userids
          @Operator = operator
          @OpenIds = openids
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @RoleId = params['RoleId']
          @UserIds = params['UserIds']
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
          @OpenIds = params['OpenIds']
        end
      end

      # ChannelDeleteRoleUsers返回参数结构体
      class ChannelDeleteRoleUsersResponse < TencentCloud::Common::AbstractModel
        # @param RoleId: 角色id
        # @type RoleId: String
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RoleId, :RequestId

        def initialize(roleid=nil, requestid=nil)
          @RoleId = roleid
          @RequestId = requestid
        end

        def deserialize(params)
          @RoleId = params['RoleId']
          @RequestId = params['RequestId']
        end
      end

      # ChannelDeleteSealPolicies请求参数结构体
      class ChannelDeleteSealPoliciesRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param SealId: 指定印章ID
        # @type SealId: String
        # @param UserIds: 指定用户ID数组,电子签系统用户ID
        # 可以填写OpenId,系统会通过组织+渠道+OpenId查询得到UserId进行授权取消。
        # @type UserIds: Array
        # @param Organization: 组织机构信息,不用传
        # @type Organization: :class:`Tencentcloud::Essbasic.v20210526.models.OrganizationInfo`
        # @param Operator: 操作人(用户)信息,不用传
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Agent, :SealId, :UserIds, :Organization, :Operator
        extend Gem::Deprecate
        deprecate :Organization, :none, 2023, 6
        deprecate :Organization=, :none, 2023, 6
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, sealid=nil, userids=nil, organization=nil, operator=nil)
          @Agent = agent
          @SealId = sealid
          @UserIds = userids
          @Organization = organization
          @Operator = operator
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @SealId = params['SealId']
          @UserIds = params['UserIds']
          unless params['Organization'].nil?
            @Organization = OrganizationInfo.new
            @Organization.deserialize(params['Organization'])
          end
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # ChannelDeleteSealPolicies返回参数结构体
      class ChannelDeleteSealPoliciesResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # ChannelDescribeEmployees请求参数结构体
      class ChannelDescribeEmployeesRequest < TencentCloud::Common::AbstractModel
        # @param Limit: 返回最大数量,最大为20
        # @type Limit: Integer
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param Filters: 查询过滤实名用户,Key为Status,Values为["IsVerified"]
        # 根据第三方系统openId过滤查询员工时,Key为StaffOpenId,Values为["OpenId","OpenId",...]
        # 查询离职员工时,Key为Status,Values为["QuiteJob"]
        # @type Filters: Array
        # @param Offset: 偏移量,默认为0,最大为20000
        # @type Offset: Integer
        # @param Operator: 暂未开放
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Limit, :Agent, :Filters, :Offset, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(limit=nil, agent=nil, filters=nil, offset=nil, operator=nil)
          @Limit = limit
          @Agent = agent
          @Filters = filters
          @Offset = offset
          @Operator = operator
        end

        def deserialize(params)
          @Limit = params['Limit']
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          unless params['Filters'].nil?
            @Filters = []
            params['Filters'].each do |i|
              filter_tmp = Filter.new
              filter_tmp.deserialize(i)
              @Filters << filter_tmp
            end
          end
          @Offset = params['Offset']
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # ChannelDescribeEmployees返回参数结构体
      class ChannelDescribeEmployeesResponse < TencentCloud::Common::AbstractModel
        # @param Employees: 员工数据列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Employees: Array
        # @param Offset: 偏移量,默认为0,最大为20000
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Offset: Integer
        # @param Limit: 返回最大数量,最大为20
        # @type Limit: Integer
        # @param TotalCount: 符合条件的员工数量
        # @type TotalCount: Integer
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Employees, :Offset, :Limit, :TotalCount, :RequestId

        def initialize(employees=nil, offset=nil, limit=nil, totalcount=nil, requestid=nil)
          @Employees = employees
          @Offset = offset
          @Limit = limit
          @TotalCount = totalcount
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['Employees'].nil?
            @Employees = []
            params['Employees'].each do |i|
              staff_tmp = Staff.new
              staff_tmp.deserialize(i)
              @Employees << staff_tmp
            end
          end
          @Offset = params['Offset']
          @Limit = params['Limit']
          @TotalCount = params['TotalCount']
          @RequestId = params['RequestId']
        end
      end

      # ChannelDescribeFlowComponents请求参数结构体
      class ChannelDescribeFlowComponentsRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param FlowId: 电子签流程的Id
        # @type FlowId: String

        attr_accessor :Agent, :FlowId

        def initialize(agent=nil, flowid=nil)
          @Agent = agent
          @FlowId = flowid
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @FlowId = params['FlowId']
        end
      end

      # ChannelDescribeFlowComponents返回参数结构体
      class ChannelDescribeFlowComponentsResponse < TencentCloud::Common::AbstractModel
        # @param RecipientComponentInfos: 流程关联的填写控件信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RecipientComponentInfos: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RecipientComponentInfos, :RequestId

        def initialize(recipientcomponentinfos=nil, requestid=nil)
          @RecipientComponentInfos = recipientcomponentinfos
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['RecipientComponentInfos'].nil?
            @RecipientComponentInfos = []
            params['RecipientComponentInfos'].each do |i|
              recipientcomponentinfo_tmp = RecipientComponentInfo.new
              recipientcomponentinfo_tmp.deserialize(i)
              @RecipientComponentInfos << recipientcomponentinfo_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # ChannelDescribeOrganizationSeals请求参数结构体
      class ChannelDescribeOrganizationSealsRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param Limit: 返回最大数量,最大为100
        # @type Limit: Integer
        # @param Offset: 偏移量,默认为0,最大为20000
        # @type Offset: Integer
        # @param InfoType: 查询信息类型,为1时返回授权用户,为其他值时不返回
        # @type InfoType: Integer
        # @param SealId: 印章id(没有输入返回所有)
        # @type SealId: String
        # @param SealTypes: 印章类型列表(都是组织机构印章)。
        # 为空时查询所有类型的印章。
        # 目前支持以下类型:
        # OFFICIAL:企业公章;
        # CONTRACT:合同专用章;
        # ORGANIZATION_SEAL:企业印章(图片上传创建);
        # LEGAL_PERSON_SEAL:法定代表人章
        # @type SealTypes: Array

        attr_accessor :Agent, :Limit, :Offset, :InfoType, :SealId, :SealTypes

        def initialize(agent=nil, limit=nil, offset=nil, infotype=nil, sealid=nil, sealtypes=nil)
          @Agent = agent
          @Limit = limit
          @Offset = offset
          @InfoType = infotype
          @SealId = sealid
          @SealTypes = sealtypes
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @Limit = params['Limit']
          @Offset = params['Offset']
          @InfoType = params['InfoType']
          @SealId = params['SealId']
          @SealTypes = params['SealTypes']
        end
      end

      # ChannelDescribeOrganizationSeals返回参数结构体
      class ChannelDescribeOrganizationSealsResponse < TencentCloud::Common::AbstractModel
        # @param TotalCount: 在设置了SealId时返回0或1,没有设置时返回公司的总印章数量,可能比返回的印章数组数量多
        # @type TotalCount: Integer
        # @param Seals: 查询到的印章结果数组
        # @type Seals: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TotalCount, :Seals, :RequestId

        def initialize(totalcount=nil, seals=nil, requestid=nil)
          @TotalCount = totalcount
          @Seals = seals
          @RequestId = requestid
        end

        def deserialize(params)
          @TotalCount = params['TotalCount']
          unless params['Seals'].nil?
            @Seals = []
            params['Seals'].each do |i|
              occupiedseal_tmp = OccupiedSeal.new
              occupiedseal_tmp.deserialize(i)
              @Seals << occupiedseal_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # ChannelDescribeRoles请求参数结构体
      class ChannelDescribeRolesRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param Offset: 查询起始偏移,最大2000
        # @type Offset: Integer
        # @param Limit: 查询数量,最大200
        # @type Limit: String
        # @param Filters: 查询的关键字段:
        # Key:"RoleType",Values:["1"]查询系统角色,Values:["2"]查询自定义角色
        # Key:"RoleStatus",Values:["1"]查询启用角色,Values:["2"]查询禁用角色
        # @type Filters: Array
        # @param Operator: 操作人信息
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Agent, :Offset, :Limit, :Filters, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, offset=nil, limit=nil, filters=nil, operator=nil)
          @Agent = agent
          @Offset = offset
          @Limit = limit
          @Filters = filters
          @Operator = operator
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @Offset = params['Offset']
          @Limit = params['Limit']
          unless params['Filters'].nil?
            @Filters = []
            params['Filters'].each do |i|
              filter_tmp = Filter.new
              filter_tmp.deserialize(i)
              @Filters << filter_tmp
            end
          end
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # ChannelDescribeRoles返回参数结构体
      class ChannelDescribeRolesResponse < TencentCloud::Common::AbstractModel
        # @param Offset: 页面偏移量,最大2000
        # @type Offset: Integer
        # @param Limit: 查询数量,最大200
        # @type Limit: Integer
        # @param TotalCount: 查询角色的总数量
        # @type TotalCount: Integer
        # @param ChannelRoles: 角色信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ChannelRoles: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Offset, :Limit, :TotalCount, :ChannelRoles, :RequestId

        def initialize(offset=nil, limit=nil, totalcount=nil, channelroles=nil, requestid=nil)
          @Offset = offset
          @Limit = limit
          @TotalCount = totalcount
          @ChannelRoles = channelroles
          @RequestId = requestid
        end

        def deserialize(params)
          @Offset = params['Offset']
          @Limit = params['Limit']
          @TotalCount = params['TotalCount']
          unless params['ChannelRoles'].nil?
            @ChannelRoles = []
            params['ChannelRoles'].each do |i|
              channelrole_tmp = ChannelRole.new
              channelrole_tmp.deserialize(i)
              @ChannelRoles << channelrole_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # ChannelGetTaskResultApi请求参数结构体
      class ChannelGetTaskResultApiRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param TaskId: 任务Id,通过ChannelCreateConvertTaskApi接口获得
        # @type TaskId: String
        # @param Operator: 操作者的信息,不用传
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`
        # @param Organization: 暂未开放
        # @type Organization: :class:`Tencentcloud::Essbasic.v20210526.models.OrganizationInfo`

        attr_accessor :Agent, :TaskId, :Operator, :Organization
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6
        deprecate :Organization, :none, 2023, 6
        deprecate :Organization=, :none, 2023, 6

        def initialize(agent=nil, taskid=nil, operator=nil, organization=nil)
          @Agent = agent
          @TaskId = taskid
          @Operator = operator
          @Organization = organization
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @TaskId = params['TaskId']
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
          unless params['Organization'].nil?
            @Organization = OrganizationInfo.new
            @Organization.deserialize(params['Organization'])
          end
        end
      end

      # ChannelGetTaskResultApi返回参数结构体
      class ChannelGetTaskResultApiResponse < TencentCloud::Common::AbstractModel
        # @param TaskId: 任务Id
        # @type TaskId: String
        # @param TaskStatus: 任务状态,需要关注的状态
        # 0  :NeedTranform   - 任务已提交
        # 4  :Processing     - 文档转换中
        # 8  :TaskEnd        - 任务处理完成
        # -2 :DownloadFailed - 下载失败
        # -6 :ProcessFailed  - 转换失败
        # -13:ProcessTimeout - 转换文件超时
        # @type TaskStatus: Integer
        # @param TaskMessage: 状态描述,需要关注的状态
        # NeedTranform   - 任务已提交
        # Processing     - 文档转换中
        # TaskEnd        - 任务处理完成
        # DownloadFailed - 下载失败
        # ProcessFailed  - 转换失败
        # ProcessTimeout - 转换文件超时
        # @type TaskMessage: String
        # @param ResourceId: 资源Id,也是FileId,用于文件发起使用
        # @type ResourceId: String
        # @param PreviewUrl: 预览文件Url,有效期30分钟
        # 当前字段返回为空,发起的时候,将ResourceId 放入发起即可
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PreviewUrl: String
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :TaskId, :TaskStatus, :TaskMessage, :ResourceId, :PreviewUrl, :RequestId
        extend Gem::Deprecate
        deprecate :PreviewUrl, :none, 2023, 6
        deprecate :PreviewUrl=, :none, 2023, 6

        def initialize(taskid=nil, taskstatus=nil, taskmessage=nil, resourceid=nil, previewurl=nil, requestid=nil)
          @TaskId = taskid
          @TaskStatus = taskstatus
          @TaskMessage = taskmessage
          @ResourceId = resourceid
          @PreviewUrl = previewurl
          @RequestId = requestid
        end

        def deserialize(params)
          @TaskId = params['TaskId']
          @TaskStatus = params['TaskStatus']
          @TaskMessage = params['TaskMessage']
          @ResourceId = params['ResourceId']
          @PreviewUrl = params['PreviewUrl']
          @RequestId = params['RequestId']
        end
      end

      # 渠道角色信息
      class ChannelRole < TencentCloud::Common::AbstractModel
        # @param RoleId: 角色id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RoleId: String
        # @param RoleName: 角色名
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RoleName: String
        # @param RoleStatus: 角色状态:1-启用;2-禁用
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RoleStatus: Integer

        attr_accessor :RoleId, :RoleName, :RoleStatus

        def initialize(roleid=nil, rolename=nil, rolestatus=nil)
          @RoleId = roleid
          @RoleName = rolename
          @RoleStatus = rolestatus
        end

        def deserialize(params)
          @RoleId = params['RoleId']
          @RoleName = params['RoleName']
          @RoleStatus = params['RoleStatus']
        end
      end

      # ChannelUpdateSealStatus请求参数结构体
      class ChannelUpdateSealStatusRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param Status: 操作的印章状态,DISABLE-停用印章
        # @type Status: String
        # @param SealId: 印章ID
        # @type SealId: String
        # @param Reason: 更新印章状态原因说明
        # @type Reason: String
        # @param Operator: 操作者的信息
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Agent, :Status, :SealId, :Reason, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, status=nil, sealid=nil, reason=nil, operator=nil)
          @Agent = agent
          @Status = status
          @SealId = sealid
          @Reason = reason
          @Operator = operator
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @Status = params['Status']
          @SealId = params['SealId']
          @Reason = params['Reason']
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # ChannelUpdateSealStatus返回参数结构体
      class ChannelUpdateSealStatusResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # ChannelVerifyPdf请求参数结构体
      class ChannelVerifyPdfRequest < TencentCloud::Common::AbstractModel
        # @param FlowId: 流程ID
        # @type FlowId: String
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param Operator: 暂未开放
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :FlowId, :Agent, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(flowid=nil, agent=nil, operator=nil)
          @FlowId = flowid
          @Agent = agent
          @Operator = operator
        end

        def deserialize(params)
          @FlowId = params['FlowId']
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # ChannelVerifyPdf返回参数结构体
      class ChannelVerifyPdfResponse < TencentCloud::Common::AbstractModel
        # @param VerifyResult: 验签结果,1-文件未被篡改,全部签名在腾讯电子签完成; 2-文件未被篡改,部分签名在腾讯电子签完成;3-文件被篡改;4-异常:文件内没有签名域;5-异常:文件签名格式错误
        # @type VerifyResult: Integer
        # @param PdfVerifyResults: 验签结果详情,内部状态1-验签成功,在电子签签署;2-验签成功,在其他平台签署;3-验签失败;4-pdf文件没有签名域;5-文件签名格式错误
        # @type PdfVerifyResults: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :VerifyResult, :PdfVerifyResults, :RequestId

        def initialize(verifyresult=nil, pdfverifyresults=nil, requestid=nil)
          @VerifyResult = verifyresult
          @PdfVerifyResults = pdfverifyresults
          @RequestId = requestid
        end

        def deserialize(params)
          @VerifyResult = params['VerifyResult']
          unless params['PdfVerifyResults'].nil?
            @PdfVerifyResults = []
            params['PdfVerifyResults'].each do |i|
              pdfverifyresult_tmp = PdfVerifyResult.new
              pdfverifyresult_tmp.deserialize(i)
              @PdfVerifyResults << pdfverifyresult_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # 签署人配置信息
      class CommonApproverOption < TencentCloud::Common::AbstractModel
        # @param CanEditApprover: 是否允许修改签署人信息
        # @type CanEditApprover: Boolean

        attr_accessor :CanEditApprover

        def initialize(caneditapprover=nil)
          @CanEditApprover = caneditapprover
        end

        def deserialize(params)
          @CanEditApprover = params['CanEditApprover']
        end
      end

      # 通用签署人信息
      class CommonFlowApprover < TencentCloud::Common::AbstractModel
        # @param NotChannelOrganization: 指定当前签署人为第三方应用集成子客,默认false:当前签署人为第三方应用集成子客,true:当前签署人为saas企业用户
        # @type NotChannelOrganization: Boolean
        # @param ApproverType: 签署人类型,目前支持:0-企业签署人,1-个人签署人,3-企业静默签署人
        # @type ApproverType: Integer
        # @param OrganizationId: 企业id
        # @type OrganizationId: String
        # @param OrganizationOpenId: 企业OpenId,第三方应用集成非静默签子客企业签署人发起合同必传
        # @type OrganizationOpenId: String
        # @param OrganizationName: 企业名称,第三方应用集成非静默签子客企业签署人必传,saas企业签署人必传
        # @type OrganizationName: String
        # @param UserId: 用户id
        # @type UserId: String
        # @param OpenId: 用户openId,第三方应用集成非静默签子客企业签署人必传
        # @type OpenId: String
        # @param ApproverName: 签署人名称,saas企业签署人,个人签署人必传
        # @type ApproverName: String
        # @param ApproverMobile: 签署人手机号,saas企业签署人,个人签署人必传
        # @type ApproverMobile: String
        # @param RecipientId: 签署人Id,使用模板发起是,对应模板配置中的签署人RecipientId
        # 注意:模板发起时该字段必填
        # @type RecipientId: String
        # @param PreReadTime: 签署前置条件:阅读时长限制,不传默认10s,最大300s,最小3s
        # @type PreReadTime: Integer
        # @param IsFullText: 签署前置条件:阅读全文限制
        # @type IsFullText: Boolean
        # @param NotifyType: 通知类型:SMS(短信) NONE(不做通知), 不传 默认SMS
        # @type NotifyType: String
        # @param ApproverOption: 签署人配置
        # @type ApproverOption: :class:`Tencentcloud::Essbasic.v20210526.models.CommonApproverOption`

        attr_accessor :NotChannelOrganization, :ApproverType, :OrganizationId, :OrganizationOpenId, :OrganizationName, :UserId, :OpenId, :ApproverName, :ApproverMobile, :RecipientId, :PreReadTime, :IsFullText, :NotifyType, :ApproverOption

        def initialize(notchannelorganization=nil, approvertype=nil, organizationid=nil, organizationopenid=nil, organizationname=nil, userid=nil, openid=nil, approvername=nil, approvermobile=nil, recipientid=nil, prereadtime=nil, isfulltext=nil, notifytype=nil, approveroption=nil)
          @NotChannelOrganization = notchannelorganization
          @ApproverType = approvertype
          @OrganizationId = organizationid
          @OrganizationOpenId = organizationopenid
          @OrganizationName = organizationname
          @UserId = userid
          @OpenId = openid
          @ApproverName = approvername
          @ApproverMobile = approvermobile
          @RecipientId = recipientid
          @PreReadTime = prereadtime
          @IsFullText = isfulltext
          @NotifyType = notifytype
          @ApproverOption = approveroption
        end

        def deserialize(params)
          @NotChannelOrganization = params['NotChannelOrganization']
          @ApproverType = params['ApproverType']
          @OrganizationId = params['OrganizationId']
          @OrganizationOpenId = params['OrganizationOpenId']
          @OrganizationName = params['OrganizationName']
          @UserId = params['UserId']
          @OpenId = params['OpenId']
          @ApproverName = params['ApproverName']
          @ApproverMobile = params['ApproverMobile']
          @RecipientId = params['RecipientId']
          @PreReadTime = params['PreReadTime']
          @IsFullText = params['IsFullText']
          @NotifyType = params['NotifyType']
          unless params['ApproverOption'].nil?
            @ApproverOption = CommonApproverOption.new
            @ApproverOption.deserialize(params['ApproverOption'])
          end
        end
      end

      # 此结构体 (Component) 用于描述控件属性。

      # 在通过文件发起合同时,对应的component有三种定位方式
      # 1. 绝对定位方式
      # 2. 表单域(FIELD)定位方式
      # 3. 关键字(KEYWORD)定位方式
      # 可以参考官网说明
      # https://cloud.tencent.com/document/product/1323/78346#component-.E4.B8.89.E7.A7.8D.E5.AE.9A.E4.BD.8D.E6.96.B9.E5.BC.8F.E8.AF.B4.E6.98.8E
      class Component < TencentCloud::Common::AbstractModel
        # @param ComponentId: 控件编号

        # CreateFlowByTemplates发起合同时优先以ComponentId(不为空)填充;否则以ComponentName填充

        # 注:
        # 当GenerateMode=3时,通过"^"来决定是否使用关键字整词匹配能力。
        # 例:
        # 当GenerateMode=3时,如果传入关键字"^甲方签署^",则会在PDF文件中有且仅有"甲方签署"关键字的地方进行对应操作。
        # 如传入的关键字为"甲方签署",则PDF文件中每个出现关键字的位置都会执行相应操作。

        # 创建控件时,此值为空
        # 查询时返回完整结构
        # @type ComponentId: String
        # @param ComponentType: 如果是Component控件类型,则可选的字段为:
        # TEXT - 普通文本控件,输入文本字符串;
        # MULTI_LINE_TEXT - 多行文本控件,输入文本字符串;
        # CHECK_BOX - 勾选框控件,若选中填写ComponentValue 填写 true或者 false 字符串;
        # FILL_IMAGE - 图片控件,ComponentValue 填写图片的资源 ID;
        # DYNAMIC_TABLE - 动态表格控件;
        # ATTACHMENT - 附件控件,ComponentValue 填写附件图片的资源 ID列表,以逗号分割;
        # SELECTOR - 选择器控件,ComponentValue填写选择的字符串内容;
        # DATE - 日期控件;默认是格式化为xxxx年xx月xx日字符串;
        # DISTRICT - 省市区行政区控件,ComponentValue填写省市区行政区字符串内容;

        # 如果是SignComponent控件类型,则可选的字段为
        # SIGN_SEAL - 签署印章控件;
        # SIGN_DATE - 签署日期控件;
        # SIGN_SIGNATURE - 用户签名控件;
        # SIGN_PERSONAL_SEAL - 个人签署印章控件(使用文件发起暂不支持此类型);
        # SIGN_PAGING_SEAL - 骑缝章;若文件发起,需要对应填充ComponentPosY、ComponentWidth、ComponentHeight
        # SIGN_OPINION - 签署意见控件,用户需要根据配置的签署意见内容,完成对意见内容的确认;
        # SIGN_LEGAL_PERSON_SEAL - 企业法定代表人控件。

        # 表单域的控件不能作为印章和签名控件
        # @type ComponentType: String
        # @param ComponentName: 控件简称,不能超过30个字符
        # @type ComponentName: String
        # @param ComponentRequired: 定义控件是否为必填项,默认为false
        # @type ComponentRequired: Boolean
        # @param ComponentRecipientId: 控件关联的签署方id
        # @type ComponentRecipientId: String
        # @param FileIndex: 控件所属文件的序号 (文档中文件的排列序号,从0开始)
        # @type FileIndex: Integer
        # @param GenerateMode: 控件生成的方式:
        # NORMAL - 普通控件
        # FIELD - 表单域
        # KEYWORD - 关键字
        # @type GenerateMode: String
        # @param ComponentWidth: 参数控件宽度,默认100,单位px
        # 表单域和关键字转换控件不用填
        # @type ComponentWidth: Float
        # @param ComponentHeight: 参数控件高度,默认100,单位px
        # 表单域和关键字转换控件不用填
        # @type ComponentHeight: Float
        # @param ComponentPage: 参数控件所在页码,从1开始
        # @type ComponentPage: Integer
        # @param ComponentPosX: 参数控件X位置,单位px
        # @type ComponentPosX: Float
        # @param ComponentPosY: 参数控件Y位置,单位px
        # @type ComponentPosY: Float
        # @param ComponentExtra: 扩展参数:
        # 为JSON格式。

        # ComponentType为FILL_IMAGE时,支持以下参数:
        # NotMakeImageCenter:bool。是否设置图片居中。false:居中(默认)。 true: 不居中
        # FillMethod: int. 填充方式。0-铺满(默认);1-等比例缩放

        # ComponentType为SIGN_SIGNATURE类型可以控制签署方式
        # {“ComponentTypeLimit”: [“xxx”]}
        # xxx可以为:
        # HANDWRITE – 手写签名
        # OCR_ESIGN -- AI智能识别手写签名
        # ESIGN -- 个人印章类型
        # SYSTEM_ESIGN -- 系统签名(该类型可以在用户签署时根据用户姓名一键生成一个签名来进行签署)
        # 如:{“ComponentTypeLimit”: [“SYSTEM_ESIGN”]}

        # ComponentType为SIGN_DATE时,支持以下参数:
        # 1 Font:字符串类型目前只支持"黑体"、"宋体",如果不填默认为"黑体"
        # 2 FontSize: 数字类型,范围6-72,默认值为12
        # 3 FontAlign: 字符串类型,可取Left/Right/Center,对应左对齐/居中/右对齐
        # 4 Format: 字符串类型,日期格式,必须是以下五种之一 “yyyy m d”,”yyyy年m月d日”,”yyyy/m/d”,”yyyy-m-d”,”yyyy.m.d”。
        # 5 Gaps:: 字符串类型,仅在Format为“yyyy m d”时起作用,格式为用逗号分开的两个整数,例如”2,2”,两个数字分别是日期格式的前后两个空隙中的空格个数
        # 如果extra参数为空,默认为”yyyy年m月d日”格式的居中日期
        # 特别地,如果extra中Format字段为空或无法被识别,则extra参数会被当作默认值处理(Font,FontSize,Gaps和FontAlign都不会起效)
        # 参数样例:    "ComponentExtra": "{\"Format\":“yyyy m d”,\"FontSize\":12,\"Gaps\":\"2,2\", \"FontAlign\":\"Right\"}"

        # ComponentType为SIGN_SEAL类型时,支持以下参数:
        # 1.PageRanges:PageRange的数组,通过PageRanges属性设置该印章在PDF所有页面上盖章(适用于标书在所有页面盖章的情况)
        # 参数样例: "ComponentExtra":"{\"PageRanges\":[\"PageRange\":{\"BeginPage\":1,\"EndPage\":-1}]}"


        # 参数控件样式,json格式表述

        # 不同类型的控件会有部分非通用参数

        # TEXT/MULTI_LINE_TEXT控件可以指定
        # 1 Font:目前只支持黑体、宋体
        # 2 FontSize: 范围12-72
        # 3 FontAlign: Left/Right/Center,左对齐/居中/右对齐
        # 例如:{"FontSize":12}

        # ComponentType为FILL_IMAGE时,支持以下参数:
        # NotMakeImageCenter:bool。是否设置图片居中。false:居中(默认)。 true: 不居中
        # FillMethod: int. 填充方式。0-铺满(默认);1-等比例缩放

        # ComponentType为SIGN_SIGNATURE类型可以控制签署方式
        # {“ComponentTypeLimit”: [“xxx”]}
        # xxx可以为:
        # HANDWRITE – 手写签名
        # BORDERLESS_ESIGN – 自动生成无边框腾讯体
        # OCR_ESIGN -- AI智能识别手写签名
        # ESIGN -- 个人印章类型
        # SYSTEM_ESIGN -- 系统签名(该类型可以在用户签署时根据用户姓名一键生成一个签名来进行签署)
        # 如:{“ComponentTypeLimit”: [“BORDERLESS_ESIGN”]}

        # ComponentType为SIGN_DATE时,支持以下参数:
        # 1 Font:字符串类型目前只支持"黑体"、"宋体",如果不填默认为"黑体"
        # 2 FontSize: 数字类型,范围6-72,默认值为12
        # 3 FontAlign: 字符串类型,可取Left/Right/Center,对应左对齐/居中/右对齐
        # 4 Format: 字符串类型,日期格式,必须是以下五种之一 “yyyy m d”,”yyyy年m月d日”,”yyyy/m/d”,”yyyy-m-d”,”yyyy.m.d”。
        # 5 Gaps:: 字符串类型,仅在Format为“yyyy m d”时起作用,格式为用逗号分开的两个整数,例如”2,2”,两个数字分别是日期格式的前后两个空隙钟的空格个数
        # 如果extra参数为空,默认为”yyyy年m月d日”格式的居中日期
        # 特别地,如果extra中Format字段为空或无法被识别,则extra参数会被当作默认值处理(Font,FontSize,Gaps和FontAlign都不会起效)
        # 参数样例:    "ComponentExtra": "{\"Format\":“yyyy m d”,\"FontSize\":12,\"Gaps\":\"2,2\", \"FontAlign\":\"Right\"}"

        # ComponentType为SIGN_SEAL类型时,支持以下参数:
        # 1.PageRanges:PageRange的数组,通过PageRanges属性设置该印章在PDF所有页面上盖章(适用于标书在所有页面盖章的情况)
        # 参数样例: "ComponentExtra":"{\"PageRanges\":[\"PageRange\":{\"BeginPage\":1,\"EndPage\":-1}]}"
        # @type ComponentExtra: String
        # @param ComponentValue: 控件填充vaule,ComponentType和传入值类型对应关系:
        # TEXT - 文本内容
        # MULTI_LINE_TEXT - 文本内容
        # CHECK_BOX - true/false
        # FILL_IMAGE、ATTACHMENT - 附件的FileId,需要通过UploadFiles接口上传获取
        # SELECTOR - 选项值
        # DATE - 默认是格式化为xxxx年xx月xx日
        # DYNAMIC_TABLE - 传入json格式的表格内容,具体见数据结构FlowInfo:https://cloud.tencent.com/document/api/1420/61525#FlowInfo
        # SIGN_SEAL - 印章ID
        # SIGN_PAGING_SEAL - 可以指定印章ID

        # 控件值约束说明:
        # 企业全称控件:
        #   约束:企业名称中文字符中文括号
        #   检查正则表达式:/^[\u3400-\u4dbf\u4e00-\u9fa5()]+$/

        # 统一社会信用代码控件:
        #   检查正则表达式:/^[A-Z0-9]{1,18}$/

        # 法人名称控件:
        #   约束:最大50个字符,2到25个汉字或者1到50个字母
        #   检查正则表达式:/^([\u3400-\u4dbf\u4e00-\u9fa5.·]{2,25}|[a-zA-Z·,\s-]{1,50})$/

        # 签署意见控件:
        #   约束:签署意见最大长度为50字符

        # 签署人手机号控件:
        #   约束:国内手机号 13,14,15,16,17,18,19号段长度11位

        # 签署人身份证控件:
        #   约束:合法的身份证号码检查

        # 控件名称:
        #   约束:控件名称最大长度为20字符

        # 单行文本控件:
        #   约束:只允许输入中文,英文,数字,中英文标点符号

        # 多行文本控件:
        #   约束:只允许输入中文,英文,数字,中英文标点符号

        # 勾选框控件:
        #   约束:选择填字符串true,不选填字符串false

        # 选择器控件:
        #   约束:同单行文本控件约束,填写选择值中的字符串

        # 数字控件:
        #   约束:请输入有效的数字(可带小数点)
        #   检查正则表达式:/^(-|\+)?\d+(\.\d+)?$/

        # 日期控件:
        #   约束:格式:yyyy年mm月dd日

        # 附件控件:
        #   约束:JPG或PNG图片,上传数量限制,1到6个,最大6个附件

        # 图片控件:
        #   约束:JPG或PNG图片,填写上传的图片资源ID

        # 邮箱控件:
        #   约束:请输入有效的邮箱地址, w3c标准
        #   检查正则表达式:/^([A-Za-z0-9_\-.!#$%&])+@([A-Za-z0-9_\-.])+\.([A-Za-z]{2,4})$/
        #   参考:https://emailregex.com/

        # 地址控件:
        #   同单行文本控件约束

        # 省市区控件:
        #   同单行文本控件约束

        # 性别控件:
        #   同单行文本控件约束,填写选择值中的字符串

        # 学历控件:
        #   同单行文本控件约束,填写选择值中的字符串
        # @type ComponentValue: String
        # @param ComponentDateFontSize: 日期签署控件的字号,默认为 12

        # 签署区日期控件会转换成图片格式并带存证,需要通过字体决定图片大小
        # @type ComponentDateFontSize: Integer
        # @param DocumentId: 控件所属文档的Id, 模块相关接口为空值
        # @type DocumentId: String
        # @param ComponentDescription: 控件描述,不能超过30个字符
        # @type ComponentDescription: String
        # @param OffsetX: 指定关键字时横坐标偏移量,单位pt
        # @type OffsetX: Float
        # @param OffsetY: 指定关键字时纵坐标偏移量,单位pt
        # @type OffsetY: Float
        # @param ChannelComponentId: 平台企业控件ID。
        # 如果不为空,属于平台企业预设控件;
        # @type ChannelComponentId: String
        # @param KeywordOrder: 指定关键字排序规则,Positive-正序,Reverse-倒序。传入Positive时会根据关键字在PDF文件内的顺序进行排列。在指定KeywordIndexes时,0代表在PDF内查找内容时,查找到的第一个关键字。
        # 传入Reverse时会根据关键字在PDF文件内的反序进行排列。在指定KeywordIndexes时,0代表在PDF内查找内容时,查找到的最后一个关键字。
        # @type KeywordOrder: String
        # @param KeywordPage: 指定关键字页码,可选参数,指定页码后,将只在指定的页码内查找关键字,非该页码的关键字将不会查询出来
        # @type KeywordPage: Integer
        # @param RelativeLocation: 关键字位置模式,Middle-居中,Below-正下方,Right-正右方,LowerRight-右上角,UpperRight-右下角。示例:如果设置Middle的关键字盖章,则印章的中心会和关键字的中心重合,如果设置Below,则印章在关键字的正下方
        # @type RelativeLocation: String
        # @param KeywordIndexes: 关键字索引,可选参数,如果一个关键字在PDF文件中存在多个,可以通过关键字索引指定使用第几个关键字作为最后的结果,可指定多个索引。示例[0,2],说明使用PDF文件内第1个和第3个关键字位置。
        # @type KeywordIndexes: Array
        # @param Placeholder: 填写提示的内容
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Placeholder: String

        attr_accessor :ComponentId, :ComponentType, :ComponentName, :ComponentRequired, :ComponentRecipientId, :FileIndex, :GenerateMode, :ComponentWidth, :ComponentHeight, :ComponentPage, :ComponentPosX, :ComponentPosY, :ComponentExtra, :ComponentValue, :ComponentDateFontSize, :DocumentId, :ComponentDescription, :OffsetX, :OffsetY, :ChannelComponentId, :KeywordOrder, :KeywordPage, :RelativeLocation, :KeywordIndexes, :Placeholder

        def initialize(componentid=nil, componenttype=nil, componentname=nil, componentrequired=nil, componentrecipientid=nil, fileindex=nil, generatemode=nil, componentwidth=nil, componentheight=nil, componentpage=nil, componentposx=nil, componentposy=nil, componentextra=nil, componentvalue=nil, componentdatefontsize=nil, documentid=nil, componentdescription=nil, offsetx=nil, offsety=nil, channelcomponentid=nil, keywordorder=nil, keywordpage=nil, relativelocation=nil, keywordindexes=nil, placeholder=nil)
          @ComponentId = componentid
          @ComponentType = componenttype
          @ComponentName = componentname
          @ComponentRequired = componentrequired
          @ComponentRecipientId = componentrecipientid
          @FileIndex = fileindex
          @GenerateMode = generatemode
          @ComponentWidth = componentwidth
          @ComponentHeight = componentheight
          @ComponentPage = componentpage
          @ComponentPosX = componentposx
          @ComponentPosY = componentposy
          @ComponentExtra = componentextra
          @ComponentValue = componentvalue
          @ComponentDateFontSize = componentdatefontsize
          @DocumentId = documentid
          @ComponentDescription = componentdescription
          @OffsetX = offsetx
          @OffsetY = offsety
          @ChannelComponentId = channelcomponentid
          @KeywordOrder = keywordorder
          @KeywordPage = keywordpage
          @RelativeLocation = relativelocation
          @KeywordIndexes = keywordindexes
          @Placeholder = placeholder
        end

        def deserialize(params)
          @ComponentId = params['ComponentId']
          @ComponentType = params['ComponentType']
          @ComponentName = params['ComponentName']
          @ComponentRequired = params['ComponentRequired']
          @ComponentRecipientId = params['ComponentRecipientId']
          @FileIndex = params['FileIndex']
          @GenerateMode = params['GenerateMode']
          @ComponentWidth = params['ComponentWidth']
          @ComponentHeight = params['ComponentHeight']
          @ComponentPage = params['ComponentPage']
          @ComponentPosX = params['ComponentPosX']
          @ComponentPosY = params['ComponentPosY']
          @ComponentExtra = params['ComponentExtra']
          @ComponentValue = params['ComponentValue']
          @ComponentDateFontSize = params['ComponentDateFontSize']
          @DocumentId = params['DocumentId']
          @ComponentDescription = params['ComponentDescription']
          @OffsetX = params['OffsetX']
          @OffsetY = params['OffsetY']
          @ChannelComponentId = params['ChannelComponentId']
          @KeywordOrder = params['KeywordOrder']
          @KeywordPage = params['KeywordPage']
          @RelativeLocation = params['RelativeLocation']
          @KeywordIndexes = params['KeywordIndexes']
          @Placeholder = params['Placeholder']
        end
      end

      # CreateChannelFlowEvidenceReport请求参数结构体
      class CreateChannelFlowEvidenceReportRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param FlowId: 签署流程编号
        # @type FlowId: String
        # @param Operator: 暂未开放
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Agent, :FlowId, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, flowid=nil, operator=nil)
          @Agent = agent
          @FlowId = flowid
          @Operator = operator
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @FlowId = params['FlowId']
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # CreateChannelFlowEvidenceReport返回参数结构体
      class CreateChannelFlowEvidenceReportResponse < TencentCloud::Common::AbstractModel
        # @param ReportId: 出证报告 ID,用于查询出证报告接口DescribeChannelFlowEvidenceReport时用到
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ReportId: String
        # @param Status: 执行中:EvidenceStatusExecuting
        # 成功:EvidenceStatusSuccess
        # 失败:EvidenceStatusFailed
        # @type Status: String
        # @param ReportUrl: 废除,字段无效
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ReportUrl: String
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :ReportId, :Status, :ReportUrl, :RequestId

        def initialize(reportid=nil, status=nil, reporturl=nil, requestid=nil)
          @ReportId = reportid
          @Status = status
          @ReportUrl = reporturl
          @RequestId = requestid
        end

        def deserialize(params)
          @ReportId = params['ReportId']
          @Status = params['Status']
          @ReportUrl = params['ReportUrl']
          @RequestId = params['RequestId']
        end
      end

      # CreateConsoleLoginUrl请求参数结构体
      class CreateConsoleLoginUrlRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用信息
        # 此接口Agent.AppId、Agent.ProxyOrganizationOpenId 和 Agent. ProxyOperator.OpenId 必填
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param ProxyOrganizationName: 子客企业名称,最大长度64个字符
        # @type ProxyOrganizationName: String
        # @param ProxyOperatorName: 子客企业经办人的姓名,最大长度50个字符
        # @type ProxyOperatorName: String
        # @param Module: PC控制台指定模块,文件/合同管理:"DOCUMENT",模板管理:"TEMPLATE",印章管理:"SEAL",组织架构/人员:"OPERATOR",空字符串:"账号信息"。 EndPoint为"CHANNEL"/"APP"只支持"SEAL"-印章管理
        # @type Module: String
        # @param ModuleId: 控制台指定模块Id
        # @type ModuleId: String
        # @param UniformSocialCreditCode: 子客企业统一社会信用代码,最大长度200个字符
        # @type UniformSocialCreditCode: String
        # @param MenuStatus: 是否展示左侧菜单栏 是:ENABLE(默认) 否:DISABLE
        # @type MenuStatus: String
        # @param Endpoint: 链接跳转类型:"PC"-PC控制台,“CHANNEL”-H5跳转到电子签小程序;“APP”-第三方APP或小程序跳转电子签小程序,默认为PC控制台
        # @type Endpoint: String
        # @param AutoJumpBackEvent: 触发自动跳转事件,仅对App类型有效,"VERIFIED":企业认证完成/员工认证完成后跳回原App/小程序
        # @type AutoJumpBackEvent: String
        # @param AuthorizationTypes: 支持的授权方式,授权方式: "1" - 上传授权书认证  "2" - 法定代表人认证
        # @type AuthorizationTypes: Array
        # @param Operator: 暂未开放
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Agent, :ProxyOrganizationName, :ProxyOperatorName, :Module, :ModuleId, :UniformSocialCreditCode, :MenuStatus, :Endpoint, :AutoJumpBackEvent, :AuthorizationTypes, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, proxyorganizationname=nil, proxyoperatorname=nil, _module=nil, moduleid=nil, uniformsocialcreditcode=nil, menustatus=nil, endpoint=nil, autojumpbackevent=nil, authorizationtypes=nil, operator=nil)
          @Agent = agent
          @ProxyOrganizationName = proxyorganizationname
          @ProxyOperatorName = proxyoperatorname
          @Module = _module
          @ModuleId = moduleid
          @UniformSocialCreditCode = uniformsocialcreditcode
          @MenuStatus = menustatus
          @Endpoint = endpoint
          @AutoJumpBackEvent = autojumpbackevent
          @AuthorizationTypes = authorizationtypes
          @Operator = operator
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @ProxyOrganizationName = params['ProxyOrganizationName']
          @ProxyOperatorName = params['ProxyOperatorName']
          @Module = params['Module']
          @ModuleId = params['ModuleId']
          @UniformSocialCreditCode = params['UniformSocialCreditCode']
          @MenuStatus = params['MenuStatus']
          @Endpoint = params['Endpoint']
          @AutoJumpBackEvent = params['AutoJumpBackEvent']
          @AuthorizationTypes = params['AuthorizationTypes']
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # CreateConsoleLoginUrl返回参数结构体
      class CreateConsoleLoginUrlResponse < TencentCloud::Common::AbstractModel
        # @param ConsoleUrl: 子客企业Web控制台url注意事项:
        # 1. 所有类型的链接在企业未认证/员工未认证完成时,只要在有效期内(一年)都可以访问
        # 2. 若企业认证完成且员工认证完成后,重新获取pc端的链接5分钟之内有效,且只能访问一次
        # 3. 若企业认证完成且员工认证完成后,重新获取H5/APP的链接只要在有效期内(一年)都可以访问
        # 4. 此链接仅单次有效,使用后需要再次创建新的链接(部分聊天软件,如企业微信默认会对链接进行解析,此时需要使用类似“代码片段”的方式或者放到txt文件里发送链接)
        # 5. 创建的链接应避免被转义,如:&被转义为\u0026;如使用Postman请求后,请选择响应类型为 JSON,否则链接将被转义
        # @type ConsoleUrl: String
        # @param IsActivated: 子客企业是否已开通腾讯电子签,true-是,false-否
        # @type IsActivated: Boolean
        # @param ProxyOperatorIsVerified: 当前经办人是否已认证(false:未认证 true:已认证)
        # @type ProxyOperatorIsVerified: Boolean
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :ConsoleUrl, :IsActivated, :ProxyOperatorIsVerified, :RequestId

        def initialize(consoleurl=nil, isactivated=nil, proxyoperatorisverified=nil, requestid=nil)
          @ConsoleUrl = consoleurl
          @IsActivated = isactivated
          @ProxyOperatorIsVerified = proxyoperatorisverified
          @RequestId = requestid
        end

        def deserialize(params)
          @ConsoleUrl = params['ConsoleUrl']
          @IsActivated = params['IsActivated']
          @ProxyOperatorIsVerified = params['ProxyOperatorIsVerified']
          @RequestId = params['RequestId']
        end
      end

      # 创建合同配置信息
      class CreateFlowOption < TencentCloud::Common::AbstractModel
        # @param CanEditFlow: 是否允许修改合同信息,true-是,false-否
        # @type CanEditFlow: Boolean

        attr_accessor :CanEditFlow

        def initialize(caneditflow=nil)
          @CanEditFlow = caneditflow
        end

        def deserialize(params)
          @CanEditFlow = params['CanEditFlow']
        end
      end

      # CreateFlowsByTemplates请求参数结构体
      class CreateFlowsByTemplatesRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param FlowInfos: 多个合同(签署流程)信息,最多支持20个
        # @type FlowInfos: Array
        # @param NeedPreview: 是否为预览模式;默认为false,即非预览模式,此时发起合同并返回FlowIds;若为预览模式,不会发起合同,会返回PreviewUrls;
        # 预览链接有效期300秒;
        # 同时,如果预览的文件中指定了动态表格控件,需要进行异步合成;此时此接口返回的是合成前的文档预览链接,而合成完成后的文档预览链接会通过:回调通知的方式、或使用返回的TaskInfo中的TaskId通过ChannelGetTaskResultApi接口查询;
        # @type NeedPreview: Boolean
        # @param PreviewType: 预览链接类型 默认:0-文件流, 1- H5链接 注意:此参数在NeedPreview 为true 时有效,
        # @type PreviewType: Integer
        # @param Operator: 操作者的信息,不用传
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Agent, :FlowInfos, :NeedPreview, :PreviewType, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, flowinfos=nil, needpreview=nil, previewtype=nil, operator=nil)
          @Agent = agent
          @FlowInfos = flowinfos
          @NeedPreview = needpreview
          @PreviewType = previewtype
          @Operator = operator
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          unless params['FlowInfos'].nil?
            @FlowInfos = []
            params['FlowInfos'].each do |i|
              flowinfo_tmp = FlowInfo.new
              flowinfo_tmp.deserialize(i)
              @FlowInfos << flowinfo_tmp
            end
          end
          @NeedPreview = params['NeedPreview']
          @PreviewType = params['PreviewType']
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # CreateFlowsByTemplates返回参数结构体
      class CreateFlowsByTemplatesResponse < TencentCloud::Common::AbstractModel
        # @param FlowIds: 多个合同ID
        # @type FlowIds: Array
        # @param CustomerData: 业务信息,限制1024字符
        # @type CustomerData: Array
        # @param ErrorMessages: 创建消息,对应多个合同ID,
        # 成功为“”,创建失败则对应失败消息
        # @type ErrorMessages: Array
        # @param PreviewUrls: 预览模式下返回的预览文件url数组
        # @type PreviewUrls: Array
        # @param TaskInfos: 复杂文档合成任务(如,包含动态表格的预览任务)的任务信息数组;
        # 如果文档需要异步合成,此字段会返回该异步任务的任务信息,后续可以通过ChannelGetTaskResultApi接口查询任务详情;
        # @type TaskInfos: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :FlowIds, :CustomerData, :ErrorMessages, :PreviewUrls, :TaskInfos, :RequestId

        def initialize(flowids=nil, customerdata=nil, errormessages=nil, previewurls=nil, taskinfos=nil, requestid=nil)
          @FlowIds = flowids
          @CustomerData = customerdata
          @ErrorMessages = errormessages
          @PreviewUrls = previewurls
          @TaskInfos = taskinfos
          @RequestId = requestid
        end

        def deserialize(params)
          @FlowIds = params['FlowIds']
          @CustomerData = params['CustomerData']
          @ErrorMessages = params['ErrorMessages']
          @PreviewUrls = params['PreviewUrls']
          unless params['TaskInfos'].nil?
            @TaskInfos = []
            params['TaskInfos'].each do |i|
              taskinfo_tmp = TaskInfo.new
              taskinfo_tmp.deserialize(i)
              @TaskInfos << taskinfo_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # CreateSealByImage请求参数结构体
      class CreateSealByImageRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param SealName: 印章名称,最大长度不超过50字符
        # @type SealName: String
        # @param SealImage: 印章图片base64,大小不超过10M(原始图片不超过7.6M)
        # @type SealImage: String
        # @param Operator: 操作者的信息
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Agent, :SealName, :SealImage, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, sealname=nil, sealimage=nil, operator=nil)
          @Agent = agent
          @SealName = sealname
          @SealImage = sealimage
          @Operator = operator
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @SealName = params['SealName']
          @SealImage = params['SealImage']
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # CreateSealByImage返回参数结构体
      class CreateSealByImageResponse < TencentCloud::Common::AbstractModel
        # @param SealId: 印章id
        # @type SealId: String
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :SealId, :RequestId

        def initialize(sealid=nil, requestid=nil)
          @SealId = sealid
          @RequestId = requestid
        end

        def deserialize(params)
          @SealId = params['SealId']
          @RequestId = params['RequestId']
        end
      end

      # CreateSignUrls请求参数结构体
      class CreateSignUrlsRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param FlowIds: 签署流程编号数组,最多支持100个。(备注:该参数和合同组编号必须二选一)
        # @type FlowIds: Array
        # @param FlowGroupId: 合同组编号(备注:该参数和合同(流程)编号数组必须二选一)
        # @type FlowGroupId: String
        # @param Endpoint: 签署链接类型:“WEIXINAPP”-短链直接跳小程序;“CHANNEL”-跳转H5页面;“APP”-第三方APP或小程序跳转电子签小程序;"LONGURL2WEIXINAPP"-长链接跳转小程序;默认“WEIXINAPP”类型,即跳转至小程序;
        # @type Endpoint: String
        # @param GenerateType: 签署链接生成类型,默认是 "ALL";
        # "ALL":全部签署方签署链接,此时不会给自动签署的签署方创建签署链接;
        # "CHANNEL":第三方平台子客企业企业;
        # "NOT_CHANNEL":非第三方平台子客企业企业;
        # "PERSON":个人;
        # "FOLLOWER":关注方,目前是合同抄送方;
        # @type GenerateType: String
        # @param OrganizationName: 非第三方平台子客企业参与方的企业名称,GenerateType为"NOT_CHANNEL"时必填
        # @type OrganizationName: String
        # @param Name: 参与人姓名,GenerateType为"PERSON"时必填
        # @type Name: String
        # @param Mobile: 参与人手机号;
        # GenerateType为"PERSON"或"FOLLOWER"时必填
        # @type Mobile: String
        # @param OrganizationOpenId: 第三方平台子客企业的企业OpenId,GenerateType为"CHANNEL"时必填
        # @type OrganizationOpenId: String
        # @param OpenId: 第三方平台子客企业参与人OpenId,GenerateType为"CHANNEL"时可用,指定到具体参与人, 仅展示已经实名的经办人信息
        # @type OpenId: String
        # @param AutoJumpBack: Endpoint为"APP" 类型的签署链接,可以设置此值;支持调用方小程序打开签署链接,在电子签小程序完成签署后自动回跳至调用方小程序
        # @type AutoJumpBack: Boolean
        # @param JumpUrl: 签署完之后的H5页面的跳转链接,针对Endpoint为CHANNEL时有效,最大长度1000个字符。
        # @type JumpUrl: String
        # @param Operator: 暂未开放
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Agent, :FlowIds, :FlowGroupId, :Endpoint, :GenerateType, :OrganizationName, :Name, :Mobile, :OrganizationOpenId, :OpenId, :AutoJumpBack, :JumpUrl, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, flowids=nil, flowgroupid=nil, endpoint=nil, generatetype=nil, organizationname=nil, name=nil, mobile=nil, organizationopenid=nil, openid=nil, autojumpback=nil, jumpurl=nil, operator=nil)
          @Agent = agent
          @FlowIds = flowids
          @FlowGroupId = flowgroupid
          @Endpoint = endpoint
          @GenerateType = generatetype
          @OrganizationName = organizationname
          @Name = name
          @Mobile = mobile
          @OrganizationOpenId = organizationopenid
          @OpenId = openid
          @AutoJumpBack = autojumpback
          @JumpUrl = jumpurl
          @Operator = operator
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @FlowIds = params['FlowIds']
          @FlowGroupId = params['FlowGroupId']
          @Endpoint = params['Endpoint']
          @GenerateType = params['GenerateType']
          @OrganizationName = params['OrganizationName']
          @Name = params['Name']
          @Mobile = params['Mobile']
          @OrganizationOpenId = params['OrganizationOpenId']
          @OpenId = params['OpenId']
          @AutoJumpBack = params['AutoJumpBack']
          @JumpUrl = params['JumpUrl']
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # CreateSignUrls返回参数结构体
      class CreateSignUrlsResponse < TencentCloud::Common::AbstractModel
        # @param SignUrlInfos: 签署参与者签署H5链接信息数组
        # @type SignUrlInfos: Array
        # @param ErrorMessages: 生成失败时的错误信息,成功返回”“,顺序和出参SignUrlInfos保持一致
        # @type ErrorMessages: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :SignUrlInfos, :ErrorMessages, :RequestId

        def initialize(signurlinfos=nil, errormessages=nil, requestid=nil)
          @SignUrlInfos = signurlinfos
          @ErrorMessages = errormessages
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['SignUrlInfos'].nil?
            @SignUrlInfos = []
            params['SignUrlInfos'].each do |i|
              signurlinfo_tmp = SignUrlInfo.new
              signurlinfo_tmp.deserialize(i)
              @SignUrlInfos << signurlinfo_tmp
            end
          end
          @ErrorMessages = params['ErrorMessages']
          @RequestId = params['RequestId']
        end
      end

      # 第三方应用集成员工部门信息
      class Department < TencentCloud::Common::AbstractModel
        # @param DepartmentId: 部门id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DepartmentId: String
        # @param DepartmentName: 部门名称
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type DepartmentName: String

        attr_accessor :DepartmentId, :DepartmentName

        def initialize(departmentid=nil, departmentname=nil)
          @DepartmentId = departmentid
          @DepartmentName = departmentname
        end

        def deserialize(params)
          @DepartmentId = params['DepartmentId']
          @DepartmentName = params['DepartmentName']
        end
      end

      # DescribeChannelFlowEvidenceReport请求参数结构体
      class DescribeChannelFlowEvidenceReportRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param ReportId: 出证报告编号
        # @type ReportId: String
        # @param Operator: 暂未开放
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Agent, :ReportId, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, reportid=nil, operator=nil)
          @Agent = agent
          @ReportId = reportid
          @Operator = operator
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @ReportId = params['ReportId']
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # DescribeChannelFlowEvidenceReport返回参数结构体
      class DescribeChannelFlowEvidenceReportResponse < TencentCloud::Common::AbstractModel
        # @param ReportUrl: 出证报告 URL
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ReportUrl: String
        # @param Status: 执行中:EvidenceStatusExecuting
        # 成功:EvidenceStatusSuccess
        # 失败:EvidenceStatusFailed
        # @type Status: String
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :ReportUrl, :Status, :RequestId

        def initialize(reporturl=nil, status=nil, requestid=nil)
          @ReportUrl = reporturl
          @Status = status
          @RequestId = requestid
        end

        def deserialize(params)
          @ReportUrl = params['ReportUrl']
          @Status = params['Status']
          @RequestId = params['RequestId']
        end
      end

      # DescribeExtendedServiceAuthInfo请求参数结构体
      class DescribeExtendedServiceAuthInfoRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填

        # 注: 此接口 参数Agent. ProxyOperator.OpenId 需要传递超管或者法人的OpenId
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`

        attr_accessor :Agent

        def initialize(agent=nil)
          @Agent = agent
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
        end
      end

      # DescribeExtendedServiceAuthInfo返回参数结构体
      class DescribeExtendedServiceAuthInfoResponse < TencentCloud::Common::AbstractModel
        # @param AuthInfo: 企业扩展服务授权信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AuthInfo: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :AuthInfo, :RequestId

        def initialize(authinfo=nil, requestid=nil)
          @AuthInfo = authinfo
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['AuthInfo'].nil?
            @AuthInfo = []
            params['AuthInfo'].each do |i|
              extentserviceauthinfo_tmp = ExtentServiceAuthInfo.new
              extentserviceauthinfo_tmp.deserialize(i)
              @AuthInfo << extentserviceauthinfo_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # DescribeFlowDetailInfo请求参数结构体
      class DescribeFlowDetailInfoRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param FlowIds: 合同(流程)编号数组,最多支持100个。
        # (备注:该参数和合同组编号必须二选一)
        # @type FlowIds: Array
        # @param FlowGroupId: 合同组编号(备注:该参数和合同(流程)编号数组必须二选一)
        # @type FlowGroupId: String
        # @param Operator: 暂未开放
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Agent, :FlowIds, :FlowGroupId, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, flowids=nil, flowgroupid=nil, operator=nil)
          @Agent = agent
          @FlowIds = flowids
          @FlowGroupId = flowgroupid
          @Operator = operator
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @FlowIds = params['FlowIds']
          @FlowGroupId = params['FlowGroupId']
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # DescribeFlowDetailInfo返回参数结构体
      class DescribeFlowDetailInfoResponse < TencentCloud::Common::AbstractModel
        # @param ApplicationId: 第三方平台应用号Id
        # @type ApplicationId: String
        # @param ProxyOrganizationOpenId: 第三方平台子客企业OpenId
        # @type ProxyOrganizationOpenId: String
        # @param FlowInfo: 合同(签署流程)的具体详细描述信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FlowInfo: Array
        # @param FlowGroupId: 合同组编号
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FlowGroupId: String
        # @param FlowGroupName: 合同组名称
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FlowGroupName: String
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :ApplicationId, :ProxyOrganizationOpenId, :FlowInfo, :FlowGroupId, :FlowGroupName, :RequestId

        def initialize(applicationid=nil, proxyorganizationopenid=nil, flowinfo=nil, flowgroupid=nil, flowgroupname=nil, requestid=nil)
          @ApplicationId = applicationid
          @ProxyOrganizationOpenId = proxyorganizationopenid
          @FlowInfo = flowinfo
          @FlowGroupId = flowgroupid
          @FlowGroupName = flowgroupname
          @RequestId = requestid
        end

        def deserialize(params)
          @ApplicationId = params['ApplicationId']
          @ProxyOrganizationOpenId = params['ProxyOrganizationOpenId']
          unless params['FlowInfo'].nil?
            @FlowInfo = []
            params['FlowInfo'].each do |i|
              flowdetailinfo_tmp = FlowDetailInfo.new
              flowdetailinfo_tmp.deserialize(i)
              @FlowInfo << flowdetailinfo_tmp
            end
          end
          @FlowGroupId = params['FlowGroupId']
          @FlowGroupName = params['FlowGroupName']
          @RequestId = params['RequestId']
        end
      end

      # DescribeResourceUrlsByFlows请求参数结构体
      class DescribeResourceUrlsByFlowsRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。
        # 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param FlowIds: 查询资源所对应的签署流程Id,最多支持50个
        # @type FlowIds: Array
        # @param Operator: 操作者的信息,不用传
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Agent, :FlowIds, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, flowids=nil, operator=nil)
          @Agent = agent
          @FlowIds = flowids
          @Operator = operator
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @FlowIds = params['FlowIds']
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # DescribeResourceUrlsByFlows返回参数结构体
      class DescribeResourceUrlsByFlowsResponse < TencentCloud::Common::AbstractModel
        # @param FlowResourceUrlInfos: 签署流程资源对应链接信息
        # @type FlowResourceUrlInfos: Array
        # @param ErrorMessages: 创建消息,对应多个合同ID,
        # 成功为“”,创建失败则对应失败消息
        # @type ErrorMessages: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :FlowResourceUrlInfos, :ErrorMessages, :RequestId

        def initialize(flowresourceurlinfos=nil, errormessages=nil, requestid=nil)
          @FlowResourceUrlInfos = flowresourceurlinfos
          @ErrorMessages = errormessages
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['FlowResourceUrlInfos'].nil?
            @FlowResourceUrlInfos = []
            params['FlowResourceUrlInfos'].each do |i|
              flowresourceurlinfo_tmp = FlowResourceUrlInfo.new
              flowresourceurlinfo_tmp.deserialize(i)
              @FlowResourceUrlInfos << flowresourceurlinfo_tmp
            end
          end
          @ErrorMessages = params['ErrorMessages']
          @RequestId = params['RequestId']
        end
      end

      # DescribeTemplates请求参数结构体
      class DescribeTemplatesRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param TemplateId: 模板唯一标识,查询单个模板时使用
        # @type TemplateId: String
        # @param ContentType: 查询内容:0-模板列表及详情(默认),1-仅模板列表
        # @type ContentType: Integer
        # @param Limit: 查询个数,默认20,最大100;在查询列表的时候有效
        # @type Limit: Integer
        # @param Offset: 查询偏移位置,默认0;在查询列表的时候有效
        # @type Offset: Integer
        # @param QueryAllComponents: 是否返回所有组件信息。默认false,只返回发起方控件;true,返回所有签署方控件
        # @type QueryAllComponents: Boolean
        # @param TemplateName: 模糊搜索模板名称,最大长度200
        # @type TemplateName: String
        # @param WithPreviewUrl: 是否获取模板预览链接
        # @type WithPreviewUrl: Boolean
        # @param WithPdfUrl: 是否获取模板的PDF文件链接- 第三方应用集成需要开启白名单时才能使用。
        # @type WithPdfUrl: Boolean
        # @param ChannelTemplateId: 对应第三方应用平台企业的模板ID
        # @type ChannelTemplateId: String
        # @param Operator: 操作者的信息
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Agent, :TemplateId, :ContentType, :Limit, :Offset, :QueryAllComponents, :TemplateName, :WithPreviewUrl, :WithPdfUrl, :ChannelTemplateId, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, templateid=nil, contenttype=nil, limit=nil, offset=nil, queryallcomponents=nil, templatename=nil, withpreviewurl=nil, withpdfurl=nil, channeltemplateid=nil, operator=nil)
          @Agent = agent
          @TemplateId = templateid
          @ContentType = contenttype
          @Limit = limit
          @Offset = offset
          @QueryAllComponents = queryallcomponents
          @TemplateName = templatename
          @WithPreviewUrl = withpreviewurl
          @WithPdfUrl = withpdfurl
          @ChannelTemplateId = channeltemplateid
          @Operator = operator
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @TemplateId = params['TemplateId']
          @ContentType = params['ContentType']
          @Limit = params['Limit']
          @Offset = params['Offset']
          @QueryAllComponents = params['QueryAllComponents']
          @TemplateName = params['TemplateName']
          @WithPreviewUrl = params['WithPreviewUrl']
          @WithPdfUrl = params['WithPdfUrl']
          @ChannelTemplateId = params['ChannelTemplateId']
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # DescribeTemplates返回参数结构体
      class DescribeTemplatesResponse < TencentCloud::Common::AbstractModel
        # @param Templates: 模板详情
        # @type Templates: Array
        # @param TotalCount: 查询总数
        # @type TotalCount: Integer
        # @param Limit: 查询数量
        # @type Limit: Integer
        # @param Offset: 查询起始偏移
        # @type Offset: Integer
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Templates, :TotalCount, :Limit, :Offset, :RequestId

        def initialize(templates=nil, totalcount=nil, limit=nil, offset=nil, requestid=nil)
          @Templates = templates
          @TotalCount = totalcount
          @Limit = limit
          @Offset = offset
          @RequestId = requestid
        end

        def deserialize(params)
          unless params['Templates'].nil?
            @Templates = []
            params['Templates'].each do |i|
              templateinfo_tmp = TemplateInfo.new
              templateinfo_tmp.deserialize(i)
              @Templates << templateinfo_tmp
            end
          end
          @TotalCount = params['TotalCount']
          @Limit = params['Limit']
          @Offset = params['Offset']
          @RequestId = params['RequestId']
        end
      end

      # DescribeUsage请求参数结构体
      class DescribeUsageRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用信息,此接口Agent.AppId必填
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param StartDate: 开始时间,例如:2021-03-21
        # @type StartDate: String
        # @param EndDate: 结束时间,例如:2021-06-21;
        # 开始时间到结束时间的区间长度小于等于90天。
        # @type EndDate: String
        # @param NeedAggregate: 是否汇总数据,默认不汇总。
        # 不汇总:返回在统计区间内第三方平台下所有企业的每日明细,即每个企业N条数据,N为统计天数;
        # 汇总:返回在统计区间内第三方平台下所有企业的汇总后数据,即每个企业一条数据;
        # @type NeedAggregate: Boolean
        # @param Limit: 单次返回的最多条目数量。默认为1000,且不能超过1000。
        # @type Limit: Integer
        # @param Offset: 偏移量,默认是0。
        # @type Offset: Integer
        # @param Operator: 暂未开放
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Agent, :StartDate, :EndDate, :NeedAggregate, :Limit, :Offset, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, startdate=nil, enddate=nil, needaggregate=nil, limit=nil, offset=nil, operator=nil)
          @Agent = agent
          @StartDate = startdate
          @EndDate = enddate
          @NeedAggregate = needaggregate
          @Limit = limit
          @Offset = offset
          @Operator = operator
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @StartDate = params['StartDate']
          @EndDate = params['EndDate']
          @NeedAggregate = params['NeedAggregate']
          @Limit = params['Limit']
          @Offset = params['Offset']
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # DescribeUsage返回参数结构体
      class DescribeUsageResponse < TencentCloud::Common::AbstractModel
        # @param Total: 用量明细条数
        # @type Total: Integer
        # @param Details: 用量明细
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Details: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Total, :Details, :RequestId

        def initialize(total=nil, details=nil, requestid=nil)
          @Total = total
          @Details = details
          @RequestId = requestid
        end

        def deserialize(params)
          @Total = params['Total']
          unless params['Details'].nil?
            @Details = []
            params['Details'].each do |i|
              usagedetail_tmp = UsageDetail.new
              usagedetail_tmp.deserialize(i)
              @Details << usagedetail_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # 签署流程下载信息
      class DownloadFlowInfo < TencentCloud::Common::AbstractModel
        # @param FileName: 文件夹名称
        # @type FileName: String
        # @param FlowIdList: 签署流程的标识数组
        # @type FlowIdList: Array

        attr_accessor :FileName, :FlowIdList

        def initialize(filename=nil, flowidlist=nil)
          @FileName = filename
          @FlowIdList = flowidlist
        end

        def deserialize(params)
          @FileName = params['FileName']
          @FlowIdList = params['FlowIdList']
        end
      end

      # 企业扩展服务授权信息
      class ExtentServiceAuthInfo < TencentCloud::Common::AbstractModel
        # @param Type: 扩展服务类型
        #   AUTO_SIGN             企业静默签(自动签署)
        #   OVERSEA_SIGN          企业与港澳台居民*签署合同
        #   MOBILE_CHECK_APPROVER 使用手机号验证签署方身份
        #   PAGING_SEAL           骑缝章
        #   DOWNLOAD_FLOW         授权平台企业下载合同
        # @type Type: String
        # @param Name: 扩展服务名称
        # @type Name: String
        # @param Status: 服务状态
        # ENABLE 开启
        # DISABLE 关闭
        # @type Status: String
        # @param OperatorOpenId: 最近操作人第三方应用平台的用户openid
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type OperatorOpenId: String
        # @param OperateOn: 最近操作时间戳,单位秒
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type OperateOn: Integer

        attr_accessor :Type, :Name, :Status, :OperatorOpenId, :OperateOn

        def initialize(type=nil, name=nil, status=nil, operatoropenid=nil, operateon=nil)
          @Type = type
          @Name = name
          @Status = status
          @OperatorOpenId = operatoropenid
          @OperateOn = operateon
        end

        def deserialize(params)
          @Type = params['Type']
          @Name = params['Name']
          @Status = params['Status']
          @OperatorOpenId = params['OperatorOpenId']
          @OperateOn = params['OperateOn']
        end
      end

      # 绑定失败的用户角色信息
      class FailedCreateRoleData < TencentCloud::Common::AbstractModel
        # @param UserId: 用户userId
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type UserId: String
        # @param RoleIds: 角色RoleId列表
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RoleIds: Array

        attr_accessor :UserId, :RoleIds

        def initialize(userid=nil, roleids=nil)
          @UserId = userid
          @RoleIds = roleids
        end

        def deserialize(params)
          @UserId = params['UserId']
          @RoleIds = params['RoleIds']
        end
      end

      # 文档内的填充控件返回结构体,返回控件的基本信息和填写内容值
      class FilledComponent < TencentCloud::Common::AbstractModel
        # @param ComponentId: 控件Id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ComponentId: String
        # @param ComponentName: 控件名称
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ComponentName: String
        # @param ComponentFillStatus: 控件填写状态;0-未填写;1-已填写
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ComponentFillStatus: String
        # @param ComponentValue: 控件填写内容
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ComponentValue: String
        # @param ImageUrl: 图片填充控件下载链接,如果是图片填充控件时,这里返回图片的下载链接。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ImageUrl: String

        attr_accessor :ComponentId, :ComponentName, :ComponentFillStatus, :ComponentValue, :ImageUrl

        def initialize(componentid=nil, componentname=nil, componentfillstatus=nil, componentvalue=nil, imageurl=nil)
          @ComponentId = componentid
          @ComponentName = componentname
          @ComponentFillStatus = componentfillstatus
          @ComponentValue = componentvalue
          @ImageUrl = imageurl
        end

        def deserialize(params)
          @ComponentId = params['ComponentId']
          @ComponentName = params['ComponentName']
          @ComponentFillStatus = params['ComponentFillStatus']
          @ComponentValue = params['ComponentValue']
          @ImageUrl = params['ImageUrl']
        end
      end

      # 此结构体 (Filter) 用于描述查询过滤条件。
      class Filter < TencentCloud::Common::AbstractModel
        # @param Key: 查询过滤条件的Key
        # @type Key: String
        # @param Values: 查询过滤条件的Value列表
        # @type Values: Array

        attr_accessor :Key, :Values

        def initialize(key=nil, values=nil)
          @Key = key
          @Values = values
        end

        def deserialize(params)
          @Key = params['Key']
          @Values = params['Values']
        end
      end

      # 签署人的流程信息明细
      class FlowApproverDetail < TencentCloud::Common::AbstractModel
        # @param ReceiptId: 模板配置时候的签署人id,与控件绑定
        # @type ReceiptId: String
        # @param ProxyOrganizationOpenId: 平台企业的第三方id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ProxyOrganizationOpenId: String
        # @param ProxyOperatorOpenId: 平台企业操作人的第三方id
        # @type ProxyOperatorOpenId: String
        # @param ProxyOrganizationName: 平台企业名称
        # @type ProxyOrganizationName: String
        # @param Mobile: 签署人手机号
        # @type Mobile: String
        # @param SignOrder: 签署人签署顺序
        # @type SignOrder: Integer
        # @param ApproveName: 签署人姓名
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ApproveName: String
        # @param ApproveStatus: 当前签署人的状态, 状态如下

        # PENDING 待签署
        # FILLPENDING 待填写
        # FILLACCEPT 填写完成
        # FILLREJECT 拒绝填写
        # WAITPICKUP 待领取
        # ACCEPT 已签署
        # REJECT 拒签
        # DEADLINE 过期没人处理
        # CANCEL 流程已撤回
        # FORWARD 已经转他人处理
        # STOP 流程已终止
        # RELIEVED 解除协议(已解除)

        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ApproveStatus: String
        # @param ApproveMessage: 签署人信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ApproveMessage: String
        # @param ApproveTime: 签署人签署时间戳,单位秒
        # @type ApproveTime: Integer
        # @param ApproveType: 参与者类型 (ORGANIZATION企业/PERSON个人)
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ApproveType: String

        attr_accessor :ReceiptId, :ProxyOrganizationOpenId, :ProxyOperatorOpenId, :ProxyOrganizationName, :Mobile, :SignOrder, :ApproveName, :ApproveStatus, :ApproveMessage, :ApproveTime, :ApproveType

        def initialize(receiptid=nil, proxyorganizationopenid=nil, proxyoperatoropenid=nil, proxyorganizationname=nil, mobile=nil, signorder=nil, approvename=nil, approvestatus=nil, approvemessage=nil, approvetime=nil, approvetype=nil)
          @ReceiptId = receiptid
          @ProxyOrganizationOpenId = proxyorganizationopenid
          @ProxyOperatorOpenId = proxyoperatoropenid
          @ProxyOrganizationName = proxyorganizationname
          @Mobile = mobile
          @SignOrder = signorder
          @ApproveName = approvename
          @ApproveStatus = approvestatus
          @ApproveMessage = approvemessage
          @ApproveTime = approvetime
          @ApproveType = approvetype
        end

        def deserialize(params)
          @ReceiptId = params['ReceiptId']
          @ProxyOrganizationOpenId = params['ProxyOrganizationOpenId']
          @ProxyOperatorOpenId = params['ProxyOperatorOpenId']
          @ProxyOrganizationName = params['ProxyOrganizationName']
          @Mobile = params['Mobile']
          @SignOrder = params['SignOrder']
          @ApproveName = params['ApproveName']
          @ApproveStatus = params['ApproveStatus']
          @ApproveMessage = params['ApproveMessage']
          @ApproveTime = params['ApproveTime']
          @ApproveType = params['ApproveType']
        end
      end

      # 创建签署流程签署人入参。

      # 其中签署方FlowApproverInfo需要传递的参数
      # 非单C、单B、B2C合同,ApproverType、RecipientId(模板发起合同时)必传,建议都传。其他身份标识
      # 1-个人:Name、Mobile必传
      # 2-第三方平台子客企业指定经办人:OpenId必传,OrgName必传、OrgOpenId必传;
      # 3-第三方平台子客企业不指定经办人:OrgName必传、OrgOpenId必传;
      # 4-非第三方平台子客企业:Name、Mobile必传,OrgName必传,且NotChannelOrganization=True。

      # RecipientId参数:
      # 从DescribeTemplates接口中,可以得到模板下的签署方Recipient列表,根据模板自定义的Rolename在此结构体中确定其RecipientId
      class FlowApproverInfo < TencentCloud::Common::AbstractModel
        # @param Name: 签署人姓名,最大长度50个字符
        # @type Name: String
        # @param IdCardType: 签署人身份证件类型
        # 1.ID_CARD 居民身份证
        # 2.HONGKONG_MACAO_AND_TAIWAN 港澳台居民居住证
        # 3.HONGKONG_AND_MACAO 港澳居民来往内地通行证
        # @type IdCardType: String
        # @param IdCardNumber: 签署人证件号
        # @type IdCardNumber: String
        # @param Mobile: 签署人手机号,脱敏显示。大陆手机号为11位,暂不支持海外手机号。
        # @type Mobile: String
        # @param OrganizationName: 企业签署方工商营业执照上的企业名称,签署方为非发起方企业场景下必传,最大长度64个字符;
        # @type OrganizationName: String
        # @param NotChannelOrganization: 指定签署人非第三方平台子客企业下员工,在ApproverType为ORGANIZATION时指定。
        # 默认为false,即签署人位于同一个第三方平台应用号下;默认为false,即签署人位于同一个第三方应用号下;
        # @type NotChannelOrganization: Boolean
        # @param OpenId: 用户侧第三方id,最大长度64个字符
        # 当签署方为同一第三方平台下的员工时,该字段若不指定,则发起【待领取】的流程
        # @type OpenId: String
        # @param OrganizationOpenId: 企业签署方在同一第三方平台应用下的其他合作企业OpenId,签署方为非发起方企业场景下必传,最大长度64个字符;
        # @type OrganizationOpenId: String
        # @param ApproverType: 签署人类型
        # PERSON-个人/自然人;
        # PERSON_AUTO_SIGN-个人自动签(定制化场景下使用);
        # ORGANIZATION-企业(企业签署方或模板发起时的企业静默签);
        # ENTERPRISESERVER-企业静默签(文件发起时的企业静默签字)。
        # @type ApproverType: String
        # @param RecipientId: 签署流程签署人在模板中对应的签署人Id;在非单方签署、以及非B2C签署的场景下必传,用于指定当前签署方在签署流程中的位置;
        # @type RecipientId: String
        # @param Deadline: 签署截止时间戳,默认一年
        # @type Deadline: Integer
        # @param CallbackUrl: 签署完回调url,最大长度1000个字符
        # @type CallbackUrl: String
        # @param SignComponents: 使用PDF文件直接发起合同时,签署人指定的签署控件
        # @type SignComponents: Array
        # @param ComponentLimitType: 个人签署方指定签署控件类型,目前支持:OCR_ESIGN -AI智慧手写签名
        # HANDWRITE -手写签名
        # @type ComponentLimitType: Array
        # @param PreReadTime: 合同的强制预览时间:3~300s,未指定则按合同页数计算
        # @type PreReadTime: Integer
        # @param JumpUrl: 签署完前端跳转的url,此字段的用法场景请联系客户经理确认
        # @type JumpUrl: String
        # @param ApproverOption: 签署人个性化能力值
        # @type ApproverOption: :class:`Tencentcloud::Essbasic.v20210526.models.ApproverOption`
        # @param ApproverNeedSignReview: 当前签署方进行签署操作是否需要企业内部审批,true 则为需要
        # @type ApproverNeedSignReview: Boolean
        # @param ApproverVerifyTypes: 签署人查看合同时认证方式, 1-实名查看 2-短信验证码查看(企业签署方不支持该方式) 如果不传默认为1
        # 查看合同的认证方式 Flow层级的优先于approver层级的
        # @type ApproverVerifyTypes: Array
        # @param ApproverSignTypes: 签署人签署合同时的认证方式
        # 1-人脸认证 2-签署密码 3-运营商三要素(默认为1,2)
        # @type ApproverSignTypes: Array
        # @param SignId: 签署ID
        # - 发起流程时系统自动补充
        # - 创建签署链接时,可以通过查询详情接口获得签署人的SignId,然后可传入此值为该签署人创建签署链接,无需再传姓名、手机号、证件号等其他信息
        # @type SignId: String

        attr_accessor :Name, :IdCardType, :IdCardNumber, :Mobile, :OrganizationName, :NotChannelOrganization, :OpenId, :OrganizationOpenId, :ApproverType, :RecipientId, :Deadline, :CallbackUrl, :SignComponents, :ComponentLimitType, :PreReadTime, :JumpUrl, :ApproverOption, :ApproverNeedSignReview, :ApproverVerifyTypes, :ApproverSignTypes, :SignId
        extend Gem::Deprecate
        deprecate :CallbackUrl, :none, 2023, 6
        deprecate :CallbackUrl=, :none, 2023, 6

        def initialize(name=nil, idcardtype=nil, idcardnumber=nil, mobile=nil, organizationname=nil, notchannelorganization=nil, openid=nil, organizationopenid=nil, approvertype=nil, recipientid=nil, deadline=nil, callbackurl=nil, signcomponents=nil, componentlimittype=nil, prereadtime=nil, jumpurl=nil, approveroption=nil, approverneedsignreview=nil, approververifytypes=nil, approversigntypes=nil, signid=nil)
          @Name = name
          @IdCardType = idcardtype
          @IdCardNumber = idcardnumber
          @Mobile = mobile
          @OrganizationName = organizationname
          @NotChannelOrganization = notchannelorganization
          @OpenId = openid
          @OrganizationOpenId = organizationopenid
          @ApproverType = approvertype
          @RecipientId = recipientid
          @Deadline = deadline
          @CallbackUrl = callbackurl
          @SignComponents = signcomponents
          @ComponentLimitType = componentlimittype
          @PreReadTime = prereadtime
          @JumpUrl = jumpurl
          @ApproverOption = approveroption
          @ApproverNeedSignReview = approverneedsignreview
          @ApproverVerifyTypes = approververifytypes
          @ApproverSignTypes = approversigntypes
          @SignId = signid
        end

        def deserialize(params)
          @Name = params['Name']
          @IdCardType = params['IdCardType']
          @IdCardNumber = params['IdCardNumber']
          @Mobile = params['Mobile']
          @OrganizationName = params['OrganizationName']
          @NotChannelOrganization = params['NotChannelOrganization']
          @OpenId = params['OpenId']
          @OrganizationOpenId = params['OrganizationOpenId']
          @ApproverType = params['ApproverType']
          @RecipientId = params['RecipientId']
          @Deadline = params['Deadline']
          @CallbackUrl = params['CallbackUrl']
          unless params['SignComponents'].nil?
            @SignComponents = []
            params['SignComponents'].each do |i|
              component_tmp = Component.new
              component_tmp.deserialize(i)
              @SignComponents << component_tmp
            end
          end
          @ComponentLimitType = params['ComponentLimitType']
          @PreReadTime = params['PreReadTime']
          @JumpUrl = params['JumpUrl']
          unless params['ApproverOption'].nil?
            @ApproverOption = ApproverOption.new
            @ApproverOption.deserialize(params['ApproverOption'])
          end
          @ApproverNeedSignReview = params['ApproverNeedSignReview']
          @ApproverVerifyTypes = params['ApproverVerifyTypes']
          @ApproverSignTypes = params['ApproverSignTypes']
          @SignId = params['SignId']
        end
      end

      # 签署人签署链接信息
      class FlowApproverUrlInfo < TencentCloud::Common::AbstractModel
        # @param SignUrl: 签署短链接,不支持小程序嵌入,只支持移动端浏览器打开。注意该链接有效期为30分钟,同时需要注意保密,不要外泄给无关用户。
        # @type SignUrl: String
        # @param ApproverType: 签署人类型 PERSON-个人
        # @type ApproverType: String
        # @param Name: 签署人姓名
        # @type Name: String
        # @param Mobile: 签署人手机号
        # @type Mobile: String
        # @param LongUrl: 签署长链接,支持小程序嵌入。注意该链接有效期为30分钟,同时需要注意保密,不要外泄给无关用户。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type LongUrl: String

        attr_accessor :SignUrl, :ApproverType, :Name, :Mobile, :LongUrl

        def initialize(signurl=nil, approvertype=nil, name=nil, mobile=nil, longurl=nil)
          @SignUrl = signurl
          @ApproverType = approvertype
          @Name = name
          @Mobile = mobile
          @LongUrl = longurl
        end

        def deserialize(params)
          @SignUrl = params['SignUrl']
          @ApproverType = params['ApproverType']
          @Name = params['Name']
          @Mobile = params['Mobile']
          @LongUrl = params['LongUrl']
        end
      end

      # 此结构体(FlowDetailInfo)描述的是合同(流程)的详细信息
      class FlowDetailInfo < TencentCloud::Common::AbstractModel
        # @param FlowId: 合同(流程)的Id
        # @type FlowId: String
        # @param FlowName: 合同(流程)的名字
        # @type FlowName: String
        # @param FlowType: 合同(流程)的类型
        # @type FlowType: String
        # @param FlowStatus: 合同(流程)的状态, 状态如下

        # INIT 合同创建
        # PART 合同签署中
        # REJECT 合同拒签
        # ALL 合同签署完成
        # DEADLINE 合同流签(合同过期)
        # CANCEL 合同撤回
        # RELIEVED 解除协议(已解除)

        # @type FlowStatus: String
        # @param FlowMessage: 合同(流程)的信息
        # @type FlowMessage: String
        # @param CreateOn: 合同(流程)的创建时间戳,单位秒
        # @type CreateOn: Integer
        # @param DeadLine: 合同(流程)的签署截止时间戳,单位秒
        # @type DeadLine: Integer
        # @param CustomData: 用户自定义数据
        # @type CustomData: String
        # @param FlowApproverInfos: 合同(流程)的签署人数组
        # @type FlowApproverInfos: Array
        # @param CcInfos: 合同(流程)关注方信息列表
        # @type CcInfos: Array
        # @param NeedCreateReview: 是否需要发起前审批,当NeedCreateReview为true,表明当前流程是需要发起前审核的合同,可能无法进行查看,签署操作,需要等审核完成后,才可以继续后续流程
        # @type NeedCreateReview: Boolean

        attr_accessor :FlowId, :FlowName, :FlowType, :FlowStatus, :FlowMessage, :CreateOn, :DeadLine, :CustomData, :FlowApproverInfos, :CcInfos, :NeedCreateReview

        def initialize(flowid=nil, flowname=nil, flowtype=nil, flowstatus=nil, flowmessage=nil, createon=nil, deadline=nil, customdata=nil, flowapproverinfos=nil, ccinfos=nil, needcreatereview=nil)
          @FlowId = flowid
          @FlowName = flowname
          @FlowType = flowtype
          @FlowStatus = flowstatus
          @FlowMessage = flowmessage
          @CreateOn = createon
          @DeadLine = deadline
          @CustomData = customdata
          @FlowApproverInfos = flowapproverinfos
          @CcInfos = ccinfos
          @NeedCreateReview = needcreatereview
        end

        def deserialize(params)
          @FlowId = params['FlowId']
          @FlowName = params['FlowName']
          @FlowType = params['FlowType']
          @FlowStatus = params['FlowStatus']
          @FlowMessage = params['FlowMessage']
          @CreateOn = params['CreateOn']
          @DeadLine = params['DeadLine']
          @CustomData = params['CustomData']
          unless params['FlowApproverInfos'].nil?
            @FlowApproverInfos = []
            params['FlowApproverInfos'].each do |i|
              flowapproverdetail_tmp = FlowApproverDetail.new
              flowapproverdetail_tmp.deserialize(i)
              @FlowApproverInfos << flowapproverdetail_tmp
            end
          end
          unless params['CcInfos'].nil?
            @CcInfos = []
            params['CcInfos'].each do |i|
              flowapproverdetail_tmp = FlowApproverDetail.new
              flowapproverdetail_tmp.deserialize(i)
              @CcInfos << flowapproverdetail_tmp
            end
          end
          @NeedCreateReview = params['NeedCreateReview']
        end
      end

      # 合同组中每个子合同的发起信息
      class FlowFileInfo < TencentCloud::Common::AbstractModel
        # @param FileIds: 签署文件资源Id列表,目前仅支持单个文件
        # @type FileIds: Array
        # @param FlowName: 签署流程名称,长度不超过200个字符
        # @type FlowName: String
        # @param FlowApprovers: 签署流程签约方列表,最多不超过5个参与方
        # @type FlowApprovers: Array
        # @param Deadline: 签署流程截止时间,十位数时间戳,最大值为33162419560,即3020年
        # @type Deadline: Integer
        # @param FlowDescription: 签署流程的描述,长度不超过1000个字符
        # @type FlowDescription: String
        # @param FlowType: 签署流程的类型,长度不超过255个字符
        # @type FlowType: String
        # @param CallbackUrl: 签署流程回调地址,长度不超过255个字符
        # @type CallbackUrl: String
        # @param CustomerData: 第三方应用的业务信息,最大长度1000个字符。发起自动签署时,需设置对应自动签署场景,目前仅支持场景:处方单-E_PRESCRIPTION_AUTO_SIGN
        # @type CustomerData: String
        # @param Unordered: 合同签署顺序类型(无序签,顺序签),默认为false,即有序签署
        # @type Unordered: Boolean
        # @param CustomShowMap: 合同显示的页卡模板,说明:只支持{合同名称}, {发起方企业}, {发起方姓名}, {签署方N企业}, {签署方N姓名},且N不能超过签署人的数量,N从1开始
        # @type CustomShowMap: String
        # @param NeedSignReview: 本企业(发起方企业)是否需要签署审批
        # @type NeedSignReview: Boolean

        attr_accessor :FileIds, :FlowName, :FlowApprovers, :Deadline, :FlowDescription, :FlowType, :CallbackUrl, :CustomerData, :Unordered, :CustomShowMap, :NeedSignReview

        def initialize(fileids=nil, flowname=nil, flowapprovers=nil, deadline=nil, flowdescription=nil, flowtype=nil, callbackurl=nil, customerdata=nil, unordered=nil, customshowmap=nil, needsignreview=nil)
          @FileIds = fileids
          @FlowName = flowname
          @FlowApprovers = flowapprovers
          @Deadline = deadline
          @FlowDescription = flowdescription
          @FlowType = flowtype
          @CallbackUrl = callbackurl
          @CustomerData = customerdata
          @Unordered = unordered
          @CustomShowMap = customshowmap
          @NeedSignReview = needsignreview
        end

        def deserialize(params)
          @FileIds = params['FileIds']
          @FlowName = params['FlowName']
          unless params['FlowApprovers'].nil?
            @FlowApprovers = []
            params['FlowApprovers'].each do |i|
              flowapproverinfo_tmp = FlowApproverInfo.new
              flowapproverinfo_tmp.deserialize(i)
              @FlowApprovers << flowapproverinfo_tmp
            end
          end
          @Deadline = params['Deadline']
          @FlowDescription = params['FlowDescription']
          @FlowType = params['FlowType']
          @CallbackUrl = params['CallbackUrl']
          @CustomerData = params['CustomerData']
          @Unordered = params['Unordered']
          @CustomShowMap = params['CustomShowMap']
          @NeedSignReview = params['NeedSignReview']
        end
      end

      # 此结构体 (FlowInfo) 用于描述签署流程信息。

      # 【数据表格传参说明】
      # 当模板的 ComponentType='DYNAMIC_TABLE'时( 第三方应用集成或集成版),FormField.ComponentValue需要传递json格式的字符串参数,用于确定表头&填充数据表格(支持内容的单元格合并)
      # 输入示例1:

      # ```
      # {
      #     "headers":[
      #         {
      #             "content":"head1"
      #         },
      #         {
      #             "content":"head2"
      #         },
      #         {
      #             "content":"head3"
      #         }
      #     ],
      #     "rowCount":3,
      #     "body":{
      #         "cells":[
      #             {
      #                 "rowStart":1,
      #                 "rowEnd":1,
      #                 "columnStart":1,
      #                 "columnEnd":1,
      #                 "content":"123"
      #             },
      #             {
      #                 "rowStart":2,
      #                 "rowEnd":3,
      #                 "columnStart":1,
      #                 "columnEnd":2,
      #                 "content":"456"
      #             },
      #             {
      #                 "rowStart":3,
      #                 "rowEnd":3,
      #                 "columnStart":3,
      #                 "columnEnd":3,
      #                 "content":"789"
      #             }
      #         ]
      #     }
      # }

      # ```

      # 输入示例2(表格表头宽度比例配置):

      # ```
      # {
      #     "headers":[
      #         {
      #             "content":"head1",
      #             "widthPercent": 30
      #         },
      #         {
      #             "content":"head2",
      #             "widthPercent": 30
      #         },
      #         {
      #             "content":"head3",
      #             "widthPercent": 40
      #         }
      #     ],
      #     "rowCount":3,
      #     "body":{
      #         "cells":[
      #             {
      #                 "rowStart":1,
      #                 "rowEnd":1,
      #                 "columnStart":1,
      #                 "columnEnd":1,
      #                 "content":"123"
      #             },
      #             {
      #                 "rowStart":2,
      #                 "rowEnd":3,
      #                 "columnStart":1,
      #                 "columnEnd":2,
      #                 "content":"456"
      #             },
      #             {
      #                 "rowStart":3,
      #                 "rowEnd":3,
      #                 "columnStart":3,
      #                 "columnEnd":3,
      #                 "content":"789"
      #             }
      #         ]
      #     }
      # }

      # ```
      # 表格参数说明

      # | 名称                | 类型    | 描述                                              |
      # | ------------------- | ------- | ------------------------------------------------- |
      # | headers             | Array   | 表头:不超过10列,不支持单元格合并,字数不超过100 |
      # | rowCount            | Integer | 表格内容最大行数                                  |
      # | cells.N.rowStart    | Integer | 单元格坐标:行起始index                           |
      # | cells.N.rowEnd      | Integer | 单元格坐标:行结束index                           |
      # | cells.N.columnStart | Integer | 单元格坐标:列起始index                           |
      # | cells.N.columnEnd   | Integer | 单元格坐标:列结束index                           |
      # | cells.N.content     | String  | 单元格内容,字数不超过100                         |

      # 表格参数headers说明

      # | 名称                | 类型    | 描述                                              |
      # | ------------------- | ------- | ------------------------------------------------- |
      # | widthPercent   | Integer | 表头单元格列占总表头的比例,例如1:30表示 此列占表头的30%,不填写时列宽度平均拆分;例如2:总2列,某一列填写40,剩余列可以为空,按照60计算。;例如3:总3列,某一列填写30,剩余2列可以为空,分别为(100-30)/2=35                    |
      # | content    | String  | 表头单元格内容,字数不超过100                         |
      class FlowInfo < TencentCloud::Common::AbstractModel
        # @param FlowName: 合同名字,最大长度200个字符
        # @type FlowName: String
        # @param Deadline: 签署截止时间戳,超过有效签署时间则该签署流程失败,默认一年
        # @type Deadline: Integer
        # @param TemplateId: 模板ID
        # @type TemplateId: String
        # @param FlowApprovers: 多个签署人信息,最大支持50个签署方
        # @type FlowApprovers: Array
        # @param FormFields: 表单K-V对列表
        # @type FormFields: Array
        # @param CallbackUrl: 回调地址,最大长度1000个字符
        # @type CallbackUrl: String
        # @param FlowType: 合同类型,如:1. “劳务”;2. “销售”;3. “租赁”;4. “其他”,最大长度200个字符
        # @type FlowType: String
        # @param FlowDescription: 合同描述,最大长度1000个字符
        # @type FlowDescription: String
        # @param CustomerData:  第三方应用平台的业务信息,最大长度1000个字符。
        # @type CustomerData: String
        # @param CustomShowMap: 合同显示的页卡模板,说明:只支持{合同名称}, {发起方企业}, {发起方姓名}, {签署方N企业}, {签署方N姓名},且N不能超过签署人的数量,N从1开始
        # @type CustomShowMap: String
        # @param CcInfos: 被抄送人的信息列表,抄送功能暂不开放
        # @type CcInfos: Array
        # @param NeedSignReview: 发起方企业的签署人进行签署操作是否需要企业内部审批。
        # 若设置为true,审核结果需通过接口 ChannelCreateFlowSignReview 通知电子签,审核通过后,发起方企业签署人方可进行签署操作,否则会阻塞其签署操作。

        # 注:企业可以通过此功能与企业内部的审批流程进行关联,支持手动、静默签署合同。
        # @type NeedSignReview: Boolean
        # @param CcNotifyType: 给关注人发送短信通知的类型,0-合同发起时通知 1-签署完成后通知
        # @type CcNotifyType: Integer
        # @param AutoSignScene: 个人自动签场景。发起自动签署时,需设置对应自动签署场景,目前仅支持场景:处方单-E_PRESCRIPTION_AUTO_SIGN
        # @type AutoSignScene: String

        attr_accessor :FlowName, :Deadline, :TemplateId, :FlowApprovers, :FormFields, :CallbackUrl, :FlowType, :FlowDescription, :CustomerData, :CustomShowMap, :CcInfos, :NeedSignReview, :CcNotifyType, :AutoSignScene

        def initialize(flowname=nil, deadline=nil, templateid=nil, flowapprovers=nil, formfields=nil, callbackurl=nil, flowtype=nil, flowdescription=nil, customerdata=nil, customshowmap=nil, ccinfos=nil, needsignreview=nil, ccnotifytype=nil, autosignscene=nil)
          @FlowName = flowname
          @Deadline = deadline
          @TemplateId = templateid
          @FlowApprovers = flowapprovers
          @FormFields = formfields
          @CallbackUrl = callbackurl
          @FlowType = flowtype
          @FlowDescription = flowdescription
          @CustomerData = customerdata
          @CustomShowMap = customshowmap
          @CcInfos = ccinfos
          @NeedSignReview = needsignreview
          @CcNotifyType = ccnotifytype
          @AutoSignScene = autosignscene
        end

        def deserialize(params)
          @FlowName = params['FlowName']
          @Deadline = params['Deadline']
          @TemplateId = params['TemplateId']
          unless params['FlowApprovers'].nil?
            @FlowApprovers = []
            params['FlowApprovers'].each do |i|
              flowapproverinfo_tmp = FlowApproverInfo.new
              flowapproverinfo_tmp.deserialize(i)
              @FlowApprovers << flowapproverinfo_tmp
            end
          end
          unless params['FormFields'].nil?
            @FormFields = []
            params['FormFields'].each do |i|
              formfield_tmp = FormField.new
              formfield_tmp.deserialize(i)
              @FormFields << formfield_tmp
            end
          end
          @CallbackUrl = params['CallbackUrl']
          @FlowType = params['FlowType']
          @FlowDescription = params['FlowDescription']
          @CustomerData = params['CustomerData']
          @CustomShowMap = params['CustomShowMap']
          unless params['CcInfos'].nil?
            @CcInfos = []
            params['CcInfos'].each do |i|
              ccinfo_tmp = CcInfo.new
              ccinfo_tmp.deserialize(i)
              @CcInfos << ccinfo_tmp
            end
          end
          @NeedSignReview = params['NeedSignReview']
          @CcNotifyType = params['CcNotifyType']
          @AutoSignScene = params['AutoSignScene']
        end
      end

      # 流程对应资源链接信息
      class FlowResourceUrlInfo < TencentCloud::Common::AbstractModel
        # @param FlowId: 流程对应Id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FlowId: String
        # @param ResourceUrlInfos: 流程对应资源链接信息数组
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ResourceUrlInfos: Array

        attr_accessor :FlowId, :ResourceUrlInfos

        def initialize(flowid=nil, resourceurlinfos=nil)
          @FlowId = flowid
          @ResourceUrlInfos = resourceurlinfos
        end

        def deserialize(params)
          @FlowId = params['FlowId']
          unless params['ResourceUrlInfos'].nil?
            @ResourceUrlInfos = []
            params['ResourceUrlInfos'].each do |i|
              resourceurlinfo_tmp = ResourceUrlInfo.new
              resourceurlinfo_tmp.deserialize(i)
              @ResourceUrlInfos << resourceurlinfo_tmp
            end
          end
        end
      end

      # 此结构 (FormField) 用于描述内容控件填充结构。
      class FormField < TencentCloud::Common::AbstractModel
        # @param ComponentValue: 控件填充vaule,ComponentType和传入值类型对应关系:
        # TEXT - 文本内容
        # MULTI_LINE_TEXT - 文本内容
        # CHECK_BOX - true/false
        # FILL_IMAGE、ATTACHMENT - 附件的FileId,需要通过UploadFiles接口上传获取
        # SELECTOR - 选项值
        # DYNAMIC_TABLE - 传入json格式的表格内容,具体见数据结构FlowInfo
        # @type ComponentValue: String
        # @param ComponentId: 表单域或控件的ID,跟ComponentName二选一,不能全为空;
        # CreateFlowsByTemplates 接口不使用此字段。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ComponentId: String
        # @param ComponentName: 控件的名字,跟ComponentId二选一,不能全为空
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ComponentName: String

        attr_accessor :ComponentValue, :ComponentId, :ComponentName

        def initialize(componentvalue=nil, componentid=nil, componentname=nil)
          @ComponentValue = componentvalue
          @ComponentId = componentid
          @ComponentName = componentname
        end

        def deserialize(params)
          @ComponentValue = params['ComponentValue']
          @ComponentId = params['ComponentId']
          @ComponentName = params['ComponentName']
        end
      end

      # GetDownloadFlowUrl请求参数结构体
      class GetDownloadFlowUrlRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param DownLoadFlows: 文件夹数组,签署流程总数不能超过50个,一个文件夹下,不能超过20个签署流程
        # @type DownLoadFlows: Array
        # @param Operator: 操作者的信息,不用传
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Agent, :DownLoadFlows, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, downloadflows=nil, operator=nil)
          @Agent = agent
          @DownLoadFlows = downloadflows
          @Operator = operator
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          unless params['DownLoadFlows'].nil?
            @DownLoadFlows = []
            params['DownLoadFlows'].each do |i|
              downloadflowinfo_tmp = DownloadFlowInfo.new
              downloadflowinfo_tmp.deserialize(i)
              @DownLoadFlows << downloadflowinfo_tmp
            end
          end
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # GetDownloadFlowUrl返回参数结构体
      class GetDownloadFlowUrlResponse < TencentCloud::Common::AbstractModel
        # @param DownLoadUrl: 合同(流程)下载地址
        # @type DownLoadUrl: String
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :DownLoadUrl, :RequestId

        def initialize(downloadurl=nil, requestid=nil)
          @DownLoadUrl = downloadurl
          @RequestId = requestid
        end

        def deserialize(params)
          @DownLoadUrl = params['DownLoadUrl']
          @RequestId = params['RequestId']
        end
      end

      # ModifyExtendedService请求参数结构体
      class ModifyExtendedServiceRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填。

        # 注: 此接口 参数Agent. ProxyOperator.OpenId 需要传递超管或者法人的OpenId
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param ServiceType:   扩展服务类型
        #   AUTO_SIGN             企业静默签(自动签署)
        #   OVERSEA_SIGN          企业与港澳台居民*签署合同
        #   MOBILE_CHECK_APPROVER 使用手机号验证签署方身份
        #   PAGING_SEAL           骑缝章
        #   DOWNLOAD_FLOW         授权渠道下载合同
        # @type ServiceType: String
        # @param Operate: 操作类型
        # OPEN:开通
        # CLOSE:关闭
        # @type Operate: String

        attr_accessor :Agent, :ServiceType, :Operate

        def initialize(agent=nil, servicetype=nil, operate=nil)
          @Agent = agent
          @ServiceType = servicetype
          @Operate = operate
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @ServiceType = params['ServiceType']
          @Operate = params['Operate']
        end
      end

      # ModifyExtendedService返回参数结构体
      class ModifyExtendedServiceResponse < TencentCloud::Common::AbstractModel
        # @param OperateUrl: 操作跳转链接,有效期24小时
        # 若操作时没有返回跳转链接,表示无需跳转操作,此时会直接开通/关闭服务。

        # 当操作类型是 OPEN 且 扩展服务类型是  AUTO_SIGN 或 DOWNLOAD_FLOW 或者 OVERSEA_SIGN 时返回操作链接,
        # 返回的链接需要平台方自行触达超管或法人,超管或法人点击链接完成服务开通操作。
        # @type OperateUrl: String
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :OperateUrl, :RequestId

        def initialize(operateurl=nil, requestid=nil)
          @OperateUrl = operateurl
          @RequestId = requestid
        end

        def deserialize(params)
          @OperateUrl = params['OperateUrl']
          @RequestId = params['RequestId']
        end
      end

      # 持有的电子印章信息
      class OccupiedSeal < TencentCloud::Common::AbstractModel
        # @param SealId: 电子印章编号
        # @type SealId: String
        # @param SealName: 电子印章名称
        # @type SealName: String
        # @param CreateOn: 电子印章授权时间戳,单位秒
        # @type CreateOn: Integer
        # @param Creator: 电子印章授权人,电子签的UserId
        # @type Creator: String
        # @param SealPolicyId: 电子印章策略Id
        # @type SealPolicyId: String
        # @param SealStatus: 印章状态,有以下六种:CHECKING(审核中)SUCCESS(已启用)FAIL(审核拒绝)CHECKING-SADM(待超管审核)DISABLE(已停用)STOPPED(已终止)
        # @type SealStatus: String
        # @param FailReason: 审核失败原因
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FailReason: String
        # @param Url: 印章图片url,5分钟内有效
        # @type Url: String
        # @param SealType: 印章类型,OFFICIAL-企业公章,CONTRACT-合同专用章,LEGAL_PERSON_SEAL-法人章
        # @type SealType: String
        # @param IsAllTime: 用印申请是否为永久授权
        # @type IsAllTime: Boolean
        # @param AuthorizedUsers: 授权人列表
        # @type AuthorizedUsers: Array

        attr_accessor :SealId, :SealName, :CreateOn, :Creator, :SealPolicyId, :SealStatus, :FailReason, :Url, :SealType, :IsAllTime, :AuthorizedUsers

        def initialize(sealid=nil, sealname=nil, createon=nil, creator=nil, sealpolicyid=nil, sealstatus=nil, failreason=nil, url=nil, sealtype=nil, isalltime=nil, authorizedusers=nil)
          @SealId = sealid
          @SealName = sealname
          @CreateOn = createon
          @Creator = creator
          @SealPolicyId = sealpolicyid
          @SealStatus = sealstatus
          @FailReason = failreason
          @Url = url
          @SealType = sealtype
          @IsAllTime = isalltime
          @AuthorizedUsers = authorizedusers
        end

        def deserialize(params)
          @SealId = params['SealId']
          @SealName = params['SealName']
          @CreateOn = params['CreateOn']
          @Creator = params['Creator']
          @SealPolicyId = params['SealPolicyId']
          @SealStatus = params['SealStatus']
          @FailReason = params['FailReason']
          @Url = params['Url']
          @SealType = params['SealType']
          @IsAllTime = params['IsAllTime']
          unless params['AuthorizedUsers'].nil?
            @AuthorizedUsers = []
            params['AuthorizedUsers'].each do |i|
              authorizeduser_tmp = AuthorizedUser.new
              authorizeduser_tmp.deserialize(i)
              @AuthorizedUsers << authorizeduser_tmp
            end
          end
        end
      end

      # OperateChannelTemplate请求参数结构体
      class OperateChannelTemplateRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.AppId必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param OperateType: 操作类型,查询:"SELECT",删除:"DELETE",更新:"UPDATE"
        # @type OperateType: String
        # @param TemplateId: 第三方应用平台模板库模板唯一标识
        # @type TemplateId: String
        # @param ProxyOrganizationOpenIds: 合作企业方第三方机构唯一标识数据,支持多个, 用","进行分隔
        # @type ProxyOrganizationOpenIds: String
        # @param AuthTag: 模板可见性, 全部可见-"all", 部分可见-"part"
        # @type AuthTag: String
        # @param Operator: 暂未开放
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Agent, :OperateType, :TemplateId, :ProxyOrganizationOpenIds, :AuthTag, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, operatetype=nil, templateid=nil, proxyorganizationopenids=nil, authtag=nil, operator=nil)
          @Agent = agent
          @OperateType = operatetype
          @TemplateId = templateid
          @ProxyOrganizationOpenIds = proxyorganizationopenids
          @AuthTag = authtag
          @Operator = operator
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @OperateType = params['OperateType']
          @TemplateId = params['TemplateId']
          @ProxyOrganizationOpenIds = params['ProxyOrganizationOpenIds']
          @AuthTag = params['AuthTag']
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # OperateChannelTemplate返回参数结构体
      class OperateChannelTemplateResponse < TencentCloud::Common::AbstractModel
        # @param AppId: 腾讯电子签颁发给第三方应用平台的应用ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AppId: String
        # @param TemplateId: 第三方应用平台模板库模板唯一标识
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TemplateId: String
        # @param OperateResult: 全部成功-"all-success",部分成功-"part-success", 全部失败-"fail"失败的会在FailMessageList中展示
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type OperateResult: String
        # @param AuthTag: 模板可见性, 全部可见-"all", 部分可见-"part"
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type AuthTag: String
        # @param ProxyOrganizationOpenIds: 合作企业方第三方机构唯一标识数据
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ProxyOrganizationOpenIds: Array
        # @param FailMessageList: 操作失败信息数组
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FailMessageList: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :AppId, :TemplateId, :OperateResult, :AuthTag, :ProxyOrganizationOpenIds, :FailMessageList, :RequestId

        def initialize(appid=nil, templateid=nil, operateresult=nil, authtag=nil, proxyorganizationopenids=nil, failmessagelist=nil, requestid=nil)
          @AppId = appid
          @TemplateId = templateid
          @OperateResult = operateresult
          @AuthTag = authtag
          @ProxyOrganizationOpenIds = proxyorganizationopenids
          @FailMessageList = failmessagelist
          @RequestId = requestid
        end

        def deserialize(params)
          @AppId = params['AppId']
          @TemplateId = params['TemplateId']
          @OperateResult = params['OperateResult']
          @AuthTag = params['AuthTag']
          @ProxyOrganizationOpenIds = params['ProxyOrganizationOpenIds']
          unless params['FailMessageList'].nil?
            @FailMessageList = []
            params['FailMessageList'].each do |i|
              authfailmessage_tmp = AuthFailMessage.new
              authfailmessage_tmp.deserialize(i)
              @FailMessageList << authfailmessage_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # 机构信息
      class OrganizationInfo < TencentCloud::Common::AbstractModel
        # @param OrganizationOpenId: 用户在渠道的机构编号
        # @type OrganizationOpenId: String
        # @param OrganizationId: 机构在平台的编号
        # @type OrganizationId: String
        # @param Channel: 用户渠道
        # @type Channel: String
        # @param ClientIp: 用户真实的IP
        # @type ClientIp: String
        # @param ProxyIp: 机构的代理IP
        # @type ProxyIp: String

        attr_accessor :OrganizationOpenId, :OrganizationId, :Channel, :ClientIp, :ProxyIp
        extend Gem::Deprecate
        deprecate :ClientIp, :none, 2023, 6
        deprecate :ClientIp=, :none, 2023, 6
        deprecate :ProxyIp, :none, 2023, 6
        deprecate :ProxyIp=, :none, 2023, 6

        def initialize(organizationopenid=nil, organizationid=nil, channel=nil, clientip=nil, proxyip=nil)
          @OrganizationOpenId = organizationopenid
          @OrganizationId = organizationid
          @Channel = channel
          @ClientIp = clientip
          @ProxyIp = proxyip
        end

        def deserialize(params)
          @OrganizationOpenId = params['OrganizationOpenId']
          @OrganizationId = params['OrganizationId']
          @Channel = params['Channel']
          @ClientIp = params['ClientIp']
          @ProxyIp = params['ProxyIp']
        end
      end

      # 合同文件验签单个结果结构体
      class PdfVerifyResult < TencentCloud::Common::AbstractModel
        # @param VerifyResult: 验签结果。0-签名域未签名;1-验签成功; 3-验签失败;4-未找到签名域:文件内没有签名域;5-签名值格式不正确。
        # @type VerifyResult: Integer
        # @param SignPlatform: 签署平台,如果文件是在腾讯电子签平台签署,则返回腾讯电子签,如果文件不在腾讯电子签平台签署,则返回其他平台。
        # @type SignPlatform: String
        # @param SignerName: 签署人名称
        # @type SignerName: String
        # @param SignTime: 签署时间戳,单位秒
        # @type SignTime: Integer
        # @param SignAlgorithm: 签名算法
        # @type SignAlgorithm: String
        # @param CertSn: 签名证书序列号
        # @type CertSn: String
        # @param CertNotBefore: 证书起始时间戳,单位秒
        # @type CertNotBefore: Integer
        # @param CertNotAfter: 证书过期时间戳,单位秒
        # @type CertNotAfter: Integer
        # @param SignType: 签名类型
        # @type SignType: Integer
        # @param ComponentPosX: 签名域横坐标,单位px
        # @type ComponentPosX: Float
        # @param ComponentPosY: 签名域纵坐标,单位px
        # @type ComponentPosY: Float
        # @param ComponentWidth: 签名域宽度,单位px
        # @type ComponentWidth: Float
        # @param ComponentHeight: 签名域高度,单位px
        # @type ComponentHeight: Float
        # @param ComponentPage: 签名域所在页码,1~N
        # @type ComponentPage: Integer

        attr_accessor :VerifyResult, :SignPlatform, :SignerName, :SignTime, :SignAlgorithm, :CertSn, :CertNotBefore, :CertNotAfter, :SignType, :ComponentPosX, :ComponentPosY, :ComponentWidth, :ComponentHeight, :ComponentPage

        def initialize(verifyresult=nil, signplatform=nil, signername=nil, signtime=nil, signalgorithm=nil, certsn=nil, certnotbefore=nil, certnotafter=nil, signtype=nil, componentposx=nil, componentposy=nil, componentwidth=nil, componentheight=nil, componentpage=nil)
          @VerifyResult = verifyresult
          @SignPlatform = signplatform
          @SignerName = signername
          @SignTime = signtime
          @SignAlgorithm = signalgorithm
          @CertSn = certsn
          @CertNotBefore = certnotbefore
          @CertNotAfter = certnotafter
          @SignType = signtype
          @ComponentPosX = componentposx
          @ComponentPosY = componentposy
          @ComponentWidth = componentwidth
          @ComponentHeight = componentheight
          @ComponentPage = componentpage
        end

        def deserialize(params)
          @VerifyResult = params['VerifyResult']
          @SignPlatform = params['SignPlatform']
          @SignerName = params['SignerName']
          @SignTime = params['SignTime']
          @SignAlgorithm = params['SignAlgorithm']
          @CertSn = params['CertSn']
          @CertNotBefore = params['CertNotBefore']
          @CertNotAfter = params['CertNotAfter']
          @SignType = params['SignType']
          @ComponentPosX = params['ComponentPosX']
          @ComponentPosY = params['ComponentPosY']
          @ComponentWidth = params['ComponentWidth']
          @ComponentHeight = params['ComponentHeight']
          @ComponentPage = params['ComponentPage']
        end
      end

      # PrepareFlows请求参数结构体
      class PrepareFlowsRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.ProxyOrganizationOpenId、Agent. ProxyOperator.OpenId、Agent.AppId 和 Agent.ProxyAppId 均必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param FlowInfos: 多个合同(签署流程)信息,最大支持20个签署流程。
        # @type FlowInfos: Array
        # @param JumpUrl: 操作完成后的跳转地址,最大长度200
        # @type JumpUrl: String
        # @param Operator: 暂未开放
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Agent, :FlowInfos, :JumpUrl, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, flowinfos=nil, jumpurl=nil, operator=nil)
          @Agent = agent
          @FlowInfos = flowinfos
          @JumpUrl = jumpurl
          @Operator = operator
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          unless params['FlowInfos'].nil?
            @FlowInfos = []
            params['FlowInfos'].each do |i|
              flowinfo_tmp = FlowInfo.new
              flowinfo_tmp.deserialize(i)
              @FlowInfos << flowinfo_tmp
            end
          end
          @JumpUrl = params['JumpUrl']
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # PrepareFlows返回参数结构体
      class PrepareFlowsResponse < TencentCloud::Common::AbstractModel
        # @param ConfirmUrl: 待发起文件确认页
        # @type ConfirmUrl: String
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :ConfirmUrl, :RequestId

        def initialize(confirmurl=nil, requestid=nil)
          @ConfirmUrl = confirmurl
          @RequestId = requestid
        end

        def deserialize(params)
          @ConfirmUrl = params['ConfirmUrl']
          @RequestId = params['RequestId']
        end
      end

      # 合作企业经办人列表信息
      class ProxyOrganizationOperator < TencentCloud::Common::AbstractModel
        # @param Id: 对应Agent-ProxyOperator-OpenId。第三方应用平台自定义,对子客企业员的唯一标识。一个OpenId在一个子客企业内唯一对应一个真实员工,不可在其他子客企业内重复使用。(例如,可以使用经办人企业名+员工身份证的hash值,需要第三方应用平台保存),最大64位字符串
        # @type Id: String
        # @param Name: 经办人姓名,最大长度50个字符
        # @type Name: String
        # @param IdCardType: 经办人身份证件类型
        # 1.ID_CARD 居民身份证
        # 2.HONGKONG_MACAO_AND_TAIWAN 港澳台居民居住证
        # 3.HONGKONG_AND_MACAO 港澳居民来往内地通行证
        # @type IdCardType: String
        # @param IdCardNumber: 经办人证件号
        # @type IdCardNumber: String
        # @param Mobile: 经办人手机号,大陆手机号输入11位,暂不支持海外手机号。
        # @type Mobile: String
        # @param DefaultRole: 默认角色,值为以下三个对应的英文:
        # 业务管理员:admin
        # 经办人:channel-normal-operator
        # 业务员:channel-sales-man
        # @type DefaultRole: String

        attr_accessor :Id, :Name, :IdCardType, :IdCardNumber, :Mobile, :DefaultRole

        def initialize(id=nil, name=nil, idcardtype=nil, idcardnumber=nil, mobile=nil, defaultrole=nil)
          @Id = id
          @Name = name
          @IdCardType = idcardtype
          @IdCardNumber = idcardnumber
          @Mobile = mobile
          @DefaultRole = defaultrole
        end

        def deserialize(params)
          @Id = params['Id']
          @Name = params['Name']
          @IdCardType = params['IdCardType']
          @IdCardNumber = params['IdCardNumber']
          @Mobile = params['Mobile']
          @DefaultRole = params['DefaultRole']
        end
      end

      # 签署参与者信息
      class Recipient < TencentCloud::Common::AbstractModel
        # @param RecipientId: 签署人唯一标识,在通过模板发起合同的时候对应签署方Id
        # @type RecipientId: String
        # @param RecipientType: 参与者类型。默认为空。ENTERPRISE-企业;INDIVIDUAL-个人;PROMOTER-发起方
        # @type RecipientType: String
        # @param Description: 描述
        # @type Description: String
        # @param RoleName: 签署方备注角色名
        # @type RoleName: String
        # @param RequireValidation: 是否需要校验,true-是,false-否
        # @type RequireValidation: Boolean
        # @param RequireSign: 是否必须填写,true-是,false-否
        # @type RequireSign: Boolean
        # @param SignType: 签署类型
        # @type SignType: Integer
        # @param RoutingOrder: 签署顺序:数字越小优先级越高
        # @type RoutingOrder: Integer
        # @param IsPromoter: 是否是发起方
        # @type IsPromoter: Boolean

        attr_accessor :RecipientId, :RecipientType, :Description, :RoleName, :RequireValidation, :RequireSign, :SignType, :RoutingOrder, :IsPromoter

        def initialize(recipientid=nil, recipienttype=nil, description=nil, rolename=nil, requirevalidation=nil, requiresign=nil, signtype=nil, routingorder=nil, ispromoter=nil)
          @RecipientId = recipientid
          @RecipientType = recipienttype
          @Description = description
          @RoleName = rolename
          @RequireValidation = requirevalidation
          @RequireSign = requiresign
          @SignType = signtype
          @RoutingOrder = routingorder
          @IsPromoter = ispromoter
        end

        def deserialize(params)
          @RecipientId = params['RecipientId']
          @RecipientType = params['RecipientType']
          @Description = params['Description']
          @RoleName = params['RoleName']
          @RequireValidation = params['RequireValidation']
          @RequireSign = params['RequireSign']
          @SignType = params['SignType']
          @RoutingOrder = params['RoutingOrder']
          @IsPromoter = params['IsPromoter']
        end
      end

      # 参与方填写控件信息
      class RecipientComponentInfo < TencentCloud::Common::AbstractModel
        # @param RecipientId: 参与方Id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RecipientId: String
        # @param RecipientFillStatus: 参与方填写状态
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RecipientFillStatus: String
        # @param IsPromoter: 是否发起方
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IsPromoter: Boolean
        # @param Components: 填写控件内容
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Components: Array

        attr_accessor :RecipientId, :RecipientFillStatus, :IsPromoter, :Components

        def initialize(recipientid=nil, recipientfillstatus=nil, ispromoter=nil, components=nil)
          @RecipientId = recipientid
          @RecipientFillStatus = recipientfillstatus
          @IsPromoter = ispromoter
          @Components = components
        end

        def deserialize(params)
          @RecipientId = params['RecipientId']
          @RecipientFillStatus = params['RecipientFillStatus']
          @IsPromoter = params['IsPromoter']
          unless params['Components'].nil?
            @Components = []
            params['Components'].each do |i|
              filledcomponent_tmp = FilledComponent.new
              filledcomponent_tmp.deserialize(i)
              @Components << filledcomponent_tmp
            end
          end
        end
      end

      # 解除协议的签署人,如不指定,默认使用待解除流程(即原流程)中的签署人。
      # 注意:不支持更换C端(个人身份类型)签署人,如果原流程中含有C端签署人,默认使用原流程中的该签署人。

      # 如果需要指定B端(机构身份类型)签署人,其中ReleasedApprover需要传递的参数如下:
      # ApproverNumber, OrganizationName, ApproverType必传。
      # 对于其他身份标识
      # - 子客企业指定经办人:OpenId必传,OrganizationOpenId必传;
      # - 非子客企业:Name、Mobile必传。
      class ReleasedApprover < TencentCloud::Common::AbstractModel
        # @param OrganizationName: 企业签署方工商营业执照上的企业名称,签署方为非发起方企业场景下必传,最大长度64个字符
        # @type OrganizationName: String
        # @param ApproverNumber: 签署人在原流程中的签署人列表中的顺序序号(从0开始,按顺序依次递增),如果不清楚原流程中的签署人列表,可以通过DescribeFlows接口查看
        # @type ApproverNumber: Integer
        # @param ApproverType: 签署人类型,目前仅支持
        # ORGANIZATION-企业
        # ENTERPRISESERVER-企业静默签
        # @type ApproverType: String
        # @param Name: 签署人姓名,最大长度50个字符
        # @type Name: String
        # @param IdCardType: 签署人身份证件类型
        # 1.ID_CARD 居民身份证
        # 2.HONGKONG_MACAO_AND_TAIWAN 港澳台居民居住证
        # 3.HONGKONG_AND_MACAO 港澳居民来往内地通行证
        # @type IdCardType: String
        # @param IdCardNumber: 签署人证件号
        # @type IdCardNumber: String
        # @param Mobile: 签署人手机号,脱敏显示。大陆手机号为11位,暂不支持海外手机号
        # @type Mobile: String
        # @param OrganizationOpenId: 企业签署方在同一第三方应用下的其他合作企业OpenId,签署方为非发起方企业场景下必传,最大长度64个字符
        # @type OrganizationOpenId: String
        # @param OpenId: 用户侧第三方id,最大长度64个字符
        # 当签署方为同一第三方应用下的员工时,该字必传
        # @type OpenId: String

        attr_accessor :OrganizationName, :ApproverNumber, :ApproverType, :Name, :IdCardType, :IdCardNumber, :Mobile, :OrganizationOpenId, :OpenId

        def initialize(organizationname=nil, approvernumber=nil, approvertype=nil, name=nil, idcardtype=nil, idcardnumber=nil, mobile=nil, organizationopenid=nil, openid=nil)
          @OrganizationName = organizationname
          @ApproverNumber = approvernumber
          @ApproverType = approvertype
          @Name = name
          @IdCardType = idcardtype
          @IdCardNumber = idcardnumber
          @Mobile = mobile
          @OrganizationOpenId = organizationopenid
          @OpenId = openid
        end

        def deserialize(params)
          @OrganizationName = params['OrganizationName']
          @ApproverNumber = params['ApproverNumber']
          @ApproverType = params['ApproverType']
          @Name = params['Name']
          @IdCardType = params['IdCardType']
          @IdCardNumber = params['IdCardNumber']
          @Mobile = params['Mobile']
          @OrganizationOpenId = params['OrganizationOpenId']
          @OpenId = params['OpenId']
        end
      end

      # 解除协议文档中内容信息,包括但不限于:解除理由、解除后仍然有效的条款-保留条款、原合同事项处理-费用结算、原合同事项处理-其他事项、其他约定等。
      class RelieveInfo < TencentCloud::Common::AbstractModel
        # @param Reason: 解除理由,最大支持200个字
        # @type Reason: String
        # @param RemainInForceItem: 解除后仍然有效的条款,保留条款,最大支持200个字
        # @type RemainInForceItem: String
        # @param OriginalExpenseSettlement: 原合同事项处理-费用结算,最大支持200个字
        # @type OriginalExpenseSettlement: String
        # @param OriginalOtherSettlement: 原合同事项处理-其他事项,最大支持200个字
        # @type OriginalOtherSettlement: String
        # @param OtherDeals: 其他约定,最大支持200个字
        # @type OtherDeals: String

        attr_accessor :Reason, :RemainInForceItem, :OriginalExpenseSettlement, :OriginalOtherSettlement, :OtherDeals

        def initialize(reason=nil, remaininforceitem=nil, originalexpensesettlement=nil, originalothersettlement=nil, otherdeals=nil)
          @Reason = reason
          @RemainInForceItem = remaininforceitem
          @OriginalExpenseSettlement = originalexpensesettlement
          @OriginalOtherSettlement = originalothersettlement
          @OtherDeals = otherdeals
        end

        def deserialize(params)
          @Reason = params['Reason']
          @RemainInForceItem = params['RemainInForceItem']
          @OriginalExpenseSettlement = params['OriginalExpenseSettlement']
          @OriginalOtherSettlement = params['OriginalOtherSettlement']
          @OtherDeals = params['OtherDeals']
        end
      end

      # 催办接口返回详细信息
      class RemindFlowRecords < TencentCloud::Common::AbstractModel
        # @param CanRemind: 是否能够催办,true-是,false-否
        # @type CanRemind: Boolean
        # @param FlowId: 合同id
        # @type FlowId: String
        # @param RemindMessage: 催办详情信息
        # @type RemindMessage: String

        attr_accessor :CanRemind, :FlowId, :RemindMessage

        def initialize(canremind=nil, flowid=nil, remindmessage=nil)
          @CanRemind = canremind
          @FlowId = flowid
          @RemindMessage = remindmessage
        end

        def deserialize(params)
          @CanRemind = params['CanRemind']
          @FlowId = params['FlowId']
          @RemindMessage = params['RemindMessage']
        end
      end

      # 资源链接信息
      class ResourceUrlInfo < TencentCloud::Common::AbstractModel
        # @param Url: 资源链接地址,过期时间5分钟
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Url: String
        # @param Name: 资源名称
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Name: String
        # @param Type: 资源类型
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Type: String

        attr_accessor :Url, :Name, :Type

        def initialize(url=nil, name=nil, type=nil)
          @Url = url
          @Name = name
          @Type = type
        end

        def deserialize(params)
          @Url = params['Url']
          @Name = params['Name']
          @Type = params['Type']
        end
      end

      # 一码多扫签署二维码对象
      class SignQrCode < TencentCloud::Common::AbstractModel
        # @param QrCodeId: 二维码id
        # @type QrCodeId: String
        # @param QrCodeUrl: 二维码url
        # @type QrCodeUrl: String
        # @param ExpiredTime: 二维码过期时间
        # @type ExpiredTime: Integer

        attr_accessor :QrCodeId, :QrCodeUrl, :ExpiredTime

        def initialize(qrcodeid=nil, qrcodeurl=nil, expiredtime=nil)
          @QrCodeId = qrcodeid
          @QrCodeUrl = qrcodeurl
          @ExpiredTime = expiredtime
        end

        def deserialize(params)
          @QrCodeId = params['QrCodeId']
          @QrCodeUrl = params['QrCodeUrl']
          @ExpiredTime = params['ExpiredTime']
        end
      end

      # 一码多扫签署二维码签署信息
      class SignUrl < TencentCloud::Common::AbstractModel
        # @param AppSignUrl: 小程序签署链接
        # @type AppSignUrl: String
        # @param EffectiveTime: 签署链接有效时间
        # @type EffectiveTime: String
        # @param HttpSignUrl: 移动端签署链接
        # @type HttpSignUrl: String

        attr_accessor :AppSignUrl, :EffectiveTime, :HttpSignUrl

        def initialize(appsignurl=nil, effectivetime=nil, httpsignurl=nil)
          @AppSignUrl = appsignurl
          @EffectiveTime = effectivetime
          @HttpSignUrl = httpsignurl
        end

        def deserialize(params)
          @AppSignUrl = params['AppSignUrl']
          @EffectiveTime = params['EffectiveTime']
          @HttpSignUrl = params['HttpSignUrl']
        end
      end

      # 签署链接内容
      class SignUrlInfo < TencentCloud::Common::AbstractModel
        # @param SignUrl: 签署链接,过期时间为30天
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SignUrl: String
        # @param Deadline: 合同过期时间戳,单位秒
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Deadline: Integer
        # @param SignOrder: 当流程为顺序签署此参数有效时,数字越小优先级越高,暂不支持并行签署 可选
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SignOrder: Integer
        # @param SignId: 签署人编号
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type SignId: String
        # @param CustomUserId: 自定义用户编号
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type CustomUserId: String
        # @param Name: 用户姓名
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Name: String
        # @param Mobile: 用户手机号码
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Mobile: String
        # @param OrganizationName: 签署参与者机构名字
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type OrganizationName: String
        # @param ApproverType: 参与者类型:
        # ORGANIZATION 企业经办人
        # PERSON 自然人
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ApproverType: String
        # @param IdCardNumber: 经办人身份证号
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type IdCardNumber: String
        # @param FlowId: 签署链接对应流程Id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FlowId: String
        # @param OpenId: 企业经办人 用户在渠道的编号
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type OpenId: String
        # @param FlowGroupId: 合同组签署链接对应的合同组id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FlowGroupId: String

        attr_accessor :SignUrl, :Deadline, :SignOrder, :SignId, :CustomUserId, :Name, :Mobile, :OrganizationName, :ApproverType, :IdCardNumber, :FlowId, :OpenId, :FlowGroupId
        extend Gem::Deprecate
        deprecate :CustomUserId, :none, 2023, 6
        deprecate :CustomUserId=, :none, 2023, 6

        def initialize(signurl=nil, deadline=nil, signorder=nil, signid=nil, customuserid=nil, name=nil, mobile=nil, organizationname=nil, approvertype=nil, idcardnumber=nil, flowid=nil, openid=nil, flowgroupid=nil)
          @SignUrl = signurl
          @Deadline = deadline
          @SignOrder = signorder
          @SignId = signid
          @CustomUserId = customuserid
          @Name = name
          @Mobile = mobile
          @OrganizationName = organizationname
          @ApproverType = approvertype
          @IdCardNumber = idcardnumber
          @FlowId = flowid
          @OpenId = openid
          @FlowGroupId = flowgroupid
        end

        def deserialize(params)
          @SignUrl = params['SignUrl']
          @Deadline = params['Deadline']
          @SignOrder = params['SignOrder']
          @SignId = params['SignId']
          @CustomUserId = params['CustomUserId']
          @Name = params['Name']
          @Mobile = params['Mobile']
          @OrganizationName = params['OrganizationName']
          @ApproverType = params['ApproverType']
          @IdCardNumber = params['IdCardNumber']
          @FlowId = params['FlowId']
          @OpenId = params['OpenId']
          @FlowGroupId = params['FlowGroupId']
        end
      end

      # 企业员工信息
      class Staff < TencentCloud::Common::AbstractModel
        # @param UserId: 员工在电子签平台的用户ID
        # @type UserId: String
        # @param DisplayName: 显示的员工名
        # @type DisplayName: String
        # @param Mobile: 员工手机号
        # @type Mobile: String
        # @param Email: 员工邮箱
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Email: String
        # @param OpenId: 员工在第三方应用平台的用户ID
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type OpenId: String
        # @param Roles: 员工角色
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Roles: Array
        # @param Department: 员工部门
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Department: :class:`Tencentcloud::Essbasic.v20210526.models.Department`
        # @param Verified: 员工是否实名
        # @type Verified: Boolean
        # @param CreatedOn: 员工创建时间戳,单位秒
        # @type CreatedOn: Integer
        # @param VerifiedOn: 员工实名时间戳,单位秒
        # @type VerifiedOn: Integer
        # @param QuiteJob: 员工是否离职:0-未离职,1-离职
        # @type QuiteJob: Integer

        attr_accessor :UserId, :DisplayName, :Mobile, :Email, :OpenId, :Roles, :Department, :Verified, :CreatedOn, :VerifiedOn, :QuiteJob

        def initialize(userid=nil, displayname=nil, mobile=nil, email=nil, openid=nil, roles=nil, department=nil, verified=nil, createdon=nil, verifiedon=nil, quitejob=nil)
          @UserId = userid
          @DisplayName = displayname
          @Mobile = mobile
          @Email = email
          @OpenId = openid
          @Roles = roles
          @Department = department
          @Verified = verified
          @CreatedOn = createdon
          @VerifiedOn = verifiedon
          @QuiteJob = quitejob
        end

        def deserialize(params)
          @UserId = params['UserId']
          @DisplayName = params['DisplayName']
          @Mobile = params['Mobile']
          @Email = params['Email']
          @OpenId = params['OpenId']
          unless params['Roles'].nil?
            @Roles = []
            params['Roles'].each do |i|
              staffrole_tmp = StaffRole.new
              staffrole_tmp.deserialize(i)
              @Roles << staffrole_tmp
            end
          end
          unless params['Department'].nil?
            @Department = Department.new
            @Department.deserialize(params['Department'])
          end
          @Verified = params['Verified']
          @CreatedOn = params['CreatedOn']
          @VerifiedOn = params['VerifiedOn']
          @QuiteJob = params['QuiteJob']
        end
      end

      # 第三方应用集成员工角色信息
      class StaffRole < TencentCloud::Common::AbstractModel
        # @param RoleId: 角色id
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RoleId: String
        # @param RoleName: 角色名称
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type RoleName: String

        attr_accessor :RoleId, :RoleName

        def initialize(roleid=nil, rolename=nil)
          @RoleId = roleid
          @RoleName = rolename
        end

        def deserialize(params)
          @RoleId = params['RoleId']
          @RoleName = params['RoleName']
        end
      end

      # 同步经办人失败原因
      class SyncFailReason < TencentCloud::Common::AbstractModel
        # @param Id: 对应Agent-ProxyOperator-OpenId。第三方应用平台自定义,对子客企业员的唯一标识。一个OpenId在一个子客企业内唯一对应一个真实员工,不可在其他子客企业内重复使用。(例如,可以使用经办人企业名+员工身份证的hash值,需要第三方应用平台保存),最大64位字符串
        # @type Id: String
        # @param Message: 失败原因
        # 例如:Id不符合规范、证件号码不合法等
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Message: String

        attr_accessor :Id, :Message

        def initialize(id=nil, message=nil)
          @Id = id
          @Message = message
        end

        def deserialize(params)
          @Id = params['Id']
          @Message = params['Message']
        end
      end

      # SyncProxyOrganizationOperators请求参数结构体
      class SyncProxyOrganizationOperatorsRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息。 此接口Agent.AppId 和 Agent.ProxyOrganizationOpenId必填。
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param OperatorType: 操作类型,新增:"CREATE",修改:"UPDATE",离职:"RESIGN"
        # @type OperatorType: String
        # @param ProxyOrganizationOperators: 经办人信息列表,最大长度200
        # @type ProxyOrganizationOperators: Array
        # @param Operator: 暂未开放
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Agent, :OperatorType, :ProxyOrganizationOperators, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, operatortype=nil, proxyorganizationoperators=nil, operator=nil)
          @Agent = agent
          @OperatorType = operatortype
          @ProxyOrganizationOperators = proxyorganizationoperators
          @Operator = operator
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @OperatorType = params['OperatorType']
          unless params['ProxyOrganizationOperators'].nil?
            @ProxyOrganizationOperators = []
            params['ProxyOrganizationOperators'].each do |i|
              proxyorganizationoperator_tmp = ProxyOrganizationOperator.new
              proxyorganizationoperator_tmp.deserialize(i)
              @ProxyOrganizationOperators << proxyorganizationoperator_tmp
            end
          end
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # SyncProxyOrganizationOperators返回参数结构体
      class SyncProxyOrganizationOperatorsResponse < TencentCloud::Common::AbstractModel
        # @param Status: Status 同步状态,全部同步失败接口会直接报错
        # 1-成功
        # 2-部分成功
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Status: Integer
        # @param FailedList: 同步失败经办人及其失败原因
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FailedList: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :Status, :FailedList, :RequestId

        def initialize(status=nil, failedlist=nil, requestid=nil)
          @Status = status
          @FailedList = failedlist
          @RequestId = requestid
        end

        def deserialize(params)
          @Status = params['Status']
          unless params['FailedList'].nil?
            @FailedList = []
            params['FailedList'].each do |i|
              syncfailreason_tmp = SyncFailReason.new
              syncfailreason_tmp.deserialize(i)
              @FailedList << syncfailreason_tmp
            end
          end
          @RequestId = params['RequestId']
        end
      end

      # SyncProxyOrganization请求参数结构体
      class SyncProxyOrganizationRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用信息
        # 此接口Agent.AppId、Agent.ProxyOrganizationOpenId必填
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param ProxyOrganizationName: 第三方平台子客企业名称,最大长度64个字符
        # @type ProxyOrganizationName: String
        # @param BusinessLicense: 营业执照正面照(PNG或JPG) base64格式, 大小不超过5M
        # @type BusinessLicense: String
        # @param UniformSocialCreditCode: 第三方平台子客企业统一社会信用代码,最大长度200个字符
        # @type UniformSocialCreditCode: String
        # @param ProxyLegalName: 第三方平台子客企业法人/负责人姓名
        # @type ProxyLegalName: String
        # @param Operator: 暂未开放
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Agent, :ProxyOrganizationName, :BusinessLicense, :UniformSocialCreditCode, :ProxyLegalName, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, proxyorganizationname=nil, businesslicense=nil, uniformsocialcreditcode=nil, proxylegalname=nil, operator=nil)
          @Agent = agent
          @ProxyOrganizationName = proxyorganizationname
          @BusinessLicense = businesslicense
          @UniformSocialCreditCode = uniformsocialcreditcode
          @ProxyLegalName = proxylegalname
          @Operator = operator
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @ProxyOrganizationName = params['ProxyOrganizationName']
          @BusinessLicense = params['BusinessLicense']
          @UniformSocialCreditCode = params['UniformSocialCreditCode']
          @ProxyLegalName = params['ProxyLegalName']
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # SyncProxyOrganization返回参数结构体
      class SyncProxyOrganizationResponse < TencentCloud::Common::AbstractModel
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :RequestId

        def initialize(requestid=nil)
          @RequestId = requestid
        end

        def deserialize(params)
          @RequestId = params['RequestId']
        end
      end

      # 复杂文档合成任务的任务信息
      class TaskInfo < TencentCloud::Common::AbstractModel
        # @param TaskId: 合成任务Id,可以通过 ChannelGetTaskResultApi 接口获取任务信息
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TaskId: String
        # @param TaskStatus: 任务状态:READY - 任务已完成;NOTREADY - 任务未完成;
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TaskStatus: String

        attr_accessor :TaskId, :TaskStatus

        def initialize(taskid=nil, taskstatus=nil)
          @TaskId = taskid
          @TaskStatus = taskstatus
        end

        def deserialize(params)
          @TaskId = params['TaskId']
          @TaskStatus = params['TaskStatus']
        end
      end

      # 此结构体 (TemplateInfo) 用于描述模板的信息。
      class TemplateInfo < TencentCloud::Common::AbstractModel
        # @param TemplateId: 模板ID
        # @type TemplateId: String
        # @param TemplateName: 模板名字
        # @type TemplateName: String
        # @param Description: 模板描述信息
        # @type Description: String
        # @param Components: 模板的填充控件信息结构
        # @type Components: Array
        # @param Recipients: 模板中的流程参与人信息
        # @type Recipients: Array
        # @param SignComponents: 模板中的签署控件信息结构
        # @type SignComponents: Array
        # @param TemplateType: 模板类型:1-静默签;3-普通模板
        # @type TemplateType: Integer
        # @param IsPromoter: 是否是发起人 ,已弃用
        # @type IsPromoter: Boolean
        # @param Creator: 模板的创建者信息,电子签系统用户ID
        # @type Creator: String
        # @param CreatedOn: 模板创建的时间戳,单位秒
        # @type CreatedOn: Integer
        # @param PreviewUrl: 模板的H5预览链接,可以通过浏览器打开此链接预览模板,或者嵌入到iframe中预览模板。请求参数WithPreviewUrl=true时返回,有效期5分钟。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PreviewUrl: String
        # @param PdfUrl: 第三方应用集成-模板PDF文件链接。请求参数WithPdfUrl=true时返回(此功能开放需要联系客户经理),有效期5分钟。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type PdfUrl: String
        # @param ChannelTemplateId: 关联的第三方应用平台企业模板ID
        # @type ChannelTemplateId: String
        # @param ChannelTemplateName: 关联的三方应用平台平台企业模板名称
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ChannelTemplateName: String
        # @param ChannelAutoSave: 0-需要子客企业手动领取平台企业的模板(默认); 1-平台自动设置子客模板
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ChannelAutoSave: Integer
        # @param TemplateVersion: 模板版本,全数字字符。默认为空,初始版本为yyyyMMdd001。
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type TemplateVersion: String
        # @param Available: 模板可用状态,取值:1启用(默认),2停用
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Available: Integer

        attr_accessor :TemplateId, :TemplateName, :Description, :Components, :Recipients, :SignComponents, :TemplateType, :IsPromoter, :Creator, :CreatedOn, :PreviewUrl, :PdfUrl, :ChannelTemplateId, :ChannelTemplateName, :ChannelAutoSave, :TemplateVersion, :Available
        extend Gem::Deprecate
        deprecate :IsPromoter, :none, 2023, 6
        deprecate :IsPromoter=, :none, 2023, 6

        def initialize(templateid=nil, templatename=nil, description=nil, components=nil, recipients=nil, signcomponents=nil, templatetype=nil, ispromoter=nil, creator=nil, createdon=nil, previewurl=nil, pdfurl=nil, channeltemplateid=nil, channeltemplatename=nil, channelautosave=nil, templateversion=nil, available=nil)
          @TemplateId = templateid
          @TemplateName = templatename
          @Description = description
          @Components = components
          @Recipients = recipients
          @SignComponents = signcomponents
          @TemplateType = templatetype
          @IsPromoter = ispromoter
          @Creator = creator
          @CreatedOn = createdon
          @PreviewUrl = previewurl
          @PdfUrl = pdfurl
          @ChannelTemplateId = channeltemplateid
          @ChannelTemplateName = channeltemplatename
          @ChannelAutoSave = channelautosave
          @TemplateVersion = templateversion
          @Available = available
        end

        def deserialize(params)
          @TemplateId = params['TemplateId']
          @TemplateName = params['TemplateName']
          @Description = params['Description']
          unless params['Components'].nil?
            @Components = []
            params['Components'].each do |i|
              component_tmp = Component.new
              component_tmp.deserialize(i)
              @Components << component_tmp
            end
          end
          unless params['Recipients'].nil?
            @Recipients = []
            params['Recipients'].each do |i|
              recipient_tmp = Recipient.new
              recipient_tmp.deserialize(i)
              @Recipients << recipient_tmp
            end
          end
          unless params['SignComponents'].nil?
            @SignComponents = []
            params['SignComponents'].each do |i|
              component_tmp = Component.new
              component_tmp.deserialize(i)
              @SignComponents << component_tmp
            end
          end
          @TemplateType = params['TemplateType']
          @IsPromoter = params['IsPromoter']
          @Creator = params['Creator']
          @CreatedOn = params['CreatedOn']
          @PreviewUrl = params['PreviewUrl']
          @PdfUrl = params['PdfUrl']
          @ChannelTemplateId = params['ChannelTemplateId']
          @ChannelTemplateName = params['ChannelTemplateName']
          @ChannelAutoSave = params['ChannelAutoSave']
          @TemplateVersion = params['TemplateVersion']
          @Available = params['Available']
        end
      end

      # 此结构体 (UploadFile) 用于描述多文件上传的文件信息。
      class UploadFile < TencentCloud::Common::AbstractModel
        # @param FileBody: Base64编码后的文件内容
        # @type FileBody: String
        # @param FileName: 文件名
        # @type FileName: String

        attr_accessor :FileBody, :FileName

        def initialize(filebody=nil, filename=nil)
          @FileBody = filebody
          @FileName = filename
        end

        def deserialize(params)
          @FileBody = params['FileBody']
          @FileName = params['FileName']
        end
      end

      # UploadFiles请求参数结构体
      class UploadFilesRequest < TencentCloud::Common::AbstractModel
        # @param Agent: 应用相关信息,若是第三方应用集成调用 appid 和proxyappid 必填
        # @type Agent: :class:`Tencentcloud::Essbasic.v20210526.models.Agent`
        # @param BusinessType: 文件对应业务类型
        # 1. TEMPLATE - 模板; 文件类型:.pdf/.doc/.docx/.html
        # 2. DOCUMENT - 签署过程及签署后的合同文档/图片控件 文件类型:.pdf/.doc/.docx/.jpg/.png/.xls.xlsx/.html
        # @type BusinessType: String
        # @param FileInfos: 上传文件内容数组,最多支持20个文件
        # @type FileInfos: Array
        # @param Operator: 操作者的信息
        # @type Operator: :class:`Tencentcloud::Essbasic.v20210526.models.UserInfo`

        attr_accessor :Agent, :BusinessType, :FileInfos, :Operator
        extend Gem::Deprecate
        deprecate :Operator, :none, 2023, 6
        deprecate :Operator=, :none, 2023, 6

        def initialize(agent=nil, businesstype=nil, fileinfos=nil, operator=nil)
          @Agent = agent
          @BusinessType = businesstype
          @FileInfos = fileinfos
          @Operator = operator
        end

        def deserialize(params)
          unless params['Agent'].nil?
            @Agent = Agent.new
            @Agent.deserialize(params['Agent'])
          end
          @BusinessType = params['BusinessType']
          unless params['FileInfos'].nil?
            @FileInfos = []
            params['FileInfos'].each do |i|
              uploadfile_tmp = UploadFile.new
              uploadfile_tmp.deserialize(i)
              @FileInfos << uploadfile_tmp
            end
          end
          unless params['Operator'].nil?
            @Operator = UserInfo.new
            @Operator.deserialize(params['Operator'])
          end
        end
      end

      # UploadFiles返回参数结构体
      class UploadFilesResponse < TencentCloud::Common::AbstractModel
        # @param FileIds: 文件id数组,有效期一个小时;有效期内此文件id可以反复使用
        # @type FileIds: Array
        # @param TotalCount: 上传成功文件数量
        # @type TotalCount: Integer
        # @param FileUrls: 文件Url
        # @type FileUrls: Array
        # @param RequestId: 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
        # @type RequestId: String

        attr_accessor :FileIds, :TotalCount, :FileUrls, :RequestId

        def initialize(fileids=nil, totalcount=nil, fileurls=nil, requestid=nil)
          @FileIds = fileids
          @TotalCount = totalcount
          @FileUrls = fileurls
          @RequestId = requestid
        end

        def deserialize(params)
          @FileIds = params['FileIds']
          @TotalCount = params['TotalCount']
          @FileUrls = params['FileUrls']
          @RequestId = params['RequestId']
        end
      end

      # 用量明细
      class UsageDetail < TencentCloud::Common::AbstractModel
        # @param ProxyOrganizationOpenId: 子客企业唯一标识
        # @type ProxyOrganizationOpenId: String
        # @param ProxyOrganizationName: 子客企业名
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type ProxyOrganizationName: String
        # @param Date: 日期,当需要汇总数据时日期为空
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Date: String
        # @param Usage: 消耗数量
        # @type Usage: Integer
        # @param Cancel: 撤回数量
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type Cancel: Integer
        # @param FlowChannel: 消耗渠道
        # 注意:此字段可能返回 null,表示取不到有效值。
        # @type FlowChannel: String

        attr_accessor :ProxyOrganizationOpenId, :ProxyOrganizationName, :Date, :Usage, :Cancel, :FlowChannel

        def initialize(proxyorganizationopenid=nil, proxyorganizationname=nil, date=nil, usage=nil, cancel=nil, flowchannel=nil)
          @ProxyOrganizationOpenId = proxyorganizationopenid
          @ProxyOrganizationName = proxyorganizationname
          @Date = date
          @Usage = usage
          @Cancel = cancel
          @FlowChannel = flowchannel
        end

        def deserialize(params)
          @ProxyOrganizationOpenId = params['ProxyOrganizationOpenId']
          @ProxyOrganizationName = params['ProxyOrganizationName']
          @Date = params['Date']
          @Usage = params['Usage']
          @Cancel = params['Cancel']
          @FlowChannel = params['FlowChannel']
        end
      end

      # 接口调用者信息
      class UserInfo < TencentCloud::Common::AbstractModel
        # @param OpenId: 第三方应用平台自定义,对应第三方平台子客企业员的唯一标识。一个OpenId在一个子客企业内唯一对应一个真实员工,不可在其他子客企业内重复使用。(例如,可以使用经办人企业名+员工身份证的hash值,需要第三方应用平台保存),最大64位字符串
        # @type OpenId: String
        # @param Channel: 内部参数,暂未开放使用
        # @type Channel: String
        # @param CustomUserId: 内部参数,暂未开放使用
        # @type CustomUserId: String
        # @param ClientIp: 内部参数,暂未开放使用
        # @type ClientIp: String
        # @param ProxyIp: 内部参数,暂未开放使用
        # @type ProxyIp: String

        attr_accessor :OpenId, :Channel, :CustomUserId, :ClientIp, :ProxyIp
        extend Gem::Deprecate
        deprecate :Channel, :none, 2023, 6
        deprecate :Channel=, :none, 2023, 6
        deprecate :CustomUserId, :none, 2023, 6
        deprecate :CustomUserId=, :none, 2023, 6
        deprecate :ClientIp, :none, 2023, 6
        deprecate :ClientIp=, :none, 2023, 6
        deprecate :ProxyIp, :none, 2023, 6
        deprecate :ProxyIp=, :none, 2023, 6

        def initialize(openid=nil, channel=nil, customuserid=nil, clientip=nil, proxyip=nil)
          @OpenId = openid
          @Channel = channel
          @CustomUserId = customuserid
          @ClientIp = clientip
          @ProxyIp = proxyip
        end

        def deserialize(params)
          @OpenId = params['OpenId']
          @Channel = params['Channel']
          @CustomUserId = params['CustomUserId']
          @ClientIp = params['ClientIp']
          @ProxyIp = params['ProxyIp']
        end
      end

    end
  end
end