# API pública de JP Digital Ecuador

La API pública permite descubrir el servicio y consultar el catálogo publicado de WooCommerce. Todas las operaciones documentadas son anónimas, de solo lectura y devuelven JSON. No crean pedidos, no reservan inventario y no procesan pagos.

## Descubrimiento

`GET https://jpdigital.com.ec/wp-json/jpdigital/v1/status`

Devuelve el estado del servicio y enlaces a OpenAPI, documentación, llms.txt y catálogo.

## Buscar productos

`GET https://jpdigital.com.ec/wp-json/wc/store/v1/products`

Parámetros habituales:

- `search`: nombre o texto del producto.
- `sku`: uno o más SKU separados por comas.
- `category`: ID o slug de categoría.
- `brand`: ID o slug de marca.
- `page`: página, desde 1.
- `per_page`: resultados por página, entre 1 y 100.
- `orderby`: `date`, `modified`, `id`, `title`, `slug`, `price`, `popularity`, `rating` o `menu_order`.
- `order`: `asc` o `desc`.

Ejemplo:

```http
GET /wp-json/wc/store/v1/products?search=SureColor&per_page=5 HTTP/1.1
Host: jpdigital.com.ec
Accept: application/json
```

Las cabeceras `X-WP-Total` y `X-WP-TotalPages` describen la paginación.

## Obtener un producto

`GET https://jpdigital.com.ec/wp-json/wc/store/v1/products/{id}`

Usa el identificador numérico devuelto por la búsqueda. Los productos inexistentes o no publicados responden `404` con JSON.

## Listar categorías

`GET https://jpdigital.com.ec/wp-json/wc/store/v1/products/categories`

Utiliza los IDs o slugs devueltos para filtrar la búsqueda de productos.

## Autenticación y límites

No se requiere autenticación para estas operaciones. Limita `per_page`, evita solicitudes repetitivas y respeta las cabeceras de caché. Esta API pública no expone pedidos, clientes, claves, inventario administrativo ni operaciones de escritura.

## Errores

Los errores usan códigos HTTP estándar y JSON. Una respuesta típica tiene `code`, `message` y `data`; `data.status` contiene el estado HTTP y `data.resolution` explica cómo recuperarse.

```json
{
  "code": "rest_invalid_param",
  "message": "Invalid parameter(s): per_page",
  "data": {
    "status": 400,
    "resolution": "Check the parameter type and allowed values in /openapi.json, then retry the request."
  }
}
```

## Esquema completo

- [OpenAPI 3.1](https://jpdigital.com.ec/openapi.json)
- [Instrucciones para agentes](https://jpdigital.com.ec/agent-instructions.md)
- [llms.txt](https://jpdigital.com.ec/llms.txt)

