{
  "meta": {
    "label": "Agent Connect",
    "description": "Agent Connect is a multi-agent Chat interface for unified trusted user access to multiple Generative AI applications",
    "icon": "icon-picture"
  },
  "paramsPythonSetup": "params_helper.py",
  "baseType": "STANDARD",
  "enableJavascriptModules": "true",
  "hasBackend": "true",
  "noJSSecurity": "true",
  "standardWebAppLibraries": [
    "dataiku"
  ],
  "params": [
    {
      "name": "sepconvo",
      "label": "Mandatory Settings",
      "type": "SEPARATOR"
    },
    {
      "name": "sepllm",
      "label": "Choose your LLM",
      "type": "SEPARATOR"
    },
    {
      "type": "LLM",
      "name": "llm_id",
      "label": "Main LLM *",
      "parameterSetId": "llm_id",
      "mandatory": true,
      "llmUsagePurpose": "GENERIC_COMPLETION"
    },
    {
      "name": "sepconvo",
      "label": "Datasets",
      "type": "SEPARATOR"
    },
    {
      "type": "DATASET",
      "name": "logging_dataset",
      "label": "Conversation History Dataset *",
      "description": "The dataset that contains the history of user queries and LLM responses. Must be SQL.",
      "mandatory": true,
      "acceptsDataset": true,
      "canSelectForeign": false,
      "canCreateDataset": true,
      "markCreatedAsBuilt": true
    },
    {
      "type": "DATASET",
      "name": "user_profile_dataset",
      "label": "User profile dataset *",
      "description": "SQL required. This dataset stores user profiles whenever they are updated, either directly (e.g., changing language) or indirectly (e.g., requesting image generation). It may be empty if no profiles were edited. If multiple webapps use the same dataset, users will share the same profile across them.",
      "mandatory": true,
      "acceptsDataset": true,
      "canSelectForeign": false,
      "canCreateDataset": true,
      "markCreatedAsBuilt": true
    },
    {
      "name": "sepllm",
      "label": "Answers & Agents configuration",
      "type": "SEPARATOR"
    },
    {
      "type": "MULTISELECT",
      "name": "projects_keys",
      "label": "Projects *",
      "parameterSetId": "projects_keys",
      "mandatory": true,
      "getChoicesFromPython": true,
      "disableAutoReload": true
    },
    {
      "type": "MULTISELECT",
      "name": "answers_ids",
      "label": "Answers",
      "parameterSetId": "answers_ids",
      "mandatory": false,
      "getChoicesFromPython": true,
      "visibilityCondition": "model.projects_keys && model.projects_keys.length > 0",
      "triggerParameters": [
        "projects_keys"
      ]
    },
    {
      "type": "MULTISELECT",
      "name": "agents_ids",
      "label": "Agents",
      "parameterSetId": "agents_ids",
      "mandatory": false,
      "getChoicesFromPython": true,
      "visibilityCondition": "model.projects_keys && model.projects_keys.length > 0",
      "triggerParameters": [
        "projects_keys"
      ]
    },
    {
      "name": "agents_descriptions",
      "label": "Provide a description for each agent",
      "type": "OBJECT_LIST",
      "visibilityCondition": "model.projects_keys && model.projects_keys.length > 0 && model.agents_ids",
      "triggerParameters": [
        "projects_keys",
        "agents_ids"
      ],
      "subParams": [
        {
          "type": "SEPARATOR",
          "label": "Agent description"
        },
        {
          "name": "agent_id",
          "type": "SELECT",
          "label": "Choose an agent",
          "getChoicesFromPython": true
        },
        {
          "name": "agent_description",
          "type": "TEXTAREA",
          "label": "Description",
          "mandatory": true,
          "description": "Used by the LLM to decide when to use the agent"
        }
      ]
    },
    {
      "type": "MULTISELECT",
      "name": "augmented_llms",
      "label": "Retrieval-Augmented LLMs",
      "parameterSetId": "augmented_llms",
      "mandatory": false,
      "getChoicesFromPython": true,
      "visibilityCondition": "model.projects_keys && model.projects_keys.length > 0",
      "triggerParameters": [
        "projects_keys"
      ],
      "description": "Only Retrieval Augmented LLMs with `SMART` search mode can be selected here"
    },
    {
      "name": "aug_llms_descriptions",
      "label": "Provide a description for each retrieval-augmented LLM",
      "type": "OBJECT_LIST",
      "visibilityCondition": "model.projects_keys && model.projects_keys.length > 0 && model.augmented_llms",
      "triggerParameters": [
        "projects_keys",
        "augmented_llms"
      ],
      "subParams": [
        {
          "type": "SEPARATOR",
          "label": "Retrieval-Augmented LLM description"
        },
        {
          "name": "augmented_llm",
          "type": "SELECT",
          "label": "Choose a retrieval-augmented LLM",
          "getChoicesFromPython": true
        },
        {
          "name": "augmented_llm_description",
          "type": "TEXTAREA",
          "label": "Description",
          "mandatory": true,
          "description": "Used by the LLM to decide when to use the retrieval-augmented LLM"
        }
      ]
    },
    {
      "name": "sepconvo",
      "label": "Other settings",
      "type": "SEPARATOR"
    },
    {
      "name": "sepconvo",
      "label": "Conversations store configuration",
      "type": "SEPARATOR"
    },
    {
      "type": "BOOLEAN",
      "name": "show_advanced_logging_settings",
      "label": "Show advanced logging settings",
      "defaultValue": false,
      "mandatory": false
    },
    {
      "type": "BOOLEAN",
      "name": "index_chat_history",
      "label": "Index the chat history dataset (indexing is only beneficial for specific database types)",
      "visibilityCondition": "model.show_advanced_logging_settings",
      "description": "Only change this settings if you are certain that it is required to improve chat history performance.",
      "defaultValue": false,
      "mandatory": false
    },
    {
      "type": "BOOLEAN",
      "name": "permanent_delete",
      "label": "Permanent delete",
      "defaultValue": true,
      "mandatory": false,
      "description": "If 'Permanent delete' is set to true, the deleted and cleared conversation records will be lost. Set this parameter to false, if you want to always keep archived conversations in the dataset"
    },
    {
      "type": "ARRAY",
      "name": "feedback_positive_choices",
      "label": "Positive feedback choices",
      "description": "The positive feedback choices to be displayed to the user",
      "defaultValue": [],
      "visibilityCondition": "model.logging_dataset"
    },
    {
      "type": "ARRAY",
      "name": "feedback_negative_choices",
      "label": "Negative feedback choices",
      "description": "The negative feedback choices to be displayed to the user",
      "defaultValue": [],
      "visibilityCondition": "model.logging_dataset"
    },
    {
      "type": "FOLDER",
      "name": "upload_folder",
      "label": "Upload Documents Folder",
      "description": "The folder saves images and documents uploaded by users while chatting or images generated by model if image generation is enabled. Image upload is only activated if it is supported by the LLM.",
      "mandatory": false
    },
    {
      "name": "allow_general_feedback",
      "type": "BOOLEAN",
      "label": "Allow user feedback",
      "description": "Check this option to allow users providing their feedback on Agent Connect.",
      "defaultValue": false,
      "mandatory": false
    },
    {
      "type": "DATASET",
      "name": "general_feedback_dataset",
      "label": "General feedback dataset *",
      "description": "Dataset to store general feedback provided. Must be SQL.",
      "visibilityCondition": "model.allow_general_feedback",
      "mandatory": true,
      "acceptsDataset": true,
      "canSelectForeign": false,
      "canCreateDataset": true,
      "markCreatedAsBuilt": true
    },
    {
      "name": "sepdoc",
      "label": "Document Upload",
      "type": "SEPARATOR",
      "visibilityCondition": "model.upload_folder != None && model.upload_folder != ''"
    },
    {
      "type": "INT",
      "name": "max_upload_size_mb",
      "label": "Maximum upload file size in MB.",
      "defaultValue": 15,
      "minI": 1,
      "mandatory": false,
      "visibilityCondition": "model.upload_folder != None && model.upload_folder != ''"
    },
    {
      "type": "INT",
      "name": "max_n_upload_files",
      "label": "Maximum number of files that can be uploaded at once",
      "defaultValue": 5,
      "minI": 1,
      "mandatory": false,
      "visibilityCondition": "model.upload_folder != None && model.upload_folder != ''"
    },
    {
      "type": "BOOLEAN",
      "name": "allow_doc_as_image",
      "label": "Send PDF pages as images instead of extracting text",
      "defaultValue": true,
      "mandatory": false,
      "description": "This option requires a multimodal language model and is recommended only for PDFs containing visual content, such as graphs, images, or tables. Enabling this increases both cost and latency.",
      "visibilityCondition": "model.upload_folder != None && model.upload_folder != ''"
    },
    {
      "type": "INT",
      "name": "docs_per_page_as_image",
      "label": "Maximum number of PDF pages or PPTX slides to send as images.",
      "visibilityCondition": "model.upload_folder != None && model.upload_folder != '' && model.allow_doc_as_image",
      "defaultValue": 5,
      "minI": 1,
      "mandatory": false,
      "description": "If the number of PDF pages or PPTX slides exceeds this limit, text will be extracted and sent to the LLM instead of images."
    },
    {
      "type": "DOUBLE",
      "name": "pdf_as_image_resize_ratio",
      "label": "Scale to resize PDF screenshots",
      "visibilityCondition": "model.upload_folder != None && model.upload_folder != '' && model.allow_doc_as_image",
      "defaultValue": 1.0,
      "minD": 0.1,
      "mandatory": false,
      "description": "Base size is 540 x 720 at scale 1. Final size is computed as: (final_size = base_size x scale). Lower scale → faster LLM response, less visual detail. Higher scale → slower response, more detail."
    },
    {
      "type": "DOUBLE",
      "name": "pptx_as_image_resize_ratio",
      "label": "Scale to resize PPTX screenshots",
      "visibilityCondition": "model.upload_folder != None && model.upload_folder != '' && model.allow_doc_as_image",
      "defaultValue": 1.0,
      "minD": 0.1,
      "mandatory": false,
      "description": "Base size is 720x405 at scale 1. Final size is computed as: (final_size = base_size x scale). Lower scale → faster LLM response, less visual detail. Higher scale → slower response, more detail."
    },
    {
      "name": "sepllm",
      "label": "LLM configuration",
      "type": "SEPARATOR"
    },
    {
      "type": "TEXTAREA",
      "name": "primer_prompt",
      "label": "Configure your 'Main LLM' *",
      "defaultValue": "You are a helpful and knowledgeable assistant. Provide clear, concise, and relevant answers. Focus on actionable insights. Avoid speculation and unecessary details. If you’re unsure about something, respond honestly. Your tone should be friendly and professional.",
      "mandatory": true
    },
    {
      "type": "BOOLEAN",
      "name": "show_advanced_settings",
      "label": "Show advanced 'Main LLM' settings",
      "defaultValue": false,
      "mandatory": false,
      "description": "Enable this option to see advanced settings for the chat bot"
    },
    {
      "type": "TEXTAREA",
      "name": "system_prompt",
      "label": "Configure your conversation system prompt *",
      "visibilityCondition": "model.show_advanced_settings",
      "defaultValue": "The following is a helpful and professional conversation between a user and an assistant. Please assist with the following user query. Provide a clear and concise response. Focus on relevance and utility. Avoid speculation. \n",
      "description": "Only change this if you are sure of what you are doing",
      "mandatory": true
    },
    {
      "type": "BOOLEAN",
      "name": "force_streaming_mode",
      "label": "Force streaming mode",
      "visibilityCondition": "model.show_advanced_settings",
      "defaultValue": false,
      "mandatory": false,
      "description": "Enable this if you are using a custom model that you know supports streaming mode and Agent Connect can't detect that capability."
    },
    {
      "type": "BOOLEAN",
      "name": "force_multi_modal_mode",
      "label": "Force multi modal mode",
      "visibilityCondition": "model.show_advanced_settings",
      "defaultValue": false,
      "mandatory": false,
      "description": "Enable this if you are using a custom model that you know supports multi modal mode and Agent Connect can't detect that capability."
    },
    {
      "type": "INT",
      "name": "max_llm_tokens",
      "label": "Maximum number of 'Main LLM' output tokens",
      "defaultValue": 2048,
      "visibilityCondition": "model.show_advanced_settings",
      "minI": 100,
      "mandatory": false
    },
    {
      "type": "DOUBLE",
      "name": "llm_temperature",
      "label": "'Main LLM' temperature",
      "defaultValue": -1.0,
      "minD": -1.0,
      "visibilityCondition": "model.show_advanced_settings",
      "mandatory": false,
      "description": "Only change this if you are sure of what you are doing and/or if your LLM-mesh connection does not support temperatures of '0.0'. Make sure to select a positive value supported by your LLM: A lower value makes answers more straightforward, while a higher value encourages more creativity. Set a negative value to use your LLM-mesh connection default temperature."
    },
    {
      "type": "LLM",
      "name": "title_llm_id",
      "label": "LLM For Title Generation",
      "parameterSetId": "title_llm_id",
      "mandatory": false,
      "llmUsagePurpose": "GENERIC_COMPLETION",
      "description": "This LLM will be used to generate titles for the user conversations. If not provided, the main LLM will be used."
    },
    {
      "type": "BOOLEAN",
      "name": "use_advanced_title_llm_settings",
      "label": "Use advanced 'Title LLM' settings",
      "visibilityCondition": "model.title_llm_id != null",
      "defaultValue": false,
      "mandatory": false
    },
    {
      "type": "INT",
      "name": "max_title_llm_tokens",
      "label": "Maximum number of 'Title LLM' output tokens",
      "defaultValue": 2048,
      "minI": 100,
      "visibilityCondition": "(model.title_llm_id != null)&&(model.use_advanced_title_llm_settings)",
      "mandatory": false
    },
    {
      "type": "DOUBLE",
      "name": "title_llm_temperature",
      "label": "'Title LLM' temperature",
      "defaultValue": -1.0,
      "minD": -1.0,
      "mandatory": false,
      "visibilityCondition": "(model.title_llm_id != null)&&(model.use_advanced_title_llm_settings)",
      "description": "Only change this if you are sure of what you are doing and/or if your LLM-mesh connection does not support temperatures of '0.0'. Make sure to select a positive value supported by your LLM: A lower value makes answers more straightforward, while a higher value encourages more creativity. Set a negative value to use your LLM-mesh connection default temperature."
    },
    {
      "type": "LLM",
      "name": "json_decision_llm_id",
      "label": "LLM For Decisions Generation",
      "parameterSetId": "json_decision_llm_id",
      "mandatory": false,
      "llmUsagePurpose": "GENERIC_COMPLETION",
      "description": "This LLM will be used to generate decisions in JSON format. If not provided, the main LLM will be used."
    },
    {
      "type": "BOOLEAN",
      "name": "use_advanced_decision_llm_settings",
      "label": "Use advanced 'Decision LLM' settings",
      "visibilityCondition": "model.json_decision_llm_id != null",
      "defaultValue": false,
      "mandatory": false
    },
    {
      "type": "INT",
      "name": "max_decision_llm_tokens",
      "label": "Maximum number of 'Decision LLM' output tokens",
      "minI": 2048,
      "defaultValue": 2048,
      "visibilityCondition": "(model.json_decision_llm_id != null)&&(model.use_advanced_decision_llm_settings)",
      "description": "Accurate LLM decisions might require more tokens: it is recommended to set a high value for this parameter.",
      "mandatory": false
    },
    {
      "type": "DOUBLE",
      "name": "decision_llm_temperature",
      "label": "'Decisions LLM' temperature",
      "defaultValue": -1.0,
      "minD": -1.0,
      "mandatory": false,
      "visibilityCondition": "(model.json_decision_llm_id != null)&&(model.use_advanced_decision_llm_settings)",
      "description": "Only change this if you are sure of what you are doing and/or if your LLM-mesh connection does not support temperatures of '0.0'. Make sure to select a positive value supported by your LLM: For accuracy purposes, this temperature needs to be as close to '0' as possible (max is '0.1'). Set a negative value to use your LLM-mesh connection default temperature."
    },
    {
      "type": "BOOLEAN",
      "name": "enable_image_generation",
      "label": "Enable Image generation for users",
      "defaultValue": false,
      "mandatory": false,
      "description": "Enable this to allow users to generate images from the model you select."
    },
    {
      "type": "LLM",
      "name": "image_generation_llm_id",
      "label": "Image generation model *",
      "parameterSetId": "image_generation_llm_id",
      "visibilityCondition": "model.enable_image_generation",
      "mandatory": true,
      "llmUsagePurpose": "IMAGE_GENERATION"
    },
    {
      "type": "TEXTAREA",
      "name": "image_generation_system_prompt",
      "label": "Configure the query builder prompt for image generation",
      "visibilityCondition": "model.enable_image_generation && model.image_generation_llm_id != null && model.image_generation_llm_id != ''",
      "defaultValue": "",
      "description": "You can add your custom guidelines for image generation. Only change this if you are sure of what you are doing.",
      "mandatory": false
    },
    {
      "type": "INT",
      "name": "max_images_per_user_per_week",
      "label": "Weekly image generation limit per user",
      "description": "Specify the maximum number of images a user is allowed to generate each week. Set to 0 to allow unlimited image generation.",
      "visibilityCondition": "model.enable_image_generation && model.image_generation_llm_id != null && model.image_generation_llm_id != ''",
      "defaultValue": 0,
      "minI": 0,
      "mandatory": false
    },
    {
      "name": "sepllm",
      "label": "Agents advanced configuration",
      "type": "SEPARATOR"
    },
    {
      "name": "skip_decision_chain",
      "type": "BOOLEAN",
      "label": "Forward user query to the configured agent",
      "defaultValue": false,
      "mandatory": false,
      "description": "Send user query and history directly to the configured agent skipping decision chain. If multiple agents are configured this setting will be ignored"
    },
    {
      "name": "bypass_permission_check",
      "type": "BOOLEAN",
      "label": "Do not check end user permissions for Agents/Answers/Augmented-LLMs",
      "defaultValue": false,
      "mandatory": false,
      "description": "Do not filter out connected Agents/Answers/Augmented-LLMs based on end user Dataiku permissions"
    },
    {
      "name": "agents_customization",
      "label": "Customize each agent",
      "type": "OBJECT_LIST",
      "visibilityCondition": "model.projects_keys && model.projects_keys.length > 0 && model.agents_ids",
      "triggerParameters": [
        "projects_keys",
        "agents_ids"
      ],
      "subParams": [
        {
          "type": "SEPARATOR",
          "label": "Agent customization"
        },
        {
          "name": "agent_id",
          "type": "SELECT",
          "label": "Choose an agent",
          "getChoicesFromPython": true
        },
        {
          "name": "agent_prompt",
          "type": "TEXTAREA",
          "label": "System instructions for the agent",
          "mandatory": false
        },
        {
          "name": "disable_upload",
          "type": "BOOLEAN",
          "label": "Disable file upload",
          "description": "Disable file upload for this agent",
          "mandatory": false,
          "defaultValue": false
        }
      ]
    },
    {
      "name": "display_agents_answers",
      "type": "BOOLEAN",
      "label": "Display agents answers",
      "defaultValue": false,
      "mandatory": false,
      "description": "Display each agent’s response in the Sources section to the end user. Disabled by default."
    },
    {
      "name": "display_source_chunks",
      "type": "BOOLEAN",
      "label": "Display source chunks",
      "defaultValue": true,
      "mandatory": false,
      "description": "Display text chunks or extracts from sources used by agents in the Sources section. Enabled by default."
    },
    {
      "name": "display_sql_query",
      "type": "BOOLEAN",
      "label": "Display SQL queries generated by agents",
      "defaultValue": false,
      "mandatory": false,
      "description": "Display SQL queries generated by agents in the Sources section. Disabled by default."
    },
    {
      "name": "sepuser",
      "label": "End user configuration",
      "type": "SEPARATOR"
    },
    {
      "type": "TEXTAREA",
      "name": "web_app_title",
      "label": "Displayed title *",
      "defaultValue": "Ask Anything – Let Agent Connect uncover the best answers tailored just for you!",
      "mandatory": true
    },
    {
      "type": "TEXTAREA",
      "name": "web_app_subheading",
      "label": "Displayed subheading",
      "defaultValue": "Answers are provided by Dataiku Agents, which leverage documents, datasets, and advanced tools to deliver precise and insightful information.",
      "mandatory": false
    },
    {
      "type": "TEXTAREA",
      "name": "web_app_input_placeholder",
      "label": "Displayed placeholder text in the 'question input' field",
      "defaultValue": "Ask your question...",
      "mandatory": false
    },
    {
      "type": "ARRAY",
      "name": "example_questions",
      "label": "Example questions",
      "description": "Configure example questions that users can pose. Only text type is supported (String or TextArea).",
      "defaultValue": [
        "What are the latest trends in the renewable energy sector?",
        "Summarize the key policies in our company handbook",
        "Explain the process for submitting an internal expense report"
      ]
    },
    {
      "type": "TEXTAREA",
      "name": "disclaimer",
      "label": "Displayed disclaimer text (in the footer of the web app)",
      "defaultValue": "The answers are generated by an artificial intelligence model. Please exercise human judgment and oversight to ensure all final outcomes are accurate, appropriate, and adhere to responsible use guidelines.",
      "mandatory": false
    },
    {
      "name": "use_custom_rebranding",
      "label": "Enable custom rebranding",
      "type": "BOOLEAN",
      "defaultValue": false,
      "description": "Enable this option to customize the webapp's appearance. You can rebrand the webapp by applying custom style without changing the webapp code. Navigate to ᎒᎒᎒ > Global Shared Code > Static Web Resources, create `agent-connect` folder with a folder of your custom theme. \n The file structure should be /agent-connect/YOUR_THEME/.... For css changes, add a `custom.css` file inside the `agent-connect`. To customize fonts, create `fonts` folder inside `agent-connect` and add `fonts.css`. To customize the logo and icon, add an images folder inside `agent-connect` and add the logo and icon files. Specify the file names below."
    },
    {
      "name": "custom_theme_name",
      "label": "Theme name",
      "type": "STRING",
      "defaultValue": "",
      "description": "Add your custom theme name so that icons, fonts and css are fetched from the correct folder `/agent-connect/YOUR_THEME`. If left empty, the default theme will be used.",
      "visibilityCondition": "model.use_custom_rebranding"
    },
    {
      "name": "custom_logo_file_name",
      "label": "Logo file name",
      "type": "STRING",
      "defaultValue": "logo.png",
      "description": "Add the logo to /agent-connect/YOUR_THEME/images/IMAGE_NAME.png. Accepted extensions are .png, .jpg, .jpeg. The style of the logo can be managed in the custom.css file with .logo-container .logo-img { ... }.",
      "visibilityCondition": "model.use_custom_rebranding"
    },
    {
      "name": "custom_icon_file_name",
      "label": "Icon file name",
      "type": "STRING",
      "defaultValue": "answer-icon.png",
      "description": "Add the logo to /agent-connect/YOUR_THEME/images/answer-icon.png. Accepted extensions are .png, .jpg, .jpeg. The icon is displayed at 24px x 24px.",
      "visibilityCondition": "model.use_custom_rebranding"
    },
    {
      "name": "sepuserprofile",
      "label": "User Profile Settings",
      "type": "SEPARATOR"
    },
    {
      "type": "KEY_VALUE_LIST",
      "name": "user_profile_languages",
      "label": "User profile languages",
      "description": "Configure The list of languages to make available to users, language is part of the user profile.",
      "defaultValue": [
        {
          "from": "ar",
          "to": "Arabic"
        },
        {
          "from": "zh",
          "to": "Chinese"
        },
        {
          "from": "en",
          "to": "English"
        },
        {
          "from": "fr",
          "to": "French"
        },
        {
          "from": "de",
          "to": "German"
        },
        {
          "from": "it",
          "to": "Italian"
        },
        {
          "from": "ja",
          "to": "Japanese"
        },
        {
          "from": "ko",
          "to": "Korean"
        },
        {
          "from": "pt",
          "to": "Portuguese"
        },
        {
          "from": "ru",
          "to": "Russian"
        },
        {
          "from": "es",
          "to": "Spanish"
        }
      ]
    },
    {
      "type": "SELECT",
      "name": "default_user_language",
      "label": "Default User Language *",
      "getChoicesFromPython": true,
      "defaultValue": "en",
      "mandatory": true
    },
    {
      "type": "KEY_VALUE_LIST",
      "name": "user_profile_settings",
      "label": "User profile settings",
      "description": "Configure various settings that a user can set up as part of their profile. The additional settings defined here will be filled in by the user as strings and will be included in LLM prompts to provide more accurate and customized responses. Each setting should have a 'KEY' representing the setting attribute and a 'VALUE' which is its description.",
      "defaultValue": []
    },
    {
      "type": "BOOLEAN",
      "name": "include_user_profile_in_prompt",
      "label": "Add profile information to LLM context",
      "defaultValue": false
    },
    {
      "name": "sepweb",
      "label": "WebApplication Configuration",
      "type": "SEPARATOR"
    },
    {
      "type": "SELECT",
      "name": "language",
      "label": "Language *",
      "selectChoices": [
        {
          "value": "en",
          "label": "English"
        },
        {
          "value": "fr",
          "label": "French"
        },
        {
          "value": "es",
          "label": "Spanish"
        },
        {
          "value": "de",
          "label": "German"
        },
        {
          "value": "ja",
          "label": "Japanese"
        },
        {
          "value": "ko",
          "label": "Korean"
        }
      ],
      "defaultValue": "en",
      "mandatory": true
    },
    {
      "type": "SELECT",
      "name": "log_level",
      "label": "Logs level *",
      "selectChoices": [
        {
          "value": "DEBUG",
          "label": "DEBUG"
        },
        {
          "value": "INFO",
          "label": "INFO"
        },
        {
          "value": "WARN",
          "label": "WARN"
        },
        {
          "value": "ERROR",
          "label": "ERROR"
        },
        {
          "value": "CRITICAL",
          "label": "CRITICAL"
        }
      ],
      "defaultValue": "INFO",
      "mandatory": true
    },
    {
      "type": "KEY_VALUE_LIST",
      "name": "http_headers",
      "label": "HTTP Headers to include in WebApplication HTTP Response"
    },
    {
      "name": "disable_ssl_verification",
      "label": "Disable SSL verification",
      "type": "BOOLEAN",
      "defaultValue": false,
      "description": "Disable SSL verification when calling Agents"
    },
    {
      "name": "max_thread_workers_number",
      "type": "INT",
      "defaultValue": 0,
      "label": "Number of logging dataset writers",
      "description": "The number of threads that will write the data into logging dataset. Increase this number if you have a high number of queries.",
      "minI": 0,
      "max": 100,
      "visibilityCondition": false
    }
  ]
}