API
API de vérification pour agents IA
Cette API s’adresse aux agents IA, pas aux navigateurs. C’est un service de vérification, pas une autre manière de consulter l’annuaire.
Avant d’écrire une valeur de registre sur une flotte, un agent peut vérifier si elle est valide pour l’OS cible, s’il existe un équivalent Intune et à quelle portée elle s’applique. La valeur n’est pas seulement de connaître la documentation publique de Microsoft ; les modèles en connaissent déjà une grande partie. La valeur est de prouver une réponse avec une provenance, une version de source et une date de fraîcheur.
Règle fondatrice
Ne jamais combler une absence par une supposition.
Une demande de compatibilité pour 22H2 sans famille d’OS ne produit pas de verdict. 22H2 désigne le build 10.0.19045 sur Windows 10 et le build 10.0.22621 sur Windows 11. L’API renvoie verdict: "unknown", les deux candidats et la manière dont l’agent peut lever l’ambiguïté.
Couverture mesurée
Jeu de données 6a69d203, mesure du 29 juillet 2026. Ces valeurs sont des frontières de couverture, pas des estimations.
| Indicateur | Valeur |
|---|---|
| paramètres par langue | 9 657 (2 langues) |
| paires clé + valeur de registre par langue | 16 497 |
| correspondances Intune (CSP) par langue | 2 458 (25,5 %) |
| paramètres sans équivalent Intune | 7 199 |
| sources actives | 14 / 16 déclarées |
Points d’entrée
Base : https://api.gporais.com
| Méthode | Chemin | Vérification effectuée |
|---|---|---|
POST | /v1/resolve | Clé de registre vers paramètre, avec verdict de compatibilité |
POST | /v1/csp | OMA-URI vers paramètre et clé de registre |
POST | /v1/search | Texte vers paramètres |
GET | /v1/setting/{slug} | Fiche complète du paramètre |
GET | /v1/health | État du service et version du jeu de données ; sans authentification |
Enveloppe de réponse
Chaque réponse authentifiée porte les mêmes six champs de premier niveau afin que l’agent distingue preuve, déduction et incertitude.
| Champ | Garantie |
|---|---|
query | La requête normalisée que l’API a réellement évaluée. |
result | Les correspondances, la fiche demandée ou une raison lorsqu’aucune correspondance n’existe. |
confidence | official signifie que Microsoft affirme la correspondance ; derived signifie que GPORais l’a déduite ; none signifie qu’aucune correspondance Intune n’existe. none est une réponse, pas une erreur, et vient toujours avec result.reason. |
provenance | La source, sa version et l’URL Microsoft Learn lorsqu’elle existe. |
dataset | La version et la date de génération du jeu de données sur chaque réponse. C’est la preuve de fraîcheur. |
warnings | Ce que l’API a remarqué sans trancher à la place de l’agent. |
result.compatibility
La compatibilité a quatre verdicts explicites. Aucun n’est une devinette.
| Verdict | Signification |
|---|---|
supported | Le build cible atteint le plancher documenté. |
unsupported | Le build cible n’atteint pas le plancher documenté. |
unverified | Une valeur minOs existe, mais elle ne contient aucun numéro de build lisible. |
unknown | L’OS cible est absent, non reconnu ou porte une étiquette ambiguë. |
requiredBuildAlternatives — requiredBuildAlternatives est présent uniquement lorsque Microsoft énumère plusieurs builds minimums.
Exemples
Les extraits de réponse ci-dessous proviennent du jeu de données de production 6a69d203. Les longs tableaux sont abrégés en omettant des entrées ; les champs et valeurs affichés sont inchangés.
Authentification
Sans clé, appelez les points d’entrée sous https://api.gporais.com/v1/. Avec une clé, appelez les mêmes points d’entrée sous https://api.gporais.com/k/v1/ et envoyez la clé dans l’en-tête X-API-Key. Le point d’entrée de santé est public.
curl sans clé (accès anonyme)
curl -X POST 'https://api.gporais.com/v1/resolve' -H 'Content-Type: application/json' --data '{"key":"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Uninstall","value":"noaddfromcdorfloppy","lang":"en-US","targetOs":"Windows 10 22H2"}' PowerShell
Invoke-RestMethod -Uri 'https://api.gporais.com/k/v1/resolve' -Method Post -Headers @{'X-API-Key'='VOTRE_CLE_API'; 'Content-Type'='application/json'} -Body '{"key":"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Uninstall","value":"noaddfromcdorfloppy","lang":"en-US","targetOs":"Windows 10 22H2"}' curl
curl -X POST 'https://api.gporais.com/k/v1/resolve' -H 'X-API-Key: VOTRE_CLE_API' -H 'Content-Type: application/json' --data '{"key":"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Uninstall","value":"noaddfromcdorfloppy","lang":"en-US","targetOs":"Windows 10 22H2"}' Résolution de registre avec verdict supported
Placez le chemin de registre exact dans le corps de requête ; l’API normalise la clé, en extrait la ruche et affiche cette requête normalisée dans `query`.
Requête
{
"key": "HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Uninstall",
"value": "noaddfromcdorfloppy",
"lang": "en-US",
"targetOs": "Windows 10 22H2"
} PowerShell
Invoke-RestMethod -Uri 'https://api.gporais.com/k/v1/resolve' -Method Post -Headers @{'X-API-Key'='VOTRE_CLE_API'; 'Content-Type'='application/json'} -Body '{"key":"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Uninstall","value":"noaddfromcdorfloppy","lang":"en-US","targetOs":"Windows 10 22H2"}' curl
curl -X POST 'https://api.gporais.com/k/v1/resolve' -H 'X-API-Key: VOTRE_CLE_API' -H 'Content-Type: application/json' --data '{"key":"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Uninstall","value":"noaddfromcdorfloppy","lang":"en-US","targetOs":"Windows 10 22H2"}' Extrait de réponse
{
"query": {
"key": "software\\microsoft\\windows\\currentversion\\policies\\uninstall",
"value": "noaddfromcdorfloppy",
"lang": "en-US",
"hive": "HKCU",
"targetOs": "Windows 10 22H2"
},
"result": {
"matches": [
{
"slug": "addremoveprograms-noaddfromcdorfloppy",
"lang": "en-US",
"name": "NoAddFromCDorFloppy",
"displayName": "Hide the \"Add a program from CD-ROM or floppy disk\" option",
"class": "User",
"registryKey": "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Uninstall",
"valueName": "NoAddFromCDorFloppy",
"source": "windows",
"sourceVersion": "Windows 11 25H2",
"confidence": "official"
}
],
"compatibility": {
"verdict": "supported",
"reason": "target build 10.0.19045 (Windows 10 22H2) meets minimum 10.0.19041.1202",
"targetBuild": "10.0.19045",
"requiredBuild": "10.0.19041.1202",
"requiredBuildAlternatives": [
"10.0.19041.1202",
"10.0.19042.1202",
"10.0.19043.1202",
"10.0.22000"
]
}
},
"confidence": "official",
"provenance": {
"source": "windows",
"sourceVersion": "Windows 11 25H2"
},
"dataset": {
"version": "6a69d203",
"generatedAt": "2026-07-29T10:12:19Z"
},
"warnings": []
} Étiquette d’OS ambiguë : aucun verdict inventé
Avec targetOs limité à 22H2, la réponse identifie les deux familles Windows possibles et explique comment trancher.
Extrait de réponse
{
"query": {
"key": "software\\microsoft\\windows\\currentversion\\policies\\uninstall",
"value": "noaddfromcdorfloppy",
"lang": "en-US",
"hive": "HKCU",
"targetOs": "22H2"
},
"result": {
"compatibility": {
"verdict": "unknown",
"reason": "version 22H2 ambigue : Windows 10 (10.0.19045) ou Windows 11 (10.0.22621). Precisez la famille (ex. \"Windows 10 22H2\") ou fournissez le numero de build."
}
},
"confidence": "official",
"dataset": {
"version": "6a69d203",
"generatedAt": "2026-07-29T10:12:19Z"
},
"warnings": []
} Deux paramètres écrivent la même paire de registre
L’API renvoie les deux correspondances et avertit l’agent au lieu d’en sélectionner une à sa place. Cette ambiguïté préservée est une preuve, pas une faiblesse.
Extrait de réponse
{
"query": {
"key": "software\\policies\\microsoft\\windows\\windowsupdate\\au",
"value": "noautoupdate",
"lang": "en-US",
"hive": "HKLM",
"targetOs": null
},
"result": {
"matches": [
{
"slug": "wuau-autoupdatecfg",
"displayName": "Configure Automatic Updates",
"registryKey": "Software\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU",
"valueName": "NoAutoUpdate",
"sourceVersion": "Windows 11 25H2",
"confidence": "official"
},
{
"slug": "icm-internetmanagement-restrictcommunication-2",
"displayName": "Restrict Internet communication",
"registryKey": "Software\\Policies\\Microsoft\\InternetManagement",
"valueName": "RestrictCommunication",
"sourceVersion": "Windows 11 25H2",
"confidence": "official"
}
],
"compatibility": {
"verdict": "unknown",
"reason": "aucun OS cible fourni"
}
},
"confidence": "official",
"dataset": {
"version": "6a69d203",
"generatedAt": "2026-07-29T10:12:19Z"
},
"warnings": [
"The registry pair HKLM\\software\\policies\\microsoft\\windows\\windowsupdate\\au\\noautoupdate is written by 2 parameters: wuau-autoupdatecfg, icm-internetmanagement-restrictcommunication-2. Returning all matches and letting the agent choose."
]
} Résoudre un OMA-URI
Le point d’entrée CSP renvoie le paramètre correspondant et l’écriture de registre. Voici un extrait de la réponse de production enregistrée.
Requête
{
"omaUri": "./device/vendor/msft/policy/config/admx_externalboot/portableoperatingsystem_hibernate",
"lang": "en-US",
"scope": "Device"
} Extrait de réponse
{
"query": {
"omaUri": "./device/vendor/msft/policy/config/admx_externalboot/portableoperatingsystem_hibernate",
"lang": "en-US",
"scope": "Device"
},
"result": {
"matches": [
{
"displayName": "Allow hibernate (S4) when starting from a Windows To Go workspace",
"class": "Machine",
"registryKey": "System\\CurrentControlSet\\Policies\\Microsoft\\PortableOperatingSystem",
"valueName": "Hibernate",
"source": "windows",
"sourceVersion": "Windows 11 25H2",
"confidence": "official",
"csp": {
"scope": "Device",
"minOs": "Windows 10, version 2004 with KB5005101 [10.0.19041.1202] and later | Windows 10, version 20H2 with KB5005101 [10.0.19042.1202] and later | Windows 10, version 21H1 with KB5005101 [10.0.19043.1202] and later | Windows 11, version 21H2 [10.0.22000] and later"
}
}
]
},
"confidence": "official",
"provenance": {
"source": "windows",
"sourceVersion": "Windows 11 25H2"
},
"dataset": {
"version": "6a69d203",
"generatedAt": "2026-07-29T10:12:19Z"
},
"warnings": []
} Rechercher des paramètres
Utilisez un nom de paramètre qui renvoie des résultats, comme DisableSearchHistory. Cet exemple montre uniquement la requête, car la réponse de recherche fournie utilisait une autre requête qui ne renvoyait aucun résultat.
Requête
{
"q": "DisableSearchHistory",
"lang": "en-US",
"limit": 3
} Accès, limites et frontières documentées
| Aspect | Règle |
|---|---|
| Authentification | Sans clé, GET /v1/setting/{slug} et les POST /v1/resolve, /v1/csp et /v1/search sont ouverts à tous ; l’en-tête X-API-Key y est ignoré. Avec une clé gratuite, appelez les mêmes points d’entrée sous le préfixe /k/v1/ avec l’en-tête X-API-Key. Sur /k/v1/, une clé absente, invalide ou révoquée renvoie 401. GET /v1/health et GET /k/v1/health sont toujours publics. |
| Limitation de débit | Les limites sont appliquées par l’hébergeur, Netlify, par adresse IP : 10 requêtes par minute sous /v1/ et 60 requêtes par minute sous /k/v1/. Au-delà, les requêtes reçoivent un HTTP 429 jusqu’à la fin de la fenêtre d’une minute. |
| En-têtes de réponse | Les réponses calculées par l’API portent X-GPORais-Tier (anonymous ou key) et X-RateLimit-Limit. Il n’y a pas de compteur de requêtes restantes. Un 429 renvoyé par le limiteur de débit peut avoir un corps vide. Les réponses GET peuvent être servies depuis un cache ; chaque réponse porte la version du jeu de données (dataset.version). |
| Erreurs | Les erreurs suivent le format « problem details » de la RFC 9457. |
| Demander une clé | Il n’y a pas d’inscription en libre-service. Demandez une clé avec les coordonnées existantes sur la page À propos, en précisant l’usage prévu. Une clé peut être révoquée en cas d’abus. |
| Conditions d’utilisation | Les données sont fournies en l’état, sans garantie. Vérifiez avant toute écriture sur une flotte de production. Seuls des faits (chemins de registre, OMA-URI, versions) sont servis ; le texte explicatif n’est pas redistribué, un lien vers la source est renvoyé à la place. Un usage abusif peut entraîner la révocation de la clé ou un blocage. Les limites sont susceptibles d’évoluer. |
| Facturation | Il n’y a pas de facturation à ce jour. |
| Couverture | La couverture Intune est de 25,5 % : 2 458 correspondances par langue. C’est une frontière documentée. Pour 7 199 paramètres, répondre « aucun équivalent Intune n’existe, et voici pourquoi » est le service rendu. |
| Indépendance | GPORais est une ressource technique indépendante, ni affiliée à Microsoft ni validée par lui. |