Didit Console

Report

This page explains the structure and contents of a questionnaire report as returned by the API. The response includes metadata about the questionnaire, the sections and items presented to the user, and the answers provided.

Report structure

The verification report contains a questionnaire object.

Core response fields

interface QuestionnaireReportResponse {
  questionnaire: {
    questionnaire_id: string;            // Unique identifier for the questionnaire
    title: string;                       // Questionnaire title (localized for the viewer)
    description: string | null;          // Optional questionnaire description
    languages: string[];                 // Supported languages
    default_language: string;            // Default language code
    is_active: boolean;                  // Whether the questionnaire is active
    sections: Array<{
      title: string | null;              // Optional section title
      description: string | null;        // Optional section description
      items: Array<{
        uuid: string;                    // Unique item identifier
        order: number;                   // Display order (ascending)
        element_type: string;            // One of the supported element types
        is_required: boolean;            // Whether this item was required
        title: string;                   // Item title (localized for the viewer)
        description: string | null;      // Optional item description
        placeholder: string | null;      // Optional placeholder
        choices?: Array<{                // Dropdown/Single-choice options
          label: string;                 // Option label (localized)
          value: string;                 // Option value
          requires_text_input?: boolean; // If selecting this option requires additional text
        }> | null;
        max_files?: number | null;       // Upload limit for FILE_UPLOAD/IMAGE
        answer?: {                       // User's answer
          value?: string | null;         // Selected choice value or free text
          text?: string | null;          // Supplemental text when required
          files?: string[] | null;       // Uploaded file URLs/paths
        };
      }>;
    }>;
    status: 'Approved' | 'In Review' | 'Not Finished'; // Response status
  };
}

Sample JSON response

