# Configurations

## Fichier de configuration

## Récupération du contenu du fichier de configuration principal

<mark style="color:blue;">`GET`</mark> `/config/readConfig`

#### Headers

| Name                                            | Type            | Description |
| ----------------------------------------------- | --------------- | ----------- |
| Authorization<mark style="color:red;">\*</mark> | Bearer \<token> |             |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

<details>

<summary>Retour du web service</summary>

```json
{
    "config": {
        "API": {
            "siren-url": "https://api.insee.fr/entreprises/sirene/V3/siren/",
            "siret-consumer": "",
            "siret-secret": "",
            "siret-url": "https://api.insee.fr/entreprises/sirene/V3/siret/",
            "siret-url-token": "https://api.insee.fr/token",
            "tva-url": "https://ec.europa.eu/taxation_customs/vies/checkVatService.wsdl"
        },
        "DATABASE": {
            "postgresdatabase": "opencapture_edissyum",
            "postgreshost": "localhost",
            "postgrespassword": "",
            "postgresport": "5432",
            "postgresuser": ""
        },
        "GLOBAL": {
            "configmail": "/var/www/html/opencapture/custom/edissyum/config/mail.ini",
            "logfile": "/var/www/html/opencapture/custom/edissyum/bin/data/log/OpenCapture.log",
            "watcherconfig": "/var/www/html/opencapture/instance/config/watcher.ini"
        },
        "REFERENCIAL": {
            "referencialsupplierdocument": "default_referencial_supplier.ods",
            "referencialsupplierindex": "default_referencial_supplier_index.json"
        },
        "SEPARATORQR": {
            "divider": "_",
            "enabled": "False",
            "exportpdfa": "False"
        },
        "SPLITTER": {
            "bundlestart": "BUNDLESTART",
            "docstart": "DOCSTART"
        }
    }
}
```

</details>

## Configurations en base de données

## Récupération des paramètres globaux présent en base de données

<mark style="color:blue;">`GET`</mark> `/config/getConfigurations`

#### Path Parameters

| Name   | Type   | Description                                           |
| ------ | ------ | ----------------------------------------------------- |
| limit  | String | Nombres de résultats maximum à retourner              |
| offset | String | Commencer à partir du Xème résultat                   |
| search | String | Filtrer configurations sur le label ou la description |

#### Headers

| Name                                            | Type            | Description |
| ----------------------------------------------- | --------------- | ----------- |
| Authorization<mark style="color:red;">\*</mark> | Bearer \<token> |             |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

<details>

<summary>Retour du web service</summary>

```json
{
    "configurations": [
        {
            "data": {
                "description": "Délai avant expiration du token d'authentification (en minutes)",
                "type": "int",
                "value": "1440"
            },
            "display": true,
            "id": 1,
            "label": "jwtExpiration",
            "total": 8
        },
        {
            "data": {
                "description": "Delta maximum pour remonter une date de facture, en jours. -1 pour désactiver",
                "type": "int",
                "value": "-1"
            },
            "display": true,
            "id": 2,
            "label": "timeDelta",
            "total": 8
        },
        {
            "data": {
                "description": "Taille minimale pour un numéro de facture",
                "type": "int",
                "value": "6"
            },
            "display": true,
            "id": 6,
            "label": "invoiceSizeMin",
            "total": 8
        },
        {
            "data": {
                "description": "Taille minimale pour un numéro de devis",
                "type": "int",
                "value": "3"
            },
            "display": true,
            "id": 7,
            "label": "devisSizeMin",
            "total": 8
        },
        {
            "data": {
                "description": "Court message affiché sur l'écran d'accueil",
                "type": "string",
                "value": "Open-Capture - LAD / RAD"
            },
            "display": true,
            "id": 8,
            "label": "loginMessage",
            "total": 8
        },
        {
            "data": {
                "description": "Autoriser un utilisateur à être connecté sur plusieurs machines simultanément",
                "type": "bool",
                "value": true
            },
            "display": true,
            "id": 16,
            "label": "allowUserMultipleLogin",
            "total": 8
        },
        {
            "data": {
                "description": "Activer la restriction du chemin sur le dossier des chaînes entrantes",
                "type": "bool",
                "value": false
            },
            "display": true,
            "id": 17,
            "label": "restrictInputsPath",
            "total": 8
        },
        {
            "data": {
                "description": "Activer la restriction du chemin sur le dossier des chaînes sortantes",
                "type": "bool",
                "value": false
            },
            "display": true,
            "id": 18,
            "label": "restrictOutputsPath",
            "total": 8
        }
    ]
}
```

