backend & types
This commit is contained in:
@@ -1,27 +0,0 @@
|
||||
# /assets
|
||||
|
||||
Die /assets-API ist dazu gedacht, den Zugriff auf bestimmte Ordnerpfade zu ermöglichen, die direkt über den Tibi-Server erreichbar sind. Diese Pfade werden in der Konfigurationsdatei (config.yml) definiert und relativ zu dieser Datei interpretiert. Jeder dieser Pfade wird durch einen eindeutigen Namen identifiziert, der in der URL verwendet wird.
|
||||
|
||||
## URL-Struktur
|
||||
|
||||
Die Struktur der URL für den Zugriff auf die Assets ist wie folgt:
|
||||
|
||||
- TIBI-SERVER-URL/api/v1/_/NAMESPACE/_/assets/NAME/
|
||||
|
||||
Hierbei steht NAME für den in der Konfigurationsdatei festgelegten Namen für den Pfad. Wenn beispielsweise ein Pfad mit dem Namen _dist_ definiert ist, der auf den Ordner ../frontend/_dist_ relativ zur config.yml zeigt, würde die entsprechende URL so aussehen:
|
||||
|
||||
- TIBI-SERVER-URL/api/v1/_/NAMESPACE/_/assets/_dist_/
|
||||
|
||||
## Zugriffsmethode
|
||||
|
||||
Über die /assets-API ist ausschließlich ein unbeschränkter Lesezugriff (GET-Methode) möglich. Dies bedeutet, dass Sie über diese API Dateien aus den definierten Pfaden abrufen können, aber keine Änderungen vornehmen oder Dateien hochladen können.
|
||||
Konfigurationsbeispiel
|
||||
|
||||
In der config.yml könnten Sie einen Asset-Pfad wie folgt definieren:
|
||||
|
||||
```yaml
|
||||
name: _dist_
|
||||
path: ../frontend/_dist_
|
||||
```
|
||||
|
||||
Dies würde den Zugriff auf Dateien im Ordner ../frontend/_dist_ relativ zur config.yml über die URL TIBI-SERVER-URL/api/v1/_/NAMESPACE/_/assets/_dist_/ ermöglichen.
|
||||
@@ -1,239 +0,0 @@
|
||||
# `/_/NAMESPACE/COLLECTION`
|
||||
|
||||
Dieser Endpoint ermöglicht Interaktionen mit den Collectionen, die flexible Strukturen zur Organisation und Kategorisierung von Daten darstellen. Sie können einen 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.
|
||||
|
||||
```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}
|
||||
|
||||
Diese 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, InputProps 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
|
||||
}
|
||||
```
|
||||
@@ -1,63 +0,0 @@
|
||||
# `/login`
|
||||
|
||||
## 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 Body:
|
||||
|
||||
- `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 (0=admin, 1 = editor, 2 = user)
|
||||
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)
|
||||
})
|
||||
```
|
||||
@@ -1,99 +0,0 @@
|
||||
# `/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[]
|
||||
}
|
||||
```
|
||||
@@ -1,81 +0,0 @@
|
||||
# `/user`
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
Reference in New Issue
Block a user