{
  "questionnaire": {
    "questionnaire_id": "9f7485e0-b00b-4d56-9d3e-7859b68d1213",
    "title": "Source of Funds",
    "description": "Reply to this questionnaire to help us understand the source of funds.",
    "languages": ["en"],
    "default_language": "en",
    "is_active": true,
    "sections": [
      {
        "title": null,
        "description": null,
        "items": [
          {
            "uuid": "618636d9-7d5c-41ce-b8d0-1ab2a4be20db",
            "order": 1,
            "element_type": "DROPDOWN",
            "is_required": true,
            "title": "What is your primary source of funds?",
            "description": null,
            "placeholder": null,
            "choices": [
              { "label": "Salary", "value": "salary" },
              { "label": "Business Income", "value": "business_income" },
              { "label": "Savings", "value": "savings" },
              { "label": "Investments", "value": "investments" },
              { "label": "Sale of Asset", "value": "sale_of_asset" },
              { "label": "Inheritance/Gift", "value": "inheritance_gift" },
              { "label": "Pension", "value": "pension" },
              { "label": "Crypto Proceeds", "value": "crypto_proceeds" },
              { "label": "Other", "value": "other", "requires_text_input": true }
            ],
            "max_files": 1,
            "answer": { "value": "salary" }
          },
          {
            "uuid": "2d16b527-72be-42e0-8e96-b164b818386c",
            "order": 2,
            "element_type": "LONG_TEXT",
            "is_required": true,
            "title": "Provide details of the primary source.",
            "description": "e.g., employer/company name, role, industry, business nature, asset sold, date of inheritance/gift, etc.",
            "placeholder": null,
            "choices": null,
            "max_files": 1,
            "answer": { "value": "Test answer" }
          },
          {
            "uuid": "a9239b7c-fbfb-4ea7-b7e4-c835cd4016e0",
            "order": 3,
            "element_type": "DROPDOWN",
            "is_required": true,
            "title": "What is your annual income range (pre-tax)?",
            "description": null,
            "placeholder": null,
            "choices": [
              { "label": "Less than $25,000", "value": "<25k" },
              { "label": "$25,000 - $50,000", "value": "25k-50k" },
              { "label": "$50,001 - $100,000", "value": "50k-100k" },
              { "label": "$100,001 - $250,000", "value": "100k-250k" },
              { "label": "More than $250,000", "value": ">250k" }
            ],
            "max_files": 1,
            "answer": { "value": "<25k" }
          },
          {
            "uuid": "93dede62-6d0c-4a7f-934d-42175eb94011",
            "order": 4,
            "element_type": "DROPDOWN",
            "is_required": true,
            "title": "What is your approximate net worth (range)?",
            "description": null,
            "placeholder": null,
            "choices": [
              { "label": "Less than $50,000", "value": "<50k" },
              { "label": "$50,000 - $250,000", "value": "50k-250k" },
              { "label": "$250,001 - $1,000,000", "value": "250k-1m" },
              { "label": "$1,000,001 - $5,000,000", "value": "1m-5m" },
              { "label": "More than $5,000,000", "value": ">5m" }
            ],
            "max_files": 1,
            "answer": { "value": "<50k" }
          },
          {
            "uuid": "2af60d6f-6961-4692-9ee7-24b3033610a6",
            "order": 5,
            "element_type": "LONG_TEXT",
            "is_required": true,
            "title": "For your initial deposit/funding, indicate the exact source and amount.",
            "description": "e.g., 'salary from ACME Ltd – July 2025 payroll'",
            "placeholder": null,
            "choices": null,
            "max_files": 1,
            "answer": { "value": "Test answer" }
          },
          {
            "uuid": "0ad9d1aa-736f-46cf-947b-9e1241b53e40",
            "order": 6,
            "element_type": "LONG_TEXT",
            "is_required": true,
            "title": "Breakdown of sources by percentage.",
            "description": "e.g., Salary 70%, Investments 20%, Other 10%",
            "placeholder": null,
            "choices": null,
            "max_files": 1,
            "answer": { "value": "Test answer" }
          },
          {
            "uuid": "1bf8a2a3-14ee-48a8-bb3d-175481aae4aa",
            "order": 7,
            "element_type": "SINGLE_CHOICE",
            "is_required": true,
            "title": "Will any funds originate from third parties? If yes, please provide details.",
            "description": null,
            "placeholder": null,
            "choices": [
              { "label": "Yes", "value": "yes", "requires_text_input": true },
              { "label": "No", "value": "no" }
            ],
            "max_files": 1,
            "answer": { "text": "Additional details", "value": "yes" }
          },
          {
            "uuid": "e18d4dd3-b7bf-4883-ba18-d6046adbe313",
            "order": 8,
            "element_type": "SINGLE_CHOICE",
            "is_required": true,
            "title": "Do you hold or plan to use virtual assets (e.g., crypto) to fund this account? If yes, please provide details.",
            "description": null,
            "placeholder": null,
            "choices": [
              { "label": "Yes", "value": "yes", "requires_text_input": true },
              { "label": "No", "value": "no" }
            ],
            "max_files": 1,
            "answer": { "text": "Additional details", "value": "yes" }
          },
          {
            "uuid": "a90a073d-e098-404c-bbce-5130d8b12a13",
            "order": 9,
            "element_type": "FILE_UPLOAD",
            "is_required": true,
            "title": "Upload a proof of funds document",
            "description": "You can upload your three (3) most recent bank statements, three (3) most recent payslips, your most recent tax return, proof of company ownership, trading exchange statement, sale of property, or proof of inheritance.",
            "placeholder": null,
            "choices": null,
            "max_files": 3,
            "answer": { "files": ["/media/ocr/", "/media/ocr/"] }
          },
          {
            "uuid": "9503b486-7cb8-4c3b-a97d-4b64926a5a47",
            "order": 10,
            "element_type": "LONG_TEXT",
            "is_required": false,
            "title": "Would you like to add any details to help us expedite our review of the documents you submitted?",
            "description": "You may provide any additional information or context regarding your uploaded documents.",
            "placeholder": null,
            "choices": null,
            "max_files": 1,
            "answer": { "value": "Test answer" }
          }
        ]
      }
    ],
    "status": "Approved"
  }
}

Status and review

The status of the questionnaire reflects the current review outcome:

  • Not Finished: The user has not completed the questionnaire.
  • In Review: The questionnaire has been submitted and is pending manual review. You can force all questionnaires to enter this state so a human must approve them.
  • Approved: The questionnaire has been reviewed and accepted.