base_part = '''
swagger: "2.0"
info:
  title: 接口文档
  description: 宝马ocr/biz_logic接口文档
  version: 1.0.0
host: "li19dkocruat01vm.bmwgroup.net"
basePath: "/"
tags:
  - name: info
    description: 比对结果
schemes:
- "https"
security:
  - OAuth2: []
'''

#   scheme: oauth
security_definitions = '''
OAuth2:
    type: oauth2
    flow: application
    description: >
        This API uses OAuth 2 with the application(clientCredentials) grant flow.
        
        client_id=sMlciTkppsMzARwHpCVarm5q7DP2Vucj3ny8JFhw
        
        client_secret=WNoOilDx140ZLcenDKfsnikv7S2LIFs60DciYoqnrZaYLqYsKpcmt7mJIL69o9AEf84uQvRnS3K2UioxfjNyImjR4UOyXbDcF6qYgTLC4KDVByKFdVhKfrn2Lc4q4BNW
        
        scopes=write
    tokenUrl: https://li19dkocruat01vm.bmwgroup.net/api/oauth/token/
    scopes:
      write: Grants write access
'''

responses = '''
ErrorResponse:
  description: 调用异常, 具体情况请参考`HTTP`状态码和`code`字段
  schema:
    $ref: '#/definitions/ApiResponse'
NoContent:
  description: 后台接收请求,但是没有响应内容
  schema:
    $ref: '#/definitions/ApiResponse'
'''

parameters = ''

