{"openapi":"3.0.3","info":{"title":"API CHA.LA IP Intelligence","description":"## Démarrage rapide\n\nUne API unique pour l'intelligence IP, la propriété des réseaux, le routage et les preuves de menace. Activez l'accès au compte, puis commencez par une seule requête.\n\n1. Créer un compte: Inscrivez-vous, connectez-vous à la console API et demandez l'accès. Les comptes e-mail nécessitent actuellement une approbation manuelle ; l'approbation n'est pas une vérification de l'e-mail.\n2. Obtenir une clé API: Après approbation, créez une clé ou recevez une clé liée au compte de la part de l'administrateur. Le secret complet n'est affiché qu'une seule fois ; stockez-le en toute sécurité.\n3. Appelez depuis votre backend: Utilisez X-API-Key ou Authorization: Bearer. Ne placez jamais les clés dans les URL, les dépôts publics ou le code frontend.\n\n[Console API](https://www.cha.la/fr/console)\n\n## Allocation gratuite et périodes payantes\n\nLes comptes gratuits reçoivent 1 000 unités par jour, réinitialisées à minuit UTC. Toutes les clés et les lots du site web partagent le solde ; remplacer ou révoquer une clé ne réinitialise pas l'utilisation.\n\n|Forfait|Quota quotidien de sécurité|Requêtes/min/clé|Clés actives|Cibles/lot|\n|---|---:|---:|---:|---:|\n|Free|1,000|30|2|100|\n|Developer|10,000|120|5|500|\n|Pro|100,000|600|20|2,000|\n|Enterprise|1,000,000|3,000|100|5,000|\n\nLes périodes payantes sont provisionnées manuellement avec un plan, une allocation totale explicite et une date d'expiration. L'allocation de la période n'est pas le quota quotidien multiplié par le nombre de jours. Le paiement en ligne et le renouvellement automatique ne sont pas activés. À l'expiration, le compte revient au plan Gratuit ; les portées des clés existantes ne s'étendent jamais automatiquement. Les contrats d'organisation hérités et les limites inférieures par clé s'appliquent également.\n\n## Comment l'utilisation est comptabilisée\n\nLes recherches synchrones réussies coûtent une unité ; les lectures de statut/résultats de lots, les échecs, les refus et les requêtes rejetées pour limitation de débit coûtent zéro.\n\nLots : les cibles dédupliquées acceptées sont facturées une seule fois ; les échecs ultérieurs des cibles ne sont pas remboursés. L'Idempotency-Key est obligatoire ; rejouer la même requête avec le même identifiant ne facture pas à nouveau.\n\nLa progression des lots sur le site et les téléchargements n'entraînent pas d'unités supplémentaires. Pour les erreurs 429 / 503, respectez l'en-tête Retry-After lorsqu'il est présent et utilisez une attente exponentielle.\n\n## Disponibilité\n\nUtilisez /api/public/v1 pour les intégrations client. /api/v1 est une interface interne au site, pas le contrat client. Le CORS navigateur externe n'est pas activé ; appelez depuis votre backend.\n\nSource IP inversée : non configurée ; indisponible.\n\nDistribution C2 : non activée.\n\nRPKI utilise des instantanés. Vérifiez observedAt, expiresAt, stale et riskStatus. Une preuve inconnue ou manquante ne signifie pas que c'est sûr. /api/capabilities est la source de l'état actuel des capacités.","version":"0.6.0"},"components":{"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"X-API-Key"},"bearerAuth":{"type":"http","scheme":"bearer"}},"schemas":{}},"paths":{"/api/public/v1/batch/ip":{"post":{"operationId":"_batch_ip","summary":"Créer un lot de requêtes IP idempotent","tags":["Public API","Batch Intelligence"],"description":"Idempotency-Key est requis. La même clé et la liste de cibles normalisée renvoient le travail original sans nouvelle facturation ; une entrée modifiée ou un travail expiré renvoie 409. Les cibles dédupliquées acceptées sont facturées une fois, y compris celles qui échouent par la suite. Les travaux sont conservés pendant 7 jours.\n\nPlan minimum : free. Portées requises : batch:write, ip:read. Authentifiez-vous avec X-API-Key ou Authorization: Bearer.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"targets":{"type":"array","items":{"type":"string"},"description":"Tableau d'adresses IP ou de noms d'hôtes ; la limite de cibles dépend de votre plan."}},"required":["targets"]}}}},"parameters":[{"schema":{"type":"string","minLength":8,"maxLength":128,"pattern":"^[A-Za-z0-9._:-]+$"},"in":"header","name":"Idempotency-Key","required":true,"description":"Identifiant de lot unique conservé pendant la durée de vie de la tâche ; réutilisez-le pour réessayer la même requête."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["batch:write","ip:read"],"responses":{"200":{"description":"Réponse réussie.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["queued","running","completed","completed_with_errors","failed"]},"inputCount":{"type":"integer"},"completedCount":{"type":"integer"},"successCount":{"type":"integer"},"errorCount":{"type":"integer"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"items":{"type":"array","items":{"type":"object","properties":{"position":{"type":"integer"},"target":{"type":"string"},"status":{"type":"string"},"result":{"type":"object","properties":{"ip":{"type":"string"},"input":{"type":"string"},"countryCode":{"type":"string"},"location":{"type":"string"},"asn":{"type":"integer","nullable":true},"asnName":{"type":"string"},"organization":{"type":"string"},"network":{"type":"string"},"ipType":{"type":"string","description":"Libellé d'affichage ; ISP-hosted IP est un sous-type d'hébergement appartenant à un FAI, pas une garantie résidentielle/statique."},"ipUsage":{"type":"object","properties":{"code":{"type":"string","description":"Code d'usage stable, par exemple isp_hosted, hosting, residential_access, mobile, business, cdn, proxy, unknown."},"label":{"type":"string"},"baseType":{"type":"string"},"asnOwnerCategory":{"type":"string"}},"additionalProperties":true},"ipTypeAssessments":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"confidence":{"type":"number"},"scope":{"type":"string","enum":["ip","prefix","asn"]},"evidence":{"type":"array","items":{"type":"string"}},"sourceKeys":{"type":"array","items":{"type":"string"}}},"additionalProperties":true}},"native":{"type":"string"},"risk":{"type":"number"},"riskStatus":{"type":"string","description":"Vérifiez cela avant d'interpréter le risque. not_observed/inconnu n'est pas un certificat de bonne santé."},"riskConfidence":{"type":"number"},"riskComponents":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"contribution":{"type":"number"},"detail":{"type":"string"},"source":{"type":"string"}},"additionalProperties":true}},"observedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"additionalProperties":true,"description":"Renseignements IP ; des champs de preuve supplémentaires peuvent être ajoutés de manière compatible.","nullable":true},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"additionalProperties":true,"nullable":true}},"additionalProperties":true}}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"202":{"description":"Lot accepté ; les cibles sont débitées de manière atomique.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["queued","running","completed","completed_with_errors","failed"]},"inputCount":{"type":"integer"},"completedCount":{"type":"integer"},"successCount":{"type":"integer"},"errorCount":{"type":"integer"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"items":{"type":"array","items":{"type":"object","properties":{"position":{"type":"integer"},"target":{"type":"string"},"status":{"type":"string"},"result":{"type":"object","properties":{"ip":{"type":"string"},"input":{"type":"string"},"countryCode":{"type":"string"},"location":{"type":"string"},"asn":{"type":"integer","nullable":true},"asnName":{"type":"string"},"organization":{"type":"string"},"network":{"type":"string"},"ipType":{"type":"string","description":"Libellé d'affichage ; ISP-hosted IP est un sous-type d'hébergement appartenant à un FAI, pas une garantie résidentielle/statique."},"ipUsage":{"type":"object","properties":{"code":{"type":"string","description":"Code d'usage stable, par exemple isp_hosted, hosting, residential_access, mobile, business, cdn, proxy, unknown."},"label":{"type":"string"},"baseType":{"type":"string"},"asnOwnerCategory":{"type":"string"}},"additionalProperties":true},"ipTypeAssessments":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"confidence":{"type":"number"},"scope":{"type":"string","enum":["ip","prefix","asn"]},"evidence":{"type":"array","items":{"type":"string"}},"sourceKeys":{"type":"array","items":{"type":"string"}}},"additionalProperties":true}},"native":{"type":"string"},"risk":{"type":"number"},"riskStatus":{"type":"string","description":"Vérifiez cela avant d'interpréter le risque. not_observed/inconnu n'est pas un certificat de bonne santé."},"riskConfidence":{"type":"number"},"riskComponents":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"contribution":{"type":"number"},"detail":{"type":"string"},"source":{"type":"string"}},"additionalProperties":true}},"observedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"additionalProperties":true,"description":"Renseignements IP ; des champs de preuve supplémentaires peuvent être ajoutés de manière compatible.","nullable":true},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"additionalProperties":true,"nullable":true}},"additionalProperties":true}}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Batch accepted; targets charged atomically."}}}},"400":{"description":"Paramètres invalides.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Clé API manquante, invalide, expirée, révoquée ou suspendue.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Portée ou forfait insuffisant.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Introuvable ou n'appartenant pas à ce client API.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Conflit d'idempotence, tâche expirée ou limite de tâches actives atteinte.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"La cible ne peut pas être résolue ou mesurée.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Limite de débit ou de quota atteinte ; les requêtes rejetées ne consomment aucune unité. Attendez selon l'en-tête Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Échec de traitement interne.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Échec de réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service ou source de données indisponible ; aucune unité débitée. Reculez selon Retry-After lorsqu'il est présent.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Délai d'attente dépassé pour la réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"free","x-docs-group":"batch"}},"/api/public/v1/batch/jobs/{id}":{"get":{"operationId":"_batch_jobs__id","summary":"État du traitement par lot","tags":["Public API","Batch Intelligence"],"description":"Seul le même client API peut lire ce travail. Les lectures de statut ne consomment pas d'unités de requête ; évitez l'interrogation rapide.\n\nPlan minimum : free. Portées requises : batch:read. Authentifiez-vous avec X-API-Key ou Authorization: Bearer. Les requêtes réussies coûtent une unité ; les requêtes échouées/rejetées coûtent zéro. Réinitialisation du quota à minuit UTC.","security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["batch:read"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true,"description":"Identifiant de tâche par lot, accessible uniquement au même client API."}],"responses":{"200":{"description":"Réponse réussie.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["queued","running","completed","completed_with_errors","failed"]},"inputCount":{"type":"integer"},"completedCount":{"type":"integer"},"successCount":{"type":"integer"},"errorCount":{"type":"integer"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"items":{"type":"array","items":{"type":"object","properties":{"position":{"type":"integer"},"target":{"type":"string"},"status":{"type":"string"},"result":{"type":"object","properties":{"ip":{"type":"string"},"input":{"type":"string"},"countryCode":{"type":"string"},"location":{"type":"string"},"asn":{"type":"integer","nullable":true},"asnName":{"type":"string"},"organization":{"type":"string"},"network":{"type":"string"},"ipType":{"type":"string","description":"Libellé d'affichage ; ISP-hosted IP est un sous-type d'hébergement appartenant à un FAI, pas une garantie résidentielle/statique."},"ipUsage":{"type":"object","properties":{"code":{"type":"string","description":"Code d'usage stable, par exemple isp_hosted, hosting, residential_access, mobile, business, cdn, proxy, unknown."},"label":{"type":"string"},"baseType":{"type":"string"},"asnOwnerCategory":{"type":"string"}},"additionalProperties":true},"ipTypeAssessments":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"confidence":{"type":"number"},"scope":{"type":"string","enum":["ip","prefix","asn"]},"evidence":{"type":"array","items":{"type":"string"}},"sourceKeys":{"type":"array","items":{"type":"string"}}},"additionalProperties":true}},"native":{"type":"string"},"risk":{"type":"number"},"riskStatus":{"type":"string","description":"Vérifiez cela avant d'interpréter le risque. not_observed/inconnu n'est pas un certificat de bonne santé."},"riskConfidence":{"type":"number"},"riskComponents":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"contribution":{"type":"number"},"detail":{"type":"string"},"source":{"type":"string"}},"additionalProperties":true}},"observedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"additionalProperties":true,"description":"Renseignements IP ; des champs de preuve supplémentaires peuvent être ajoutés de manière compatible.","nullable":true},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"additionalProperties":true,"nullable":true}},"additionalProperties":true}}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Paramètres invalides.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Clé API manquante, invalide, expirée, révoquée ou suspendue.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Portée ou forfait insuffisant.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Introuvable ou n'appartenant pas à ce client API.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Conflit d'idempotence, tâche expirée ou limite de tâches actives atteinte.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"La cible ne peut pas être résolue ou mesurée.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Limite de débit ou de quota atteinte ; les requêtes rejetées ne consomment aucune unité. Attendez selon l'en-tête Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Échec de traitement interne.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Échec de réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service ou source de données indisponible ; aucune unité débitée. Reculez selon Retry-After lorsqu'il est présent.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Délai d'attente dépassé pour la réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"free","x-docs-group":"batch"}},"/api/public/v1/batch/jobs/{id}/results":{"get":{"operationId":"_batch_jobs__id_results","summary":"Exporter les résultats du lot","tags":["Public API","Batch Intelligence"],"description":"Seul le même client API peut exporter ce travail. Les lectures de résultats ne consomment pas d'unités de requête ; JSON et CSV sont pris en charge.\n\nPlan minimum : free. Portées requises : batch:read. Authentifiez-vous avec X-API-Key ou Authorization: Bearer. Les requêtes réussies coûtent une unité ; les requêtes échouées/rejetées coûtent zéro. Réinitialisation du quota à minuit UTC.","parameters":[{"schema":{"type":"string","enum":["json","csv"],"default":"json"},"in":"query","name":"format","required":false,"description":"Format d'exportation."},{"schema":{"type":"string"},"in":"path","name":"id","required":true,"description":"Identifiant de tâche par lot, accessible uniquement au même client API."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["batch:read"],"responses":{"200":{"description":"Rapport JSON ou export CSV.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["queued","running","completed","completed_with_errors","failed"]},"inputCount":{"type":"integer"},"completedCount":{"type":"integer"},"successCount":{"type":"integer"},"errorCount":{"type":"integer"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"items":{"type":"array","items":{"type":"object","properties":{"position":{"type":"integer"},"target":{"type":"string"},"status":{"type":"string"},"result":{"type":"object","properties":{"ip":{"type":"string"},"input":{"type":"string"},"countryCode":{"type":"string"},"location":{"type":"string"},"asn":{"type":"integer","nullable":true},"asnName":{"type":"string"},"organization":{"type":"string"},"network":{"type":"string"},"ipType":{"type":"string","description":"Libellé d'affichage ; ISP-hosted IP est un sous-type d'hébergement appartenant à un FAI, pas une garantie résidentielle/statique."},"ipUsage":{"type":"object","properties":{"code":{"type":"string","description":"Code d'usage stable, par exemple isp_hosted, hosting, residential_access, mobile, business, cdn, proxy, unknown."},"label":{"type":"string"},"baseType":{"type":"string"},"asnOwnerCategory":{"type":"string"}},"additionalProperties":true},"ipTypeAssessments":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"confidence":{"type":"number"},"scope":{"type":"string","enum":["ip","prefix","asn"]},"evidence":{"type":"array","items":{"type":"string"}},"sourceKeys":{"type":"array","items":{"type":"string"}}},"additionalProperties":true}},"native":{"type":"string"},"risk":{"type":"number"},"riskStatus":{"type":"string","description":"Vérifiez cela avant d'interpréter le risque. not_observed/inconnu n'est pas un certificat de bonne santé."},"riskConfidence":{"type":"number"},"riskComponents":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"contribution":{"type":"number"},"detail":{"type":"string"},"source":{"type":"string"}},"additionalProperties":true}},"observedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"additionalProperties":true,"description":"Renseignements IP ; des champs de preuve supplémentaires peuvent être ajoutés de manière compatible.","nullable":true},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"additionalProperties":true,"nullable":true}},"additionalProperties":true}}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true}},"text/csv":{"schema":{"type":"string"}}}},"400":{"description":"Paramètres invalides.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Clé API manquante, invalide, expirée, révoquée ou suspendue.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Portée ou forfait insuffisant.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Introuvable ou n'appartenant pas à ce client API.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Conflit d'idempotence, tâche expirée ou limite de tâches actives atteinte.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"La cible ne peut pas être résolue ou mesurée.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Limite de débit ou de quota atteinte ; les requêtes rejetées ne consomment aucune unité. Attendez selon l'en-tête Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Échec de traitement interne.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Échec de réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service ou source de données indisponible ; aucune unité débitée. Reculez selon Retry-After lorsqu'il est présent.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Délai d'attente dépassé pour la réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"free","x-docs-group":"batch"}},"/api/public/v1/asn/{asn}":{"get":{"operationId":"_asn__asn","summary":"Informations ASN","tags":["Public API"],"description":"Les grands réseaux peuvent renvoyer de grands instantanés. Mettez en cache les réponses et vérifiez les métadonnées d'obsolescence et d'expiration.\n\nPlan minimum : free. Portées requises : asn:read. Authentifiez-vous avec X-API-Key ou Authorization: Bearer. Les requêtes réussies coûtent une unité ; les requêtes échouées/rejetées coûtent zéro. Réinitialisation du quota à minuit UTC.","security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["asn:read"],"parameters":[{"schema":{"type":"string"},"in":"path","name":"asn","required":true,"description":"Numéro de système autonome, p. ex. AS13335."}],"responses":{"200":{"description":"Réponse réussie.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"asn":{"type":"integer"},"name":{"type":"string"},"organization":{"type":"string"},"prefixes":{"type":"array","items":{"type":"object","properties":{"prefix":{"type":"string"},"ipVersion":{"type":"integer"}},"additionalProperties":true}},"observedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"stale":{"type":"boolean"},"cacheHit":{"type":"boolean"}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Paramètres invalides.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Clé API manquante, invalide, expirée, révoquée ou suspendue.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Portée ou forfait insuffisant.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Introuvable ou n'appartenant pas à ce client API.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Conflit d'idempotence, tâche expirée ou limite de tâches actives atteinte.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"La cible ne peut pas être résolue ou mesurée.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Limite de débit ou de quota atteinte ; les requêtes rejetées ne consomment aucune unité. Attendez selon l'en-tête Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Échec de traitement interne.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Échec de réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service ou source de données indisponible ; aucune unité débitée. Reculez selon Retry-After lorsqu'il est présent.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Délai d'attente dépassé pour la réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"free","x-docs-group":"bgp"}},"/api/public/v1/bgp/prefix":{"get":{"operationId":"_bgp_prefix","summary":"Préfixe BGP","tags":["Public API"],"description":"Renvoie les statistiques et la visibilité des préfixes BGP pour une fenêtre temporelle.\n\nPlan minimum : developer. Portées requises : bgp:read. Authentifiez-vous avec X-API-Key ou Authorization: Bearer. Les requêtes réussies coûtent une unité ; les requêtes échouées/rejetées coûtent zéro. Réinitialisation du quota à minuit UTC.","parameters":[{"schema":{"type":"string"},"in":"query","name":"prefix","required":true,"description":"CIDR IPv4 / IPv6, p. ex. 1.1.1.0/24."},{"schema":{"type":"integer","minimum":1,"maximum":744,"default":168},"in":"query","name":"hours","required":false,"description":"Fenêtre de rétrospection en heures."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["bgp:read"],"responses":{"200":{"description":"Réponse réussie.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"prefix":{"type":"string"},"points":{"type":"array","items":{"type":"object","properties":{"windowStart":{"type":"string","format":"date-time","nullable":true},"prefix":{"type":"string"},"announcementCount":{"type":"integer"},"withdrawalCount":{"type":"integer"},"visibleCollectors":{"type":"integer"},"visiblePeers":{"type":"integer"},"originAsns":{"type":"array","items":{"type":"integer"}},"lastObserved":{"type":"string","format":"date-time","nullable":true}},"additionalProperties":true}}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Paramètres invalides.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Clé API manquante, invalide, expirée, révoquée ou suspendue.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Portée ou forfait insuffisant.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Introuvable ou n'appartenant pas à ce client API.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Conflit d'idempotence, tâche expirée ou limite de tâches actives atteinte.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"La cible ne peut pas être résolue ou mesurée.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Limite de débit ou de quota atteinte ; les requêtes rejetées ne consomment aucune unité. Attendez selon l'en-tête Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Échec de traitement interne.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Échec de réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service ou source de données indisponible ; aucune unité débitée. Reculez selon Retry-After lorsqu'il est présent.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Délai d'attente dépassé pour la réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"developer","x-docs-group":"bgp"}},"/api/public/v1/bgp/history":{"get":{"operationId":"_bgp_history","summary":"Historique BGP","tags":["Public API","BGP Intelligence"],"description":"Renvoie les événements de route observés. L'absence d'observations ne prouve pas qu'aucun changement n'a eu lieu.\n\nPlan minimum : developer. Portées requises : bgp:read. Authentifiez-vous avec X-API-Key ou Authorization: Bearer. Les requêtes réussies coûtent une unité ; les requêtes échouées/rejetées coûtent zéro. Réinitialisation du quota à minuit UTC.","parameters":[{"schema":{"type":"string"},"in":"query","name":"prefix","required":true,"description":"CIDR IPv4 / IPv6, p. ex. 1.1.1.0/24."},{"schema":{"type":"integer","minimum":1,"maximum":744,"default":744},"in":"query","name":"hours","required":false,"description":"Fenêtre de rétrospection en heures."},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":200},"in":"query","name":"limit","required":false,"description":"Taille de page ou nombre maximal d'enregistrements renvoyés."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["bgp:read"],"responses":{"200":{"description":"Réponse réussie.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"prefix":{"type":"string"},"observed":{"type":"boolean"},"windowHours":{"type":"integer"},"events":{"type":"array","items":{"type":"object","properties":{"eventType":{"type":"string"},"prefix":{"type":"string"},"originAsn":{"type":"integer"},"observedAt":{"type":"string","format":"date-time"}},"additionalProperties":true}}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Paramètres invalides.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Clé API manquante, invalide, expirée, révoquée ou suspendue.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Portée ou forfait insuffisant.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Introuvable ou n'appartenant pas à ce client API.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Conflit d'idempotence, tâche expirée ou limite de tâches actives atteinte.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"La cible ne peut pas être résolue ou mesurée.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Limite de débit ou de quota atteinte ; les requêtes rejetées ne consomment aucune unité. Attendez selon l'en-tête Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Échec de traitement interne.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Échec de réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service ou source de données indisponible ; aucune unité débitée. Reculez selon Retry-After lorsqu'il est présent.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Délai d'attente dépassé pour la réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"developer","x-docs-group":"bgp"}},"/api/public/v1/bgp/asn/{asn}/edges":{"get":{"operationId":"_bgp_asn__asn_edges","summary":"Adjacences ASN","tags":["Public API"],"description":"Renvoie les ASN voisins observés et leurs relations.\n\nPlan minimum : developer. Portées requises : bgp:read. Authentifiez-vous avec X-API-Key ou Authorization: Bearer. Les requêtes réussies coûtent une unité ; les requêtes échouées/rejetées coûtent zéro. Réinitialisation du quota à minuit UTC.","parameters":[{"schema":{"type":"integer","minimum":1,"maximum":365,"default":31},"in":"query","name":"days","required":false,"description":"Fenêtre de rétrospection en jours."},{"schema":{"type":"string"},"in":"path","name":"asn","required":true,"description":"Numéro de système autonome, p. ex. AS13335."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["bgp:read"],"responses":{"200":{"description":"Réponse réussie.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"asn":{"type":"integer"},"edges":{"type":"array","items":{"type":"object","properties":{"neighbourAsn":{"type":"integer"},"relationship":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Paramètres invalides.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Clé API manquante, invalide, expirée, révoquée ou suspendue.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Portée ou forfait insuffisant.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Introuvable ou n'appartenant pas à ce client API.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Conflit d'idempotence, tâche expirée ou limite de tâches actives atteinte.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"La cible ne peut pas être résolue ou mesurée.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Limite de débit ou de quota atteinte ; les requêtes rejetées ne consomment aucune unité. Attendez selon l'en-tête Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Échec de traitement interne.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Échec de réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service ou source de données indisponible ; aucune unité débitée. Reculez selon Retry-After lorsqu'il est présent.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Délai d'attente dépassé pour la réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"developer","x-docs-group":"bgp"}},"/api/public/v1/ip/{target}":{"get":{"operationId":"_ip__target","summary":"Informations IP","tags":["Public API"],"description":"Renvoie la propriété de l'IP, la classification d'usage et les preuves de risque. Vérifiez le statut de risque et les horodatages des preuves ; inconnu ne signifie pas sûr.\n\nPlan minimum : free. Portées requises : ip:read. Authentifiez-vous avec X-API-Key ou Authorization: Bearer. Les requêtes réussies coûtent une unité ; les requêtes échouées/rejetées coûtent zéro. Réinitialisation du quota à minuit UTC.","parameters":[{"schema":{"type":"string"},"in":"path","name":"target","required":true,"description":"IPv4, IPv6 ou nom d'hôte."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["ip:read"],"responses":{"200":{"description":"Réponse réussie.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"ip":{"type":"string"},"input":{"type":"string"},"countryCode":{"type":"string"},"location":{"type":"string"},"asn":{"type":"integer","nullable":true},"asnName":{"type":"string"},"organization":{"type":"string"},"network":{"type":"string"},"ipType":{"type":"string","description":"Libellé d'affichage ; ISP-hosted IP est un sous-type d'hébergement appartenant à un FAI, pas une garantie résidentielle/statique."},"ipUsage":{"type":"object","properties":{"code":{"type":"string","description":"Code d'usage stable, par exemple isp_hosted, hosting, residential_access, mobile, business, cdn, proxy, unknown."},"label":{"type":"string"},"baseType":{"type":"string"},"asnOwnerCategory":{"type":"string"}},"additionalProperties":true},"ipTypeAssessments":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"confidence":{"type":"number"},"scope":{"type":"string","enum":["ip","prefix","asn"]},"evidence":{"type":"array","items":{"type":"string"}},"sourceKeys":{"type":"array","items":{"type":"string"}}},"additionalProperties":true}},"native":{"type":"string"},"risk":{"type":"number"},"riskStatus":{"type":"string","description":"Vérifiez cela avant d'interpréter le risque. not_observed/inconnu n'est pas un certificat de bonne santé."},"riskConfidence":{"type":"number"},"riskComponents":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"contribution":{"type":"number"},"detail":{"type":"string"},"source":{"type":"string"}},"additionalProperties":true}},"observedAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"additionalProperties":true,"description":"Renseignements IP ; des champs de preuve supplémentaires peuvent être ajoutés de manière compatible."},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Paramètres invalides.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Clé API manquante, invalide, expirée, révoquée ou suspendue.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Portée ou forfait insuffisant.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Introuvable ou n'appartenant pas à ce client API.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Conflit d'idempotence, tâche expirée ou limite de tâches actives atteinte.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"La cible ne peut pas être résolue ou mesurée.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Limite de débit ou de quota atteinte ; les requêtes rejetées ne consomment aucune unité. Attendez selon l'en-tête Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Échec de traitement interne.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Échec de réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service ou source de données indisponible ; aucune unité débitée. Reculez selon Retry-After lorsqu'il est présent.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Délai d'attente dépassé pour la réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"free","x-docs-group":"ip"}},"/api/public/v1/ip/{target}/segment":{"get":{"operationId":"_ip__target_segment","summary":"Segment IP","tags":["Public API"],"description":"Recherche le profil du segment IP. Les preuves au niveau du préfixe ne sont pas une observation directe de l'IP individuelle.\n\nPlan minimum : developer. Portées requises : history:read. Authentifiez-vous avec X-API-Key ou Authorization: Bearer. Les requêtes réussies coûtent une unité ; les requêtes échouées/rejetées coûtent zéro. Réinitialisation du quota à minuit UTC.","parameters":[{"schema":{"type":"string"},"in":"path","name":"target","required":true,"description":"IPv4, IPv6 ou nom d'hôte."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["history:read"],"responses":{"200":{"description":"Réponse réussie.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"target":{"type":"string"},"profile":{"type":"object","properties":{"prefix":{"type":"string"}},"additionalProperties":true}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Paramètres invalides.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Clé API manquante, invalide, expirée, révoquée ou suspendue.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Portée ou forfait insuffisant.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Introuvable ou n'appartenant pas à ce client API.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Conflit d'idempotence, tâche expirée ou limite de tâches actives atteinte.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"La cible ne peut pas être résolue ou mesurée.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Limite de débit ou de quota atteinte ; les requêtes rejetées ne consomment aucune unité. Attendez selon l'en-tête Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Échec de traitement interne.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Échec de réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service ou source de données indisponible ; aucune unité débitée. Reculez selon Retry-After lorsqu'il est présent.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Délai d'attente dépassé pour la réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"developer","x-docs-group":"ip"}},"/api/public/v1/ip/{target}/history":{"get":{"operationId":"_ip__target_history","summary":"Historique IP","tags":["Public API"],"description":"Renvoie les changements collectés d'ASN, d'organisation, de localisation et d'enregistrement, pas un historique exhaustif.\n\nPlan minimum : developer. Portées requises : history:read. Authentifiez-vous avec X-API-Key ou Authorization: Bearer. Les requêtes réussies coûtent une unité ; les requêtes échouées/rejetées coûtent zéro. Réinitialisation du quota à minuit UTC.","parameters":[{"schema":{"type":"string"},"in":"path","name":"target","required":true,"description":"IPv4, IPv6 ou nom d'hôte."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["history:read"],"responses":{"200":{"description":"Réponse réussie.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"target":{"type":"string"},"asn":{"type":"array","items":{"type":"object","properties":{"asn":{"type":"integer"}},"additionalProperties":true}},"organization":{"type":"array","items":{"type":"object","properties":{"organization":{"type":"string"}},"additionalProperties":true}},"location":{"type":"array","items":{"type":"object","properties":{"location":{"type":"string"}},"additionalProperties":true}},"registration":{"type":"array","items":{"type":"object","properties":{"cidr":{"type":"string"}},"additionalProperties":true}}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Paramètres invalides.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Clé API manquante, invalide, expirée, révoquée ou suspendue.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Portée ou forfait insuffisant.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Introuvable ou n'appartenant pas à ce client API.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Conflit d'idempotence, tâche expirée ou limite de tâches actives atteinte.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"La cible ne peut pas être résolue ou mesurée.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Limite de débit ou de quota atteinte ; les requêtes rejetées ne consomment aucune unité. Attendez selon l'en-tête Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Échec de traitement interne.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Échec de réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service ou source de données indisponible ; aucune unité débitée. Reculez selon Retry-After lorsqu'il est présent.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Délai d'attente dépassé pour la réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"developer","x-docs-group":"ip"}},"/api/public/v1/privacy-network":{"get":{"operationId":"_privacy_network","summary":"Réseaux de confidentialité","tags":["Public API","IP Intelligence"],"description":"Renvoie les preuves de réseau privé et d'attributs réseau, y compris les signaux de proxy, VPN et Tor. Vérifiez le statut, la confiance et la fraîcheur ensemble.\n\nPlan minimum : developer. Portées requises : privacy:read. Authentifiez-vous avec X-API-Key ou Authorization: Bearer. Les requêtes réussies coûtent une unité ; les requêtes échouées/rejetées coûtent zéro. Réinitialisation du quota à minuit UTC.","parameters":[{"schema":{"type":"string"},"in":"query","name":"target","required":true,"description":"IPv4, IPv6 ou nom d'hôte."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["privacy:read"],"responses":{"200":{"description":"Réponse réussie.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"target":{"type":"string"},"normalizedTarget":{"type":"string"},"ipType":{"type":"string"},"privacy":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"status":{"type":"string"},"confidence":{"type":"number","nullable":true},"evidence":{"type":"array","items":{"type":"string"}},"sourceKeys":{"type":"array","items":{"type":"string"}}},"additionalProperties":true}},"network":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"status":{"type":"string"},"confidence":{"type":"number","nullable":true}},"additionalProperties":true}},"observedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"stale":{"type":"boolean"}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Paramètres invalides.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Clé API manquante, invalide, expirée, révoquée ou suspendue.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Portée ou forfait insuffisant.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Introuvable ou n'appartenant pas à ce client API.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Conflit d'idempotence, tâche expirée ou limite de tâches actives atteinte.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"La cible ne peut pas être résolue ou mesurée.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Limite de débit ou de quota atteinte ; les requêtes rejetées ne consomment aucune unité. Attendez selon l'en-tête Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Échec de traitement interne.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Échec de réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service ou source de données indisponible ; aucune unité débitée. Reculez selon Retry-After lorsqu'il est présent.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Délai d'attente dépassé pour la réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"developer","x-docs-group":"ip"}},"/api/public/v1/threat/ip":{"get":{"operationId":"_threat_ip","summary":"Indices de menaces liés à une IP","tags":["Public API","Threat Intelligence"],"description":"not_observed signifie aucune preuve correspondante dans les sources couvertes, pas une garantie qu'une IP est sûre.\n\nPlan minimum : developer. Portées requises : threat:read. Authentifiez-vous avec X-API-Key ou Authorization: Bearer. Les requêtes réussies coûtent une unité ; les requêtes échouées/rejetées coûtent zéro. Réinitialisation du quota à minuit UTC.","parameters":[{"schema":{"type":"string"},"in":"query","name":"target","required":true,"description":"Adresse IPv4 ou IPv6."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["threat:read"],"responses":{"200":{"description":"Réponse réussie.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"target":{"type":"string"},"status":{"type":"string"},"riskScore":{"type":"number","nullable":true},"confidence":{"type":"number","nullable":true},"publicMatches":{"type":"array","items":{"type":"object","properties":{"sourceKey":{"type":"string"}},"additionalProperties":true}},"sources":{"type":"array","items":{"type":"object","properties":{"sourceKey":{"type":"string"},"fresh":{"type":"boolean"},"matched":{"type":"boolean"},"observedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"}},"additionalProperties":true}}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Paramètres invalides.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Clé API manquante, invalide, expirée, révoquée ou suspendue.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Portée ou forfait insuffisant.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Introuvable ou n'appartenant pas à ce client API.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Conflit d'idempotence, tâche expirée ou limite de tâches actives atteinte.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"La cible ne peut pas être résolue ou mesurée.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Limite de débit ou de quota atteinte ; les requêtes rejetées ne consomment aucune unité. Attendez selon l'en-tête Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Échec de traitement interne.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Échec de réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service ou source de données indisponible ; aucune unité débitée. Reculez selon Retry-After lorsqu'il est présent.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Délai d'attente dépassé pour la réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"developer","x-docs-group":"threat"}},"/api/public/v1/threat/c2":{"get":{"operationId":"_threat_c2","summary":"Flux C2","tags":["Public API","Threat Intelligence"],"description":"Nécessite un accès Pro+ et une autorisation de distribution de production activée. Les déploiements désactivés renvoient 503 sans facturation.\n\nPlan minimum : pro. Portées requises : c2:read. Authentifiez-vous avec X-API-Key ou Authorization: Bearer. Les requêtes réussies coûtent une unité ; les requêtes échouées/rejetées coûtent zéro. Réinitialisation du quota à minuit UTC.","parameters":[{"schema":{"type":"string","enum":["all","online","offline","unknown"],"default":"all"},"in":"query","name":"status","required":false,"description":"Filtre d'état en ligne C2."},{"schema":{"type":"string","maxLength":80},"in":"query","name":"malware","required":false,"description":"Filtre de famille de logiciels malveillants."},{"schema":{"type":"string","pattern":"^[A-Za-z]{2}$"},"in":"query","name":"country","required":false,"description":"Code pays à deux lettres, p. ex. US."},{"schema":{"type":"string","maxLength":120},"in":"query","name":"q","required":false,"description":"Recherche par IP, ASN, nom de réseau ou famille de logiciels malveillants."},{"schema":{"type":"integer","minimum":1,"maximum":10000,"default":1},"in":"query","name":"page","required":false,"description":"Numéro de page, commençant à 1."},{"schema":{"type":"integer","minimum":10,"maximum":100,"default":50},"in":"query","name":"limit","required":false,"description":"Taille de page ou nombre maximal d'enregistrements renvoyés."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["c2:read"],"responses":{"200":{"description":"Réponse réussie.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"ip":{"type":"string"},"port":{"type":"integer"},"malware":{"type":"string"}},"additionalProperties":true}},"page":{"type":"integer"},"limit":{"type":"integer"}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Paramètres invalides.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Clé API manquante, invalide, expirée, révoquée ou suspendue.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Portée ou forfait insuffisant.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Introuvable ou n'appartenant pas à ce client API.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Conflit d'idempotence, tâche expirée ou limite de tâches actives atteinte.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"La cible ne peut pas être résolue ou mesurée.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Limite de débit ou de quota atteinte ; les requêtes rejetées ne consomment aucune unité. Attendez selon l'en-tête Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Échec de traitement interne.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Échec de réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service ou source de données indisponible ; aucune unité débitée. Reculez selon Retry-After lorsqu'il est présent.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Délai d'attente dépassé pour la réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"pro","x-docs-group":"threat"}},"/api/public/v1/threat/activity":{"get":{"operationId":"_threat_activity","summary":"Activité des menaces","tags":["Public API","Threat Intelligence"],"description":"Renvoie les statistiques de menace observées par catégorie d'activité et fenêtre temporelle.\n\nPlan minimum : pro. Portées requises : threat:analytics. Authentifiez-vous avec X-API-Key ou Authorization: Bearer. Les requêtes réussies coûtent une unité ; les requêtes échouées/rejetées coûtent zéro. Réinitialisation du quota à minuit UTC.","parameters":[{"schema":{"type":"string","enum":["scanner","brute_force","web_attack"]},"in":"query","name":"category","required":true,"description":"Catégorie de menace : balayage, force brute ou attaques web."},{"schema":{"type":"string","enum":["1d","7d","30d","90d"],"default":"90d"},"in":"query","name":"window","required":false,"description":"Fenêtre de rétrospection."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["threat:analytics"],"responses":{"200":{"description":"Réponse réussie.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"category":{"type":"string"},"windowDays":{"type":"integer"},"status":{"type":"string"},"eventCount":{"type":"integer"},"topSources":{"type":"array","items":{"type":"object","properties":{"ip":{"type":"string"},"eventCount":{"type":"integer"}},"additionalProperties":true}},"timeline":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string"},"eventCount":{"type":"integer"},"sourceCount":{"type":"integer"}},"additionalProperties":true}},"generatedAt":{"type":"string","format":"date-time"}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Paramètres invalides.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Clé API manquante, invalide, expirée, révoquée ou suspendue.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Portée ou forfait insuffisant.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Introuvable ou n'appartenant pas à ce client API.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Conflit d'idempotence, tâche expirée ou limite de tâches actives atteinte.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"La cible ne peut pas être résolue ou mesurée.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Limite de débit ou de quota atteinte ; les requêtes rejetées ne consomment aucune unité. Attendez selon l'en-tête Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Échec de traitement interne.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Échec de réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service ou source de données indisponible ; aucune unité débitée. Reculez selon Retry-After lorsqu'il est présent.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Délai d'attente dépassé pour la réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"pro","x-docs-group":"threat"}},"/api/public/v1/threat/trends":{"get":{"operationId":"_threat_trends","summary":"Tendances des menaces","tags":["Public API","Threat Intelligence"],"description":"Renvoie les tendances de menace observées dans la fenêtre temporelle sélectionnée.\n\nPlan minimum : pro. Portées requises : threat:analytics. Authentifiez-vous avec X-API-Key ou Authorization: Bearer. Les requêtes réussies coûtent une unité ; les requêtes échouées/rejetées coûtent zéro. Réinitialisation du quota à minuit UTC.","parameters":[{"schema":{"type":"string","enum":["1d","7d","30d","90d"],"default":"90d"},"in":"query","name":"window","required":false,"description":"Fenêtre de rétrospection."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["threat:analytics"],"responses":{"200":{"description":"Réponse réussie.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"windowDays":{"type":"integer"},"status":{"type":"string"},"eventCount":{"type":"integer"},"timeline":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"eventCount":{"type":"integer"},"sourceCount":{"type":"integer"}},"additionalProperties":true}},"categories":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string"},"eventCount":{"type":"integer"}},"additionalProperties":true}}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Paramètres invalides.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Clé API manquante, invalide, expirée, révoquée ou suspendue.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Portée ou forfait insuffisant.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Introuvable ou n'appartenant pas à ce client API.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Conflit d'idempotence, tâche expirée ou limite de tâches actives atteinte.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"La cible ne peut pas être résolue ou mesurée.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Limite de débit ou de quota atteinte ; les requêtes rejetées ne consomment aucune unité. Attendez selon l'en-tête Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Échec de traitement interne.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Échec de réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service ou source de données indisponible ; aucune unité débitée. Reculez selon Retry-After lorsqu'il est présent.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Délai d'attente dépassé pour la réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"pro","x-docs-group":"threat"}},"/api/public/v1/tools/dns":{"get":{"operationId":"_tools_dns","summary":"Recherche DNS","tags":["Public API","Network Tools"],"description":"Interroge les enregistrements DNS du type sélectionné, reflétant la réponse de la requête côté serveur.\n\nPlan minimum : free. Portées requises : dns:read. Authentifiez-vous avec X-API-Key ou Authorization: Bearer. Les requêtes réussies coûtent une unité ; les requêtes échouées/rejetées coûtent zéro. Réinitialisation du quota à minuit UTC.","parameters":[{"schema":{"type":"string"},"in":"query","name":"target","required":true,"description":"Nom de requête DNS ; utilisez un nom de recherche inversée pour les enregistrements PTR."},{"schema":{"type":"string","enum":["A","AAAA","CNAME","MX","NS","TXT","CAA","SOA","SRV","PTR"],"default":"A"},"in":"query","name":"type","required":false,"description":"Type d'enregistrement DNS."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["dns:read"],"responses":{"200":{"description":"Réponse réussie.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"target":{"type":"string"},"queryType":{"type":"string"},"status":{"type":"string"},"records":{"type":"array","items":{}},"queriedAt":{"type":"string","format":"date-time"}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Paramètres invalides.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Clé API manquante, invalide, expirée, révoquée ou suspendue.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Portée ou forfait insuffisant.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Introuvable ou n'appartenant pas à ce client API.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Conflit d'idempotence, tâche expirée ou limite de tâches actives atteinte.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"La cible ne peut pas être résolue ou mesurée.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Limite de débit ou de quota atteinte ; les requêtes rejetées ne consomment aucune unité. Attendez selon l'en-tête Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Échec de traitement interne.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Échec de réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service ou source de données indisponible ; aucune unité débitée. Reculez selon Retry-After lorsqu'il est présent.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Délai d'attente dépassé pour la réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"free","x-docs-group":"tools"}},"/api/public/v1/tools/reverse-ip":{"get":{"operationId":"_tools_reverse_ip","summary":"Recherche IP inversée","tags":["Public API","Network Tools"],"description":"Nécessite une source DNS passif configurée par l'opérateur. Une source manquante ou indisponible renvoie 503, pas un succès vide fabriqué.\n\nPlan minimum : free. Portées requises : dns:read. Authentifiez-vous avec X-API-Key ou Authorization: Bearer. Les requêtes réussies coûtent une unité ; les requêtes échouées/rejetées coûtent zéro. Réinitialisation du quota à minuit UTC.","parameters":[{"schema":{"type":"string"},"in":"query","name":"target","required":true,"description":"Adresse IPv4 ou IPv6."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["dns:read"],"responses":{"200":{"description":"Réponse réussie.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"target":{"type":"string"},"status":{"type":"string","enum":["resolved","no_records"]},"domains":{"type":"array","items":{"type":"string"}},"queriedAt":{"type":"string","format":"date-time"}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Paramètres invalides.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Clé API manquante, invalide, expirée, révoquée ou suspendue.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Portée ou forfait insuffisant.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Introuvable ou n'appartenant pas à ce client API.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Conflit d'idempotence, tâche expirée ou limite de tâches actives atteinte.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"La cible ne peut pas être résolue ou mesurée.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Limite de débit ou de quota atteinte ; les requêtes rejetées ne consomment aucune unité. Attendez selon l'en-tête Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Échec de traitement interne.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Échec de réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service ou source de données indisponible ; aucune unité débitée. Reculez selon Retry-After lorsqu'il est présent.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Délai d'attente dépassé pour la réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"free","x-docs-group":"tools"}},"/api/public/v1/tools/cname-chain":{"get":{"operationId":"_tools_cname_chain","summary":"Chaîne CNAME","tags":["Public API","Network Tools"],"description":"Recherche la chaîne de résolution CNAME pour un domaine.\n\nPlan minimum : free. Portées requises : dns:read. Authentifiez-vous avec X-API-Key ou Authorization: Bearer. Les requêtes réussies coûtent une unité ; les requêtes échouées/rejetées coûtent zéro. Réinitialisation du quota à minuit UTC.","parameters":[{"schema":{"type":"string"},"in":"query","name":"target","required":true,"description":"Nom de domaine, p. ex. example.com."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["dns:read"],"responses":{"200":{"description":"Réponse réussie.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"target":{"type":"string"},"queryType":{"type":"string"},"status":{"type":"string"},"records":{"type":"array","items":{}},"queriedAt":{"type":"string","format":"date-time"}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Paramètres invalides.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Clé API manquante, invalide, expirée, révoquée ou suspendue.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Portée ou forfait insuffisant.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Introuvable ou n'appartenant pas à ce client API.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Conflit d'idempotence, tâche expirée ou limite de tâches actives atteinte.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"La cible ne peut pas être résolue ou mesurée.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Limite de débit ou de quota atteinte ; les requêtes rejetées ne consomment aucune unité. Attendez selon l'en-tête Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Échec de traitement interne.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Échec de réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service ou source de données indisponible ; aucune unité débitée. Reculez selon Retry-After lorsqu'il est présent.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Délai d'attente dépassé pour la réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"free","x-docs-group":"tools"}},"/api/public/v1/tools/network-probe":{"post":{"operationId":"_tools_network_probe","summary":"Ping / MTR distribué","tags":["Public API","Network Tools"],"description":"Les mesures proviennent de nœuds de sonde distribués, pas de l'IP de l'appelant. La capacité du fournisseur peut être partagée.\n\nPlan minimum : pro. Portées requises : probes:run. Authentifiez-vous avec X-API-Key ou Authorization: Bearer. Les requêtes réussies coûtent une unité ; les requêtes échouées/rejetées coûtent zéro. Réinitialisation du quota à minuit UTC.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"target":{"type":"string","description":"Adresse IP publique ou nom d'hôte."},"mode":{"type":"string","enum":["ping","mtr"],"description":"Mode de sonde : ping ou mtr."}},"required":["target","mode"]}}}},"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["probes:run"],"responses":{"200":{"description":"Réponse réussie.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"target":{"type":"string"},"mode":{"type":"string"},"status":{"type":"string"},"results":{"type":"array","items":{"type":"object","properties":{"node":{"type":"object","properties":{"country":{"type":"string"},"city":{"type":"string"}},"additionalProperties":true},"status":{"type":"string"},"stats":{"type":"object","properties":{"avgMs":{"type":"number","nullable":true},"lossPercent":{"type":"number"}},"additionalProperties":true,"nullable":true}},"additionalProperties":true}},"cached":{"type":"boolean"}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Paramètres invalides.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Clé API manquante, invalide, expirée, révoquée ou suspendue.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Portée ou forfait insuffisant.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Introuvable ou n'appartenant pas à ce client API.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Conflit d'idempotence, tâche expirée ou limite de tâches actives atteinte.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"La cible ne peut pas être résolue ou mesurée.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Limite de débit ou de quota atteinte ; les requêtes rejetées ne consomment aucune unité. Attendez selon l'en-tête Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Échec de traitement interne.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Échec de réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service ou source de données indisponible ; aucune unité débitée. Reculez selon Retry-After lorsqu'il est présent.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Délai d'attente dépassé pour la réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"pro","x-docs-group":"tools"}},"/api/public/v1/tools/tcp":{"post":{"operationId":"_tools_tcp","summary":"Connectivité TCP","tags":["Public API","Network Tools"],"description":"Cibles publiques uniquement. Mesuré depuis le serveur CHA.LA, pas depuis le réseau de l'appelant.\n\nPlan minimum : pro. Portées requises : probes:run. Authentifiez-vous avec X-API-Key ou Authorization: Bearer. Les requêtes réussies coûtent une unité ; les requêtes échouées/rejetées coûtent zéro. Réinitialisation du quota à minuit UTC.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"target":{"type":"string","description":"Adresse IP publique ou nom d'hôte."},"port":{"type":"integer","minimum":1,"maximum":65535,"description":"Port TCP cible."}},"required":["target","port"]}}}},"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["probes:run"],"responses":{"200":{"description":"Réponse réussie.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"target":{"type":"string"},"port":{"type":"integer"},"results":{"type":"array","items":{"type":"object","properties":{"address":{"type":"string"},"status":{"type":"string"},"latencyMs":{"type":"number"}},"additionalProperties":true}},"cached":{"type":"boolean"}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Paramètres invalides.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Clé API manquante, invalide, expirée, révoquée ou suspendue.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Portée ou forfait insuffisant.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Introuvable ou n'appartenant pas à ce client API.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Conflit d'idempotence, tâche expirée ou limite de tâches actives atteinte.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"La cible ne peut pas être résolue ou mesurée.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Limite de débit ou de quota atteinte ; les requêtes rejetées ne consomment aucune unité. Attendez selon l'en-tête Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Échec de traitement interne.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Échec de réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service ou source de données indisponible ; aucune unité débitée. Reculez selon Retry-After lorsqu'il est présent.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Délai d'attente dépassé pour la réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"pro","x-docs-group":"tools"}},"/api/public/v1/tools/http-tls":{"post":{"operationId":"_tools_http_tls","summary":"HTTP et TLS","tags":["Public API","Network Tools"],"description":"Cibles HTTP(S) publiques uniquement ; les destinations privées et les redirections non sécurisées sont rejetées.\n\nPlan minimum : pro. Portées requises : probes:run. Authentifiez-vous avec X-API-Key ou Authorization: Bearer. Les requêtes réussies coûtent une unité ; les requêtes échouées/rejetées coûtent zéro. Réinitialisation du quota à minuit UTC.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"target":{"type":"string","format":"uri","description":"URL HTTP(S) publique."}},"required":["target"]}}}},"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["probes:run"],"responses":{"200":{"description":"Réponse réussie.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"target":{"type":"string"},"redirectCount":{"type":"integer"},"steps":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"statusCode":{"type":"integer","nullable":true},"errorCode":{"type":"string","nullable":true}},"additionalProperties":true}},"tls":{"type":"object","properties":{"authorized":{"type":"boolean"}},"additionalProperties":true,"nullable":true},"cached":{"type":"boolean"}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Paramètres invalides.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Clé API manquante, invalide, expirée, révoquée ou suspendue.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Portée ou forfait insuffisant.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Introuvable ou n'appartenant pas à ce client API.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Conflit d'idempotence, tâche expirée ou limite de tâches actives atteinte.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"La cible ne peut pas être résolue ou mesurée.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Limite de débit ou de quota atteinte ; les requêtes rejetées ne consomment aucune unité. Attendez selon l'en-tête Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Échec de traitement interne.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Échec de réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service ou source de données indisponible ; aucune unité débitée. Reculez selon Retry-After lorsqu'il est présent.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Délai d'attente dépassé pour la réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"pro","x-docs-group":"tools"}},"/api/public/v1/bgp/routes":{"get":{"operationId":"_bgp_routes","summary":"Routes BGP","tags":["Public API","BGP Intelligence"],"description":"Recherche dans les routes collectées et les chemins AS avec pagination.\n\nPlan minimum : developer. Portées requises : bgp:read. Authentifiez-vous avec X-API-Key ou Authorization: Bearer. Les requêtes réussies coûtent une unité ; les requêtes échouées/rejetées coûtent zéro. Réinitialisation du quota à minuit UTC.","parameters":[{"schema":{"type":"string"},"in":"query","name":"target","required":true,"description":"Adresse IP, préfixe CIDR ou ASN."},{"schema":{"type":"integer","minimum":1,"default":1},"in":"query","name":"page","required":false,"description":"Numéro de page, commençant à 1."},{"schema":{"type":"integer","minimum":10,"maximum":100,"default":50},"in":"query","name":"limit","required":false,"description":"Taille de page ou nombre maximal d'enregistrements renvoyés."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["bgp:read"],"responses":{"200":{"description":"Réponse réussie.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"target":{"type":"string"},"normalizedTarget":{"type":"string"},"observed":{"type":"boolean"},"match":{"type":"object","properties":{"prefix":{"type":"string"},"originAsns":{"type":"array","items":{"type":"integer"}},"lastObserved":{"type":"string","format":"date-time"}},"additionalProperties":true,"nullable":true},"routes":{"type":"array","items":{"type":"object","properties":{"prefix":{"type":"string"},"originAsn":{"type":"integer"},"asPath":{"type":"string"},"observedAt":{"type":"string","format":"date-time"}},"additionalProperties":true}},"page":{"type":"integer"},"limit":{"type":"integer"}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Paramètres invalides.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Clé API manquante, invalide, expirée, révoquée ou suspendue.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Portée ou forfait insuffisant.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Introuvable ou n'appartenant pas à ce client API.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Conflit d'idempotence, tâche expirée ou limite de tâches actives atteinte.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"La cible ne peut pas être résolue ou mesurée.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Limite de débit ou de quota atteinte ; les requêtes rejetées ne consomment aucune unité. Attendez selon l'en-tête Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Échec de traitement interne.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Échec de réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service ou source de données indisponible ; aucune unité débitée. Reculez selon Retry-After lorsqu'il est présent.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Délai d'attente dépassé pour la réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"developer","x-docs-group":"bgp"}},"/api/public/v1/rpki/validate":{"get":{"operationId":"_rpki_validate","summary":"Validation RPKI","tags":["Public API","BGP Intelligence"],"description":"La validation utilise des instantanés. Vérifiez les indicateurs d'expiration et d'obsolescence pour chaque validation ; l'absence de preuve ne doit pas être interprétée comme valide.\n\nPlan minimum : free. Portées requises : registration:read. Authentifiez-vous avec X-API-Key ou Authorization: Bearer. Les requêtes réussies coûtent une unité ; les requêtes échouées/rejetées coûtent zéro. Réinitialisation du quota à minuit UTC.","parameters":[{"schema":{"type":"string"},"in":"query","name":"target","required":true,"description":"Adresse IP ou préfixe CIDR."},{"schema":{"type":"string"},"in":"query","name":"asn","required":false,"description":"Numéro de système autonome, p. ex. AS13335."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["registration:read"],"responses":{"200":{"description":"Réponse réussie.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"target":{"type":"string"},"prefix":{"type":"string","nullable":true},"requestedOrigin":{"type":"integer","nullable":true},"overallStatus":{"type":"string","enum":["valid","invalid","mixed","unknown","no_origin"]},"routeLookupAvailable":{"type":"boolean"},"validations":{"type":"array","items":{"type":"object","properties":{"prefix":{"type":"string"},"originAsn":{"type":"integer"},"status":{"type":"string"},"observedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"stale":{"type":"boolean"},"cacheHit":{"type":"boolean"}},"additionalProperties":true}}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Paramètres invalides.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Clé API manquante, invalide, expirée, révoquée ou suspendue.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Portée ou forfait insuffisant.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Introuvable ou n'appartenant pas à ce client API.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Conflit d'idempotence, tâche expirée ou limite de tâches actives atteinte.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"La cible ne peut pas être résolue ou mesurée.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Limite de débit ou de quota atteinte ; les requêtes rejetées ne consomment aucune unité. Attendez selon l'en-tête Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Échec de traitement interne.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Échec de réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service ou source de données indisponible ; aucune unité débitée. Reculez selon Retry-After lorsqu'il est présent.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Délai d'attente dépassé pour la réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"free","x-docs-group":"bgp"}},"/api/public/v1/rdap/lookup":{"get":{"operationId":"_rdap_lookup","summary":"Informations d’enregistrement RDAP","tags":["Public API","Network Intelligence"],"description":"Recherche les informations d'enregistrement pour une IP, un CIDR ou un ASN. Vérifiez les horodatages de cache et d'instantané.\n\nPlan minimum : free. Portées requises : registration:read. Authentifiez-vous avec X-API-Key ou Authorization: Bearer. Les requêtes réussies coûtent une unité ; les requêtes échouées/rejetées coûtent zéro. Réinitialisation du quota à minuit UTC.","parameters":[{"schema":{"type":"string"},"in":"query","name":"target","required":true,"description":"Adresse IP, préfixe CIDR ou ASN."}],"security":[{"apiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["registration:read"],"responses":{"200":{"description":"Réponse réussie.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"target":{"type":"string"},"normalizedTarget":{"type":"string"},"targetKind":{"type":"string"},"found":{"type":"boolean"},"rir":{"type":"string"},"name":{"type":"string","nullable":true},"cidrs":{"type":"array","items":{"type":"string"}},"nameservers":{"type":"array","items":{"type":"string"}},"entities":{"type":"array","items":{"type":"object","properties":{"handle":{"type":"string","nullable":true},"roles":{"type":"array","items":{"type":"string"}}},"additionalProperties":true}},"observedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"stale":{"type":"boolean"},"cacheHit":{"type":"boolean"}},"additionalProperties":true},"meta":{"type":"object","properties":{"provider":{"type":"string"},"plan":{"type":"string"},"chargedUnits":{"type":"integer"},"replayed":{"type":"boolean"}},"additionalProperties":true}},"additionalProperties":true,"description":"Successful response."}}}},"400":{"description":"Paramètres invalides.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Invalid parameters."}}}},"401":{"description":"Clé API manquante, invalide, expirée, révoquée ou suspendue.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Missing, expired, revoked or invalid API key."}}}},"403":{"description":"Portée ou forfait insuffisant.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Insufficient scope or plan."}}}},"404":{"description":"Introuvable ou n'appartenant pas à ce client API.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Not found or not owned by this client."}}}},"409":{"description":"Conflit d'idempotence, tâche expirée ou limite de tâches actives atteinte.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Idempotency conflict or active job limit."}}}},"422":{"description":"La cible ne peut pas être résolue ou mesurée.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Target cannot be resolved or measured."}}}},"429":{"description":"Limite de débit ou de quota atteinte ; les requêtes rejetées ne consomment aucune unité. Attendez selon l'en-tête Retry-After.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Rate or quota limit; rejected requests consume no usage units."}}}},"500":{"description":"Échec de traitement interne.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"502":{"description":"Échec de réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}},"503":{"description":"Service ou source de données indisponible ; aucune unité débitée. Reculez selon Retry-After lorsqu'il est présent.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Service/data source unavailable; no usage units charged."}}}},"504":{"description":"Délai d'attente dépassé pour la réponse en amont.","headers":{"X-Account-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités quotidiennes partagées du compte après admission ; les appels simultanés peuvent modifier cet instantané."},"X-Period-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes dans une période payante active, le cas échéant."},"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requêtes par clé par minute UTC."},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-Daily-Quota":{"schema":{"type":"integer"}},"X-Daily-Quota-Remaining":{"schema":{"type":"integer"},"description":"Unités restantes après admission ; les requêtes échouées sont libérées."},"Retry-After":{"schema":{"type":"integer"},"description":"Secondes avant de réessayer une requête limitée."}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Code d'erreur stable lisible par machine."},"message":{"type":"string"}},"additionalProperties":true,"description":"Request could not complete."}}}}},"x-minimum-plan":"free","x-docs-group":"tools"}}},"servers":[{"url":"https://www.cha.la"}],"x-documentation":{"locale":"fr","ui":{"explore":"Explorer l'intelligence IP","noScript":"JavaScript est désactivé. Utilisez la documentation OpenAPI.","pageTitle":"Documentation de l'API Intelligence IP · CHA.LA","metaDescription":"Documentation de l'API CHA.LA pour l'intelligence IP, ASN, BGP, preuves de menace et outils réseau. Découvrez l'authentification, les quotas gratuits, les paramètres et les requêtes en direct.","docs":"Documentation API","home":"Site web","console":"Console API","skip":"Aller au contenu","menu":"Navigation","close":"Fermer la navigation","language":"Choisir la langue","search":"Rechercher des points d'accès ou des chemins…","navigation":"Navigation dans la documentation","overview":"Démarrage rapide","reference":"Référence de l'API","noResults":"Aucun point d'accès correspondant","loading":"Chargement de la documentation…","loadError":"La documentation n'a pas pu être chargée. Veuillez recharger la page et réessayer.","retry":"Recharger","notFound":"Point d'accès introuvable. Choisissez un point d'accès dans la navigation.","plan":"Forfait minimum","scopes":"Portées requises","parameters":"Paramètres","noParameters":"Ce point d'accès n'a aucun paramètre de requête.","field":"Champ","type":"Type","description":"Description","required":"Requis","optional":"Facultatif","path":"Chemin","query":"Requête","header":"En-tête","default":"Défaut","minimum":"Minimum","maximum":"Maximum","minLength":"Longueur min.","maxLength":"Longueur max.","pattern":"Modèle","requestBody":"Corps de la requête","responses":"Schéma de réponse","headers":"En-têtes de réponse","errors":"Erreurs et nouvelles tentatives","test":"Essayer ce point d'accès","testNote":"Une requête réelle n'est envoyée que lorsque vous sélectionnez Envoyer et elle est décomptée de votre quota. Votre clé reste uniquement dans la mémoire de la page ; un rechargement l'efface.","key":"Clé API","keyPlaceholder":"Collez votre clé API","clearKey":"Effacer","auth":"Authentification","send":"Envoyer la requête","sending":"Envoi en cours…","cancel":"Arrêter l'attente","response":"Réponse en direct","keyRequired":"Saisissez d'abord votre clé API.","invalidJson":"Le corps de la requête doit être un objet JSON valide.","invalidBody":"Un champ de corps requis est manquant, ou le type/valeur d'un champ ne correspond pas au schéma.","invalidPath":"Les valeurs de chemin ne peuvent pas contenir de barre oblique ou de barre oblique inverse, ni être égales à . ou ..","failed":"La réponse n'a pas pu être lue. Vérifiez votre connexion. Réessayez un lot incertain avec la même clé d'idempotence.","cancelled":"Attente interrompue. Le serveur peut encore traiter et facturer le travail accepté. Réutilisez la même clé d'idempotence lors de la nouvelle tentative.","timeout":"Le délai d'attente a expiré ; le résultat du serveur est inconnu. Réutilisez la même clé d'idempotence lors de la nouvelle tentative.","tooLarge":"La réponse dépasse 2 Mo. Affichage interrompu ; affinez la requête ou utilisez votre backend.","example":"Exemple de requête","exampleNote":"YOUR_API_KEY est un espace réservé. Les exemples ne contiennent jamais votre clé saisie.","copy":"Copier","copied":"Copié","copyError":"Échec de la copie. Sélectionnez et copiez le texte manuellement.","download":"Télécharger OpenAPI","json":"Spécification JSON","yaml":"Spécification YAML","raw":"Schéma complet","empty":"Réponse vide","newId":"Nouvel identifiant de lot","idemNote":"Conservez cette valeur lors de la nouvelle tentative du même lot. Ne la modifiez que pour un nouveau travail facturé séparément.","localError":"Échec de la validation locale ; aucune requête n'a été envoyée.","unavailable":"Disponibilité","responseNote":"Ce sont des définitions de champs, pas des résultats en direct. Le serveur peut ajouter des champs compatibles.","responseHint":"Aucune requête envoyée pour le moment.","apiVersion":"Version de l'API"},"groups":{"ip":"IP et confidentialité","bgp":"ASN et routage","threat":"Renseignement sur les menaces","tools":"Outils réseau","batch":"Requêtes par lot"},"guide":{"title":"Intelligence IP pour votre application","intro":"Une API unique pour l'intelligence IP, la propriété des réseaux, le routage et les preuves de menace. Activez l'accès au compte, puis commencez par une seule requête.","steps":[{"title":"Créer un compte","text":"Inscrivez-vous, connectez-vous à la console API et demandez l'accès. Les comptes e-mail nécessitent actuellement une approbation manuelle ; l'approbation n'est pas une vérification de l'e-mail."},{"title":"Obtenir une clé API","text":"Après approbation, créez une clé ou recevez une clé liée au compte de la part de l'administrateur. Le secret complet n'est affiché qu'une seule fois ; stockez-le en toute sécurité."},{"title":"Appelez depuis votre backend","text":"Utilisez X-API-Key ou Authorization: Bearer. Ne placez jamais les clés dans les URL, les dépôts publics ou le code frontend."}],"allowanceTitle":"Allocation gratuite et périodes payantes","allowance":"Les comptes gratuits reçoivent 1 000 unités par jour, réinitialisées à minuit UTC. Toutes les clés et les lots du site web partagent le solde ; remplacer ou révoquer une clé ne réinitialise pas l'utilisation.","planColumns":["Forfait","Quota quotidien de sécurité","Requêtes/min/clé","Clés actives","Cibles/lot"],"plans":[["Free","1,000","30","2","100"],["Developer","10,000","120","5","500"],["Pro","100,000","600","20","2,000"],["Enterprise","1,000,000","3,000","100","5,000"]],"billing":"Les périodes payantes sont provisionnées manuellement avec un plan, une allocation totale explicite et une date d'expiration. L'allocation de la période n'est pas le quota quotidien multiplié par le nombre de jours. Le paiement en ligne et le renouvellement automatique ne sont pas activés. À l'expiration, le compte revient au plan Gratuit ; les portées des clés existantes ne s'étendent jamais automatiquement. Les contrats d'organisation hérités et les limites inférieures par clé s'appliquent également.","usageTitle":"Comment l'utilisation est comptabilisée","usage":["Les recherches synchrones réussies coûtent une unité ; les lectures de statut/résultats de lots, les échecs, les refus et les requêtes rejetées pour limitation de débit coûtent zéro.","Lots : les cibles dédupliquées acceptées sont facturées une seule fois ; les échecs ultérieurs des cibles ne sont pas remboursés. L'Idempotency-Key est obligatoire ; rejouer la même requête avec le même identifiant ne facture pas à nouveau.","La progression des lots sur le site et les téléchargements n'entraînent pas d'unités supplémentaires. Pour les erreurs 429 / 503, respectez l'en-tête Retry-After lorsqu'il est présent et utilisez une attente exponentielle."],"boundaries":["Utilisez /api/public/v1 pour les intégrations client. /api/v1 est une interface interne au site, pas le contrat client. Le CORS navigateur externe n'est pas activé ; appelez depuis votre backend.","Source IP inversée : non configurée ; indisponible.","Distribution C2 : non activée.","RPKI utilise des instantanés. Vérifiez observedAt, expiresAt, stale et riskStatus. Une preuve inconnue ou manquante ne signifie pas que c'est sûr. /api/capabilities est la source de l'état actuel des capacités."]}}}