</details>

## Récupération d'un paramètres global présent en base de données par son libellé

<mark style="color:blue;">`GET`</mark> `/config/getConfiguration/<string:config_label>`

#### Path Parameters

| Name          | Type   | Description                 |
| ------------- | ------ | --------------------------- |
| config\_label | String | Libellé de la configuration |

#### Headers

| Name                                            | Type            | Description |
| ----------------------------------------------- | --------------- | ----------- |
| Authorization<mark style="color:red;">\*</mark> | Bearer \<token> |             |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

<details>

<summary>Retour du web service</summary>

```json
{
    "configuration": [
        {
            "data": {
                "description": "Paramétrage par défaut du MailCollect",
                "type": "json",
                "value": {
                    "batchPath": "/var/www/html/opencapture/bin/data/MailCollect/",
                    "smtpAuth": "",
                    "smtpDelay": "30",
                    "smtpDestAdminMail": "",
                    "smtpFromMail": "",
                    "smtpHost": "",
                    "smtpLogin": "",
                    "smtpNotifOnError": false,
                    "smtpPort": "",
                    "smtpPwd": "",
                    "smtpSSL": true,
                    "smtpStartTLS": false
                }
            },
            "display": false,
            "id": 8,
            "label": "mailCollectGeneral"
        }
    ]
}
```

</details>

## Mise à jour d'une configuration par libellé

<mark style="color:orange;">`PUT`</mark> `/config/updateConfiguration/<string:configuration_label>`

#### Request Body

| Name                                   | Type | Description                                |
| -------------------------------------- | ---- | ------------------------------------------ |
| args<mark style="color:red;">\*</mark> | json | {value: '', 'type': 'json', 'description'} |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

## Docservers

## Récupération des docservers

<mark style="color:blue;">`GET`</mark> `/config/getDocservers`

#### Path Parameters

| Name   | Type   | Description                                           |
| ------ | ------ | ----------------------------------------------------- |
| limit  | String | Nombres de résultats maximum à retourner              |
| offset | String | Commencer à partir du Xème résultat                   |
| search | String | Filtrer configurations sur le label ou la description |

#### Headers

| Name                                            | Type            | Description |
| ----------------------------------------------- | --------------- | ----------- |
| Authorization<mark style="color:red;">\*</mark> | Bearer \<token> |             |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

<details>

<summary>Retour du web service</summary>

