Alles, was Fóir kann

Eine Content-API ist der kleinste Teil dessen, was eine Anwendung braucht. Hier ist der Rest.

Inhalte

Wie Ihre Informationen geformt sind.

Modelle und Felder

Definieren Sie die Form Ihrer Daten aus sechzehn eingebauten Feldtypen, darunter Rich Text, exakte Dezimalzahlen, Medien, Referenzen und Geopunkte, in der Konsole oder im Code.

Relationen

Verweisen Sie mit einem Referenzfeld von einem Modell auf ein anderes und lesen Sie in einer Abfrage darüber hinweg, mit Beziehungsarten, die bestimmen, ob Zugriff und Löschungen der Referenz folgen.

Prosa und Inline-Modelle

Rich Text, der Ihre eigenen Modelle in beliebiger Reihenfolge zwischen den Absätzen aufnimmt, Inline-Modelle, die Sie einmal definieren und als Feldtypen wiederverwenden, und typisierte Listen.

Hierarchien

Deklarieren Sie ein Referenzfeld als Hierarchie eines Modells, und seine Datensätze bilden einen Baum, wobei jeder Lesezugriff den Pfad des Datensatzes und seine Vorfahren zurückgibt.

Locales

Übersetzen Sie Text- und Prosa-Felder pro Locale, mit einer Rückfallkette, die Feld für Feld durchlaufen wird, und einem strikten Modus, der meldet, welche Felder keine Übersetzung hatten.

Personalisierung

Der Server wählt aus, welche Version eines Datensatzes eine Anfrage erhält, anhand des Kontexts, den der Lesezugriff mitgibt, und der Segmente, in denen der angemeldete Nutzer ist. Mit einem durchgespielten Beispiel.

Varianten

Variieren Sie einen ganzen Datensatz, ein einzelnes Feld oder einen einzelnen Prosa-Eintrag je Zielgruppe, wobei die Variante auf dem Server aus wiederverwendbaren, priorisierten Targeting-Regeln gewählt wird.

Zielgruppen und Segmente

Bauen Sie Zielgruppen aus Kontextdimensionen wie Gerät, Plattform, Locale und Anmeldestatus sowie aus regelbasierten Segmenten, die der Server bei jeder Anfrage auswertet.

Natürliche Schlüssel und Lookups

Sprechen Sie einen Datensatz über einen lesbaren Schlüssel an und deklarieren Sie zusätzliche eindeutige Lookup-Schlüssel für ein Modell, sodass ein Handle oder eine SKU ihn in einer typisierten Abfrage findet.

Design-Tokens

Farbe, Schrift und Abstände liegen als Tokens im Projekt und werden aus der API ausgeliefert, sodass eine App, die sie zur Laufzeit liest, ein Rebranding zeigt, sobald es veröffentlicht ist.

Veröffentlichung

Etwas live bringen und wieder zurückholen.

Entwürfe

Bei einem Modell mit aktivierter Veröffentlichung schreibt jedes Speichern einen Entwurf, während die API weiter die veröffentlichte Version ausliefert. Die Konsole zeigt einen Entwurf in der Vorschau so, wie die API ihn ausliefern würde.

Versionsverlauf

Bei versionierten Modellen ist jedes Speichern eine nummerierte Version, die für einen Zeitraum aufbewahrt wird, den Ihr Tarif festlegt. Eine Wiederherstellung fügt eine neue Version hinzu, und ein Probelauf meldet vorab die Auswirkung.

Geplante Veröffentlichung

Legen Sie für eine Datensatzversion einen Veröffentlichungszeitpunkt fest und, falls der Inhalt wieder verschwinden soll, einen Zeitpunkt zum Depublizieren. Ein Zeitplan lässt sich ändern oder abbrechen, bis er ausgelöst wird.

Rollouts

Ein Rollout veröffentlicht einen benannten Stapel von Datensatzversionen zu einem geplanten Zeitpunkt. Ein fehlgeschlagenes Element wird übersprungen und kann wiederholt werden, und der Stapel lässt sich zurückrollen.

Releases

Änderungen an Modellen und Konfiguration werden als Entwürfe vorbereitet und gemeinsam veröffentlicht, sofort oder zu einem festgelegten Zeitpunkt, mit einem Diff der Breaking Changes und einem Rollback.

Verhalten pro Modell

Versionierung, Veröffentlichung und Varianten werden pro Modell eingeschaltet und sind standardmäßig aus, sodass jedes Modell nur den Workflow übernimmt, den seine Datensätze brauchen.

