more documentation...

This commit is contained in:
2023-06-04 09:34:11 +00:00
parent de71e679ec
commit dc4501b5f2
23 changed files with 737 additions and 69 deletions

View File

@@ -1,3 +0,0 @@
# `/_/NAMESPACE/_/assets/ASSETSNAME`
TODO

View File

@@ -1,4 +1,239 @@
# `/_/NAMESPACE/COLLECTION`
TODO
Dieser Endpoint ermöglicht Interaktionen mit den Collectionen, die flexible Strukturen zur Organisation und Kategorisierung von Daten darstellen. Sie können Collectioneintrag abrufen, aktualisieren, erstellen und löschen. Jede Collection wird durch einen eindeutigen Namespace und Namen identifiziert.
## GET /{namespace}/{collection}
Diese Anforderung ruft alle Einträge einer bestimmten Collection ab. Sie nimmt den Namespace und den Namen der Collection sowie optionale API-Parameter für die Anpassung der Anfrage als Parameter an.
### Antwort
Die Antwort ist ein Objekt mit folgenden Eigenschaften:
- `data`: Ein Array von CollectionEntry Objekten.
- `count`: Die Gesamtzahl der Einträge die zurückgegeben wurden.
```ts
interface Collection {
name: string
meta?: CollectionMeta
permissions?: {
public?: CollectionPermission
user?: CollectionPermission
[token: string]: CollectionPermission
}
projections?: {
[projectionName: string]: {
select: {
[field: string]: 1 | 0
}
}
}
fields: CollectionField[]
}
```
## GET /{namespace}/{collection}/{id}
iese Anforderung ruft einen bestimmten Eintrag in einer Collection ab. Sie nimmt den Namespace und Namen der Collection sowie die ID des abzurufenden Eintrags als Parameter an.
### Anforderungsparameter
- `id`: Die ID des abzurufenden Eintrags.
### Antwort
Die Antwort ist das entsprechende CollectionEntry Objekt.
## PUT /{namespace}/{collection}/{id}
Diese Anforderung aktualisiert die Daten eines vorhandenen Eintrags in einer Collection. Sie nimmt den Namespace und den Namen der Collection, die ID des zu aktualisierenden Eintrags und ein Änderungssatz-Objekt, das die zu aktualisierenden Daten enthält, als Parameter an.
### Anforderungsparameter
id: Die ID des zu aktualisierenden Eintrags.
data: Ein Änderungssatz-Objekt, das die zu aktualisierenden Daten enthält.
### Antwort
Die Antwort ist das aktualisierte CollectionEntry Objekt.
## POST /{namespace}/{collection}
Diese Anforderung erstellt einen neuen Eintrag in einer Collection. Sie nimmt den Namespace und den Namen der Collection und ein Datenobjekt, das die Informationen des neuen Eintrags enthält, als Parameter an. Optional kann eine Funktion für den Fortschritt des Uploads übergeben werden.
### Anforderungsparameter
- `data`: Ein Datenobjekt, das die Informationen des neuen Eintrags enthält.
### Antwort
Die Antwort ist das neu erstellte CollectionEntry Objekt.
## DELETE /{namespace}/{collection}/{id}
Diese Anforderung löscht einen vorhandenen Eintrag in einer Collection. Sie nimmt den Namespace und den Namen der Collection und die ID des zu löschenden Eintrags als Parameter an.
### Anforderungsparameter
- `id`: Die ID des zu löschenden Eintrags.
### Antwort
Die Antwort ist ein boolean, das true zurückgibt, wenn das Löschen erfolgreich war.
Jede Collection besteht aus mehreren Feldern (CollectionField), die verschiedene Datenpunkte repräsentieren. Jedes Feld hat einen Namen, einen Typ und ggf. eine Reihe von Subfeldern. Die Metadaten eines Feldes (CollectionFieldMeta) können zusätzliche Informationen über das Feld enthalten, wie z.B. ein Label, Hilfstexte, Widget-Typen und mehr.
Eine Collection kann auch Metadaten (CollectionMeta) enthalten, die Informationen über die Collection selbst enthalten.
```ts
interface CollectionNavigation {
label?: I18Text
muiIcon?: string
defaultSort?: {
field: string
order?: "ASC" | "DESC" | "MANUALLY"
}
defaultImageFilter?: string
views?: View[]
filter?: { [key: string]: any }
defaultCallback?:
| "edit"
| "view"
| {
eval: string
}
}
interface CollectionMeta extends CollectionNavigation {
singleton: boolean
rowIdentTpl?:
| string
| {
twig: string
}
subNavigation?: CollectionNavigation[]
tablist?: {
activeTab?: string
tabs: CollectionMetaTab[]
}
[key: string]: any
}
interface CollectionMetaTab {
name: string
label: I18Text
dependsOn?: DependsOn
subFields: {
source: string
name?: string
}[]
_resolvedSubFields?: CollectionField[]
_hide?: boolean
}
interface EntryViewTab {
name: string
meta: {
[key: string]: any
}
}
interface CollectionPermission {
methods?: MethodPermission
filter?: any
validProjections?: string[]
}
interface CollectionField {
name: string
type?: string
index?: ("single" | "unique")[]
meta?: CollectionFieldMeta
subFields?: CollectionField[]
}
type CssWithEval = string | { [key: string]: string | number } | { eval: string }
interface ContainerProps {
class?: string
style?: string
layout?: {
breakBefore: boolean
breakAfter: boolean
size: {
default: string
small: string
large: string
}
}
}
interface CollectionFieldMeta {
source?: string
label?: I18Text
helperText?: I18Text
widget?: string
valueMap?: {
[value: "string" | number]: {
name?: I18Text
muiIcon?: string
style?: string
}
}
containerProps?: ContainerProps
choices?: ArrayFieldChoice[] | EndpointOptions
filter?: boolean | FilterConfig
defaultValue?: DefaultValue
addAllowed?: boolean
props?: {
step?: string | number
[key: string]: string | number | boolean
}
inputProps?: {
step?: string | number
[key: string]: any
}
dependsOn?: DependsOn
css?: {
input?: {
wrapper?: CssWithEval
element?: CssWithEval
foreignEntry?: CssWithEval
}
view?: {
wrapper?: CssWithEval
element?: CssWithEval
foreignEntry?: CssWithEval
}
filter?: {
wrapper?: CssWithEval
element?: CssWithEval
foreignEntry?: CssWithEval
}
}
folding?: {
unfolded?: boolean
previewFolded?:
| string
| {
eval: string
raw?: boolean
}
previewUnfolded?:
| string
| {
eval: string
raw?: boolean
}
}
[key: string]: any
}
```