```json
{
    "docservers": [
        {
            "description": "Chemin vers l'instance d'Open-Capture",
            "docserver_id": "PROJECT_PATH",
            "id": 1,
            "path": "/var/www/html/opencapture/",
            "total": 24
        },
        {
            "description": "Chemin vers le dossier contenant les fichiers de traductions",
            "docserver_id": "LOCALE_PATH",
            "id": 2,
            "path": "/var/www/html/opencapture/src/assets/locale/",
            "total": 24
        },
        {
            "description": "Chemin vers le dossier des batches en erreur",
            "docserver_id": "ERROR_PATH",
            "id": 3,
            "path": "/var/www/html/opencapture/bin/data/error/",
            "total": 24
        },
        {
            "description": "Chemin vers le dossier temporaires utilisé lors du traitement des documents",
            "docserver_id": "TMP_PATH",
            "id": 4,
            "path": "/var/www/html/opencapture/bin/data/tmp/",
            "total": 24
        },
        {
            "description": "Chemin vers le dossier contenant les différents scripts",
            "docserver_id": "SCRIPTS_PATH",
            "id": 5,
            "path": "/var/www/html/opencapture/bin/scripts/",
            "total": 24
        },
        {
            "description": "Chemin vers le dossier contenant les différents fichiers de configurations",
            "docserver_id": "CONFIG_PATH",
            "id": 6,
            "path": "/var/www/html/opencapture/instance/config/",
            "total": 24
        },
        {
            "description": "Chemin vers la zone de stockage",
            "docserver_id": "DOCSERVERS_PATH",
            "id": 7,
            "path": "/var/docservers/opencapture/",
            "total": 24
        },
        {
            "description": "Chemin vers le dossier contenant les fichiers de référentiel",
            "docserver_id": "REFERENTIALS_PATH",
            "id": 8,
            "path": "/var/www/html/opencapture/instance/referencial/",
            "total": 24
        },
        {
            "description": "[SÉPARATION PAR QR CODE] Chemin vers le dossier temporaire pour la séparation par QR Code",
            "docserver_id": "SEPARATOR_QR_TMP",
            "id": 9,
            "path": "/tmp/",
            "total": 24
        },
        {
            "description": "[SÉPARATION PAR QR CODE] Chemin vers le dossier de sortie des PDF",
            "docserver_id": "SEPARATOR_OUTPUT_PDF",
            "id": 10,
            "path": "/var/www/html/opencapture//bin/data/exported_pdf/",
            "total": 24
        },
        {
            "description": "[SÉPARATION PAR QR CODE] Chemin vers le dossier de sortie des PDF/A",
            "docserver_id": "SEPARATOR_OUTPUT_PDFA",
            "id": 11,
            "path": "/var/www/html/opencapture//bin/data/exported_pdfa/",
            "total": 24
        },
        {
            "description": "[VERIFIER] Chemin pour le stockage des miniatures",
            "docserver_id": "VERIFIER_THUMB",
            "id": 12,
            "path": "/var/docservers/opencapture/verifier/thumbs/",
            "total": 24
        },
        {
            "description": "[VERIFIER] Chemin pour le stockage des images",
            "docserver_id": "VERIFIER_IMAGE_FULL",
            "id": 13,
            "path": "/var/docservers/opencapture/verifier/full/",
            "total": 24
        },
        {
            "description": "[VERIFIER] Chemin pour le stockage des images nécessaire aux masques de positionnement",
            "docserver_id": "VERIFIER_POSITIONS_MASKS",
            "id": 14,
            "path": "/var/docservers/opencapture/verifier/positions_masks/",
            "total": 24
        },
        {
            "description": "[SPLITTER] Chemin vers le dossier de stockage des dossiers de batch après traitement",
            "docserver_id": "SPLITTER_BATCHES",
            "id": 15,
            "path": "/var/docservers/opencapture/splitter/batches/",
            "total": 24
        },
        {
            "description": "[SPLITTER] Chemin vers le dossier de sortie des PDF après traitement",
            "docserver_id": "SPLITTER_OUTPUT",
            "id": 16,
            "path": "/var/docservers/opencapture/splitter/separated_pdf/",
            "total": 24
        },
        {
            "description": "[SPLITTER] Chemin vers le dossier contenant les PDF originaux",
            "docserver_id": "SPLITTER_ORIGINAL_PDF",
            "id": 17,
            "path": "/var/docservers/opencapture/splitter/original_pdf/",
            "total": 24
        },
        {
            "description": "[SPLITTER] Chemin vers le dossier contenant les différents scripts de séparation",
            "docserver_id": "SPLITTER_METHODS_PATH",
            "id": 18,
            "path": "/var/www/html/opencapture/bin/scripts/splitter_methods/",
            "total": 24
        },
        {
            "description": "[SPLITTER] Chemin vers le dossier contenant les différents scripts de récupération de métadonnées",
            "docserver_id": "SPLITTER_METADATA_PATH",
            "id": 19,
            "path": "/var/www/html/opencapture/bin/scripts/splitter_metadata/",
            "total": 24
        },
        {
            "description": "[SPLITTER] Chemin pour le stockage des miniatures",
            "docserver_id": "SPLITTER_THUMB",
            "id": 22,
            "path": "/var/docservers/opencapture/splitter/thumbs/",
            "total": 24
        },
        {
            "description": "[SPLITTER] Chemin vers le dossier contenant les données d'entraînement",
            "docserver_id": "SPLITTER_TRAIN_PATH_FILES",
            "id": 25,
            "path": "/var/docservers/opencapture/splitter/ai/train_data",
            "total": 24
        },
        {
            "description": "[SPLITTER] Chemin vers le dossier contenant le modèle de prédiction",
            "docserver_id": "SPLITTER_AI_MODEL_PATH",
            "id": 26,
            "path": "/var/docservers/opencapture/splitter/ai/models/",
            "total": 24
        },
        {
            "description": "[VERIFIER] Chemin vers le dossier contenant les données d'entraînement",
            "docserver_id": "VERIFIER_TRAIN_PATH_FILES",
            "id": 29,
            "path": "/var/docservers/opencapture/verifier/ai/train_data",
            "total": 24
        },
        {
            "description": "[VERIFIER] Chemin vers le dossier contenant le modèle de prédiction",
            "docserver_id": "VERIFIER_AI_MODEL_PATH",
            "id": 30,
            "path": "/var/docservers/opencapture/verifier/ai/models/",
            "total": 24
        }
    ]
}
```