Auslieferung

Wie es Ihre Anwendung erreicht.

Typisiertes GraphQL

Fóir generiert ein GraphQL-Schema aus Ihren Modellen. Die Produktion liefert das veröffentlichte Schema aus, und eine CLI-Prüfung lässt Ihren Build fehlschlagen, wenn eingecheckte Typen hinter dem Projekt zurückliegen.

Bei Lesezugriff aufgelöst

Ein Lesezugriff übergibt eine Locale, einen Kontext und ein Vorschau-Flag. Der Server wendet den Locale-Rückfall an, wählt die Variante und entscheidet zwischen Entwurf und veröffentlichter Version.

Live-Updates

Abonnieren Sie per WebSocket, um von Datensatzänderungen zu erfahren. Ereignisse tragen die ID dessen, was sich geändert hat, und das Live-Modul des SDK wendet sie auf Ihren Query-Cache an.

API-Schlüssel

Jeder Schlüssel ist öffentlich oder geheim und gehört zu einem Projekt. Er enthält die Scopes, die Sie ihm geben, und lässt sich auf ausgewählte Modelle und Operations oder auf eine Organisation eingrenzen.

Antwort-Caching

Die GraphQL-API cacht aufgelöste Antworten standardmäßig 60 Sekunden lang und verwirft sie, wenn ein darin enthaltener Datensatz geschrieben wird. Ein CLI-Befehl leert den Cache von Hand.

SDK und CLI

Ein typisierter Client, der das GraphQL für Ihre Anwendung schreibt, mit pro Schlüssel generierten Typen, und eine CLI für Inhalte, Schema, Veröffentlichung und Konfiguration mit JSON-Ausgabe für Skripte.

Limits, die für Sie gelten

Anfrageraten werden pro Schlüssel von Ihrem Tarif festgelegt, und Abfragetiefe, Feldanzahl und Aliase werden begrenzt, bevor eine Abfrage läuft. Antworten melden die Limits in ihren Headern.

Identität und Zugriff

Wer was sehen und tun darf.

Gehostete Anmeldung

Eine Anmeldeseite, die Fóir für Ihre Nutzer auf einer von Ihnen verifizierten Login-Domain hostet, mit Namen, Logo und Farbe Ihres Projekts, mit Passwort, per E-Mail gesendetem Code und Anmeldung über Anbieter.

OpenID-Connect-Anmeldung

Ihre Nutzer melden sich über jeden Identitätsanbieter an, der ein OpenID-Connect-Discovery-Dokument veröffentlicht. Sie geben dessen Discovery-URL und Ihre Client-Zugangsdaten an, und Fóir führt den Austausch durch.

Step-up-Verifizierung

Verlangen Sie einen Passkey oder einen Code einer Authenticator-App als zweiten Schritt nach einem Passwort, vor einer sensiblen Operation oder bei jeder Anmeldung an einer App.

Rollen

Eine Rolle ist ein Satz von Berechtigungen, den Sie zusammenstellen und der für einen Workspace oder für ein Projekt gewährt wird. Die Rollen Ihrer Nutzer werden pro Projekt in der Config oder per CLI deklariert.

Zugriff auf Datensatzebene

Ein Modell deklariert, wem seine Datensätze gehören, und jeder Datensatz ist privat oder öffentlich. Ein privater Datensatz kann per widerrufbarer Freigabe mit einer namentlich genannten Person geteilt werden.

Zugriff auf Feldebene

Ein Feld kann festlegen, welche Arten von Aufrufern es lesen und welche es schreiben dürfen. Es gibt fünf Arten, bestimmt durch die Zugangsdaten, die eine Anfrage mitführt.

Sitzungssteuerung

Die Konsole listet die Sitzungen auf, die Ihre Nutzer auf einer eigenen Login-Domain halten, pro Anmelde-App, und widerruft jede einzelne. Andere Anmeldungen enden durch Token-Widerruf oder Ablauf.

Audit-Log

Wer wann was getan hat, zusammen mit der Änderung aufgezeichnet und in der Konsole lesbar für Teammitglieder, die die Berechtigung haben. Einträge werden 90 Tage lang aufbewahrt.

Sicherheit

Wie Ihre Daten von denen aller anderen getrennt bleiben.

In der Datenbank durchgesetzt

Zugriffsregeln werden in Postgres Row-Level Security kompiliert, sodass die Datenbank filtert, was eine Anfrage lesen kann, und eine vergessene Prüfung im Anwendungscode keine Zeile preisgibt.

