🔎 Filtros, campos y paginacion — construir queries
Actualizado: 2024-12-01
La API REST de PrestaShop permite filtrar, seleccionar campos especificos, paginar y ordenar los resultados mediante parametros de query string.
#Seleccion de campos con display
Parametro display — seleccionar campos
bash
# Todos los campos (por defecto)
curl -u "API_KEY:" "https://tienda.com/api/products?display=full&output_format=JSON"
# Solo campos especificos (mucho mas rapido)
curl -u "API_KEY:" "https://tienda.com/api/products?display=[id,reference,price,active]&output_format=JSON"
# Solo los IDs (para obtener lista de IDs rapidamente)
curl -u "API_KEY:" "https://tienda.com/api/products?output_format=JSON"
# Sin display ni filter, solo devuelve lista de IDs
# Un solo recurso por ID — siempre devuelve todos los campos
curl -u "API_KEY:" "https://tienda.com/api/products/42?output_format=JSON"
#Filtros con filter[]
Tipos de filtros disponibles
bash
# ── Igualdad exacta ──
curl -u "K:" "https://t.com/api/products?filter[active]=1&output_format=JSON"
curl -u "K:" "https://t.com/api/orders?filter[current_state]=5&output_format=JSON"
# ── Rango (intervalo [min,max]) ──
curl -u "K:" "https://t.com/api/products?filter[price]=[10,100]&output_format=JSON"
curl -u "K:" "https://t.com/api/products?filter[date_add]=[2024-01-01,2024-12-31]&output_format=JSON"
# ── LIKE (busqueda parcial con %) ──
curl -u "K:" "https://t.com/api/products?filter[reference]=%REF%&output_format=JSON"
curl -u "K:" "https://t.com/api/customers?filter[email]=%@gmail%&output_format=JSON"
# ── Empieza por ──
curl -u "K:" "https://t.com/api/products?filter[reference]=REF%&output_format=JSON"
# ── Multiples filtros (se combinan con AND) ──
curl -u "K:" "https://t.com/api/products?\
filter[active]=1&\
filter[id_manufacturer]=3&\
filter[price]=[0,50]&\
output_format=JSON"
#Paginacion con limit
Parametro limit para paginacion
bash
# Primeros 20 resultados
curl -u "K:" "https://t.com/api/products?limit=20&output_format=JSON"
# 20 resultados desde la posicion 40 (pagina 3 con 20/pagina)
curl -u "K:" "https://t.com/api/products?limit=40,20&output_format=JSON"
# formato: limit={offset},{cantidad}
# Pagina 1 (primeros 10)
curl -u "K:" "https://t.com/api/products?limit=0,10&output_format=JSON"
# Pagina 2 (siguientes 10)
curl -u "K:" "https://t.com/api/products?limit=10,10&output_format=JSON"
# Pagina 3 (siguientes 10)
curl -u "K:" "https://t.com/api/products?limit=20,10&output_format=JSON"
# ── En PHP — calculo de offset ──
// $page empezando en 1, $perPage = 20
$offset = ($page - 1) * $perPage;
$params = ['limit' => $offset . ',' . $perPage, 'output_format' => 'JSON'];
#Ordenacion con sort
Parametro sort para ordenar resultados
bash
# Ordenar por precio ascendente
curl -u "K:" "https://t.com/api/products?sort=[price_ASC]&output_format=JSON"
# Ordenar por fecha descendente
curl -u "K:" "https://t.com/api/products?sort=[date_add_DESC]&output_format=JSON"
# Multiples criterios de ordenacion
curl -u "K:" "https://t.com/api/products?sort=[price_ASC,date_add_DESC]&output_format=JSON"
# Por referencia alfabetica
curl -u "K:" "https://t.com/api/products?sort=[reference_ASC]&output_format=JSON"
#Ejemplos combinados
Queries avanzadas combinando parametros
php
<?php
// ── Productos activos de una categoria, ordenados y paginados ──
$params = [
'output_format' => 'JSON',
'filter[active]' => 1,
'filter[id_category_default]' => 5,
'display' => '[id,reference,name,price]',
'sort' => '[price_ASC]',
'limit' => '0,20', // Primeros 20
];
$url = 'https://mitienda.com/api/products?' . http_build_query($params);
// ── Pedidos del ultimo mes ──
$params = [
'output_format' => 'JSON',
'filter[date_add]' => '[' . date('Y-m-d', strtotime('-30 days')) . ',' . date('Y-m-d') . ']',
'display' => '[id,reference,total_paid_tax_incl,current_state,date_add]',
'sort' => '[date_add_DESC]',
'limit' => 50,
];
// ── Clientes con email especifico ──
$params = [
'output_format' => 'JSON',
'filter[email]' => pSQL($email),
'display' => '[id,firstname,lastname,email,date_add]',
'limit' => 1,
];
Descargar en Markdown
Pensado para pegar en ChatGPT, Claude u otra IA. Incluye solo el contenido de esta pagina.