# 📘 API Documentation – Event Data Retrieval

## 📍 Endpoint

```
POST /api-get-event-data-to-index.php
```

## 📄 Description

Cet endpoint permet de récupérer les données d’un événement, y compris les sessions, présentations, présidents de session et intervenants.

---

## 🔐 Required Headers

| Header | Value |
|--------|-------|
| Authorization | `Bearer <token>` – Un jeton d'authentification valide est requis. |

---

## 📥 Request Parameters

**Content-Type:** `application/json`

| Paramètre | Type | Obligatoire | Description |
|-----------|------|-------------|-------------|
| `page` | int | Non | Numéro de page à récupérer (par défaut : 1). |
| `pageSize` | int | Non | Nombre d'éléments par page (par défaut : 20). |
| `lastModifiedAt` | string/null | Non | Date de dernière modification au format `Y-m-d H:i:s`, ou `null`. |

---

## ✅ Success Response

**HTTP Code:** `200 OK`

```json
{
  "status": "success",
  "message": "Event data retrieved successfully.",
  "data": [
    {
      "eventRef": "12345",
      "eventName": "Event Name",
      "eventDateStart": "2023-01-01 10:00:00",
      "eventDateEnd": "2023-01-01 18:00:00",
      "sessions": [
        {
          "sessionRef": "S123",
          "sessionName": "Session 1",
          "sessionChairs": [
            {
              "chairId": "C1",
              "chairName": "Chair 1"
            }
          ],
          "presentations": [
            {
              "presentationRef": "P123",
              "presentationName": "Presentation 1",
              "presentationSpeakers": [
                {
                  "speakerId": "SP1",
                  "speakerName": "Speaker 1"
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}
```

---

## ❌ Error Responses

| HTTP Code | Cause | Exemple |
|-----------|-------|---------|
| `400 Bad Request` | Paramètres invalides (e.g. format de date incorrect) | ```json
{ "status": "Error", "message": "Invalid 'lastModifiedAt' format. It must be in 'Y-m-d H:i:s' format or null.", "data": [] }
``` |
| `401 Unauthorized` | Jeton manquant ou invalide | ```json
{ "status": "Error", "message": "Invalid credentials.", "data": [] }
``` |
| `405 Method Not Allowed` | Méthode HTTP non autorisée (seul POST est accepté) | ```json
{ "status": "Error", "message": "Method not allowed.", "data": [] }
``` |
| `500 Internal Server Error` | Erreur interne du serveur | ```json
{ "status": "Error", "message": "An unexpected error occurred.", "data": [] }
``` |

---

## 🧾 Custom Response Headers

| Header | Description |
|--------|-------------|
| `X-Total-Pages` | Nombre total de pages disponibles |
| `X-Current-Page` | Numéro de la page actuelle |
| `X-Current-Count` | Nombre d’éléments retournés dans la réponse |

---

## 📝 Notes

- Le jeton d’authentification est requis pour chaque requête.
- Le format de date attendu est **`Y-m-d H:i:s`** (exemple : `2023-01-01 15:00:00`).
- Seule la méthode `POST` est acceptée.