definitions = '''
associatedServices:
  description: associatedServices
  type: object
  required: [associatedServices, price, financed, total]
  properties: 
    associatedServices:
      description: associatedServices
      type: string
      example: 机动车保险
    price:
      description: price 
      type: number
      format: float
      example: 1234.56
    financed:
      description: financed 
      type: number
      format: float
      example: 1234.56
    total:
      description: total 
      type: number
      format: float
      example: 1234.56

paymentSchedule:
  description: paymentSchedule
  type: object
  required: [no, grossRentalAmount]
  properties: 
    no:
      description: no
      type: integer
      example: 3
    grossRentalAmount:
      description: grossRentalAmount 
      type: number
      format: float
      example: 1234.56
      
IDInformation:
  description: IDInformation
  type: object
  required: [idType, idNum, idExpiryDate]
  properties: 
    idType:
      description: idType
      type: string
      example: ITARI
    idNum:
      description: idNum
      type: string
      example: 111111199404251111
    idExpiryDate:
      description: idExpiryDate
      type: string
      example: 2027-04-30
      
applicantInformation:
  description: applicantInformation
  type: object
  required: [applicantType, customersubType, name, legalRepName, IDInformation]
  properties: 
    applicantType:
      description: applicantType
      type: string
      example: Borrower
    customersubType:
      description: customersubType
      type: string
      example: TCCOR
    selfEmployedSubType:
      description: selfEmployedSubType
      type: string
      example: CSIBM
    name:
      description: name
      type: string
      example: 李四
    legalRepName:
      description: legalRepName
      type: string
      example: 张三
    dateOfBirth:
      description: dateOfBirth
      type: string
      example: 2027-04-30
    nationality:
      description: nationality
      type: string
      example: 中国
    establishmentDate:
      description: establishmentDate
      type: string
      example: 2027-04-30
      
    IDInformation:
      description: IDInformation
      type: array
      items:
        $ref: "#/definitions/IDInformation"


CMS:
  type: object
  required: [content]
  properties:
    content:
      description: content
      type: object
      required: [financeCompany, contractNo, status, branch, fpCampaign, applicationVersion, submissionDate, mortgageType, dealerRegion, insuranceRealNameCity, totalFinanceAmount, terms, dealerName, tier, province, fapiaoIssuerDealer, customerName, customerIdNo, vehicleStatus, applicationSource, contractSource, applicationRating, applicantInformation, autoApprovedDetails, financialInformation, paymentSchedule, associatedServices, vehicleInformation, bankAccountDetails, insuranceDetails, corporateFinancialInformation, settlemnetVerification]
      properties:
        financeCompany:
          description: financeCompany
          type: string
          example: 宝马汽车金融有限公司
        contractNo:
          description: contractNo
          type: string
          example: CH-B100000123 
        status:
          description: status
          type: string
          example: HIL
        branch:
          description: branch
          type: string
          example: 宝马汽车金融有限公司
        fpCampaign:
          description: fpCampaign
          type: string
          example: Q1_2021_BMW_BASIC
        applicationVersion:
          description: applicationVersion
          type: integer
          example: 1
        submissionDate:
          description: submissionDate
          type: string
          example: 2020-01-01 
        mortgageType:
          description: mortgageType
          type: string
          example: Mortgage Contract 
        dealerRegion:
          description: dealerRegion
          type: string
          example: West
        insuranceRealNameCity:
          description: insuranceRealNameCity
          type: boolean
          example: false
        totalFinanceAmount:
          description: totalFinanceAmount 
          type: number
          format: float
          example: 1234.56
        terms:
          description: terms
          type: integer
          example: 24
        dealerName:
          description: dealerName
          type: string
          example: 乐山长宝汽车销售服务有限公司
        tier:
          description: tier
          type: string
          example: 2
        province:
          description: province
          type: string
          example: 四川省
        fapiaoIssuerDealer:
          description: fapiaoIssuerDealer
          type: string
          example: 乐山长宝汽车销售服务有限公司
        customerName:
          description: customerName
          type: string
          example: 蔡红
        customerIdNo:
          description: customerIdNo
          type: string
          example: 511102196706080000
        vehicleStatus:
          description: vehicleStatus
          type: string
          example: Used
        applicationSource:
          description: applicationSource
          type: string
          example: eApp
        contractSource:
          description: contractSource
          type: string
          example: Online Sign 
        applicationRating:
          description: applicationRating
          type: integer
          example: 100
        
        applicantInformation:
          description: applicantInformation
          type: array
          items:
            $ref: "#/definitions/applicantInformation"
            
        autoApprovedDetails:
          description: autoApprovedDetails
          type: object
          required: [aaType]
          properties: 
            aaType:
              description: aaType
              type: string
              example: CAA1
        
        financialInformation:
          description: financialInformation
          type: object
          required: [vehiclePrice, grossPrice, associatedServicePrice, vehiclePrincipal, associatedServicePrincipal, originationPrincipal, totalDownPayment, vehicleDownPaymentRatio, optionAmount, sumOfMSRPAndOption]
          properties: 
            vehiclePrice:
              description: vehiclePrice 
              type: number
              format: float
              example: 1234.56
            grossPrice:
              description: grossPrice 
              type: number
              format: float
              example: 1234.56
            associatedServicePrice:
              description: associatedServicePrice 
              type: number
              format: float
              example: 1234.56
            vehiclePrincipal:
              description: vehiclePrincipal 
              type: number
              format: float
              example: 1234.56
            associatedServicePrincipal:
              description: associatedServicePrincipal 
              type: number
              format: float
              example: 1234.56
            originationPrincipal:
              description: originationPrincipal 
              type: number
              format: float
              example: 1234.56
            totalDownPayment:
              description: totalDownPayment 
              type: number
              format: float
              example: 1234.56
            vehicleDownPaymentRatio:
              description: vehicleDownPaymentRatio 
              type: number
              format: float
              example: 1234.56
            optionAmount:
              description: optionAmount 
              type: number
              format: float
              example: 1234.56
            sumOfMSRPAndOption:
              description: sumOfMSRPAndOption 
              type: number
              format: float
              example: 1234.56
          
        paymentSchedule:
          description: paymentSchedule
          type: array
          items:
            $ref: "#/definitions/paymentSchedule"
        
        associatedServices:
          description: associatedServices
          type: array
          items:
            $ref: "#/definitions/associatedServices"
            
        vehicleInformation:
          description: vehicleInformation
          type: object
          required: [vinNo]
          properties: 
            vinNo:
              description: vinNo
              type: string
              example: LBV23482934DJFKD
            
        bankAccountDetails:
          description: bankAccountDetails
          type: object
          required: [bankName, accountHolderName, accountNo]
          properties: 
            bankName:
              description: bankName
              type: string
              example: 中国银行
            accountHolderName:
              description: accountHolderName
              type: string
              example: 张三
            accountNo:
              description: accountNo
              type: string
              example: 12312123123123123
            
        insuranceDetails:
          description: insuranceDetails
          type: object
          required: [insuranceType, insuranceAmount, startDate, endDate]
          properties: 
            insuranceType:
              description: insuranceType
              type: string
              example: ComprehensiveInsurance
            insuranceAmount:
              description: insuranceAmount
              type: string
              example: 60000000.00
            startDate:
              description: startDate
              type: string
              example: 2020-01-01
            endDate:
              description: endDate
              type: string
              example: 2020-01-01
            
        corporateFinancialInformation:
          description: corporateFinancialInformation
          type: object
          required: [hashCode, borrowerName, fiscalYear, totaAssets, totalLiabilitiesAndOwnersEquity, cashAndCashEquivalentAtEndOfPeriod, netProfit]
          properties: 
            hashCode:
              description: hashCode
              type: string
              example: 238231
            borrowerName:
              description: borrowerName
              type: string
              example: 张三
            fiscalYear:
              description: fiscalYear
              type: integer
              example: 2019
            totaAssets:
              description: totaAssets 
              type: number
              format: float
              example: 1234.56
            totalLiabilitiesAndOwnersEquity:
              description: totalLiabilitiesAndOwnersEquity 
              type: number
              format: float
              example: 1234.56
            cashAndCashEquivalentAtEndOfPeriod:
              description: cashAndCashEquivalentAtEndOfPeriod 
              type: number
              format: float
              example: 1234.56
            netProfit:
              description: netProfit 
              type: number
              format: float
              example: 1234.56
            
        settlemnetVerification:
          description: settlemnetVerification
          type: object
          required: [applicationNo]
          properties: 
            applicationNo:
              description: applicationNo
              type: string
              example: CH-B100000123
      

ApiResponse:
  description: 响应对象,code字段用于表示响应的状态; data字段用于存放响应内容
  type: object
  required: [code, msg]
  properties:
    code:
      type: integer
      format: uint8
      description: '0: success
                    1: need login
                    2: invalid params
                    3: internal error
                    4: object not exist
                    5: async wait
                    6: no permission
                    7: illegal operation'
      example: 0
      enum: [0, 1, 2, 3, 4, 5, 6, 7]
    msg:
      type: string
      example: success
    data:
      type: object
'''