Overview
Returns complete catalog of gift cards and digital products organized by categories (Gaming, Streaming, etc.).
Cache this data for at least 24 hours. Catalog changes infrequently.
Response
Total number of categories in the catalog
Total number of products across all categories
Array of category objects with products
Category name (e.g., “PSN”, “Game Stores”, “iTunes”)
Array of product objects
Unique product ID (use with /check-product)
Geographic region code (e.g., “germany”, “united-states-america”)
Response timestamp in ISO 8601 format
Examples
curl https://api.oneclickdz.com/v3/gift-cards/catalog \
-H "X-Access-Token: YOUR_API_KEY"
Response Example
### Response Example
```json
{
"success": true,
"totalCategories": 14,
"totalProducts": 62,
"data": {
"categories": [
{
"title": "PSN",
"products": [
{
"id": "6126393c6f57860f925a1983",
"title": "PSN Germany",
"enabled": true,
"region": "germany"
},
{
"id": "612619816f57860f9259eee3",
"title": "PSN UK",
"enabled": true,
"region": "united-kingdom"
},
{
"id": "60111eba751a26110ab5b209",
"title": "PSN US",
"enabled": true,
"region": "united-states-america"
}
]
},
{
"title": "Game Stores",
"products": [
{
"id": "6037a862b8d036107c61d312",
"title": "Steam USD",
"enabled": true,
"region": "united-states-america"
},
{
"id": "6038ffd52a60b8107c134e39",
"title": "Steam EUR",
"enabled": true,
"region": "european-union"
},
{
"id": "60b6f304ad371a16a4347e11",
"title": "Roblox",
"enabled": true
}
]
}
]
},
"meta": {
"timestamp": "2025-10-29T00:36:52.615Z"
}
}
## Building Product UI
```javascript
// Example: Building a category-based UI
function renderCatalog(catalog) {
return catalog.categories.map((category) => ({
categoryName: category.name,
products: category.products
.filter((p) => p.enabled)
.map((p) => ({
id: p.id,
name: p.title,
imageUrl: `/images/products/${p.id}.png`,
})),
}));
}
Caching Strategy
// Cache for 24 hours
const cache = {
data: null,
timestamp: 0,
ttl: 24 * 60 * 60 * 1000, // 24 hours
};
async function getCatalog() {
const now = Date.now();
if (cache.data && now - cache.timestamp < cache.ttl) {
return cache.data;
}
const response = await fetch(
"https://api.oneclickdz.com/v3/gift-cards/catalog",
{
headers: { "X-Access-Token": process.env.API_KEY },
}
);
cache.data = await response.json();
cache.timestamp = now;
return cache.data;
}
Best Practices
Cache Catalog
Cache for 10+ minutes to reduce API calls
Filter Enabled
Only show products where enabled: true
Check Region
Filter by region if targeting specific markets
Organize by Category
Use categories for better UX
Next Steps
After getting the catalog:
Display Products
Show products to users organized by category
Check Product Details
Use /checkProduct/:id to get pricing and stock
Place Order
Use /placeOrder to purchase selected product