View File

@@ -1,3 +1,63 @@
# `/login`
TODO
## POST /login
Dieser Endpoint ermöglicht es Benutzern, sich in das System einzuloggen. Dabei wird eine Authentifizierung durchgeführt und bei erfolgreicher Authentifizierung ein Token zurückgegeben, der für nachfolgende API-Aufrufe verwendet wird.
## Anforderungsparameter
Der /login Endpoint erwartet folgende Daten im Anforderungskörper (options.data):
- `username`: Der Benutzername des Benutzers, der sich anmelden möchte. Typ: String.
- `password`: Das Passwort des Benutzers, der sich anmelden möchte. Typ: String.
Die Daten müssen als LoginData Objekt übergeben werden.
```ts
const loginData: LoginData = {
username: "IhrBenutzername",
password: "IhrPasswort",
}
```
## Antwort
Bei erfolgreicher Anmeldung gibt der /login Endpoint ein LoginResponse Objekt zurück. Dieses Objekt enthält:
- `token`: Ein Authentifizierungstoken, das für nachfolgende API-Aufrufe verwendet wird. Typ: String.
- `user`: Ein User Objekt, das Informationen über den eingeloggten Benutzer enthält.
```ts
interface User {
id: string // Eindeutige ID des Benutzers
insertTime: string // Zeitpunkt der Erstellung des Benutzerkontos
updateTime: string // Letzter Zeitpunkt der Aktualisierung des Benutzerkontos
username: string // Benutzername des Benutzers
role: number // Rolle des Benutzers im System
permissions: any[] // Berechtigungen des Benutzers
meta: {
// Weitere optionale Benutzerinformationen
[key: string]: any
}
}
```
## Beispielaufruf
```ts
const loginData: LoginData = {
username: "IhrBenutzername",
password: "IhrPasswort",
}
postLogin(loginData)
.then((response) => {
console.log("Erfolgreiche Anmeldung! Token: ", response.token)
console.log("Benutzerinformationen: ", response.user)
})
.catch((error) => {
console.log("Fehler beim Login: ", error)
})
```

