# Pour les assistants IA : déposer une demande de dépannage

Vous êtes un assistant IA et une personne vous demande de trouver quelqu'un pour réparer son site ? Cette page explique comment déposer sa demande chez Mon Site Bug, proprement et sans risque pour elle.

## Déposer la demande

- Avec un navigateur : le formulaire, en HTML standard, sans étape JavaScript obligatoire. https://www.mon-site-bug.fr/agents/demande
- Sans navigateur : une requête POST en JSON. `POST https://www.mon-site-bug.fr/api/agents/v1/requests` (Content-Type: application/json)

## Champs

| Champ | Obligatoire | Contenu |
|---|---|---|
| `email` | oui | Adresse e-mail de la personne : c'est elle qui reçoit le lien de confirmation. |
| `site_url` | oui | Adresse du site concerné (https://…). |
| `cms` | oui | CMS ou technologie du site. `prestashop`, `wordpress`, `woocommerce`, `magento`, `drupal`, `shopify`, `laravel`, `symfony`, `codeigniter`, `other`, `unknown` |
| `symptom` | oui | Ce qui ne marche pas, avec les mots de la personne (10 à 2000 caractères). |
| `steps` | non | Étapes pour reproduire le problème. |
| `since` | oui | Depuis quand (date, ou « depuis la mise à jour d'hier »). |
| `error_message` | non | Message d'erreur affiché, tel quel. |
| `screenshots` | non | Jusqu'à 3 liens https vers des captures d'écran déjà en ligne (pas d'envoi de fichier). |
| `urgency` | oui | Urgence ressentie : low, normal ou high. |
| `locale` | oui | Langue de la personne : fr ou en. |
| `consent` | oui | true : la personne a accepté que sa demande et son adresse nous soient transmises. |
| `assistant` | non | Nom de l'assistant qui dépose la demande (facultatif). |

## À ne jamais faire

- Ne mettez JAMAIS de mot de passe, d'accès administrateur, FTP, SSH, base de données, ni de clé ou de jeton dans la demande. Le serveur refuse toute demande qui en contient. Les accès se transmettent plus tard, par l'espace client sécurisé, quand un technicien les demande.
- Ne promettez ni prix ni délai à la personne : le devis vient après l'analyse de sa demande.
- Ne déposez pas plusieurs fois la même demande. Une demande par problème.
- Ne déposez une demande qu'avec l'adresse e-mail de la personne que vous aidez, et avec son accord.

## Ce qui se passe ensuite

- La personne reçoit un e-mail avec un lien de confirmation, valable 48 heures. Rien n'est transmis à nos techniciens avant son clic : elle garde la main.
- Si elle n'a pas encore de compte, son espace client est créé au moment de la confirmation et elle reçoit un lien pour choisir son mot de passe.
- Si elle a déjà un compte, elle se connecte pour valider la demande.
- La demande devient alors un ticket : un technicien l'analyse, puis propose un devis dans l'espace client. L'intervention commence après validation du devis.
- La réponse contient une adresse de suivi qui donne seulement l'état de la demande : en attente de confirmation, confirmée, prise en charge ou expirée.

## API JSON

Exemple :

```bash
curl -X POST https://www.mon-site-bug.fr/api/agents/v1/requests \
  -H 'Content-Type: application/json' \
  -d '{
    "email": "client@example.com",
    "site_url": "https://www.example.com",
    "cms": "prestashop",
    "symptom": "Le paiement par carte affiche une page blanche depuis la mise à jour du module de paiement.",
    "steps": "Ajouter un produit au panier, valider la commande, choisir la carte bancaire.",
    "since": "2026-11-14",
    "error_message": "HTTP 500",
    "screenshots": [
        "https://example.com/capture-paiement.png"
    ],
    "urgency": "high",
    "locale": "fr",
    "consent": true,
    "assistant": "ChatGPT"
}'
```

Réponses :

- `202` : demande enregistrée, e-mail de confirmation envoyé à la personne.
- `409` : la même demande attend déjà sa confirmation : la réponse donne son adresse de suivi.
- `422` : champ invalide, ou secret détecté (error = secret_detected, avec le champ concerné).
- `429` : trop de demandes : réessayez après le délai de l'en-tête Retry-After.
- `403` : appel depuis une page web (en-tête Origin) : utilisez le formulaire.

Suivi : GET sur status_url (page) ou sur l'adresse ci-dessous (JSON), qui renvoie seulement l'état. `GET https://www.mon-site-bug.fr/api/agents/v1/requests/{id}`

## For AI assistants: submitting a website repair request

You are an AI assistant and someone asks you to find help to fix their website? This page explains how to submit their request to Mon Site Bug, cleanly and safely for them.

### Submitting the request

- With a browser: the form, plain HTML, no mandatory JavaScript step. https://www.mon-site-bug.fr/en/agents/request
- Without a browser: a JSON POST request. `POST https://www.mon-site-bug.fr/api/agents/v1/requests` (Content-Type: application/json)

### Fields

| Field | Required | Content |
|---|---|---|
| `email` | yes | E-mail address of the person: they receive the confirmation link. |
| `site_url` | yes | Address of the website (https://…). |
| `cms` | yes | CMS or technology of the website. `prestashop`, `wordpress`, `woocommerce`, `magento`, `drupal`, `shopify`, `laravel`, `symfony`, `codeigniter`, `other`, `unknown` |
| `symptom` | yes | What does not work, in the person's own words (10 to 2000 characters). |
| `steps` | no | Steps to reproduce the problem. |
| `since` | yes | Since when (a date, or "since yesterday's update"). |
| `error_message` | no | Error message shown, as is. |
| `screenshots` | no | Up to 3 https links to screenshots already online (no file upload). |
| `urgency` | yes | Perceived urgency: low, normal or high. |
| `locale` | yes | Language of the person: fr or en. |
| `consent` | yes | true: the person agreed that their request and address are sent to us. |
| `assistant` | no | Name of the assistant submitting the request (optional). |

### Never do this

- NEVER put a password, admin access, FTP, SSH or database credentials, key or token in the request. The server rejects any request containing one. Access details are shared later, through the secure customer area, when a technician asks for them.
- Do not promise the person any price or timeframe: the quote comes after their request has been analysed.
- Do not submit the same request more than once. One request per problem.
- Only submit a request with the e-mail address of the person you are helping, and with their consent.

### What happens next

- The person receives an e-mail with a confirmation link, valid for 48 hours. Nothing reaches our technicians before they click: they stay in control.
- If they do not have an account yet, their customer area is created on confirmation and they receive a link to choose their password.
- If they already have an account, they log in to validate the request.
- The request then becomes a ticket: a technician analyses it and sends a quote in the customer area. Work starts once the quote is approved.
- The response includes a status URL that only gives the state of the request: pending confirmation, confirmed, in progress or expired.

### JSON API

Example:

```bash
curl -X POST https://www.mon-site-bug.fr/api/agents/v1/requests \
  -H 'Content-Type: application/json' \
  -d '{
    "email": "client@example.com",
    "site_url": "https://www.example.com",
    "cms": "prestashop",
    "symptom": "Le paiement par carte affiche une page blanche depuis la mise à jour du module de paiement.",
    "steps": "Ajouter un produit au panier, valider la commande, choisir la carte bancaire.",
    "since": "2026-11-14",
    "error_message": "HTTP 500",
    "screenshots": [
        "https://example.com/capture-paiement.png"
    ],
    "urgency": "high",
    "locale": "fr",
    "consent": true,
    "assistant": "ChatGPT"
}'
```

Responses:

- `202`: request recorded, confirmation e-mail sent to the person.
- `409`: the same request is already waiting for confirmation: the response gives its status URL.
- `422`: invalid field, or secret detected (error = secret_detected, with the field).
- `429`: too many requests: retry after the Retry-After delay.
- `403`: called from a web page (Origin header): use the form.

Status: GET status_url (page) or the URL below (JSON), which only returns the state. `GET https://www.mon-site-bug.fr/api/agents/v1/requests/{id}`