Workspace-Isolation

Ein Workspace ist Ihr Konto. Jede geschützte Zeile trägt seine ID, und die Policy auf der Tabelle vergleicht diese ID mit der Sitzung des Aufrufers, bevor irgendetwas anderes berücksichtigt wird.

Projekt-Isolation

Jedes Projekt hat seine eigenen Inhalte, Nutzer, Dateien, Schlüssel, Secrets und Anmelde-Domains. Ein API-Schlüssel gehört zu genau einem Projekt und lässt sich nicht auf ein anderes richten.

Organisations-Isolation

Wenn Ihr Produkt eigene Tenants hat, ist jeder davon eine Organisation. Die Datenbank versieht jede Zeile mit ihrer Organisation und filtert jeden Lesezugriff danach.

Support-Zugriff nur mit Freigabe

Wenn Fóir-Mitarbeitende zur Hilfe in einen Workspace schauen müssen, genehmigt einer seiner Administratoren die Anfrage mit einem Einmalcode. Der Zugriff dauert eine Stunde und wird protokolliert.

Demesne

Die Engine, die die Regeln kompiliert, ist Open Source, sodass Sie nachlesen können, wie die Policies geschrieben werden, und ihre Tests selbst ausführen können.

Projekte und Organisationen

Für Agenturen und für Produkte mit eigenen Tenants.

Ein Projekt pro Kunde

Jeder Kunde erhält ein Projekt mit eigenen Inhalten, Schlüsseln, Nutzern und eigener Anmeldung. Ein Workspace verwaltet sie alle, und ein eingeladener Kunde erreicht nur sein eigenes Projekt.

Organisationen

Geben Sie Ihrem Produkt eigene Tenants. Jeder Ihrer Kunden ist eine Organisation innerhalb Ihres Projekts, mit eigenen Mitgliedern, Nutzern, Daten und Limits.

Organisationsbäume

Organisationen lassen sich beliebig tief verschachteln. Eine übergeordnete liest alles unter ihr und ändert nur ihre eigenen Zeilen, und Modelle und Einstellungen werden im Baum nach unten vererbt.

Organisationsbereitstellung

Ein Aufruf legt eine Organisation mit ihrer Marke, ihren Einstellungen, ihrem ersten Mitglied und einem darauf beschränkten Schlüssel an. Führen Sie ihn zweimal aus, entsteht trotzdem nur eine Organisation.

Staging und Produktion

Eine Config-Datei deklariert Staging und Produktion als benannte Projekte, und die CLI überträgt pro Lauf an eines. Sie bleiben bis auf deklarierte Ziele identisch, und Drift wird gemeldet.

Eigene Domains

Ein Projekt kann seine API von einer Domain ausliefern, die Sie verifizieren, und eine Anmelde-App kann die gehostete Anmeldeseite von einer solchen ausliefern. Beides ist optional, TLS wird automatisch ausgestellt.

Medien

Dateien und was Sie mit ihnen tun.

Asset-Bibliothek

Laden Sie eine Datei einmal hoch und referenzieren Sie sie per ID aus jedem Datensatz, wobei Abmessungen und ein Platzhalter aus Bildern ausgelesen werden, sobald der Upload bestätigt ist.

Bildtransformationen

Jedes Bild wird in acht benannten Größen und vier Formaten ausgeliefert, beim ersten Abruf einer URL gerendert, mit Zuschnitten und Fokuspunkten pro Verwendung.

Private Dateien

Eine Datei hat ihren eigenen Eigentümer und ihre eigene Sichtbarkeit: Öffentliche Dateien werden über eine einfache URL ausgeliefert, private über einen signierten Link, der abläuft.

Video

Jedes hochgeladene Video erhält ein Vorschaubild, eine kurze animierte Vorschau und seine Dauer, und adaptives HLS-Streaming ist in einigen Tarifen enthalten.

Automatisierung

Arbeit, die ohne einen Menschen geschieht.

Zeitpläne

Ein Zeitplan führt eine Ihrer Operations nach einem Cron-Ausdruck in einer von Ihnen benannten Zeitzone aus und kann pausiert, fortgesetzt oder von Hand ausgelöst werden.

Lifecycle-Hooks

Ein Hook führt eine Ihrer Operations aus, wenn in einem Projekt etwas geschieht, etwa die Veröffentlichung eines Datensatzes, und jede Zustellung wird mit ihrem Status gespeichert.

Operations