</details>

## Mise à jour d'un docserver par id

<mark style="color:orange;">`PUT`</mark> `/config/updateDocserver/<string:docserver_id>`

#### Request Body

| Name                                   | Type | Description                                          |
| -------------------------------------- | ---- | ---------------------------------------------------- |
| args<mark style="color:red;">\*</mark> | json | {'path': '', 'description': '', 'docserver\_id': ''} |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

## Regex

## Récupération des regex

<mark style="color:blue;">`GET`</mark> `/config/getRegex`

#### Path Parameters

| Name   | Type   | Description                                           |
| ------ | ------ | ----------------------------------------------------- |
| limit  | String | Nombres de résultats maximum à retourner              |
| offset | String | Commencer à partir du Xème résultat                   |
| search | String | Filtrer configurations sur le label ou la description |

#### Headers

| Name                                            | Type            | Description |
| ----------------------------------------------- | --------------- | ----------- |
| Authorization<mark style="color:red;">\*</mark> | Bearer \<token> |             |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}

<details>

<summary>Retour du web service</summary>

```json
{
    "regex": [
        {
            "content": "([A-Za-z0-9]+[\\.\\-_])*[A-Za-z0-9]+@[A-Za-z0-9-]+(\\.[A-Z|a-z]{2,})+",
            "id": 1,
            "label": "Adresse email",
            "lang": "global",
            "regex_id": "email",
            "total": 20
        },
        {
            "content": "[0-9]{14}",
            "id": 2,
            "label": "Numéro de SIRET",
            "lang": "global",
            "regex_id": "siret",
            "total": 20
        },
        {
            "content": "[0-9]{9}",
            "id": 3,
            "label": "Numéro de SIREN",
            "lang": "global",
            "regex_id": "siren",
            "total": 20
        },
        {
            "content": "[A-Z]{2}(?:[ ]?[0-9]){18,25}",
            "id": 4,
            "label": "Numéro d'IBAN",
            "lang": "global",
            "regex_id": "iban",
            "total": 20
        },
        {
            "content": "(EU|SI|HU|D(K|E)|PL|CHE|(F|H)R|B(E|G)(0)?)[0-9A-Z]{2}[0-9]{6,9}",
            "id": 5,
            "label": "Numéro de TVA",
            "lang": "global",
            "regex_id": "vat_number",
            "total": 20
        },
        {
            "content": "((3[01]|[12][0-9]|0?[1-9])|\\d{1}\\w{2})\\s?([JFMASONDjfmasond][a-zA-Z_À-ÿ\\.,-]{2,9}|[/,-\\.](1[0-2]|0?[1-9])[/,-\\.])\\s?((1|2|3){1}\\d{1,3}|(1|2|3))",
            "id": 6,
            "label": "Date",
            "lang": "fra",
            "regex_id": "date",
            "total": 20
        },
        {
            "content": "((DATE)?\\s*(D('|\\s*))?(E|É)CH(É|E)ANCE(\\(S\\))?\\s*:?\\s*([0-9]*(\\.?\\,?\\s?)[0-9]+((\\.?\\,?\\s?)[0-9])+|[0-9]+)?\\s*(€)?\\s*(AU)?\\s*|FACTURE\\s*(A|À)\\s*PAYER\\s*AVANT\\s*LE\\s*(:)?\\s*)",
            "id": 7,
            "label": "Date d'échance",
            "lang": "fra",
            "regex_id": "due_date",
            "total": 20
        },
        {
            "content": "(((?P<r1>NUMERO|N(O|°|º|R.))?\\s*(DE)?\\s*(FACTURE|PI(E|È)CE|DOCUMENT)(\\s*:)?\\s*(?(r1)()|(NUMERO|N(O|°|º|R.)?))(\\s*:)?)|(FACTURE(/)?(DATE)?)\\s*(ACQUIT(T)?(E|É)E)?\\s*(:|#){1}).*",
            "id": 8,
            "label": "Numéro de facture",
            "lang": "fra",
            "regex_id": "invoice_number",
            "total": 20
        },
        {
            "content": "((NUM(E|É)RO|N(O|°|º|R.)?|R(E|É)F(\\.)?((E|É)RENCE)?)?\\s*(DE)?\\s*(BON)?\\s*(DE)?\\s*(LIVRAISON)|NOTE\\s*D(')?ENVOI|(BON|BULLETIN)\\s*DE\\s*LIVR(\\.))\\s*:?.*",
            "id": 9,
            "label": "Numéro de livraison",
            "lang": "fra",
            "regex_id": "delivery_number",
            "total": 20
        },
        {
            "content": "(((?P<r1>(NUM(E|É)RO|N(O|°|º|R.)?|R(E|É)F(\\.)?((E|É)RENCE)?))?\\s*(DE)?\\s*(DEVIS|COMMANDE|C(M)?DE|DOCUMENT)\\s*(INTERNET|EXTERNE|WEB)?(\\s*:)?\\s*(?(r1)()|(NUMERO|N(O|°|º|R.)?))(\\s*:)?|(R(E|É)F(\\.)?\\s*PROPOSITION\\s*COMMERCIALE)|(CONTRAT|COMMANDE|C(M)?DE)\\s*(NUMERO|N(O|°|º|R.)))\\s*(:|#){0,1}).*",
            "id": 10,
            "label": "Numéro de devis",
            "lang": "fra",
            "regex_id": "quotation_number",
            "total": 20
        },
        {
            "content": "(?P<r1>MONTANT\\s*(NET)?|(SOUS(-|\\s+)?)TOTAL|VAT\\s*BASE|VALEUR\\s*(BRUTE|POSITIONS|NETTE\\s*TOTALE)|IMPOSABLE|TOTAL(S)?\\s*DES\\s*DIVERS\\s*(À|A)\\s*VENTILER|PRIX\\s*NET\\s*(TOTAL)?|TOTAL\\s*(ORDRE|NET|INTERM(E|É)DIAIRE)|BASE\\s*TOTAL)?\\s*(:\\s*|EN)?(€|EUROS|EUR|CAD)?\\s*(?(r1)()|(\\()?((H(\\.)?T(\\.)?(V(\\.)?A(\\.)?)?|HORS TVA|(EXCL|BASE)\\s*(\\.)?\\s*TVA|HORS\\s*TAXES|TOTAL\\s*INTERM(É|E)DIAIRE))(\\))?){1}\\s*(:)?(€|EUROS|EUR|CAD)?\\s*([0-9]*(\\.?\\,?\\s?)[0-9]+((\\.?\\,?\\s?)[0-9])+|[0-9]+)\\s*(€|EUROS|EUR|CAD)?|([0-9]*(\\.?\\,?\\s?)[0-9]+((\\.?\\,?\\s?)[0-9])+|[0-9]+)\\s*(€)?\\s*(HT)",
            "id": 11,
            "label": "Montant HT",
            "lang": "fra",
            "regex_id": "no_rates",
            "total": 20
        },
        {
            "content": "(?P<r1>MONTANT|^\\s*TOTAL)?\\s*(:\\s*)?(€|EUROS|EUR|CAD)?\\s*(?(r1)()|(T(.)?T(.)?C|\\(TVA COMPRISE\\)|TVAC|TVA\\s*INCLUSE|(MONTANT)?NET\\s*(À|A)\\s*(PAYER|VERSER))){1}(\\s*(À|A)\\s*PAYER)?\\s*(:|(€|EUROS|EUR|CAD))?\\s*([0-9]*(\\.?\\,?\\|?\\s?)[0-9]+((\\.?\\,?\\s?)[0-9])+|[0-9]+)\\s*(€|EUROS|EUR|CAD)?",
            "id": 12,
            "label": "Montant TTC",
            "lang": "fra",
            "regex_id": "all_rates",
            "total": 20
        },
        {
            "content": "(TVA|%)\\s*(5(?:\\.|,)5|19(?:\\.|,)6|(6|10|12|20)(?:[.,]0{1,3})?)|(5(?:\\.|,)5|19(?:\\.|,)6|(6|10|12|20)(?:[.,]0{1,3})?)(\\s*%)",
            "id": 13,
            "label": "Taux de TVA",
            "lang": "fra",
            "regex_id": "vat_rate",
            "total": 20
        },
        {
            "content": "((MONTANT|TOTAL|DONT)\\s*TVA(\\s*[0-9.,]*\\s*%)?(\\s*\\(SUR\\s*FACTURE\\s*\\))?|TVA\\s*[0-9.,]*\\s*%|TVA\\s*[0-9.,]*\\s*%?\\s*SUR\\s*[0-9.,]*\\s*[A-Z\\s']*|%\\s*TVA)\\s*(€|EUROS|EUR|CAD)?.*",
            "id": 14,
            "label": "Montant TVA",
            "lang": "fra",
            "regex_id": "vat_amount",
            "total": 20
        },
        {
            "content": "[20, 19.6, 10, 5.5, 2.1]",
            "id": 15,
            "label": "Liste des taux de TVA",
            "lang": "fra",
            "regex_id": "vat_rate_list",
            "total": 20
        },
        {
            "content": "%d/%m/%Y",
            "id": 16,
            "label": "Format final de la date",
            "lang": "fra",
            "regex_id": "format_date",
            "total": 20
        },
        {
            "content": "<!-- %BEGIN-DOCUMENT-LOOP -->(.*?)<!-- %END-DOCUMENT-LOOP -->",
            "id": 17,
            "label": "Boucle des documents dans la sortie XML du Splitter",
            "lang": "fra",
            "regex_id": "splitter_doc_loop",
            "total": 20
        },
        {
            "content": "<!-- %BEGIN-IF(.*?) -->(.*?)<!-- %END-IF -->",
            "id": 18,
            "label": "Condition des balises dans la sortie XML du Splitter",
            "lang": "fra",
            "regex_id": "splitter_condition",
            "total": 20
        },
        {
            "content": "\\s?<!--[\\s\\S\\n]*?-->\\s",
            "id": 19,
            "label": "Commentaire technique dans la sortie XML du Splitter",
            "lang": "fra",
            "regex_id": "splitter_xml_comment",
            "total": 20
        },
        {
            "content": "^\\s*$",
            "id": 20,
            "label": "Lignes vides dans la sortie XML du Splitter",
            "lang": "fra",
            "regex_id": "splitter_empty_line",
            "total": 20
        }
    ]
}
```

</details>

## Mise à jour d'une regex par id

<mark style="color:orange;">`PUT`</mark> `/config/updateRegex/<string:regex_id>`

#### Request Body

| Name                                   | Type | Description                                                          |
| -------------------------------------- | ---- | -------------------------------------------------------------------- |
| args<mark style="color:red;">\*</mark> | json | {"content":"", "id":"", "label":"", "lang":"global", "regex\_id":""} |

{% tabs %}
{% tab title="200: OK " %}

{% endtab %}
{% endtabs %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://edissyum.gitbook.io/open-capture/technique/web-services/configurations.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
