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());
      }
    }
  }
}

On this page