Skip to content

REST API

REST API en el namespace polski/v1/. Gestione ajustes, casillas legales, páginas legales y la búsqueda de productos.

La API requiere autenticación para los endpoints que modifican datos (POST, PUT, DELETE). El endpoint de búsqueda (/search) es de acceso público.

Métodos de autenticación admitidos:

  • Application Passwords (WordPress 5.6+) - recomendado
  • Cookie + nonce - para solicitudes desde el panel de administración
  • Basic Auth (con el plugin Basic Auth) - solo para desarrollo

Permiso requerido: manage_woocommerce (por defecto, los roles Administrador y Gestor de tienda).

Obtiene todos los grupos de ajustes del plugin.

Permisos: manage_woocommerce

Ejemplo de solicitud:

Terminal window
curl -u admin:XXXX-XXXX-XXXX-XXXX \
"https://yourstore.com/wp-json/polski/v1/settings"

Ejemplo de respuesta:

{
"groups": [
{
"id": "general",
"label": "General settings",
"description": "Basic plugin configuration"
},
{
"id": "compliance",
"label": "Legal requirements",
"description": "EU and Polish law requirements settings"
},
{
"id": "storefront",
"label": "Storefront modules",
"description": "Store extension modules"
},
{
"id": "checkout",
"label": "Checkout and orders",
"description": "Checkout and order process settings"
}
]
}

Obtiene los ajustes de un grupo seleccionado.

Parámetros de URL:

ParámetroTipoDescripción
groupstringID del grupo de ajustes

Permisos: manage_woocommerce

Ejemplo de solicitud:

Terminal window
curl -u admin:XXXX-XXXX-XXXX-XXXX \
"https://yourstore.com/wp-json/polski/v1/settings/compliance"

Ejemplo de respuesta:

{
"group": "compliance",
"settings": {
"omnibus_enabled": true,
"omnibus_days": 30,
"gpsr_enabled": true,
"withdrawal_enabled": true,
"withdrawal_days": 14,
"dsa_enabled": true,
"ksef_enabled": false,
"greenwashing_enabled": true
}
}

Actualiza los ajustes de un grupo seleccionado.

Permisos: manage_woocommerce

Ejemplo de solicitud:

Terminal window
curl -X POST \
-u admin:XXXX-XXXX-XXXX-XXXX \
-H "Content-Type: application/json" \
-d '{"omnibus_days": 30, "withdrawal_days": 14}' \
"https://yourstore.com/wp-json/polski/v1/settings/compliance"

Ejemplo de respuesta:

{
"updated": true,
"group": "compliance",
"changes": {
"omnibus_days": 30,
"withdrawal_days": 14
}
}

Obtiene una lista de todas las casillas legales (finalización de compra, registro, contacto).

Permisos: manage_woocommerce

Ejemplo de respuesta:

{
"checkboxes": [
{
"id": 1,
"label": "I accept the store terms and conditions",
"required": true,
"location": "checkout",
"enabled": true,
"position": 10,
"legal_page_id": 45
},
{
"id": 2,
"label": "I have read the privacy policy",
"required": true,
"location": "checkout",
"enabled": true,
"position": 20,
"legal_page_id": 47
}
],
"total": 2
}

Obtiene estadísticas de aceptación de las casillas.

Permisos: manage_woocommerce

Ejemplo de respuesta:

{
"stats": [
{
"checkbox_id": 1,
"label": "I accept the store terms and conditions",
"total_shown": 1250,
"total_accepted": 1180,
"acceptance_rate": 94.4
}
]
}

Obtiene los detalles de una casilla individual.

Parámetros de URL:

ParámetroTipoDescripción
idintID de la casilla

Permisos: manage_woocommerce

Ejemplo de respuesta:

{
"id": 1,
"label": "I accept the store terms and conditions",
"required": true,
"location": "checkout",
"enabled": true,
"position": 10,
"legal_page_id": 45,
"created_at": "2025-01-15T10:30:00",
"updated_at": "2025-06-01T14:22:00",
"stats": {
"total_shown": 1250,
"total_accepted": 1180,
"acceptance_rate": 94.4
}
}

Actualiza una casilla.

Permisos: manage_woocommerce

Ejemplo de solicitud:

Terminal window
curl -X PUT \
-u admin:XXXX-XXXX-XXXX-XXXX \
-H "Content-Type: application/json" \
-d '{"label": "I accept the terms", "required": true}' \
"https://yourstore.com/wp-json/polski/v1/checkboxes/1"

