Skip to main content
Voir en Markdown

Créer, lire et mettre à jour

Cycle de vie d'un enregistrement unique via l'API des enregistrements. Pour supprimer et fusionner des lignes, voir Upsert et suppression ; pour lister plusieurs lignes, Filtrage, tri et pagination ; pour les écritures en masse, Opérations par lot.

Tous les corps d'écriture utilisent l'enveloppe canonique { "fields": { ... } } décrite dans la Présentation des enregistrements.

Créer un enregistrement

app.json
POST /api/tables/contacts/records
{
  "fields": {
    "email": "john@example.com",
    "first_name": "John",
    "last_name": "Doe"
  }
}
Statut Signification
201 Created Enregistrement créé ; le corps est l'enregistrement stocké avec id et paternité
400 Bad Request Champ obligatoire manquant ou valeur de type de champ invalide
401 Unauthorized Aucune session active
404 Not Found La table n'existe pas, ou l'appelant n'y a pas accès
409 Conflict Violation de contrainte d'unicité — "Resource already exists"

La réponse porte l'id généré, l'écho de fields, et les métadonnées de paternité (createdBy, createdAt, updatedAt).

Lire un enregistrement

code
GET /api/tables/contacts/records/42
Statut Signification
200 OK Enregistrement renvoyé
401 Unauthorized Aucune session active
404 Not Found Enregistrement absent ou invisible pour l'appelant (anti-énumération)

Les champs pour lesquels l'appelant n'a pas la permission de lecture sont omis de la réponse : le même enregistrement peut donc renvoyer un ensemble de champs différent selon le rôle de l'appelant et les permissions par champ.

Passez ?includeDeleted=true pour lire une ligne supprimée en douceur. Notez que sur ce point de terminaison format n'accepte que display?format=raw renvoie 400 VALIDATION_ERROR, et omettre le paramètre est la façon de demander les valeurs brutes.

Mettre à jour un enregistrement

PATCH effectue une mise à jour partielle : seuls les champs présents dans le corps sont écrits, les champs omis restent intacts.

app.json
PATCH /api/tables/contacts/records/42
{
  "fields": {
    "status": "active"
  }
}
Statut Signification
200 OK Enregistrement mis à jour ; updatedBy/updatedAt réestampillés
400 Bad Request Valeur de type de champ invalide ou violation de contrainte
401 Unauthorized Aucune session active
404 Not Found Enregistrement absent, invisible, ou non modifiable
409 Conflict Échec du verrouillage optimiste (écriture périmée)

Verrouillage optimiste

Incluez un jeton updatedAt de premier niveau à côté de fields pour vous prémunir des écritures perdues. Le serveur le compare à la colonne updated_at stockée de l'enregistrement et rejette une écriture divergente.

app.json
PATCH /api/tables/contacts/records/42
{
  "fields": { "status": "active" },
  "updatedAt": "2025-01-15T10:30:00Z"
}

Un jeton périmé renvoie 409 Conflict : « L'enregistrement a été modifié depuis votre dernière lecture. Rechargez la version la plus récente et réessayez. »

La vérification est entièrement ignorée — l'écriture se poursuit simplement — dans trois cas : le jeton est absent, l'enregistrement stocké n'a pas d'updated_at, ou l'une des deux valeurs n'est pas analysable comme horodatage. Le verrouillage optimiste est donc opt-in par requête, et un client qui oublie le jeton obtient silencieusement un « la dernière écriture gagne ».

Supprimer un enregistrement

Déplacé vers Upsert et suppression.

Upsert d'un enregistrement

Déplacé vers Upsert et suppression.

Mise en forme d'affichage vs brute

Déplacé vers Upsert et suppression.

Pages associées

Dernière mise à jour 11 août 2026

Cette documentation a été rédigée avec de l'IA : des erreurs ou du contenu obsolète sont donc possibles. Sovrium est en bêta. Les contributions et corrections sont les bienvenues.

Construit avec Sovrium