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 = '''
individualCusInfo:
  type: object
  required: [applicantType, idType, customerChineseName, idNum, idExpiryDate, dateOfBirth, companyName, registeredCapital, selfEmployedSubType]
  properties:
    applicantType:
      description: applicantType
      type: string
      example: COAPP
      enum: [COAPP, CUSTR, GAUTR1, GAUTR2]
    idType:
      description: idType
      type: string
      example: ITARI
      enum: [ITARI, ITHKM, ITPRC, ITPSP, ITRES, ITTID, ITUSC, ITCCU]
    secondIdType:
      description: secondIdType
      type: string
      example: ITARI
      enum: [ITARI, ITHKM, ITPRC, ITPSP, ITRES, ITTID]
    customerChineseName:
      description: customerChineseName
      type: string
      example: 李四
    idNum:
      description: idNum
      type: string
      example: 111111199404251111
    secondIdNum:
      description: secondIdNum
      type: string
      example: 111111199404251111
    idExpiryDate:
      description: idExpiryDate
      type: string
      format: date
      example: "2027-04-30"
    dateOfBirth:
      description: dateOfBirth
      type: string
      format: date
      example: "2027-04-30"
    companyName:
      description: companyName
      type: string
      example: 北京思图场景数据科技服务有限公司 
    registeredCapital:
      description: registeredCapital 
      type: number
      format: float
      example: 1234.56
    selfEmployedSubType:
      description: selfEmployedSubType
      type: string
      example: CSIBM
      enum: [CSIBM, CSOTH, CSSME]

SEindividualCusInfo:
  type: object
  required: [customerType, applicantType, customerName, idType, idNum, dateOfBirth, idExpiryDate]
  properties:
    customerType:
      description: customerType
      type: string
      example: TCCOR
      enum: [TCCOR, TCDAS, TCFRE, TCIAS, TCIND, TCSEP, TCURE]
    applicantType:
      description: applicantType
      type: string
      example: COAPP
      enum: [COAPP, CUSTR, GAUTR1, GAUTR2]
    customerName:
      description: customerName
      type: string
      example: 李四  
    idType:
      description: idType
      type: string
      example: ITARI
      enum: [ITARI, ITHKM, ITPRC, ITPSP, ITRES, ITTID, ITUSC, ITCCU]
    idNum:
      description: idNum
      type: string
      example: 111111199404251111  
    secondIdType:
      description: secondIdType
      type: string
      example: ITARI
      enum: [ITARI, ITHKM, ITPRC, ITPSP, ITRES, ITTID]
    secondIdNum:
      description: secondIdNum
      type: string
      example: 111111199404251111
    dateOfBirth:
      description: dateOfBirth
      type: string
      format: date
      example: "2027-04-30"
    idExpiryDate:
      description: idExpiryDate
      type: string
      format: date
      example: "2027-04-30"
    nationality:
      description: nationality
      type: string
      example: 中国 
    countryregion:
      description: countryregion
      type: string
      example: 中国
    hukouProvince:
      description: hukouProvince
      type: string
      example: 山东省 
    hukouCity:
      description: hukouCity
      type: string
      example: 日照市
    residentialProvince:
      description: residentialProvince
      type: string
      example: 江苏省 
    residentialCity:
      description: residentialCity
      type: string
      example: 连云港市
    companyName:
      description: companyName
      type: string
      example: 北京思图场景数据科技服务有限公司
    registeredCapital:
      description: registeredCapital 
      type: number
      format: float
      example: 1234.56
    selfEmployedSubType:
      description: selfEmployedSubType
      type: string
      example: CSIBM
      enum: [CSIBM, CSOTH, CSSME]
      
associatedServiceInfo:
  type: object
  required: [service, amount, financedAmount]
  properties:
    service:
      description: service
      type: string
      example: test_service
    amount:
      description: amount 
      type: number
      format: float
      example: 1234.56
    financedAmount:
      description: financedAmount 
      type: number
      format: float
      example: 1234.56

monthlyPaymentInfo:
  type: object
  required: [term, amount]
  properties:
    term:
      description: term
      type: number
      example: 12
    amount:
      description: amount 
      type: number
      format: float
      example: 1234.56
          
SEComparison:
  type: object
  required: [content]
  properties:
    content:
      description: SE比对内容信息
      type: object
      required: [uniqSeq, applicationId, applicationVersion, applicationEntity, customerType, firstSubmmisonDate, individualCusInfo, vehicleInfo, insuranceInfo, bankInfo, quotationtInfo]
      properties: 
        uniqSeq:
          description: uniqSeq
          type: string
          example: 201809301905121000
        applicationId:
          description: applicationId
          type: string
          example: CH-B100000123
        applicationVersion:
          description: applicationVersion
          type: integer
          example: 0
        applicationEntity:
          description: applicationEntity
          type: string
          example: HIL
          enum: [AFC, HIL]
        customerType:
          description: customerType
          type: string
          example: TCCOR
          enum: [TCCOR, TCDAS, TCFRE, TCIAS, TCIND, TCSEP, TCURE]
        firstSubmmisonDate:
          description: firstSubmmisonDate
          type: string
          format: date
          example: "2027-04-30"
        propertyDocumentPolicy:
          description: propertyDocumentPolicy
          type: string
          example: DOAOB
          enum: [DOAOB, DOHDP, DOAMP, DOHED, DOAGQ, DOSME, DOLHK, DORET, DOPCQ, DOSNF, DOYES, DOGRC, DOLLR, DOVDL]
          
        individualCusInfo:
          description: individualCusInfo
          type: array
          items:
            $ref: "#/definitions/SEindividualCusInfo"
        
        
        
        corporateCusInfo:
          description: corporateCusInfo
          type: object
          required: [customerType, companyName, firstIdType, firstIdNo, businessLicenseNo, organizationCreditCode, taxRegistrationCertificateNo, establishmentDate, incorporationDate, businessLicenseDueDate, legalRepName, organizationType]
          properties: 
            customerType:
              description: customerType
              type: string
              example: TCCOR
              enum: [TCCOR, TCDAS, TCFRE, TCIAS, TCIND, TCSEP, TCURE]
            companyName:
              description: companyName
              type: string
              example: 北京思图场景数据科技服务有限公司
            firstIdType:
              description: firstIdType
              type: string
              example: ITPRC
              enum: [ITARI, ITHKM, ITPRC, ITPSP, ITRES, ITTID, ITUSC, ITCCU]
            firstIdNo:
              description: firstIdNo
              type: string
              example: MA007438143XJ1P
            businessLicenseNo:
              description: businessLicenseNo
              type: string
              example: MA007438143XJ1P
            organizationCreditCode:
              description: organizationCreditCode
              type: string
              example: MA007438143XJ1P
            taxRegistrationCertificateNo:
              description: taxRegistrationCertificateNo
              type: string
              example: MA007438143XJ1P
            establishmentDate:
              description: establishmentDate
              type: string
              format: date
              example: "2027-04-30"
            incorporationDate:
              description: incorporationDate
              type: string
              format: date
              example: "2027-04-30"
            businessLicenseDueDate:
              description: businessLicenseDueDate
              type: string
              format: date
              example: "2027-04-30"
            legalRepName:
              description: legalRepName
              type: string
              example: 王五
            organizationType:
              description: organizationType
              type: string
              example: OTINS
              enum: [OTINS, OTUNI, OTOTH, OTIND, OTCOR]
            fleetCustomer:
              description: fleetCustomer
              type: boolean
              example: false
            beneficialOwnerName:
              description: beneficialOwnerName
              type: string
              example: 王五
            beneficialOwnerIdType:
              description: beneficialOwnerIdType
              type: string
              example: ITPRC
              enum: [ITARI, ITHKM, ITPRC, ITPSP, ITRES, ITTID, ITUSC, ITCCU]
            beneficialOwnerIdNo:
              description: beneficialOwnerIdNo
              type: string
              example: 324124534534
            beneficialOwnerIdExpiryDate:
              description: beneficialOwnerIdExpiryDate
              type: string
              format: date
              example: "2027-04-30"
            
              
        vehicleInfo:
          description: vehicleInfo
          type: object
          required: [vehicleStatus, vehicleTransactionAmount, vinNo, dealer]
          properties: 
            vehicleStatus:
              description: vehicleStatus
              type: string
              example: Usedcar
            vehicleTransactionAmount:
              description: vehicleTransactionAmount 
              type: number
              format: float
              example: 1234.56
            vinNo:
              description: vinNo
              type: string
              example: DFS2341JK23
            dealer:
              description: dealer
              type: string
              example: TestDealer
            option:
              description: option
              type: number
              format: float
              example: 1234.56
            msrp:
              description: msrp 
              type: number
              format: float
              example: 1234.56
            totalAmount:
              description: totalAmount 
              type: number
              format: float
              example: 1234.56
        
        insuranceInfo:
          description: insuranceInfo
          type: object
          required: [insuredAmount, insuranceType, startDate, endDate]
          properties: 
            insuredAmount:
              description: insuredAmount
              type: number
              format: float
              example: 1234.56
            insuranceType:
              description: insuranceType
              type: string
              example: ITCOM
              enum: [ITCOM, ITCOS]
            startDate:
              description: startDate
              type: string
              format: date
              example: "2027-04-30"
            endDate:
              description: endDate
              type: string
              format: date
              example: "2027-04-30"
        
        bankInfo:
          description: bankInfo
          type: object
          required: [bankName, branchName, applicantType, accountHolderName, accountNo]
          properties: 
            bankName:
              description: bankName
              type: string
              example: 农业银行
            branchName:
              description: branchName
              type: string
              example: 回龙观支行 
            applicantType:
              description: applicantType
              type: string
              example: COAPP
              enum: [COAPP, CUSTR, GAUTR1, GAUTR2] 
            accountHolderName:
              description: accountHolderName
              type: string
              example: 张三 
            accountNo:
              description: accountNo
              type: string
              example: 634523426756756 
            bankVerificationStatus:
              description: bankVerificationStatus
              type: string
              example: PASS
              enum: [PASS, FAIL, N/A]
            isAllDocUploaded:
              description: isAllDocUploaded
              type: boolean
              example: false 
            
        quotationtInfo:
          description: quotationtInfo
          type: object
          required: [totalLoanAmount, loanTerm, vehiclePrincipal, monthlyPaymentInfo]
          properties: 
            totalLoanAmount:
              description: totalLoanAmount
              type: number
              format: float
              example: 1234.56
            loanTerm:
              description: loanTerm
              type: number
              example: 12
            vehiclePrincipal:
              description: vehiclePrincipal
              type: number
              format: float
              example: 1234.56
            associatedServicePrincipal:
              description: associatedServicePrincipal
              type: number
              format: float
              example: 1234.56
            associatedServiceInfo:
              description: associatedServiceInfo
              type: array
              items:
                $ref: "#/definitions/associatedServiceInfo"
            monthlyPaymentInfo:
              description: monthlyPaymentInfo
              type: array
              items:
                $ref: "#/definitions/monthlyPaymentInfo"
            
              
Comparison:
  type: object
  required: [content]
  properties:
    content:
      description: 比对内容信息
      type: object
      required: [uniqSeq, applicationId, applicationEntity, customerType, applicationVersion, vehicleStatus, comments, individualCusInfo]
      properties: 
        uniqSeq:
          description: uniqSeq
          type: string
          example: 201809301905121000
        applicationId:
          description: applicationId
          type: string
          example: CH-B100000123
        applicationEntity:
          description: applicationEntity
          type: string
          example: HIL
          enum: [AFC, HIL]
        customerType:
          description: customerType
          type: string
          example: TCCOR
          enum: [TCCOR, TCDAS, TCFRE, TCIAS, TCIND, TCSEP, TCURE]
        applicationVersion:
          description: applicationVersion
          type: integer
          example: 0
        vehicleStatus:
          description: vehicleStatus
          type: string
          example: PCUSD
          enum: [PCUSD, PCNEW]
        comments:
          description: comments
          type: array
          items:
            type: string
        individualCusInfo:
          description: individualCusInfo
          type: array
          items:
            $ref: "#/definitions/individualCusInfo"
        
        usedCarInfo:
          description: usedCarInfo
          type: object
          required: [vinNo, manufactureDate, firstRegistrationDate]
          properties: 
            vinNo:
              description: vinNo
              type: string
              example: LBVSFJSDLFJLSDJF
            manufactureDate:
              description: manufactureDate
              type: string
              format: date
              example: "2027-04-30"
            firstRegistrationDate:
              description: firstRegistrationDate
              type: string
              format: date
              example: "2027-04-30"
        
        corporateCusInfo:
          description: corporateCusInfo
          type: object
          required: [customerChineseName, legalRepName, idNum, businessLicenseNo, taxRegistrationCode, incorporationDate, businessLicenseDueDate, capitalRegAmount]
          properties: 
            customerChineseName:
              description: customerChineseName
              type: string
              example: 北京思图场景数据科技服务有限公司
            legalRepName:
              description: legalRepName
              type: string
              example: 李六
            idNum:
              description: idNum
              type: string
              example: MA007438143XJ1P
            businessLicenseNo:
              description: businessLicenseNo
              type: string
              example: MA007438143XJ1P
            taxRegistrationCode:
              description: taxRegistrationCode
              type: string
              example: MA007438143XJ1P
            incorporationDate:
              description: incorporationDate
              type: string
              format: date
              example: "2027-04-30"
            businessLicenseDueDate:
              description: businessLicenseDueDate
              type: string
              format: date
              example: "2027-04-30"
            capitalRegAmount:
              description: capitalRegAmount 
              type: number
              format: float
              example: 1234.56 

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
'''