Tout ce que fait Fóir

Une API de contenu est la plus petite partie de ce dont une application a besoin. Voici le reste.

Contenu

La façon dont vos informations sont structurées.

Modèles et champs

Définissez la forme de vos données à partir de seize types de champs intégrés, dont le texte enrichi, les décimaux exacts, les médias, les références et les points géographiques, dans la console ou dans le code.

Relations

Pointez un modèle vers un autre avec un champ de référence et lisez à travers lui en une seule requête, avec des types de relation qui décident si l'accès et les suppressions suivent la référence.

Prose et modèles en ligne

Du texte enrichi qui contient vos propres modèles entre les paragraphes, dans n'importe quel ordre, des modèles en ligne que vous définissez une fois et réutilisez comme types de champs, et des listes typées.

Hiérarchies

Déclarez un champ de référence comme hiérarchie d'un modèle et ses enregistrements forment un arbre, chaque lecture renvoyant le chemin de l'enregistrement et ses ancêtres.

Locales

Traduisez les champs de texte et de prose par locale, avec une chaîne de repli parcourue champ par champ et un mode strict qui signale les champs sans traduction.

Personnalisation

Le serveur choisit la version d'un enregistrement que reçoit une requête, d'après le contexte transmis par la lecture et les segments auxquels appartient l'utilisateur connecté. Un exemple détaillé est inclus.

Variantes

Faites varier un enregistrement entier, un seul champ ou une seule entrée de prose selon l'audience, la variante étant sélectionnée sur le serveur à partir de règles de ciblage réutilisables et hiérarchisées.

Audiences et segments

Construisez des audiences à partir de dimensions de contexte comme l'appareil, la plateforme, la locale et l'état de connexion, et à partir de segments à base de règles que le serveur évalue à chaque requête.

Clés naturelles et recherches

Adressez un enregistrement par une clé lisible, et déclarez des clés de recherche uniques supplémentaires sur un modèle pour qu'un identifiant ou un SKU le trouve en une seule requête typée.

Tokens de design

La couleur, la typographie et l'espacement sont conservés comme tokens du projet et servis par l'API, de sorte qu'une app qui les lit à l'exécution affiche un changement d'identité de marque dès qu'il est publié.

Publication

Mettre en ligne, et revenir en arrière.

Brouillons

Sur un modèle dont la publication est activée, chaque sauvegarde écrit un brouillon pendant que l'API continue de servir la version publiée. La console prévisualise un brouillon tel que l'API le servirait.

Historique des versions

Sur les modèles versionnés, chaque sauvegarde est une version numérotée, conservée pendant une durée fixée par votre forfait. Restaurer ajoute une nouvelle version, et une simulation indique d'abord l'effet.

Publication planifiée

Définissez une heure de publication sur une version d'enregistrement, et une heure de dépublication si le contenu doit être retiré. Une planification peut être modifiée ou annulée jusqu'à son déclenchement.

Déploiements

Un déploiement publie un lot nommé de versions d'enregistrements à un moment planifié. Un élément en échec est ignoré et peut être relancé, et le lot peut être annulé.

Publications

Les changements apportés aux modèles et à la configuration sont préparés comme brouillons et publiés ensemble, maintenant ou à une heure fixée, avec un diff des changements cassants et une annulation.

Comportement par modèle

Le versionnement, la publication et les variantes s'activent par modèle et sont désactivés par défaut, de sorte que chaque modèle n'adopte que le flux de travail dont ses enregistrements ont besoin.

Diffusion

La façon dont cela parvient à votre application.

GraphQL typé

Fóir génère un schéma GraphQL à partir de vos modèles. La production sert le schéma publié, et une vérification de la CLI fait échouer votre build quand les types commités sont en retard sur le projet.

Résolu à la lecture

Une lecture transmet une locale, un contexte et un indicateur d'aperçu. Le serveur applique le repli de locale, choisit la variante et sélectionne la version brouillon ou publiée.

Mises à jour en direct

Abonnez-vous via WebSocket pour être informé des modifications d'enregistrements. Les événements portent l'identifiant de ce qui a changé, et le module live du SDK les applique à votre cache de requêtes.

Clés API

Chaque clé est publique ou secrète et appartient à un seul projet. Elle détient les portées que vous lui donnez, et peut être restreinte à des modèles et des opérations choisis ou à une seule organisation.

Cache des réponses

L'API GraphQL met en cache les réponses résolues pendant 60 secondes par défaut et les supprime quand un enregistrement qu'elles contiennent est écrit. Une commande de la CLI purge à la main.

SDK et CLI

Un client typé qui écrit le GraphQL de votre application, avec des types générés par clé, et une CLI pour le contenu, le schéma, la publication et la configuration avec une sortie JSON pour les scripts.

