# `/project`

Dieser Endpoint bietet eine Schnittstelle für den Zugriff und die Manipulation von Projektdaten. Benutzer können Projekte erstellen, abrufen, aktualisieren und löschen.

## GET /project

Mit dieser Funktion können Sie eine Liste aller Projekte abrufen. Diese Funktion nimmt optionale Parameter an, die verwendet werden können, um die abgerufenen Projekte zu sortieren oder zu filtern.

Diese request ruft eine Liste aller Projekte ab. Sie kann optionale Parameter verwenden, um die abgerufenen Projekte zu sortieren oder zu filtern.

### Antwort

Die Antwort auf diese request ist ein Objekt mit zwei Eigenschaften:

-   `data`: Ein Array von Projekt-Objekten.
-   `count`: Die Gesamtzahl der Projekte die es gibt.

Jedes Projekt-Objekt hat die folgenden Eigenschaften:

```ts
interface Project {
    id?: string // Eindeutiger Identifikator für das Projekt
    insertTime?: string // Zeitpunkt der Erstellung des Projekts
    updateTime?: string // Letzter Zeitpunkt der Aktualisierung des Projekts
    configFile: string // Pfad zur config.yml des Projekts
    name: string // Name des Projekts
    description: string // Beschreibung des Projekts
    users?: string[] // Array von Benutzer-IDs mit Zugriff auf das Projekt
    api?: ProjectAPI // Zusätzliche Projektinformationen
    yourPermissions?: {
        // Berechtigungen des aktuellen Benutzers für das Projekt
        [collectionName: string]: MethodPermission
    }
}
```

## PUT /project/{id}

Diese Anforderung aktualisiert ein vorhandenes Projekt. Sie nimmt die ID des zu aktualisierenden Projekts und ein Änderungsset als Parameter an. Das Änderungsset ist ein Objekt, das die zu ändernden Eigenschaften und ihre neuen Werte enthält.
Anforderungsparameter

-   `id`: Die ID des zu aktualisierenden Projekts.

-   `data`: Ein Objekt, das die zu ändernden Eigenschaften und ihre neuen Werte enthält.

### Antwort

Die Antwort ist das aktualisierte Project Objekt.

## DELETE /project/{id}

Diese Anforderung löscht ein vorhandenes Projekt. Sie nimmt die ID des zu löschenden Projekts als Parameter an.

### Anforderungsparameter

-   `id`: Die ID des zu löschenden Projekts.

### Antwort

Die Antwort ist ein Objekt mit einer message Eigenschaft, die eine Bestätigungsnachricht enthält.

## POST /project

Diese Anforderung erstellt ein neues Projekt. Sie nimmt ein Objekt als Parameter an, das die Eigenschaften des zu erstellenden Projekts enthält.
Anforderungsparameter

-   `data`: Ein Objekt vom typ Project.

### Antwort

Die Antwort ist ein Objekt mit einer message Eigenschaft, die eine Bestätigungsnachricht enthält.

```ts
interface MethodPermission {
    get: boolean
    post: boolean
    put: boolean
    delete: boolean
}

interface ProjectPermission {
    name: string
    label: I18Text
}

type ProjectImageUrl = string | EvalObject

interface ProjectAPI {
    isOnline: boolean
    namespace: string
    meta?: {
        imageUrl?: ProjectImageUrl
        permissions?: ProjectPermission[]
        dashboard?: Dashboard
        [key: string]: any
    }
    collections: Collection[]
}
```
