# Gestion des Utilisateurs

### <mark style="color:purple;">Création d’un nouvel utilisateur</mark>

Les administrateurs peuvent créer un nouvel utilisateur en soumettant une charge JSON minimale. Les champs obligatoires incluent l’email et le nom d’affichage de l’utilisateur, tandis que le numéro de téléphone est facultatif.

```
POST /user-management/users/
```

**Exemple de corps de requête**

```
{
  "email": "user@gmail.com",
  "display_name": "User",
  "phone": "932323232"
}
```

**Réponse**

En cas de succès, un objet JSON est retourné contenant les données de l’utilisateur nouvellement créé :

```
{
  "userData": {
    "user_uid": "MYmC7MzsPBNU6uSQBnJ0",
    "email": "user@gmail.com",
    "display_name": "User",
    "phone": "932323232"
  }
}
```

***

### <mark style="color:orange;">Mise à jour des détails de l’utilisateur</mark>

Mettez à jour le profil d’un utilisateur existant en envoyant une charge JSON avec l’identifiant unique de l’utilisateur ainsi que les champs nouveaux ou mis à jour. Des attributs de profil supplémentaires tels que des métriques physiques et des préférences peuvent être inclus.

**Point de terminaison**

```
PUT /user-management/users/
```

**Exemple de corps de requête**

```
curl -L \
  --request PUT \
  --url 'https://aikpy-nsz2.onrender.com/user-management/users/' \
  --header 'Authorization: API-KEY YOUR_API_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
    "user_uid": "DSdmk3mKd9Dmsmsd",
    "display_name": "User1",
    "email": "User1@example.com",
    "height": 175,
    "weight": 68,
    "age": "23",
    "ycom": 0.95,
    "leg_length": 0.91,
    "shoeSize": "7",
    "brand": "Adidas",
    "shoeModel": "UltraBoost",
    "gender": "Female"
  }'
```

**Réponse**

Une mise à jour réussie renvoie un message de confirmation :

```
{
  "message": "User information updated successfully."
}
```

***

### Récupération des utilisateurs

Les administrateurs peuvent récupérer une liste de tous les utilisateurs associés à leur compte. L’API prend en charge une récupération simple et filtrée, y compris la pagination pour les grandes bases d’utilisateurs.

**Lister tous les utilisateurs**

**Point de terminaison :**

```
GET /user-management/users/
```

**Exemple de réponse :**

```
{
  "users": [
    {
      "user_uid": "MYmC7MzsPBNU6uSQBnJ0",
      "email": "user@gmail.com",
      "display_name": "User",
      "phone": "932323232",
      "created_at": "2024-12-02T19:17:30.371Z",
      "age": "30",
      "weight": 79.8,
      "height": 177.8,
      "ycom": 1.01,
      "leg_length": 0.96,
      "shoeSize": "8",
      "brand": "Nike",
      "shoeModel": "Peak-smart"
    },
    {
      "user_uid": "CMQe1HuAg4uMXqHE6dVO",
      "email": "user1@example.com",
      "display_name": "User1",
      "phone": "8328889011",
      "created_at": "2024-08-16T00:29:21.349Z",
      "age": "22",
      "weight": 70,
      "height": 174,
      "ycom": 0.96,
      "leg_length": 0.91,
      "shoeSize": "6",
      "brand": "Fabletics",
      "shoeModel": "The Everyday Sneaker II"
    }
  ]
}
```

***

### **Filtrage et pagination**

Utilisez des paramètres de requête pour filtrer la liste des utilisateurs ou paginer les résultats :

* **start\_after\_id** : UID après lequel commencer la liste.
* **end\_before\_id** : UID avant lequel terminer la liste.
* **limit** : Nombre maximum d’utilisateurs à retourner (par défaut 5).

**Point de terminaison :**

```
GET /user-management/users/filter/
```

**Exemple de requête :**

```
GET /user-management/users/filter/?limit=10&activity=Running
```

**La réponse inclut :**

* `query_count` : Nombre total d’utilisateurs correspondants.
* `users` : Tableau d’objets utilisateurs.
* `first_uid` et `last_uid` : UID pour la pagination.

***

### Récupération des détails d’un utilisateur spécifique

Récupérez des informations détaillées pour un utilisateur spécifique en fournissant son UID unique.

**Point de terminaison**

```
GET /user-management/users/{user_uid}
```

**Exemple de requête**

```
GET /user-management/users/CMQe1HuAg4uMXqHE6dVO
```

**Exemple de réponse**

```
{
  "user_uid": "CMQe1HuAg4uMXqHE6dVO",
  "email": "user1@example.com",
  "display_name": "User1",
  "phone": "8328889011",
  "created_at": "2024-08-16T00:29:21.349Z",
  "age": "22",
  "weight": 70,
  "height": 174,
  "ycom": 0.96,
  "leg_length": 0.91,
  "shoeSize": "6",
  "brand": "Fabletics",
  "shoeModel": "The Everyday Sneaker II",
  "gender": "Female"
}
```

***

### <mark style="color:red;">Suppression d’un utilisateur</mark>

Les administrateurs peuvent supprimer un utilisateur de leur compte en fournissant l’UID unique de l’utilisateur dans le corps de la requête.

**Point de terminaison**

```
DELETE /user-management/users/
```

**Exemple de corps de requête**

```
{
  "user_uid": "MYmC7MzsPBNU6uSQBnJ0"
}
```

**Réponse**

Une suppression réussie renvoie un message de confirmation :

```
{
  "message": "User with UID MYmC7MzsPBNU6uSQBnJ0 deleted from admin."
}
```

***

### Gestion des invitations et affectations des sous-administrateurs

Les administrateurs peuvent inviter des utilisateurs à devenir sous-administrateurs et gérer les affectations des sous-administrateurs.

**Lister les invitations**

**Point de terminaison :**

```
GET /admin-management/invitation/
```

Récupérez une liste des invitations en attente. Chaque invitation inclut des détails tels que les informations de l’invitant, l’email de l’invité et le statut de l’invitation.

**Créer une invitation**

**Point de terminaison :**

```
POST /admin-management/invitation/
```

Soumettez une charge JSON avec l’email de l’invité (et éventuellement un lien vers la plateforme) :

```
{
  "user_email": "invitee@example.com",
  "platform_link": "https://yourplatform.com/welcome"
}
```

**Supprimer une invitation**

**Point de terminaison :**

```
DELETE /admin-management/invitation/
```

Fournissez le `invite_token` dans le corps de la requête pour supprimer l’invitation.

**Gestion des sous-administrateurs**

Les administrateurs peuvent également récupérer, ajouter ou supprimer des sous-administrateurs en utilisant les points de terminaison suivants :

* **Récupérer, ajouter et supprimer des sous-administrateurs :**

```
GET /admin-management/sub-admins/
POST /admin-management/sub-admins/
DELETE /admin-management/sub-admins/
```

***

### Récupération du statut de l’organisation

Les administrateurs et sous-administrateurs peuvent récupérer les détails du statut de l’organisation, y compris le nombre de sessions, l’UID de l’utilisateur, le rôle, le type de paiement et les activités associées.

**Point de terminaison**

```
GET /user-management/organization-status/
```

**Exemple de réponse**

```
{
  "session_number": 50,
  "uid": "aB3xYz1PqW8LmTnK4R9VfJ0gHsCd",
  "role": "admin",
  "payment_type": "Enterprise",
  "activity": ["Running", "Weightlifting", "VerticalJump"],
  "companyName": "Apple",
  "name": "Username"
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.aikynetix.app/fr/api-documentation/user-management.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