View File

@@ -1,3 +1,101 @@
# `/project`
TODO
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
## 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 Anforderung ruft eine Liste aller Projekte ab. Sie kann optionale Parameter verwenden, um die abgerufenen Projekte zu sortieren oder zu filtern.
Antwort
### Antwort
Die Antwort auf diese Anforderung ist ein Objekt mit zwei Eigenschaften:
- `data`: Ein Array von Projekt-Objekten.
- `count`: Die Gesamtzahl der Projekte die zurück gegeben wurden.
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 Konfigurationsdatei 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[]
}
```

View File

@@ -1,3 +1,81 @@
# `/user`
TODO
Dieser Endpoint bietet eine Schnittstelle für den Zugriff und die Manipulation von Benutzerdaten. Sie können Benutzerinformationen abrufen, aktualisieren, erstellen und löschen. Jeder Benutzer wird durch eine eindeutige Benutzer-ID identifiziert.
## GET /user
Diese Anforderung ruft eine Liste aller Benutzer ab. Sie kann optionale Parameter verwenden, um die abgerufenen Benutzerdaten zu sortieren oder zu filtern.
### Antwort
Die Antwort auf diese Anforderung ist ein Users Objekt mit folgenden Eigenschaften:
- `data`: Ein Array von User Objekten.
- `count`: Die Gesamtzahl der Benutzer (optional).
Jedes User Objekt hat die folgenden Eigenschaften:
```ts
interface User {
id: string // Eindeutiger Identifikator des Benutzers
insertTime: string // Zeitpunkt der Erstellung des Benutzers
updateTime: string // Letzter Zeitpunkt der Aktualisierung des Benutzers
username: string // Benutzername des Benutzers
role: number // Rolle des Benutzers, repräsentiert durch eine Zahl
permissions: any[] // Array von Berechtigungen des Benutzers
meta: {
// Zusätzliche Informationen über den Benutzer
[key: string]: any
}
}
```
## GET /user/{id}
Diese Anforderung ruft einen bestimmten Benutzer ab. Sie nimmt die ID des abzurufenden Benutzers als Parameter an.
Anforderungsparameter
- `id`: Die ID des abzurufenden Benutzers.
### Antwort
Die Antwort ist das entsprechende User Objekt.
## POST /user
Diese Anforderung erstellt einen neuen Benutzer. Sie nimmt ein Objekt als Parameter an, das die Eigenschaften des zu erstellenden Benutzers enthält.
### Anforderungsparameter
- `data`: Ein Objekt, das die Eigenschaften des zu erstellenden Benutzers enthält.
### Antwort
Die Antwort ist ein Objekt, das das neu erstellte User Objekt enthält.
## PUT /user/{id}
Diese Anforderung aktualisiert die Daten eines vorhandenen Benutzers. Sie nimmt die ID des zu aktualisierenden Benutzers und ein Objekt, das die zu aktualisierenden Daten enthält, als Parameter an.
### Anforderungsparameter
- `id`: Die ID des zu aktualisierenden Benutzers.
- `data`: Ein Objekt, das die zu aktualisierenden Daten enthält.
### Antwort
Die Antwort ist ein Objekt, das das aktualisierte User Objekt enthält.
## DELETE /user/{id}
Diese Anforderung löscht einen vorhandenen Benutzer. Sie nimmt die ID des zu löschenden Benutzers als Parameter an.
### Anforderungsparameter
`id`: Die ID des zu löschenden Benutzers.
### Antwort
Die Antwort ist ein boolean, das true zurückgibt, wenn das Löschen erfolgreich war.