Obtiene una lista de las páginas legales (términos y condiciones, política de privacidad, etc.).

Permisos: manage_woocommerce

Ejemplo de respuesta:

{
"pages": [
{
"id": 45,
"type": "terms",
"title": "Store terms and conditions",
"status": "publish",
"url": "https://yourstore.com/terms/",
"last_modified": "2025-06-01T14:00:00",
"word_count": 3200
},
{
"id": 47,
"type": "privacy",
"title": "Privacy policy",
"status": "publish",
"url": "https://yourstore.com/privacy-policy/",
"last_modified": "2025-05-15T09:30:00",
"word_count": 2800
}
],
"total": 2
}

Genera una página legal a partir de una plantilla.

Permisos: manage_woocommerce

Parámetros del body:

ParámetroTipoRequeridoDescripción
typestringTipo de página: terms, privacy, withdrawal, dsa_report
company_namestringNombre de la empresa
company_addressstringDirección de la empresa
emailstringDirección de correo de contacto
phonestringNoNúmero de teléfono
nipstringNoNIP de la empresa

Ejemplo de solicitud:

Terminal window
curl -X POST \
-u admin:XXXX-XXXX-XXXX-XXXX \
-H "Content-Type: application/json" \
-d '{"type": "terms", "company_name": "My Store Sp. z o.o.", "company_address": "ul. Przykladowa 1, 00-001 Warsaw", "email": "[email protected]"}' \
"https://yourstore.com/wp-json/polski/v1/legal-pages/generate"

Ejemplo de respuesta:

{
"page_id": 120,
"type": "terms",
"title": "Store terms and conditions",
"url": "https://yourstore.com/terms/",
"status": "draft"
}

Búsqueda de productos (endpoint público).

Parámetros de query:

ParámetroTipoRequeridoDescripción
qstringFrase de búsqueda
limitintNoLímite de resultados (por defecto 8)
catintNoID de categoría

Permisos: público (no requiere autenticación)

Ejemplo de solicitud:

Terminal window
curl "https://yourstore.com/wp-json/polski/v1/search?q=shoes&limit=5"

Ejemplo de respuesta:

{
"results": [
{
"id": 456,
"title": "Nike Sports Shoes",
"url": "https://yourstore.com/product/nike-sports-shoes/",
"image": "https://yourstore.com/wp-content/uploads/nike-shoes.jpg",
"price_html": "<span class=\"amount\">299.00&nbsp;PLN</span>",
"category": "Footwear",
"in_stock": true,
"rating": 4.8
}
],
"total": 1,
"query": "shoes"
}

Marca el asistente de configuración como completado.

Permisos: manage_woocommerce

Parámetros del body:

ParámetroTipoRequeridoDescripción
steps_completedarrayLista de pasos completados

Ejemplo de solicitud:

Terminal window
curl -X POST \
-u admin:XXXX-XXXX-XXXX-XXXX \
-H "Content-Type: application/json" \
-d '{"steps_completed": ["company_info", "legal_pages", "checkboxes", "compliance"]}' \
"https://yourstore.com/wp-json/polski/v1/wizard/complete"

Ejemplo de respuesta:

{
"completed": true,
"completed_at": "2025-06-15T12:00:00",
"steps": {
"company_info": true,
"legal_pages": true,
"checkboxes": true,
"compliance": true
}
}
CódigoDescripción
200Éxito
201Recurso creado (POST)
400Solicitud incorrecta (parámetros faltantes)
401No autenticado
403Permisos insuficientes
404Recurso no encontrado
500Error del servidor

Cada endpoint admite un filtro de WordPress que permite modificar la respuesta:

add_filter('polski/rest/settings_response', function (array $response, WP_REST_Request $request): array {
// Modificar la respuesta
return $response;
}, 10, 2);

La API no implementa su propio rate limiting. Para los endpoints públicos se recomienda usar un plugin o una configuración del servidor (por ejemplo, Cloudflare, rate limiting de Nginx).

Reportar problemas: github.com/wppoland/polski/issues

Esta página tiene únicamente carácter informativo y no constituye asesoramiento legal. Consulte a un abogado antes de la implementación. Polski for WooCommerce es software de código abierto (GPLv2) proporcionado sin garantía.