Fonctions avancees
Recherche, comptage, operations en masse et gestion des collections.
Lister les collections
Recupere la liste des collections accessibles avec votre cle API.
curl "https://api.skemacms.com/public/collections" \ -H "X-API-Key: pk_live_xxx"
Reponse :
{
"data": ["articles", "clients", "commandes", "produits"],
"message": "Collections recuperees avec succes",
"statusCode": 200
}Schema d'une collection
Recupere le schema complet : champs, types et relations.
curl "https://api.skemacms.com/public/collections/articles" \ -H "X-API-Key: pk_live_xxx"
Reponse :
{
"data": {
"name": "articles",
"label": "Articles",
"description": "Blog articles",
"primary_key": "id",
"fields": [
{ "name": "title", "type": "string", "required": true },
{ "name": "content", "type": "text", "required": false },
{ "name": "published", "type": "boolean", "required": false },
{ "name": "created_at", "type": "datetime", "required": false }
],
"relations": [
{
"name": "id_author",
"type": "many-to-one",
"target_collection": "users",
"target_field": "id"
}
]
},
"statusCode": 200
}Recherche textuelle
Recherchez dans une ou plusieurs colonnes.
# Recherche dans tous les champs texte curl "https://api.skemacms.com/public/articles/search?q=javascript" \ -H "X-API-Key: pk_live_xxx" # Recherche dans des champs specifiques curl "https://api.skemacms.com/public/articles/search?q=react&fields=title,content" \ -H "X-API-Key: pk_live_xxx"
Reponse :
{
"data": [
{ "id": "uuid-1", "title": "Introduction a JavaScript", "content": "..." },
{ "id": "uuid-2", "title": "JavaScript avance", "content": "..." }
],
"count": 2,
"page": 1,
"perPage": 20,
"totalPages": 1,
"statusCode": 200
}Compter les items
Compte le nombre d'items sans les telecharger.
# Compter tous les articles curl "https://api.skemacms.com/public/articles/count" \ -H "X-API-Key: pk_live_xxx" # Compter avec filtre curl "https://api.skemacms.com/public/articles/count?published=true" \ -H "X-API-Key: pk_live_xxx"
Reponse :
{
"data": 42,
"message": "Items comptes avec succes",
"statusCode": 200
}Creation en masse (batch)
Creez plusieurs items en une seule requete.
curl -X POST "https://api.skemacms.com/public/articles/batch" \
-H "X-API-Key: pk_live_xxx" \
-H "Content-Type: application/json" \
-d '[
{ "title": "Article 1", "content": "Contenu 1" },
{ "title": "Article 2", "content": "Contenu 2" },
{ "title": "Article 3", "content": "Contenu 3" }
]'Reponse :
{
"data": [
{ "id": "uuid-1", "title": "Article 1", ... },
{ "id": "uuid-2", "title": "Article 2", ... },
{ "id": "uuid-3", "title": "Article 3", ... }
],
"message": "3 items crees avec succes",
"statusCode": 201
}Mise a jour en masse
Mettez a jour plusieurs items en une seule requete.
curl -X PUT "https://api.skemacms.com/public/articles/batch" \
-H "X-API-Key: pk_live_xxx" \
-H "Content-Type: application/json" \
-d '[
{ "id": "uuid-1", "published": true },
{ "id": "uuid-2", "published": true },
{ "id": "uuid-3", "published": false }
]'Reponse :
{
"data": [
{ "id": "uuid-1", "published": true, ... },
{ "id": "uuid-2", "published": true, ... },
{ "id": "uuid-3", "published": false, ... }
],
"message": "3 items mis a jour avec succes",
"statusCode": 200
}Exemple JavaScript complet
const API_KEY = process.env.SKEMA_API_KEY;
const BASE_URL = 'https://api.skemacms.com/public';
const headers = {
'X-API-Key': API_KEY,
'Content-Type': 'application/json'
};
// Lister les collections
const getCollections = async () => {
const res = await fetch(`${BASE_URL}/collections`, { headers });
return res.json();
};
// Schema d'une collection
const getSchema = async (collection) => {
const res = await fetch(`${BASE_URL}/collections/${collection}`, { headers });
return res.json();
};
// Recherche
const search = async (collection, query, fields) => {
const params = new URLSearchParams({ q: query });
if (fields) params.append('fields', fields);
const res = await fetch(`${BASE_URL}/${collection}/search?${params}`, { headers });
return res.json();
};
// Compter
const count = async (collection, filters = {}) => {
const params = new URLSearchParams(filters);
const res = await fetch(`${BASE_URL}/${collection}/count?${params}`, { headers });
return res.json();
};
// Creation en masse
const batchCreate = async (collection, items) => {
const res = await fetch(`${BASE_URL}/${collection}/batch`, {
method: 'POST',
headers,
body: JSON.stringify(items)
});
return res.json();
};
// Mise a jour en masse
const batchUpdate = async (collection, items) => {
const res = await fetch(`${BASE_URL}/${collection}/batch`, {
method: 'PUT',
headers,
body: JSON.stringify(items)
});
return res.json();
};