# Benutzerverwaltung

### <mark style="color:purple;">Erstellen eines neuen Benutzers</mark>

Administratoren können einen neuen Benutzer erstellen, indem sie eine minimale JSON-Nutzlast übermitteln. Die erforderlichen Felder umfassen die E-Mail-Adresse und den Anzeigenamen des Benutzers, während die Telefonnummer optional ist.

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

**Beispiel für den Anfragekörper**

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

**Antwort**

Bei Erfolg wird ein JSON-Objekt zurückgegeben, das die Daten des neu erstellten Benutzers enthält:

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

***

### <mark style="color:orange;">Aktualisieren von Benutzerdetails</mark>

Aktualisieren Sie das Profil eines bestehenden Benutzers, indem Sie eine JSON-Nutzlast mit dem eindeutigen Identifikator des Benutzers zusammen mit neuen oder aktualisierten Feldern senden. Zusätzliche Profilattribute wie physische Metriken und Präferenzen können eingeschlossen werden.

**Endpunkt**

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

**Beispiel für den Anfragekörper**

```
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"
  }'
```

**Antwort**

Eine erfolgreiche Aktualisierung gibt eine Bestätigungsnachricht zurück:

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

***

### Benutzer abrufen

Administratoren können eine Liste aller mit ihrem Konto verknüpften Benutzer abrufen. Die API unterstützt sowohl einfache als auch gefilterte Abrufmethoden, einschließlich Paginierung für große Benutzerdatenbanken.

**Alle Benutzer auflisten**

**Endpunkt:**

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

**Beispielantwort:**

```
{
  "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"
    }
  ]
}
```

***

### **Filtern und Paginieren**

Verwenden Sie Abfrageparameter, um die Liste der Benutzer zu filtern oder die Ergebnisse zu paginieren:

* **start\_after\_id**: UID, nach dem die Liste beginnen soll.
* **end\_before\_id**: UID, vor dem die Liste enden soll.
* **limit**: Maximale Anzahl an zurückzugebenden Benutzern (Standardwert ist 5).

**Endpunkt:**

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

**Beispielanfrage:**

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

**Antwort enthält:**

* `query_count`: Gesamtzahl der übereinstimmenden Benutzer.
* `users`: Array von Benutzerobjekten.
* `first_uid` und `last_uid`: UIDs für die Paginierung.

***

### Abrufen spezifischer Benutzerdetails

Rufen Sie detaillierte Informationen für einen bestimmten Benutzer ab, indem Sie dessen eindeutige Benutzer-UID angeben.

**Endpunkt**

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

**Beispielanfrage**

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

**Beispielantwort**

```
{
  "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;">Löschen eines Benutzers</mark>

Administratoren können einen Benutzer aus ihrem Konto löschen, indem sie die eindeutige UID des Benutzers im Anfragekörper angeben.

**Endpunkt**

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

**Beispiel für den Anfragekörper**

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

**Antwort**

Eine erfolgreiche Löschung gibt eine Bestätigungsnachricht zurück:

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

***

### Verwaltung von Sub-Admin-Einladungen und Zuweisungen

Administratoren können Benutzer einladen, Sub-Admins zu werden, und Sub-Admin-Zuweisungen verwalten.

**Einladungen auflisten**

**Endpunkt:**

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

Rufen Sie eine Liste der ausstehenden Einladungen ab. Jede Einladung enthält Details wie Informationen des Einladenden, die E-Mail-Adresse des Eingeladenen und den Einladungsstatus.

**Eine Einladung erstellen**

**Endpunkt:**

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

Übermitteln Sie eine JSON-Nutzlast mit der E-Mail-Adresse des Eingeladenen (und optional einem Plattform-Link):

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

**Eine Einladung entfernen**

**Endpunkt:**

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

Geben Sie den `invite_token` im Anfragekörper an, um die Einladung zu entfernen.

**Sub-Admin-Verwaltung**

Administratoren können auch Sub-Admins abrufen, hinzufügen oder entfernen, indem sie die folgenden Endpunkte verwenden:

* **Sub-Admins abrufen, hinzufügen und entfernen:**

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

***

### Abrufen des Organisationsstatus

Admins und Sub-Admins können Details zum Organisationsstatus abrufen, einschließlich Sitzungsanzahl, Benutzer-UID, Rolle, Zahlungsart und zugehörigen Aktivitäten.

**Endpunkt**

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

**Beispielantwort**

```
{
  "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/de/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.
