components:
  schemas:
    OnboardingStep:
      type: string
      description: 13-step farmer onboarding flow step identifier
      enum:
        - ACCOUNT
        - CONSENT
        - KYC
        - FARM_PROFILE
        - LAND_SKETCH
        - GIS_MAPPING
        - CROP_PLAN
        - FARM_ASSETS
        - DOCUMENTS
        - FINANCE_REQUEST
        - REVIEW
        - SCORING
        - RESULT

    OnboardingStatus:
      type: string
      enum:
        - in_progress
        - submitted
        - scoring
        - completed
        - abandoned

    ApplicationStatus:
      type: string
      description: Aggregated farmer application status for dashboard routing
      enum:
        - none
        - in_progress
        - submitted
        - scoring
        - completed

    EligibilityOutcome:
      type: string
      enum:
        - eligible
        - conditional
        - not_eligible

    KycStatus:
      type: string
      enum:
        - pending
        - in_progress
        - verified
        - rejected
        - manual_review

    FinanceCaseStatus:
      type: string
      enum:
        - pending
        - under_review
        - approved
        - rejected

    GisStatus:
      type: string
      enum:
        - coordinates_provided
        - agent_pending
        - polygon_provided

    VerificationMethod:
      type: string
      enum:
        - sms
        - voice_otp

    PreferredLanguage:
      type: string
      enum:
        - uz
        - ru
        - en

    ConsentLocale:
      type: string
      description: Legal locale for consent attestation
      enum:
        - uz
        - ru

    ConsentKey:
      type: string
      description: Required consent keys that must be accepted (P0)
      enum:
        - credit_bureau
        - gis_satellite
        - data_sharing_institutions

    IdType:
      type: string
      enum:
        - national_id
        - passport
        - biometric_passport

    Gender:
      type: string
      enum:
        - male
        - female
        - prefer_not_to_say

    FarmerType:
      type: string
      enum:
        - owner
        - tenant
        - family_farm
        - cooperative_member

    Education:
      type: string
      enum:
        - none
        - primary
        - secondary
        - vocational
        - university

    TenureType:
      type: string
      enum:
        - owned
        - leased
        - sharecrop
        - communal
        - inheritance

    LandUseType:
      type: string
      enum:
        - irrigated_cropland
        - rainfed
        - orchard
        - pasture
        - greenhouse

    IrrigationSource:
      type: string
      enum:
        - canal
        - well
        - drip
        - rainfed
        - mixed

    CropSeason:
      type: string
      enum:
        - spring
        - summer
        - autumn
        - winter

    AssetCondition:
      type: string
      enum:
        - new
        - good
        - fair
        - poor

    CaptureMethod:
      type: string
      description: System-set GIS capture method for quality scoring
      enum:
        - gps
        - manual_pin
        - map_polygon
        - agent_assist

    RepaymentHistory:
      type: string
      enum:
        - none
        - good
        - fair
        - poor

    ExtractionStatus:
      type: string
      enum:
        - pending
        - processing
        - completed
        - failed

    DocumentUploadStatus:
      type: string
      enum:
        - uploaded
        - processing
        - failed

    ReferenceOptionType:
      type: string
      description: Reference data categories served by GET /reference/options
      enum:
        - consent_types
        - regions
        - districts
        - crops
        - asset_types
        - finance_purposes
        - required_docs
        - institutions
        - institution_checklist

    DocumentType:
      type: string
      enum:
        - national_id
        - land_deed
        - tax_receipt
        - bank_statement

    CountryCode:
      type: string
      minLength: 2
      maxLength: 2
      example: UZ
