{
    "title": "KA Facebook Marketplace input",
    "type": "object",
    "schemaVersion": 1,
    "properties": {
        "searchUrls": {
            "title": "URLs de recherche",
            "type": "array",
            "editor": "stringList",
            "description": "URLs de recherche Marketplace (ville × tranche de prix). Vide = couverture Québec par défaut (33 villes intégrées).",
            "prefill": []
        },
        "getDetails": {
            "title": "Visiter les fiches détail",
            "type": "boolean",
            "default": true,
            "description": "Visite /marketplace/item/<id> pour GPS, ville, description, statut et galerie complète."
        },
        "maxDetails": {
            "title": "Budget fiches détail",
            "type": "integer",
            "default": 200,
            "minimum": 0,
            "description": "Nombre maximal de fiches détail visitées par run."
        },
        "skipDetailIds": {
            "title": "IDs à NE PAS détailler",
            "type": "array",
            "editor": "stringList",
            "description": "IDs d'annonces dont la fiche détail est déjà connue de l'appelant (cache) : la recherche les liste quand même, mais aucune requête détail.",
            "prefill": []
        },
        "extraDetailIds": {
            "title": "IDs détail additionnels (rattrapage)",
            "type": "array",
            "editor": "stringList",
            "description": "Fiches à visiter MÊME si absentes des résultats de recherche (rattrapage d'annonces actives pauvres).",
            "prefill": []
        },
        "requestDelay": {
            "title": "Délai entre requêtes (s)",
            "type": "integer",
            "default": 1,
            "minimum": 0,
            "description": "Pause minimale entre deux requêtes sortantes, en secondes."
        },
        "concurrency": {
            "title": "Requêtes simultanées",
            "type": "integer",
            "default": 8,
            "minimum": 1,
            "maximum": 16,
            "description": "Nombre de requêtes menées en parallèle."
        },
        "proxyUrlTemplate": {
            "title": "Proxy externe (gabarit d'URL)",
            "type": "string",
            "editor": "textfield",
            "isSecret": true,
            "description": "Optionnel : URL de proxy externe avec placeholder {session} (ex. Oxylabs résidentiel http://user-cc-CA-sessid-{session}:pass@pr.oxylabs.io:7777). Si présent, remplace le proxy Apify — utile pour consommer un abonnement résidentiel existant."
        },
        "proxyConfiguration": {
            "title": "Proxy Apify",
            "type": "object",
            "editor": "proxy",
            "description": "Résidentiel obligatoire (Facebook rejette les IP datacenter). Ignoré si un gabarit de proxy externe est fourni.",
            "prefill": {
                "useApifyProxy": true,
                "apifyProxyGroups": ["RESIDENTIAL"],
                "apifyProxyCountry": "CA"
            }
        }
    }
}
