{
  "openapi": "3.1.0",
  "info": {
    "title": "Rocket Services — API Contact",
    "version": "1.0.0",
    "description": "Endpoint de soumission du formulaire de contact de rocket-services.com. Protégé par Cloudflare Turnstile : un token valide est obligatoire, l'API n'est donc pas utilisable sans passer par le formulaire du site.",
    "contact": { "name": "Rocket Services", "email": "contact@rocket-services.com", "url": "https://www.rocket-services.com/contact" }
  },
  "servers": [{ "url": "https://www.rocket-services.com" }],
  "paths": {
    "/contact.php": {
      "post": {
        "summary": "Envoyer un message de contact",
        "operationId": "sendContactMessage",
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": { "schema": { "$ref": "#/components/schemas/ContactRequest" } },
            "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/ContactRequest" } }
          }
        },
        "responses": {
          "200": {
            "description": "Message transmis.",
            "content": { "application/json": { "schema": { "type": "object", "properties": { "ok": { "const": true } }, "required": ["ok"] } } }
          },
          "405": {
            "description": "Méthode non autorisée (seul POST est accepté).",
            "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } }
          },
          "422": {
            "description": "Validation ou vérification Turnstile en échec.",
            "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } }
          },
          "500": {
            "description": "Envoi du mail impossible côté serveur.",
            "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "ContactRequest": {
        "type": "object",
        "required": ["nom", "email", "sujet", "message", "cf-turnstile-response"],
        "properties": {
          "nom": { "type": "string", "minLength": 1 },
          "email": { "type": "string", "format": "email" },
          "entreprise": { "type": "string" },
          "sujet": { "type": "string", "enum": ["audit", "reprise", "integration", "infra", "autre"] },
          "message": { "type": "string", "minLength": 20 },
          "cf-turnstile-response": { "type": "string", "description": "Token Cloudflare Turnstile." },
          "website": { "type": "string", "description": "Honeypot anti-spam : doit rester vide." }
        }
      },
      "Error": {
        "type": "object",
        "required": ["ok"],
        "properties": {
          "ok": { "const": false },
          "error": { "type": "string", "description": "Erreur globale." },
          "errors": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Erreurs par champ (nom, email, sujet, message, turnstile)." }
        }
      }
    }
  }
}
