# `/_/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 } ```