> ## Documentation Index
> Fetch the complete documentation index at: https://docs.korint.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Get public product config



## OpenAPI

````yaml /openapi.json get /config/{productId}
openapi: 3.0.0
info:
  title: Korint Documentation
  description: Korint API Documentation
  version: 1.0.0
  contact: {}
servers: []
security:
  - bearerAuth: []
tags: []
paths:
  /config/{productId}:
    get:
      tags:
        - config
      summary: Get public product config
      operationId: ConfigController_getPublicProductConfig
      parameters:
        - name: productId
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetPublicProductConfigOutput'
        '400':
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/InvalidProductErrorDto'
              examples:
                INVALID_PRODUCT:
                  $ref: '#/components/schemas/InvalidProductErrorDto'
          description: ''
components:
  schemas:
    GetPublicProductConfigOutput:
      type: object
      properties:
        productId:
          type: string
        type:
          type: string
          enum:
            - INDIVIDUAL
            - COLLECTIVE
        linkedServices:
          type: array
          description: Services to link to the customers
          items:
            type: string
            enum:
              - DRIVEQUANT
              - SYDIA
        externalProductId:
          type: string
        generateExternalPolicyIdTrigger:
          type: string
          enum:
            - NEVER
            - CREATION
            - QUOTE
            - CONFIRMATION
            - SIGNATURE
            - NOTHING
        externalPolicyIdFormat:
          type: string
        enableMta:
          type: boolean
        allowDirectSale:
          type: boolean
        allowBrokerSale:
          type: boolean
        assetStartedAtLimit:
          $ref: '#/components/schemas/AssetStartedAtLimitDto'
        engagementDuration:
          $ref: '#/components/schemas/Duration'
        listOfIntegrations:
          type: array
          items:
            type: string
            enum:
              - Siv
              - Sra
              - Compliance
              - Sydia
              - Solvability
              - ExcelApiDatabase
        customerFields:
          type: array
          items:
            $ref: '#/components/schemas/ConfigCustomFieldDto'
        policyFields:
          type: array
          items:
            $ref: '#/components/schemas/ConfigCustomFieldDto'
        assetFields:
          type: array
          items:
            $ref: '#/components/schemas/ConfigCustomFieldDto'
        customEvents:
          $ref: '#/components/schemas/CustomEventsConfigDto'
        policyAggregateFields:
          type: array
          items:
            $ref: '#/components/schemas/ConfigAggregateFieldDto'
        customerAggregateFields:
          type: array
          items:
            $ref: '#/components/schemas/ConfigAggregateFieldDto'
        assetAggregateFields:
          type: array
          items:
            $ref: '#/components/schemas/ConfigAggregateFieldDto'
        collectivePolicyConfig:
          $ref: '#/components/schemas/CollectivePolicyConfigDto'
        claims:
          $ref: '#/components/schemas/ClaimsConfigDto'
        payment:
          $ref: '#/components/schemas/PaymentConfigDto'
        billing:
          $ref: '#/components/schemas/ConfigBilling'
        nonRefundableComponents:
          type: array
          items:
            type: string
        renewal:
          oneOf:
            - $ref: '#/components/schemas/ConfigRenewalEnabled'
            - $ref: '#/components/schemas/ConfigRenewalDisabled'
        commonDocuments:
          type: array
          items:
            $ref: '#/components/schemas/ConfigCommonDocumentDto'
        generatedDocuments:
          type: array
          items:
            $ref: '#/components/schemas/ConfigGeneratedDocumentDto'
        policyholderDocuments:
          type: array
          items:
            $ref: '#/components/schemas/ConfigPolicyholderDocumentDto'
        signature:
          $ref: '#/components/schemas/SignatureConfigDto'
        policyStopReasons:
          type: array
          items:
            $ref: '#/components/schemas/ConfigPolicyStopReasonDto'
        nonDelegatedConfig:
          $ref: '#/components/schemas/NonDelegatedConfigDto'
        ai:
          description: AI configuration (classification, extraction)
          allOf:
            - $ref: '#/components/schemas/AIConfig'
        productName:
          type: string
        quote:
          $ref: '#/components/schemas/QuoteConfig'
      required:
        - productId
        - type
        - generateExternalPolicyIdTrigger
        - externalPolicyIdFormat
        - enableMta
        - allowDirectSale
        - allowBrokerSale
        - customerFields
        - policyFields
        - assetFields
        - policyAggregateFields
        - customerAggregateFields
        - assetAggregateFields
        - payment
        - billing
        - commonDocuments
        - generatedDocuments
        - policyholderDocuments
        - signature
        - productName
    InvalidProductErrorDto:
      type: object
      properties:
        code:
          type: string
          enum:
            - INVALID_PRODUCT
        message:
          type: string
          example: Invalid product {product}
        details:
          $ref: '#/components/schemas/InvalidProductDetailsDto'
      required:
        - code
        - message
        - details
    AssetStartedAtLimitDto:
      type: object
      properties:
        min:
          type: object
        max:
          type: object
      required:
        - min
    Duration:
      type: object
      properties:
        amount:
          type: number
        unit:
          type: string
          enum:
            - YEAR
            - MONTH
            - WEEK
            - DAY
            - HOUR
            - MINUTE
            - SECOND
      required:
        - amount
        - unit
    ConfigCustomFieldDto:
      type: object
      properties:
        key:
          type: string
        role:
          type: string
        type:
          type: string
          enum:
            - BOOLEAN
            - STRING
            - NUMBER
            - INTEGER
            - ENUM
            - DATE
            - DATETIME
            - PHONE_NUMBER
            - EMAIL
            - REGISTRATION_NUMBER
            - SIRET
            - POSTCODE
            - URL
            - IBAN
            - BIC
        requiredFor:
          type: string
          enum:
            - NEVER
            - CREATION
            - QUOTE
            - CONFIRMATION
            - SIGNATURE
            - NOTHING
        requiresOnChange:
          type: string
          enum:
            - NEVER
            - CREATION
            - QUOTE
            - CONFIRMATION
            - SIGNATURE
            - NOTHING
        mtaModification:
          type: string
          enum:
            - ALLOWED
            - FORBIDDEN
        renewalModification:
          type: string
          enum:
            - ALLOWED
            - FORBIDDEN
        validationRules:
          type: array
          items:
            $ref: '#/components/schemas/ValidationRuleDto'
        isCalculated:
          type: boolean
        integrationKey:
          type: string
        defaultValue:
          type: object
        updatesOn:
          type: array
          items:
            type: string
        extractionSources:
          description: Extraction source categories that map to this field
          type: array
          items:
            type: string
        extractionFieldKey:
          type: string
          description: Field key used in extraction prompt output
        canBeDeleted:
          type: boolean
      required:
        - key
        - type
    CustomEventsConfigDto:
      type: object
      properties:
        customer:
          type: array
          items:
            type: string
        policy:
          type: array
          items:
            type: string
        asset:
          type: array
          items:
            type: string
      required:
        - customer
        - policy
        - asset
    ConfigAggregateFieldDto:
      type: object
      properties:
        role:
          type: string
        requiredFor:
          type: string
          enum:
            - NEVER
            - CREATION
            - QUOTE
            - CONFIRMATION
            - SIGNATURE
            - NOTHING
        requiresOnChange:
          type: string
          enum:
            - NEVER
            - CREATION
            - QUOTE
            - CONFIRMATION
            - SIGNATURE
            - NOTHING
        mtaModification:
          type: string
          enum:
            - ALLOWED
            - FORBIDDEN
        renewalModification:
          type: string
          enum:
            - ALLOWED
            - FORBIDDEN
        validationRules:
          type: array
          items:
            $ref: '#/components/schemas/ValidationRuleDto'
        isCalculated:
          type: boolean
        integrationKey:
          type: string
        defaultValue:
          type: object
        updatesOn:
          type: array
          items:
            type: string
        extractionSources:
          description: Extraction source categories that map to this field
          type: array
          items:
            type: string
        extractionFieldKey:
          type: string
          description: Field key used in extraction prompt output
        canBeDeleted:
          type: boolean
        key:
          type: string
        type:
          type: string
          enum:
            - BOOLEAN
            - STRING
            - NUMBER
            - INTEGER
            - ENUM
            - DATE
            - DATETIME
            - PHONE_NUMBER
            - EMAIL
            - REGISTRATION_NUMBER
            - SIRET
            - POSTCODE
            - URL
            - IBAN
            - BIC
      required:
        - key
    CollectivePolicyConfigDto:
      type: object
      properties:
        paymentLevelKey:
          type: object
    ClaimsConfigDto:
      type: object
      properties: {}
    PaymentConfigDto:
      type: object
      properties:
        allowedPaymentModes:
          type: array
          items:
            type: string
            enum:
              - DIRECT_DEBIT
              - BANK_TRANSFER
        allowedPaymentMethods:
          type: array
          items:
            type: string
            enum:
              - card
              - sepa_debit
        sepaMandate:
          $ref: '#/components/schemas/PaymentMethodConfigDto'
        paymentMethodOnEarlyPayment:
          type: array
          items:
            type: string
            enum:
              - card
              - sepa_debit
        paymentMethodOnRecurringPayment:
          type: array
          items:
            type: string
            enum:
              - card
              - sepa_debit
        paymentMethodIsOnBrokerageFirm:
          type: boolean
          description: Whether the payment method used is saved on the brokerage firm
      required:
        - allowedPaymentModes
        - allowedPaymentMethods
    ConfigBilling:
      type: object
      properties:
        reconcileFailedPayments:
          type: boolean
          description: >-
            determines whether the billing should take into account failed
            payments when reimbursing customers
        defaultConfig:
          $ref: '#/components/schemas/InvoicingConfigDto'
        availableConfigs:
          type: array
          items:
            $ref: '#/components/schemas/InvoicingConfigDto'
      required:
        - defaultConfig
        - availableConfigs
    ConfigRenewalEnabled:
      type: object
      properties:
        __type:
          type: string
          enum:
            - ConfigRenewalEnabled
        enabled:
          type: boolean
        renewalPeriod:
          $ref: '#/components/schemas/Duration'
        tacitRenewal:
          type: boolean
          description: >-
            By default this will be false, meaning that if you don't explicitly
            accept a renewal, the policy will be stopped.
        cancellationConfigs:
          description: Cancellation configurations for renewal triggers
          type: array
          items:
            $ref: '#/components/schemas/ConfigEnabledRenewalCancellationConfig'
        crmParameters:
          description: CRM parameters for renewal
          allOf:
            - $ref: '#/components/schemas/ConfigRenewalCrmParameters'
        renewalFees:
          description: Optional fees to apply on renewal based on tier, excess, and perils
          type: array
          items:
            $ref: '#/components/schemas/ConfigRenewalFeesDto'
      required:
        - __type
        - enabled
        - renewalPeriod
        - cancellationConfigs
    ConfigRenewalDisabled:
      type: object
      properties:
        __type:
          type: string
          enum:
            - ConfigRenewalDisabled
        enabled:
          type: boolean
        stopConfig:
          $ref: '#/components/schemas/ConfigDisabledRenewalCancellationConfig'
      required:
        - __type
        - enabled
        - stopConfig
    ConfigCommonDocumentDto:
      type: object
      properties:
        type:
          type: string
      required:
        - type
    ConfigGeneratedDocumentDto:
      type: object
      properties:
        configName:
          type: string
        documentType:
          type: string
        templateId:
          type: string
        trigger:
          type: array
          items:
            type: string
        filters:
          type: array
          items:
            $ref: '#/components/schemas/FilterDto'
        orFilters:
          type: array
          items:
            $ref: '#/components/schemas/FilterDto'
        target:
          type: string
        businessObjects:
          type: array
          items:
            type: string
        provider:
          type: string
          description: Document generation provider to use for this document
          enum:
            - CraftMyPdf
            - Carbone
        enum:
          type: object
          description: >-
            Carbone enum definitions for convEnum formatter (Carbone provider
            only)
          additionalProperties: true
          example:
            policyStatuses:
              - ACTIVE
              - PENDING
              - SUSPENDED
              - STOPPED
            assetTypes:
              '1': Vehicle
              '2': Property
        generateOnDemand:
          type: boolean
          description: Whether this document can be generated on demand from the frontend
      required:
        - configName
        - templateId
        - trigger
        - target
        - businessObjects
        - provider
    ConfigPolicyholderDocumentDto:
      type: object
      properties:
        category:
          type: string
        required:
          type: boolean
        extractionFields:
          description: Fields to extract from this document category
          type: array
          items:
            $ref: '#/components/schemas/ExtractionFieldConfigDto'
        compliance:
          description: Compliance rules for this document category
          type: array
          items:
            $ref: '#/components/schemas/DocumentComplianceRuleDto'
      required:
        - category
    SignatureConfigDto:
      type: object
      properties:
        requirePaymentMethodForNewBusiness:
          type: boolean
        reminders:
          $ref: '#/components/schemas/SignatureRequestReminderSettings'
        signedDocuments:
          type: array
          items:
            $ref: '#/components/schemas/ConfigSignedDocumentDtoWithSignPolicy'
      required:
        - signedDocuments
    ConfigPolicyStopReasonDto:
      type: object
      properties:
        reason:
          type: string
        details:
          type: array
          items:
            type: string
        appliedAtDate:
          type: string
        appliedInFutureAllowed:
          type: boolean
        refundType:
          type: string
        validForDuration:
          $ref: '#/components/schemas/Duration'
        billUnpaidFees:
          type: boolean
          description: Whether to refund unpaid fees
        allowedTo:
          description: >-
            Business role IDs allowed to use this stop reason. When omitted, all
            roles can use it.
          type: array
          items:
            type: string
      required:
        - reason
    NonDelegatedConfigDto:
      type: object
      properties:
        quote:
          $ref: '#/components/schemas/NonDelegatedQuoteConfigDto'
        documents:
          $ref: '#/components/schemas/NonDelegatedDocumentConfigDto'
    AIConfig:
      type: object
      properties:
        classification:
          description: AI classification config
          allOf:
            - $ref: '#/components/schemas/AIClassificationConfig'
        extraction:
          description: AI extraction config
          allOf:
            - $ref: '#/components/schemas/AIExtractionConfig'
        compliance:
          description: AI compliance config
          allOf:
            - $ref: '#/components/schemas/AIComplianceConfig'
        conversationSystemPrompt:
          type: string
          description: System prompt for in-app AI conversation
    QuoteConfig:
      type: object
      properties:
        availableTiers:
          type: array
          items:
            type: string
        availableExcesses:
          type: array
          items:
            type: string
        availablePerils:
          type: array
          items:
            $ref: '#/components/schemas/PerilConfig'
        defaultConfig:
          $ref: '#/components/schemas/QuoteChosenOptionsDto'
        availableConfigs:
          type: array
          items:
            $ref: '#/components/schemas/QuoteAvailableOptionsDto'
      required:
        - availableTiers
        - availableExcesses
        - availablePerils
        - defaultConfig
        - availableConfigs
    InvalidProductDetailsDto:
      type: object
      properties:
        tenant:
          type: string
        product:
          type: string
        expectedProduct:
          type: string
      required:
        - product
    ValidationRuleDto:
      type: object
      properties:
        option:
          type: string
        value:
          oneOf:
            - type: string
            - type: number
            - type: boolean
            - type: array
              items:
                type: string
      required:
        - option
        - value
    PaymentMethodConfigDto:
      type: object
      properties:
        mandateDocument:
          $ref: '#/components/schemas/ConfigGeneratedDocumentDto'
        reminders:
          $ref: '#/components/schemas/SignatureRequestReminderSettings'
        mandateSignature:
          $ref: '#/components/schemas/SepaMandateSignatureConfig'
    InvoicingConfigDto:
      type: object
      properties:
        frequency:
          allOf:
            - $ref: '#/components/schemas/InvoiceFrequency'
        timing:
          allOf:
            - $ref: '#/components/schemas/InvoiceTiming'
        billAtSignature:
          allOf:
            - $ref: '#/components/schemas/BillAtSignatureType'
        earlyPayment:
          $ref: '#/components/schemas/Duration'
      required:
        - frequency
        - timing
        - billAtSignature
    ConfigEnabledRenewalCancellationConfig:
      type: object
      properties:
        trigger:
          allOf:
            - $ref: '#/components/schemas/RenewalCancellationTrigger'
        closeBranchReason:
          allOf:
            - $ref: '#/components/schemas/BranchCloseReasons'
        policyStopReason:
          type: string
        policyStopDetails:
          type: array
          items:
            $ref: '#/components/schemas/CustomFieldDto'
      required:
        - trigger
        - closeBranchReason
        - policyStopReason
        - policyStopDetails
    ConfigRenewalCrmParameters:
      type: object
      properties:
        usage:
          type: string
          enum:
            - TOURING_OR_ALL_PURPOSE
            - OTHER
        crmLimit:
          type: number
      required:
        - usage
        - crmLimit
    ConfigRenewalFeesDto:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for this renewal fee rule
        condition:
          description: Conditions that must be met for this fee to apply
          allOf:
            - $ref: '#/components/schemas/ConfigRenewalFeeConditionDto'
        component:
          description: Fee component to apply on renewal
          allOf:
            - $ref: '#/components/schemas/QuoteComponentDto'
        applyOnEveryRenewal:
          type: boolean
          description: Whether to apply this fee on every renewal or only first one
          default: true
      required:
        - id
        - component
        - applyOnEveryRenewal
    ConfigDisabledRenewalCancellationConfig:
      type: object
      properties:
        policyStopReason:
          type: string
        policyStopDetails:
          type: array
          items:
            $ref: '#/components/schemas/CustomFieldDto'
      required:
        - policyStopReason
        - policyStopDetails
    FilterDto:
      type: object
      properties:
        path:
          type: string
        operator:
          allOf:
            - $ref: '#/components/schemas/Operator'
        value:
          oneOf:
            - type: string
            - type: number
            - type: boolean
            - type: array
              items:
                type: string
      required:
        - path
        - operator
    ExtractionFieldConfigDto:
      type: object
      properties:
        key:
          type: string
          description: Field key to extract
        type:
          type: string
          description: Field type (e.g. STRING, DATE, NUMBER)
        sides:
          description: Which sides of a document this field appears on
          type: array
          items:
            type: string
      required:
        - key
        - type
    DocumentComplianceRuleDto:
      type: object
      properties:
        type:
          type: string
          description: Compliance rule type
          enum:
            - READABLE
            - REQUIRED_FIELDS
            - PROMPT
            - FIELD_VALIDATION
        promptSlug:
          type: string
          description: Prompt slug for PROMPT rule type
        requiredFields:
          description: Required field keys for REQUIRED_FIELDS rule type
          type: array
          items:
            type: array
        validations:
          description: Validation rules for FIELD_VALIDATION rule type
          type: array
          items:
            $ref: '#/components/schemas/FieldValidationRuleConfig'
      required:
        - type
    SignatureRequestReminderSettings:
      type: object
      properties:
        delay:
          type: number
          description: the delay between reminders, in days
          enum:
            - 1
            - 2
            - 7
            - 14
        maxAttempts:
          type: number
          description: the maximum number of reminders
          minimum: 1
          maximum: 10
      required:
        - delay
        - maxAttempts
    ConfigSignedDocumentDtoWithSignPolicy:
      type: object
      properties:
        signature:
          type: string
          enum:
            - VIEW
            - SIGN
        signers:
          type: array
          items:
            $ref: '#/components/schemas/SignerConfigItemDto'
        anchor:
          $ref: '#/components/schemas/ConfigSignedDocumentAnchorDto'
        mentions:
          type: array
          items:
            $ref: '#/components/schemas/ConfigSignedDocumentMentionDto'
        texts:
          type: array
          items:
            $ref: '#/components/schemas/ConfigSignedDocumentTextDto'
        checkboxes:
          type: array
          items:
            $ref: '#/components/schemas/ConfigSignedDocumentCheckboxDto'
        type:
          type: string
        neededForPolicySigned:
          type: boolean
          description: >-
            Whether the policy should be signed when all those documents are
            needed for merge. It signs all those documents at the same time.
      required:
        - signature
        - type
        - neededForPolicySigned
    NonDelegatedQuoteConfigDto:
      type: object
      properties:
        filter:
          type: array
          items:
            $ref: '#/components/schemas/FilterDto'
        orFilter:
          type: array
          items:
            $ref: '#/components/schemas/FilterDto'
      required:
        - filter
    NonDelegatedDocumentConfigDto:
      type: object
      properties:
        documentTypes:
          type: array
          items:
            type: string
      required:
        - documentTypes
    AIClassificationConfig:
      type: object
      properties:
        enabled:
          type: boolean
          description: Master switch for AI classification
        interfaces:
          description: Per-interface configuration
          allOf:
            - $ref: '#/components/schemas/AIClassificationInterfacesConfig'
      required:
        - enabled
        - interfaces
    AIExtractionConfig:
      type: object
      properties:
        enabled:
          type: boolean
          description: Whether AI extraction is enabled
        promptSlug:
          type: string
          description: Extraction prompt template slug
      required:
        - enabled
    AIComplianceConfig:
      type: object
      properties:
        enabled:
          type: boolean
          description: Whether AI compliance checking is enabled
      required:
        - enabled
    PerilConfig:
      type: object
      properties:
        id:
          type: string
        options:
          type: array
          items:
            type: string
      required:
        - id
    QuoteChosenOptionsDto:
      type: object
      properties:
        tier:
          type: string
        excess:
          type: string
        perils:
          type: array
          items:
            $ref: '#/components/schemas/ConfigQuoteChosenWarrantyDto'
      required:
        - tier
        - excess
    QuoteAvailableOptionsDto:
      type: object
      properties:
        tier:
          type: string
        excess:
          type: string
        perils:
          type: array
          items:
            $ref: '#/components/schemas/ConfigQuoteAvailableWarrantyDto'
      required:
        - tier
        - excess
    SepaMandateSignatureConfig:
      type: object
      properties:
        signers:
          type: array
          items:
            $ref: '#/components/schemas/SignerConfigItemDto'
        anchor:
          $ref: '#/components/schemas/ConfigSignedDocumentAnchorDto'
        mentions:
          type: array
          items:
            $ref: '#/components/schemas/ConfigSignedDocumentMentionDto'
        texts:
          type: array
          items:
            $ref: '#/components/schemas/ConfigSignedDocumentTextDto'
        checkboxes:
          type: array
          items:
            $ref: '#/components/schemas/ConfigSignedDocumentCheckboxDto'
    InvoiceFrequency:
      type: string
      enum:
        - YEARLY
        - HALF_YEARLY
        - QUARTERLY
        - MONTHLY
        - BIENNIAL
        - WEEKLY
    InvoiceTiming:
      type: string
      enum:
        - IN_ADVANCE
        - IN_ARREAR
    BillAtSignatureType:
      type: string
      enum:
        - EARLY_PAYMENT
        - FULL
        - NONE
    RenewalCancellationTrigger:
      type: string
      enum:
        - RENEWAL_REFUSED
        - CRM_ABOVE_LIMIT
    BranchCloseReasons:
      type: string
      enum:
        - BROKER_REQUEST
        - CUSTOMER_REQUEST
        - FORKED
        - ASSET_START_PASSED
        - CONCURRENT_BRANCH_MERGED
        - QUOTE_INVALIDATED
        - PARTITION_DROPPED
        - RENEWAL_REFUSED
        - CRM_ABOVE_LIMIT
        - TELEMATICS_SCORE_MISSING
    CustomFieldDto:
      type: object
      properties:
        key:
          type: string
        value:
          oneOf:
            - type: string
            - type: number
            - type: boolean
      required:
        - key
        - value
    ConfigRenewalFeeConditionDto:
      type: object
      properties:
        tier:
          type: string
          description: Tier this fee applies to. If not specified, applies to all tiers
        excess:
          type: string
          description: >-
            Excess this fee applies to. If not specified, applies to all
            excesses
        perils:
          description: Perils this fee applies to. If not specified, applies to all perils
          type: array
          items:
            type: string
    QuoteComponentDto:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
          enum:
            - PREMIUM
            - PERIL
            - FEE
            - TAX
            - SPECIAL
        premium:
          $ref: '#/components/schemas/AmountDto'
        chargeType:
          type: string
          description: Charge type of component
          enum:
            - ONE_TIME
            - SPOT
            - RECURRING
      required:
        - id
        - type
        - premium
        - chargeType
    Operator:
      type: string
      enum:
        - equals
        - exists
        - is_undefined
        - greater_than
        - less_than
        - greater_than_or_equal
        - less_than_or_equal
        - contains
        - in
        - not_equals
        - array_min_length
        - years_less_than
        - years_greater_than_or_equal
        - months_less_than
        - months_greater_than_or_equal
    FieldValidationRuleConfig:
      type: object
      properties:
        fieldKey:
          type: string
          description: Extracted field key to validate
        operator:
          type: string
          description: Validation operator
          enum:
            - DATE_IS_AFTER
            - DATE_IS_BEFORE
            - DATE_IS_NOT_OLDER_THAN
            - DATE_IS_NOT_NEWER_THAN
            - STRING_MATCHES
            - STRING_EQUALS
            - STRING_NOT_EMPTY
            - NUMBER_GT
            - NUMBER_LT
            - NUMBER_BETWEEN
        reference:
          description: Reference for date comparison
          allOf:
            - $ref: '#/components/schemas/FieldValidationReferenceDto'
        duration:
          description: Duration for relative date operators
          allOf:
            - $ref: '#/components/schemas/FieldValidationDurationDto'
        pattern:
          type: string
          description: Regex pattern for STRING_MATCHES
        expectedValue:
          type: string
          description: Expected value for STRING_EQUALS (case insensitive)
        numericValue:
          type: number
          description: Numeric value for NUMBER_GT / NUMBER_LT
        numericMin:
          type: number
          description: Min value for NUMBER_BETWEEN
        numericMax:
          type: number
          description: Max value for NUMBER_BETWEEN
        errorMessage:
          type: string
          description: Human-readable failure message
      required:
        - fieldKey
        - operator
    SignerConfigItemDto:
      type: object
      properties:
        recipient:
          type: string
          enum:
            - BROKER
            - WHOLESALE_BROKER
            - USER
            - AUTHOR
        role:
          type: string
        anchor:
          $ref: '#/components/schemas/ConfigSignedDocumentAnchorDto'
        mentions:
          type: array
          items:
            $ref: '#/components/schemas/ConfigSignedDocumentMentionDto'
        texts:
          type: array
          items:
            $ref: '#/components/schemas/ConfigSignedDocumentTextDto'
        checkboxes:
          type: array
          items:
            $ref: '#/components/schemas/ConfigSignedDocumentCheckboxDto'
      required:
        - recipient
    ConfigSignedDocumentAnchorDto:
      type: object
      properties:
        page:
          type: object
        x:
          type: number
        'y':
          type: number
        height:
          type: number
        width:
          type: number
      required:
        - page
        - x
        - 'y'
        - height
        - width
    ConfigSignedDocumentMentionDto:
      type: object
      properties:
        page:
          type: object
        x:
          type: number
        'y':
          type: number
        width:
          type: number
        mention:
          type: string
      required:
        - page
        - x
        - 'y'
        - mention
    ConfigSignedDocumentTextDto:
      type: object
      properties:
        page:
          type: object
        x:
          type: number
        'y':
          type: number
        width:
          type: number
        height:
          type: number
        maxLength:
          type: number
        question:
          type: string
        instruction:
          type: string
        optional:
          type: boolean
      required:
        - page
        - x
        - 'y'
        - width
        - maxLength
        - question
    ConfigSignedDocumentCheckboxDto:
      type: object
      properties:
        page:
          type: object
        x:
          type: number
        'y':
          type: number
        size:
          type: number
        name:
          type: string
        optional:
          type: boolean
        checked:
          type: boolean
      required:
        - page
        - x
        - 'y'
        - size
        - name
    AIClassificationInterfacesConfig:
      type: object
      properties:
        policyholderDashboard:
          $ref: '#/components/schemas/AIClassificationInterfaceConfig'
        brokerageFirmDocuments:
          $ref: '#/components/schemas/AIClassificationInterfaceConfig'
        nonDelegatedDocuments:
          $ref: '#/components/schemas/AIClassificationInterfaceConfig'
    ConfigQuoteChosenWarrantyDto:
      type: object
      properties:
        id:
          type: string
        option:
          type: string
        available:
          type: boolean
        unavailabilityMessage:
          type: string
      required:
        - id
    ConfigQuoteAvailableWarrantyDto:
      type: object
      properties:
        id:
          type: string
        required:
          type: boolean
        options:
          type: array
          items:
            type: string
        showWhen:
          oneOf:
            - $ref: '#/components/schemas/ConfigQuoteShowWhenSingleValueDto'
            - $ref: '#/components/schemas/ConfigQuoteShowWhenMultipleValuesDto'
            - $ref: '#/components/schemas/ConfigQuoteShowWhenNoValueDto'
      required:
        - id
    AmountDto:
      type: object
      properties:
        amountPreFeesAndTaxes:
          type: integer
        fees:
          type: array
          items:
            $ref: '#/components/schemas/FeeDto'
        totalFees:
          type: integer
        amountWithFeesPreTaxes:
          type: integer
        taxes:
          type: array
          items:
            $ref: '#/components/schemas/TaxDto'
        totalTaxes:
          type: integer
        amountWithFeesAndTaxes:
          type: integer
      required:
        - amountPreFeesAndTaxes
        - fees
        - totalFees
        - amountWithFeesPreTaxes
        - taxes
        - totalTaxes
        - amountWithFeesAndTaxes
    FieldValidationReferenceDto:
      type: object
      properties:
        ref:
          type: string
          description: Reference type
          enum:
            - NOW
            - FIELD
            - LITERAL
        fieldKey:
          type: string
          description: Field key when ref is FIELD
        value:
          type: string
          description: Literal value when ref is LITERAL (e.g. ISO date string)
      required:
        - ref
    FieldValidationDurationDto:
      type: object
      properties:
        amount:
          type: number
          description: Duration amount
        unit:
          type: string
          description: Duration unit
          enum:
            - MONTH
            - DAY
            - YEAR
      required:
        - amount
        - unit
    AIClassificationInterfaceConfig:
      type: object
      properties:
        enabled:
          type: boolean
          description: Whether AI classification is enabled for this interface
        systemPromptSlug:
          type: string
          description: System prompt template slug
        judgePromptSlug:
          type: string
          description: Judge prompt template slug
        judges:
          description: Judge configurations
          type: array
          items:
            $ref: '#/components/schemas/AIClassificationJudgeConfig'
      required:
        - enabled
        - systemPromptSlug
        - judgePromptSlug
        - judges
    ConfigQuoteShowWhenSingleValueDto:
      type: object
      properties:
        fieldKey:
          type: string
        fieldValue:
          type: string
        condition:
          type: string
        value:
          type: string
      required:
        - fieldKey
        - fieldValue
        - condition
        - value
    ConfigQuoteShowWhenMultipleValuesDto:
      type: object
      properties:
        fieldKey:
          type: string
        fieldValue:
          type: string
        condition:
          type: string
        values:
          type: array
          items:
            type: string
      required:
        - fieldKey
        - fieldValue
        - condition
        - values
    ConfigQuoteShowWhenNoValueDto:
      type: object
      properties:
        fieldKey:
          type: string
        fieldValue:
          type: string
        condition:
          type: string
      required:
        - fieldKey
        - fieldValue
        - condition
    FeeDto:
      type: object
      properties:
        id:
          type: string
        brokerageFirmId:
          type: string
        chargeType:
          type: string
          enum:
            - ONE_TIME
            - SPOT
            - RECURRING
        amount:
          type: integer
      required:
        - id
        - chargeType
        - amount
    TaxDto:
      type: object
      properties:
        id:
          type: string
        chargeType:
          type: string
          enum:
            - ONE_TIME
            - SPOT
            - RECURRING
        amount:
          type: integer
      required:
        - id
        - chargeType
        - amount
    AIClassificationJudgeConfig:
      type: object
      properties:
        model:
          type: string
          description: Judge model identifier (fast or quality)
        enabled:
          type: boolean
          description: Whether this judge is enabled
      required:
        - model
        - enabled

````