# SHARED_CONTEXT_ANDROID — Demandes Android → Backend

> **À lire et exécuter par l'agent Backend (VS Code).**
> L'agent Android a terminé toutes ses adaptations pour les endpoints existants.
> Ce fichier liste les **endpoints manquants à créer côté serveur** pour débloquer les écrans restants.
> Les formats JSON attendus sont déjà définis dans `SHARED_CONTEXT.md` — utilise-les comme spec.
> Une fois un endpoint créé et testé, coche ✅ dans le tableau ci-dessous et mets à jour `SHARED_CONTEXT.md`.

---

## ENDPOINTS À CRÉER — PAR ORDRE DE PRIORITÉ

| # | Endpoint | Écran Android bloqué | Statut |
|---|----------|----------------------|--------|
| 1 | `GET /api/me.php` | Auto-login serveur + AccountFragment | ⏳ à créer |
| 2 | `GET /api/ticket.php?id=X` | TicketDetailFragment | ⏳ à créer |
| 3 | `GET /api/communications.php` | CommunicationFragment + badge | ⏳ à créer |
| 4 | `POST /api/fcm-token.php` | Push notifications | ⏳ à créer |
| 5 | `GET /api/theme.php` | Couleurs tenant (fallback actif) | ⏳ à créer |
| 6 | `POST /api/me.php` | Modifier profil utilisateur | ⏳ à créer |

---

## SPEC DÉTAILLÉE (copié depuis les réponses Backend dans SHARED_CONTEXT.md)

### 1. GET /api/me.php
Authentification via `Authorization: Bearer <JWT>`.
```json
Réponse 200 :
{
  "user": {
    "user_id": 2,
    "username": "nicolas.goossens@hotmail.com",
    "first_name": "Nicolas",
    "last_name": "Goossens",
    "phone": "",
    "company_id": 2,
    "company_name": "Monnaie SA"
  }
}
```
> Android l'utilise pour : valider la session au démarrage + afficher le profil dans AccountFragment.

---

### 2. GET /api/ticket.php?id={id}
```json
Réponse 200 :
{
  "ticket": {
    "id": 1,
    "public_code": "E25FF499-443",
    "title": "flat_tire",
    "description": null,
    "priority": "MEDIUM",
    "status": "NEW",
    "created_at": "2026-03-01 17:55:08",
    "updated_at": "2026-03-01 17:55:08",
    "vehicle": {
      "vehicle_id": 2,
      "plate": "2-CGP-516",
      "brand": "BMW",
      "model": "X3 20d"
    },
    "photos": [
      { "id": 1, "url": "https://admin.fleetapp.be/uploads/tickets/1_2_abc123.jpg" }
    ],
    "events": [
      { "event_type": "CREATED",    "from_status": null, "to_status": "NEW",  "note": null,                        "created_at": "2026-03-01 17:55:08" },
      { "event_type": "NOTE_ADDED", "from_status": null, "to_status": null,   "note": "Pneu arrière gauche à plat", "created_at": "2026-03-01 18:44:41" }
    ]
  }
}
```
> Android filtre par `user_id` du JWT — un utilisateur ne peut voir que ses propres tickets.

---

### 3. GET /api/communications.php
```json
Réponse 200 :
{
  "communications": [
    {
      "id": 5,
      "title": "Présentation",
      "content_html": "<!DOCTYPE html>...",
      "published_at": "2026-03-11 16:46:28"
    }
  ]
}
```
> Filtrée par `tenant_id` du JWT. Pas de tracking lu/non-lu côté serveur — Android gère le badge localement (dernier `id` vu).

---

### 4. POST /api/fcm-token.php
```json
Body : { "fcm_token": "fkVJGL9TRu-..." }

Réponse 201 :
{ "saved": true }
```
> `INSERT ... ON DUPLICATE KEY UPDATE token = ?` basé sur `user_id` du JWT.

---

### 5. GET /api/theme.php
```json
Réponse 200 :
{
  "theme": {
    "toolbar_color": "#4A154B",
    "button_color":  "#4A154B",
    "card_bg_color": "#FFFFFF",
    "text_color":    "#000000"
  }
}
```
> Filtrée par `tenant_id` du JWT. Les données sont déjà en BDD dans la table `app_theme`.

---

### 6. POST /api/me.php — modifier le profil
```json
Body : { "first_name": "Nicolas", "last_name": "Goossens", "phone": "0495/24.81.74" }

Réponse 200 :
{ "updated": true }
```
> Optionnel : changer mot de passe via `{ "action": "change_password", "current_password": "...", "new_password": "..." }`

---

## ÉTAT GLOBAL DES ADAPTATIONS ANDROID

| Écran | Endpoint | Android prêt | Backend prêt |
|-------|----------|:---:|:---:|
| Login | `POST /api/login.php` | ✅ | ✅ |
| Auto-login (local) | token + expires_at | ✅ | — |
| Auto-login (serveur) | `GET /api/me.php` | ✅ | ⏳ |
| Liste véhicules | `GET /api/vehicles.php` | ✅ | ✅ |
| Détail véhicule | `GET /api/vehicle.php?id=X` | ✅ | ✅ |
| Documents véhicule | `GET /api/vehicle.php?id=X` | ✅ | ✅ |
| Contacts | `GET /api/contacts.php` | ✅ | ✅ |
| Liste tickets | `GET /api/tickets.php` | ✅ | ✅ |
| Créer ticket | `POST /api/tickets.php` | ✅ | ✅ |
| Types de problèmes | `GET /api/issue-types.php` | ✅ | ✅ |
| Recherche véhicule | `GET /api/vehicles-search.php?q=` | ✅ | ✅ |
| Upload photo ticket | `POST /api/ticket-photo.php` | ✅ | ✅ |
| Détail ticket | `GET /api/ticket.php?id=X` | ✅ | ⏳ |
| Communications | `GET /api/communications.php` | ✅ | ⏳ |
| FCM token | `POST /api/fcm-token.php` | ✅ | ⏳ |
| Thème visuel | `GET /api/theme.php` | ✅ | ⏳ |
| Profil (lecture) | `GET /api/me.php` | ✅ | ⏳ |
| Profil (modification) | `POST /api/me.php` | ✅ | ⏳ |
