REST API
REST API w namespace polski/v1/. Zarządzaj ustawieniami, checkboxami prawnymi, stronami prawnymi i wyszukiwaniem produktów.
Uwierzytelnianie
Dział zatytułowany „Uwierzytelnianie”Endpointy modyfikujące dane (POST, PUT, DELETE) wymagają uwierzytelnienia. Endpoint /search jest publiczny.
Obsługiwane metody uwierzytelniania:
- Application Passwords (WordPress 5.6+) - zalecane
- Cookie + nonce - dla żądań z panelu admina
- Basic Auth (z wtyczką Basic Auth) - tylko dla developmentu
Wymagane uprawnienie: manage_woocommerce (domyślnie rola Administrator i Menedżer sklepu).
Endpointy
Dział zatytułowany „Endpointy”GET /polski/v1/settings
Dział zatytułowany „GET /polski/v1/settings”Pobiera wszystkie grupy ustawień wtyczki.
Uprawnienia: manage_woocommerce
Przykład żądania:
curl -u admin:XXXX-XXXX-XXXX-XXXX \ "https://example.com/wp-json/polski/v1/settings"Przykład odpowiedzi:
{ "groups": [ { "id": "general", "label": "Ustawienia ogólne", "description": "Podstawowa konfiguracja wtyczki" }, { "id": "compliance", "label": "Wymogi prawne", "description": "Ustawienia wymogów prawa UE i polskiego" }, { "id": "storefront", "label": "Moduły sklepowe", "description": "Moduły rozszerzające sklep" }, { "id": "checkout", "label": "Kasa i zamówienia", "description": "Ustawienia kasy i procesu zamówienia" } ]}GET /polski/v1/settings/{group}
Dział zatytułowany „GET /polski/v1/settings/{group}”Pobiera ustawienia z wybranej grupy.
Parametry URL:
| Parametr | Typ | Opis |
|---|---|---|
group |
string | ID grupy ustawień |
Uprawnienia: manage_woocommerce
Przykład żądania:
curl -u admin:XXXX-XXXX-XXXX-XXXX \ "https://example.com/wp-json/polski/v1/settings/compliance"Przykład odpowiedzi:
{ "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 }}POST /polski/v1/settings/{group}
Dział zatytułowany „POST /polski/v1/settings/{group}”Aktualizuje ustawienia w wybranej grupie.
Uprawnienia: manage_woocommerce
Przykład żądania:
curl -X POST \ -u admin:XXXX-XXXX-XXXX-XXXX \ -H "Content-Type: application/json" \ -d '{"omnibus_days": 30, "withdrawal_days": 14}' \ "https://example.com/wp-json/polski/v1/settings/compliance"Przykład odpowiedzi:
{ "updated": true, "group": "compliance", "changes": { "omnibus_days": 30, "withdrawal_days": 14 }}GET /polski/v1/checkboxes
Dział zatytułowany „GET /polski/v1/checkboxes”Pobiera listę wszystkich checkboxów prawnych (kasa, rejestracja, kontakt).
Uprawnienia: manage_woocommerce
Przykład odpowiedzi:
{ "checkboxes": [ { "id": 1, "label": "Akceptuję regulamin sklepu", "required": true, "location": "checkout", "enabled": true, "position": 10, "legal_page_id": 45 }, { "id": 2, "label": "Zapoznałem się z polityką prywatności", "required": true, "location": "checkout", "enabled": true, "position": 20, "legal_page_id": 47 } ], "total": 2}GET /polski/v1/checkboxes/stats
Dział zatytułowany „GET /polski/v1/checkboxes/stats”Pobiera statystyki akceptacji checkboxów.
Uprawnienia: manage_woocommerce
Przykład odpowiedzi:
{ "stats": [ { "checkbox_id": 1, "label": "Akceptuję regulamin sklepu", "total_shown": 1250, "total_accepted": 1180, "acceptance_rate": 94.4 } ]}GET /polski/v1/checkboxes/{id}
Dział zatytułowany „GET /polski/v1/checkboxes/{id}”Pobiera szczegóły pojedynczego checkboxa.
Parametry URL:
| Parametr | Typ | Opis |
|---|---|---|
id |
int | ID checkboxa |
Uprawnienia: manage_woocommerce
Przykład odpowiedzi:
{ "id": 1, "label": "Akceptuję regulamin sklepu", "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 }}PUT /polski/v1/checkboxes/{id}
Dział zatytułowany „PUT /polski/v1/checkboxes/{id}”Aktualizuje checkbox.
Uprawnienia: manage_woocommerce
Przykład żądania:
curl -X PUT \ -u admin:XXXX-XXXX-XXXX-XXXX \ -H "Content-Type: application/json" \ -d '{"label": "Akceptuję regulamin", "required": true}' \ "https://example.com/wp-json/polski/v1/checkboxes/1"GET /polski/v1/legal-pages
Dział zatytułowany „GET /polski/v1/legal-pages”Pobiera listę stron prawnych (regulamin, polityka prywatności itp.).
Uprawnienia: manage_woocommerce
Przykład odpowiedzi:
{ "pages": [ { "id": 45, "type": "terms", "title": "Regulamin sklepu", "status": "publish", "url": "https://example.com/regulamin/", "last_modified": "2025-06-01T14:00:00", "word_count": 3200 }, { "id": 47, "type": "privacy", "title": "Polityka prywatności", "status": "publish", "url": "https://example.com/polityka-prywatnosci/", "last_modified": "2025-05-15T09:30:00", "word_count": 2800 } ], "total": 2}POST /polski/v1/legal-pages/generate
Dział zatytułowany „POST /polski/v1/legal-pages/generate”Tworzy cztery strony prawne (regulamin, polityka prywatności, zwroty, reklamacje) jako puste szkice. Istniejąca strona jest używana ponownie, nigdy nie jest duplikowana ani nadpisywana. Szkice nie zawierają treści prawnej. Żądanie nie przyjmuje parametrów i nic nie robi, gdy moduł Strony prawne jest wyłączony.
Uprawnienia: manage_woocommerce
Przykładowe żądanie:
curl -X POST \ -u admin:XXXX-XXXX-XXXX-XXXX \ "https://twojsklep.pl/wp-json/polski/v1/legal-pages/generate"Odpowiedź: ta sama lista co w GET /polski/v1/legal-pages, z nowymi stronami w statusie draft.
GET /polski/v1/search
Dział zatytułowany „GET /polski/v1/search”Wyszukiwanie produktów (endpoint publiczny).
Parametry query:
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
q |
string | Tak | Fraza wyszukiwania |
limit |
int | Nie | Limit wyników (domyślnie 8) |
cat |
int | Nie | ID kategorii |
Uprawnienia: publiczny (nie wymaga uwierzytelnienia)
Przykład żądania:
curl "https://example.com/wp-json/polski/v1/search?q=buty&limit=5"Przykład odpowiedzi:
{ "results": [ { "id": 456, "title": "Buty sportowe Nike", "url": "https://example.com/produkt/buty-sportowe-nike/", "image": "https://example.com/wp-content/uploads/buty-nike.jpg", "price_html": "<span class=\"amount\">299,00 zł</span>", "category": "Obuwie", "in_stock": true, "rating": 4.8 } ], "total": 1, "query": "buty"}POST /polski/v1/wizard/complete
Dział zatytułowany „POST /polski/v1/wizard/complete”Oznacza kreator konfiguracji jako ukończony.
Uprawnienia: manage_woocommerce
Parametry body:
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
steps_completed |
array | Tak | Lista ukończonych kroków |
Przykład żądania:
curl -X POST \ -u admin:XXXX-XXXX-XXXX-XXXX \ -H "Content-Type: application/json" \ -d '{"steps_completed": ["company_info", "legal_pages", "checkboxes", "compliance"]}' \ "https://example.com/wp-json/polski/v1/wizard/complete"Przykład odpowiedzi:
{ "completed": true, "completed_at": "2025-06-15T12:00:00", "steps": { "company_info": true, "legal_pages": true, "checkboxes": true, "compliance": true }}Kody odpowiedzi HTTP
Dział zatytułowany „Kody odpowiedzi HTTP”| Kod | Opis |
|---|---|
| 200 | Sukces |
| 201 | Zasób utworzony (POST) |
| 400 | Nieprawidłowe żądanie (brakujące parametry) |
| 401 | Brak uwierzytelnienia |
| 403 | Brak uprawnień |
| 404 | Zasób nie znaleziony |
| 500 | Błąd serwera |
Filtrowanie odpowiedzi
Dział zatytułowany „Filtrowanie odpowiedzi”Każdy endpoint ma filtr do modyfikacji odpowiedzi:
add_filter('polski/rest/settings_response', function (array $response, WP_REST_Request $request): array { // Modyfikacja odpowiedzi return $response;}, 10, 2);Rate limiting
Dział zatytułowany „Rate limiting”Brak wbudowanego rate limitingu. Użyj Cloudflare, Nginx lub wtyczki do limitowania publicznych endpointów.
Zgłaszanie problemów: github.com/wppoland/polski/issues