Limites appliquées pour vous

Les débits de requêtes sont fixés par clé selon votre forfait, et la profondeur des requêtes, le nombre de champs et les alias sont plafonnés avant l'exécution d'une requête. Les réponses indiquent les limites dans leurs en-têtes.

Identité et accès

Qui peut voir et faire quoi.

Connexion hébergée

Une page de connexion que Fóir héberge pour vos utilisateurs sur un domaine de connexion que vous vérifiez, portant le nom, le logo et la couleur de votre projet, avec mot de passe, code envoyé par e-mail et connexion par fournisseur.

Connexion OpenID Connect

Vos utilisateurs se connectent via n'importe quel fournisseur d'identité qui publie un document de découverte OpenID Connect. Vous fournissez son URL de découverte et vos identifiants client, et Fóir gère l'échange.

Vérification renforcée

Exigez une passkey ou un code d'application d'authentification comme second facteur après un mot de passe, avant une opération sensible ou à chaque connexion à une app.

Rôles

Un rôle est un ensemble de permissions que vous composez, accordé sur un espace de travail ou sur un seul projet. Les rôles de vos utilisateurs sont déclarés par projet dans la config ou la CLI.

Accès au niveau de l'enregistrement

Un modèle déclare à qui appartiennent ses enregistrements, et chaque enregistrement est privé ou public. Un enregistrement privé peut être partagé avec une personne nommée par un octroi que vous pouvez révoquer.

Accès au niveau du champ

Un champ peut nommer les types d'appelants autorisés à le lire et ceux autorisés à l'écrire. Il y a cinq types, déterminés par l'identifiant que porte une requête.

Contrôle des sessions

La console liste les sessions que vos utilisateurs détiennent sur un domaine de connexion personnalisé, par application de connexion, et en révoque n'importe laquelle. Les autres connexions prennent fin par révocation du jeton ou par expiration.

Journal d'audit

Qui a fait quoi et quand, enregistré avec le changement et consultable dans la console par les membres de l'équipe qui détiennent la permission. Les entrées sont conservées 90 jours.

Sécurité

La façon dont vos données sont séparées de celles de tous les autres.

Appliqué dans la base de données

Les règles d'accès sont compilées en sécurité au niveau des lignes de Postgres, de sorte que la base de données filtre ce qu'une requête peut lire et qu'une vérification oubliée dans le code applicatif n'expose pas une ligne.

Isolation des espaces de travail

Un espace de travail est votre compte. Chaque ligne gouvernée porte son identifiant, et la politique de la table compare cet identifiant à la session de l'appelant avant toute autre considération.

Isolation des projets

Chaque projet a son propre contenu, ses utilisateurs, ses fichiers, ses clés, ses secrets et ses domaines de connexion. Une clé API appartient à un seul projet et ne peut pas être dirigée vers un autre.

Isolation des organisations

Quand votre produit a ses propres tenants, chacun est une organisation. La base de données marque chaque ligne de son organisation et filtre chaque lecture en conséquence.

Accès de l'assistance sur approbation

Quand le personnel de Fóir doit regarder à l'intérieur d'un espace de travail pour aider, l'un de ses administrateurs approuve la demande avec un code à usage unique. La visite dure une heure et est enregistrée.

Demesne

Le moteur qui compile les règles est open source, vous pouvez donc lire comment les politiques sont écrites et exécuter vous-même ses tests.

Projets et organisations

Pour les agences, et pour les produits qui ont leurs propres tenants.

Un projet par client

Chaque client obtient un projet avec son propre contenu, ses clés, ses utilisateurs et sa connexion. Un seul espace de travail les administre tous, et un client que vous invitez n'atteint que son propre projet.

Organisations

Donnez à votre produit ses propres tenants. Chacun de vos clients est une organisation au sein de votre projet, avec ses propres membres, utilisateurs, données et limites.

Arbres d'organisations

Les organisations s'imbriquent à n'importe quelle profondeur. Un parent lit tout ce qui se trouve en dessous et ne modifie que ses propres lignes, et les modèles et les paramètres sont hérités le long de l'arbre.

Provisionnement d'organisations

Un seul appel crée une organisation avec son identité de marque, ses paramètres, son premier membre et une clé confinée à elle. Exécutez-le deux fois et vous obtenez toujours une seule organisation.

Staging et production

Un seul fichier de config déclare le staging et la production comme projets nommés, et la CLI fait un push vers l'un d'eux à chaque exécution. Ils restent identiques hormis les destinations déclarées, et toute dérive est signalée.

Domaines personnalisés

Un projet peut servir son API depuis un domaine que vous vérifiez, et une application de connexion peut servir la page de connexion hébergée depuis un domaine. Les deux sont facultatifs, avec TLS émis automatiquement.

