# info.summary
Audit web automatisé et prise de contact pour les PME de Suisse romande.

# info.description
API publique de NexaLab, agence IA et automatisation basée à Genève.

Deux capacités sont exposées aux clients et aux agents :

1. **Audit web gratuit** — soumettre l'URL d'un site pour recevoir un rapport automatisé (SEO, performance, présence digitale, plan d'action). Le traitement est asynchrone : la réponse renvoie un `token` permettant de consulter le rapport.
2. **Contact** — transmettre une demande commerciale qualifiée.

Aucune authentification n'est requise. Les endpoints sont limités en débit (10 requêtes / IP / 24 h, 5 / e-mail / 24 h) et exigent un consentement RGPD explicite pour l'audit.

Données hébergées en Suisse et dans l'Union européenne, conformément à la nLPD suisse et au RGPD.

# info.license.name
Propriétaire — usage soumis aux mentions légales

# paths./api/audit.post.description
Démarre un audit automatisé du site indiqué. Le traitement est asynchrone et dure quelques minutes ; le rapport est envoyé par e-mail et consultable sur `/audit/r/{token}`.

Les cibles internes (localhost, plages IP privées, IPv6 littérales, TLD `.local` / `.internal`) sont rejetées.

# paths./api/audit.post.responses.200.content.application/json.example.message
Votre audit est lancé. Vous recevrez le rapport par e-mail dans quelques minutes.

# paths./api/contact.post.description
Transmet une demande commerciale à NexaLab. Réponse humaine sous 24 h ouvrées.

# paths./api/contact.post.requestBody.content.application/json.example.message
Nous cherchons à automatiser la relance de nos factures impayées.

# paths./api/contact.post.responses.200.content.application/json.example.message
Votre message a bien été envoyé. On vous répond sous 24h.

# paths./audit/r/{token}.get.description
Renvoie le rapport d'audit au format HTML. La page est servie avec `X-Robots-Tag: noindex` : elle n'est ni indexée ni destinée à être partagée publiquement.

# paths./audit/r/{token}.get.parameters[].description
Jeton renvoyé par `POST /api/audit` — 48 caractères hexadécimaux.

# paths./audit/r/{token}.get.responses.200.description
Rapport prêt, ou page d'attente si l'audit est encore en cours.

# paths./api/status.get.description
Health check public. `200` si tous les composants sont configurés, `503` en mode dégradé.

# components.schemas.AuditRequest.properties.url.description
URL du site à auditer. Le schéma `https://` est ajouté s'il manque.

# components.schemas.AuditRequest.properties.secteur.description
Secteur d'activité (fiduciaire, cabinet médical, immobilier, commerce, industrie, services…).

# components.schemas.AuditRequest.properties.socials.description
Profils sociaux, séparés par des virgules.

# components.schemas.AuditRequest.properties.competitor.description
Concurrent de référence, utilisé pour la comparaison.

# components.schemas.AuditRequest.properties.consent.description
Consentement RGPD/nLPD explicite. Doit valoir exactement `true`.

# components.schemas.Error.properties.error.description
Message lisible, en français. Plusieurs erreurs de validation sont concaténées par `, `.

# components.responses.BadRequest.content.application/json.example.error
email invalide, consentement RGPD requis

# components.responses.RateLimited.description
Limite atteinte : 10 requêtes par IP ou 5 par e-mail sur 24 h.

# components.responses.RateLimited.content.application/json.example.error
Limite atteinte. Réessayez dans 24 h ou contactez-nous directement.