Get Product Catalog
curl --request GET \
--url https://api.oneclickdz.com/v3/gift-cards/catalog \
--header 'X-Access-Token: <api-key>'import requests
url = "https://api.oneclickdz.com/v3/gift-cards/catalog"
headers = {"X-Access-Token": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Access-Token': '<api-key>'}};
fetch('https://api.oneclickdz.com/v3/gift-cards/catalog', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.oneclickdz.com/v3/gift-cards/catalog",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Access-Token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.oneclickdz.com/v3/gift-cards/catalog"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Access-Token", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.oneclickdz.com/v3/gift-cards/catalog")
.header("X-Access-Token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.oneclickdz.com/v3/gift-cards/catalog")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Access-Token"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"totalCategories": 123,
"totalProducts": 123,
"data": {
"categories": [
{
"title": "<string>",
"products": [
{
"id": "<string>",
"title": "<string>",
"enabled": true,
"region": "<string>"
}
]
}
]
},
"meta": {
"timestamp": "<string>"
}
}Gift Cards
Get Product Catalog
Get all available gift cards and digital products grouped by category
GET
/
v3
/
gift-cards
/
catalog
Get Product Catalog
curl --request GET \
--url https://api.oneclickdz.com/v3/gift-cards/catalog \
--header 'X-Access-Token: <api-key>'import requests
url = "https://api.oneclickdz.com/v3/gift-cards/catalog"
headers = {"X-Access-Token": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Access-Token': '<api-key>'}};
fetch('https://api.oneclickdz.com/v3/gift-cards/catalog', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.oneclickdz.com/v3/gift-cards/catalog",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Access-Token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.oneclickdz.com/v3/gift-cards/catalog"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Access-Token", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.oneclickdz.com/v3/gift-cards/catalog")
.header("X-Access-Token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.oneclickdz.com/v3/gift-cards/catalog")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Access-Token"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"totalCategories": 123,
"totalProducts": 123,
"data": {
"categories": [
{
"title": "<string>",
"products": [
{
"id": "<string>",
"title": "<string>",
"enabled": true,
"region": "<string>"
}
]
}
]
},
"meta": {
"timestamp": "<string>"
}
}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
boolean
required
Request status
integer
Total number of categories in the catalog
integer
Total number of products across all categories
object
required
Show properties
Show properties
array
Array of category objects with products
Show category object
Show category object
Examples
curl https://api.oneclickdz.com/v3/gift-cards/catalog \
-H "X-Access-Token: YOUR_API_KEY"
const response = await fetch(
"https://api.oneclickdz.com/v3/gift-cards/catalog",
{
headers: { "X-Access-Token": "YOUR_API_KEY" },
}
);
const { data } = await response.json();
// Filter enabled products
const enabledProducts = data.categories.flatMap((cat) =>
cat.products.filter((p) => p.enabled)
);
response = requests.get(
'https://api.oneclickdz.com/v3/gift-cards/catalog',
headers={'X-Access-Token': 'YOUR_API_KEY'}
)
catalog = response.json()['data']
# Filter by category
gaming = next(c for c in catalog['categories'] if c['name'] == 'Gaming Cards')
<?php
$ch = curl_init('https://api.oneclickdz.com/v3/gift-cards/catalog');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-Access-Token: YOUR_API_KEY']);
$response = json_decode(curl_exec($ch), true);
$categories = $response['data']['categories'];
?>
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;
}
from datetime import datetime, timedelta
import requests
class CatalogCache:
def __init__(self):
self.data = None
self.timestamp = None
self.ttl = timedelta(minutes=10)
def get(self):
if self.data and datetime.now() - self.timestamp < self.ttl:
return self.data
response = requests.get(
'https://api.oneclickdz.com/v3/gift-cards/catalog',
headers={'X-Access-Token': 'YOUR_API_KEY'}
)
self.data = response.json()
self.timestamp = datetime.now()
return self.data
catalog_cache = CatalogCache()
Best Practices
Cache Catalog
Cache for 10+ minutes to reduce API calls
Filter Enabled
Only show products where
enabled: trueCheck Region
Filter by region if targeting specific markets
Organize by Category
Use categories for better UX
Next Steps
After getting the catalog:1
Display Products
Show products to users organized by category
2
Check Product Details
Use
/checkProduct/:id to get pricing and stock3
Place Order
Use
/placeOrder to purchase selected productRelated
Check Product
Get pricing and stock
Place Order
Purchase product
⌘I