Médias

Les fichiers, et ce que vous en faites.

Bibliothèque de médias

Téléversez un fichier une fois et référencez-le par son identifiant depuis n'importe quel enregistrement, avec les dimensions et un placeholder lus sur les images à la confirmation du téléversement.

Transformations d'images

Chaque image est servie en huit tailles nommées et quatre formats, générée à la première requête d'une URL, avec des recadrages et des points focaux définis par usage.

Fichiers privés

Un fichier a son propre propriétaire et sa propre visibilité, les fichiers publics étant servis depuis une URL simple et les fichiers privés par un lien signé qui expire.

Vidéo

Chaque vidéo téléversée reçoit une vignette, un court aperçu animé et sa durée, et la diffusion HLS adaptative est incluse dans certains forfaits.

Automatisation

Du travail qui se fait sans intervention humaine.

Planifications

Une planification exécute l'une de vos opérations selon une expression cron, dans un fuseau horaire que vous nommez, et peut être mise en pause, reprise ou déclenchée à la main.

Hooks de cycle de vie

Un hook exécute l'une de vos opérations quand quelque chose se produit dans un projet, comme la publication d'un enregistrement, et chaque livraison est conservée avec son statut.

Opérations

Une opération est un point de terminaison HTTP que vous hébergez et enregistrez auprès de Fóir, qui l'appelle avec une charge signée, relance les échecs et enregistre chaque exécution.

Quotas d'utilisation

Un quota plafonne la fréquence d'exécution d'une opération sur une fenêtre glissante, par utilisateur connecté ou sur un ensemble plus large, et renvoie un message que vous rédigez.

Préconditions

Une précondition décide si une opération peut s'exécuter, selon l'appartenance de l'appelant à un segment ou selon une règle sur l'entrée, et refuse avec un message que vous rédigez.

Secrets

Un coffre pour les identifiants que vos opérations utilisent, stockés chiffrés, adressés par référence et renouvelés sans redéploiement.

Notifications

Envoyez des notifications par e-mail, in-app et push à vos utilisateurs, directement ou à partir d'un événement, avec des préférences que chaque utilisateur définit par catégorie et par canal.

Travailler ensemble

Les personnes, et les agents.

Notes

Des commentaires en fil que votre équipe attache à un enregistrement, à un fichier, à un modèle ou à un autre sujet, jusqu'à un champ ou un passage précis, avec des mentions et une boîte de réception par projet.

Tâches

Assignez une note à un membre de l'équipe et elle devient une tâche, avec une échéance, des sous-tâches et une file par personne. Régler la note la marque comme terminée.

Ask Fóir

Un assistant dans la console qui travaille avec les propres permissions de la personne connectée. Ses modifications arrivent comme des changements non enregistrés, comme des brouillons ou comme des demandes que vous approuvez.

Confier un fil à Fóir

Confiez un fil de notes à l'assistant pour une courte exécution sans surveillance. Il lit le projet et répond sur le fil, et il ne peut ni modifier, ni publier, ni supprimer de contenu.

N'importe quel client MCP

Connectez votre propre agent au serveur MCP hébergé de Fóir. Il travaille dans le cadre des permissions de la personne qui l'a connecté, ou des portées de la clé secrète qui lui a été donnée.

Retours de vos utilisateurs

Les utilisateurs connectés peuvent écrire des notes sur un enregistrement et lire les réponses de votre équipe. Un widget React dépose la note pour vous, et un projet peut accepter les retours des visiteurs.

À vous de le garder

La sortie, et les extensions.

Export Postgres

Une seule commande exporte un projet sous forme de tables Postgres typées générées à partir de vos modèles, avec clés étrangères, votre contenu publié et des liens de téléchargement pour vos fichiers.

Règles d'accès dans l'export

Le bundle d'export inclut la sécurité au niveau des lignes de Postgres pour déterminer les lignes que chaque utilisateur peut lire. Vous l'appliquez vous-même. Les permissions de champs, les portées d'API et les règles d'écriture restent derrière.

Votre logique reste la vôtre

Fóir n'héberge pas votre code. Vous enregistrez comme opération une fonction que vous hébergez, et Fóir l'appelle avec un jeton signé et délimité, relance les échecs et enregistre chaque exécution.

Apps

Étendez la console avec vos propres outils. Une app est une page web que vous hébergez, intégrée comme page, comme onglet d'éditeur, comme barre latérale ou comme éditeur de champ.

Config as code

Modèles, clés API, hooks, fournisseurs de connexion et le reste de la configuration d'un projet dans un seul fichier que vous commitez. Un push met un brouillon en attente et une publication le met en ligne.

Commencer avec un modèle

Créez un projet, définissez un modèle et relisez-le via l'API.