Documentation Index Fetch the complete documentation index at: https://docs.oneclickdz.com/llms.txt
Use this file to discover all available pages before exploring further.
Vue d’ensemble
L’endpoint du catalogue retourne toutes les cartes-cadeaux et produits numériques disponibles, organisés par catégories telles que les cartes gaming, les services de streaming, etc. Les produits doivent être mis en cache pour minimiser les appels API, car le catalogue change rarement.
Mettez en cache les données du catalogue pendant au moins 24 heures . Les produits sont ajoutés/supprimés rarement.
Référence API
GET /v3/gift-cards/catalog Documentation complète de l’endpoint
Chargement de base du catalogue
async function loadCatalog () {
const response = await fetch (
"https://api.oneclickdz.com/v3/gift-cards/catalog" ,
{
headers: {
"X-Access-Token" : process . env . API_KEY ,
},
}
);
if ( ! response . ok ) {
throw new Error ( `Failed to load catalog: ${ response . status } ` );
}
const result = await response . json ();
return result . data ;
}
// Usage
const catalog = await loadCatalog ();
console . log ( `Total categories: ${ catalog . categories . length } ` );
console . log (
`Total products: ${ catalog . categories . reduce (
( sum , cat ) => sum + cat . products . length ,
0
) } `
);
Structure de la réponse
{
"success" : true ,
"data" : {
"categories" : [
{
"name" : "Gaming Cards" ,
"products" : [
{
"id" : "507f1f77bcf86cd799439011" ,
"title" : "PlayStation Network" ,
"enabled" : true ,
"region" : "dz"
},
{
"id" : "507f1f77bcf86cd799439012" ,
"title" : "Google Play Gift Card" ,
"enabled" : true
}
]
},
{
"name" : "Streaming Services" ,
"products" : [
{
"id" : "507f1f77bcf86cd799439014" ,
"title" : "Netflix Gift Card" ,
"enabled" : true
}
]
}
]
},
"meta" : {
"totalCategories" : 8 ,
"totalProducts" : 127
}
}
Implémentation du cache
class CatalogCache {
constructor ( ttlMinutes = 10 ) {
this . data = null ;
this . timestamp = 0 ;
this . ttl = ttlMinutes * 60 * 1000 ;
}
async get () {
const now = Date . now ();
// Return cached if still valid
if ( this . data && now - this . timestamp < this . ttl ) {
console . log ( "Returning cached catalog" );
return this . data ;
}
// Fetch fresh data
console . log ( "Fetching fresh catalog" );
const response = await fetch (
"https://api.oneclickdz.com/v3/gift-cards/catalog" ,
{
headers: { "X-Access-Token" : process . env . API_KEY },
}
);
this . data = await response . json ();
this . timestamp = now ;
return this . data ;
}
invalidate () {
this . data = null ;
this . timestamp = 0 ;
}
}
// Usage
const cache = new CatalogCache ( 10 ); // TTL 24 heures
// First call - fetches from API
const catalog1 = await cache . get ();
// Second call within 24 hours - returns cached
const catalog2 = await cache . get ();
// Force refresh
cache . invalidate ();
const catalog3 = await cache . get (); // Récupère de nouvelles données
Filtrage des produits
N’afficher que les produits activés aux clients :
function getEnabledProducts ( catalog ) {
const enabled = [];
for ( const category of catalog . categories ) {
const enabledInCategory = category . products . filter (( p ) => p . enabled );
if ( enabledInCategory . length > 0 ) {
enabled . push ({
categoryName: category . name ,
products: enabledInCategory ,
});
}
}
return enabled ;
}
// Usage
const catalog = await cache . get ();
const enabledProducts = getEnabledProducts ( catalog . data );
console . log ( "Enabled products:" , JSON . stringify ( enabledProducts , null , 2 ));
Filtrage par région
Filtrer les produits par région pour cibler des marchés spécifiques :
function filterByRegion ( catalog , region = "dz" ) {
return catalog . categories
. map (( category ) => ({
... category ,
products: category . products . filter (
( p ) => p . enabled && ( ! p . region || p . region === region )
),
}))
. filter (( cat ) => cat . products . length > 0 );
}
// Usage
const algerianProducts = filterByRegion ( catalog . data , "dz" );
Bonnes pratiques
Gérer les erreurs gracieusement Revenez aux données en cache si l’API est temporairement indisponible
Organiser par catégorie Utilisez la structure par catégories pour une meilleure expérience utilisateur
Étapes suivantes
Vérifier les produits Obtenir les prix et le stock pour les produits sélectionnés
Passer des commandes Soumettre des commandes avec validation
Référence API Documentation complète de l’endpoint
Vue d'ensemble Retour à la vue d’ensemble de l’intégration
Suivre le statut Surveiller l’exécution des commandes
Livraison sécurisée Chiffrer et livrer les cartes