Eine Operation ist ein HTTP-Endpunkt, den Sie hosten und bei Fóir registrieren. Fóir ruft ihn mit einer signierten Payload auf, wiederholt Fehlschläge und protokolliert jeden Lauf.

Nutzungskontingente

Ein Kontingent begrenzt, wie oft eine Operation in einem gleitenden Zeitfenster laufen kann, pro angemeldetem Nutzer oder über einen größeren Pool, und gibt eine Meldung zurück, die Sie selbst schreiben.

Vorbedingungen

Eine Vorbedingung entscheidet, ob eine Operation laufen darf, anhand der Segmentzugehörigkeit des Aufrufers oder einer Regel für die Eingabe, und lehnt mit einer Meldung ab, die Sie selbst schreiben.

Secrets

Ein Vault für die Zugangsdaten, die Ihre Operations verwenden, verschlüsselt gespeichert, per Referenz angesprochen und ohne erneutes Deployment rotierbar.

Benachrichtigungen

Senden Sie E-Mails sowie In-App- und Push-Benachrichtigungen an Ihre Nutzer, direkt oder aus einem Ereignis, mit Präferenzen, die jeder Nutzer pro Kategorie und Kanal festlegt.

Zusammenarbeit

Die Menschen und die Agents.

Notizen

Threads mit Kommentaren, die Ihr Team an einen Datensatz, eine Datei, ein Modell oder ein anderes Objekt hängt, bis hinunter zu einem Feld oder einer Textstelle, mit Erwähnungen und einem Posteingang pro Projekt.

Aufgaben

Weisen Sie eine Notiz einem Teammitglied zu, und sie wird zur Aufgabe, mit Fälligkeitsdatum, Teilaufgaben und einer Warteschlange pro Person. Mit dem Abschließen der Notiz gilt sie als erledigt.

Ask Fóir

Ein Assistent in der Konsole, der mit den eigenen Berechtigungen der angemeldeten Person arbeitet. Seine Änderungen kommen als ungespeicherte Änderungen, als Entwürfe oder als Anfragen, die Sie freigeben.

Einen Thread an Fóir übergeben

Übergeben Sie einen Notiz-Thread für einen kurzen unbeaufsichtigten Lauf an den Assistenten. Er liest das Projekt und antwortet im Thread, und er kann Inhalte weder bearbeiten noch veröffentlichen oder löschen.

Jeder MCP-Client

Verbinden Sie Ihren eigenen Agent mit dem gehosteten MCP-Server von Fóir. Er arbeitet innerhalb der Berechtigungen dessen, der ihn verbunden hat, oder der Scopes des geheimen Schlüssels, den er erhalten hat.

Feedback von Ihren Nutzern

Angemeldete Nutzer können Notizen zu einem Datensatz schreiben und die Antworten Ihres Teams lesen. Ein React-Widget legt die Notiz für Sie an, und ein Projekt kann Feedback von Besuchern annehmen.

Gehört Ihnen

Der Ausstieg und die Erweiterungen.

Postgres-Export

Ein Befehl exportiert ein Projekt als typisierte Postgres-Tabellen, die aus Ihren Modellen generiert werden, mit Fremdschlüsseln, Ihren veröffentlichten Inhalten und Download-Links für Ihre Dateien.

Zugriffsregeln im Export

Das Export-Bundle enthält Postgres Row-Level Security dafür, welche Zeilen jeder Nutzer lesen kann. Sie wenden sie selbst an. Feldberechtigungen, API-Scopes und Schreibregeln bleiben zurück.

Ihre Logik bleibt Ihre

Fóir hostet Ihren Code nicht. Sie registrieren eine Funktion, die Sie selbst hosten, als Operation, und Fóir ruft sie mit einem signierten Token mit begrenztem Scope auf, wiederholt Fehlschläge und protokolliert jeden Lauf.

Apps

Erweitern Sie die Konsole um Ihre eigenen Werkzeuge. Eine App ist eine Webseite, die Sie hosten und die als Seite, Editor-Tab, Seitenleiste oder Feld-Editor eingebettet wird.

Config-as-Code

Modelle, API-Schlüssel, Hooks, Anmeldeanbieter und der Rest der Konfiguration eines Projekts in einer Datei, die Sie einchecken. Ein Push bereitet einen Entwurf vor, und ein Release veröffentlicht ihn.

Mit einem Modell beginnen

Legen Sie ein Projekt an, definieren Sie ein Modell und lesen Sie es über die API zurück.