Categorías y Organización
Organiza el catálogo de productos con categorías.
Descripción General
Las categorías ayudan a organizar los productos de tu tienda. Usa la API de Categories para crear una organización de productos y mantener tu catálogo estructurado.
Listar Categorías
curl -X GET https://api.whatalo.com/v1/categories \
-H "X-API-Key: wk_live_your_key_here"Scope requerido: read:products
Las categorías comparten los scopes read:products / write:products ya que son un sub-recurso de productos.
Obtener una Categoría
curl -X GET https://api.whatalo.com/v1/categories/cat_abc123 \
-H "X-API-Key: wk_live_your_key_here"Crear una Categoría
curl -X POST https://api.whatalo.com/v1/categories \
-H "X-API-Key: wk_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Electronics"
}'Scope requerido: write:products
Solo name es requerido. slug se genera automáticamente a partir del nombre si se omite.
Actualizar una Categoría
curl -X PATCH https://api.whatalo.com/v1/categories/cat_abc123 \
-H "X-API-Key: wk_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Electronics & Gadgets"
}'Scope requerido: write:products
Eliminar una Categoría
curl -X DELETE https://api.whatalo.com/v1/categories/cat_abc123 \
-H "X-API-Key: wk_live_your_key_here"Scope requerido: write:products
Eliminar una categoría no elimina sus productos. Los productos quedarán sin categoría.
Patrones Comunes
Crear Categorías desde una Lista
const defaultCategories = ['Clothing', 'Electronics', 'Home & Garden'];
async function seedCategories() {
for (const name of defaultCategories) {
const res = await fetch('https://api.whatalo.com/v1/categories', {
method: 'POST',
headers: {
'X-API-Key': API_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({ name })
});
if (!res.ok) {
console.error(`Failed to create "${name}":`, await res.json());
}
}
}Sincronizar Categorías con Sistema Externo
async function syncCategories(externalCategories) {
const res = await fetch('https://api.whatalo.com/v1/categories?per_page=100', {
headers: { 'X-API-Key': API_KEY }
});
const { data: existing } = await res.json();
const existingNames = new Set(existing.map(c => c.name));
for (const ext of externalCategories) {
if (!existingNames.has(ext.name)) {
const createRes = await fetch('https://api.whatalo.com/v1/categories', {
method: 'POST',
headers: {
'X-API-Key': API_KEY,
'Content-Type': 'application/json'
},
body: JSON.stringify({ name: ext.name })
});
if (!createRes.ok) {
console.error(`Failed to create "${ext.name}":`, await createRes.json());
}
}
}
}