diff --git a/.env b/.env index bc636c1..6dcd355 100644 --- a/.env +++ b/.env @@ -55,3 +55,5 @@ PDF_SERVER_URL=http://localhost:8000 FILE_MAAL_PL_USER=git_operator FILE_MAAL_PL_PASSWORD=1FnwqcEgIUjQHjt1 + +IMAGE_PREFIX=https://www.naluconcept.com # remove prefix to serv them from same host as presta \ No newline at end of file diff --git a/ADD_THIS_TO_SQL.sql b/ADD_THIS_TO_SQL.sql deleted file mode 100644 index 1ca5f9a..0000000 --- a/ADD_THIS_TO_SQL.sql +++ /dev/null @@ -1,2995 +0,0 @@ -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 363) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 364) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 365) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 366) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 367) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 368) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 369) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 370) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 371) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- - - - -
' -WHERE (`ps_product_lang`.`id_product` = 373) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 374) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 375) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 383) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 384) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 385) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie  zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 386) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie  zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 387) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie  zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 388) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie  zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 389) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie  zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 390) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie  zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 391) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie  zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 392) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie  zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 393) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`=' -

- - -
' -WHERE (`ps_product_lang`.`id_product` = 394) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='


' -WHERE (`ps_product_lang`.`id_product` = 476) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='


' -WHERE (`ps_product_lang`.`id_product` = 476) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 2); - -UPDATE `ps_product_lang` -SET `usage`='


' -WHERE (`ps_product_lang`.`id_product` = 476) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 3); - -UPDATE `ps_product_lang` -SET `usage`='


' -WHERE (`ps_product_lang`.`id_product` = 1435) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='


' -WHERE (`ps_product_lang`.`id_product` = 1463) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='


' -WHERE (`ps_product_lang`.`id_product` = 1464) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- - - - -
' -WHERE (`ps_product_lang`.`id_product` = 1484) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`=' - - -
' -WHERE (`ps_product_lang`.`id_product` = 1507) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- - - - -
' -WHERE (`ps_product_lang`.`id_product` = 1508) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 1509) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 1510) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 1511) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 1512) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie  zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 1513) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie  zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- - - - -
' -WHERE (`ps_product_lang`.`id_product` = 1514) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie  zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 1515) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie  zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- - - - -
' -WHERE (`ps_product_lang`.`id_product` = 1516) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie  zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 1517) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie  zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 1518) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- - - - -
' -WHERE (`ps_product_lang`.`id_product` = 1541) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- - - - -
' -WHERE (`ps_product_lang`.`id_product` = 1543) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie  zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 1548) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie  zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 1550) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie  zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 1551) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

Zestaw powinien być poprawnie  zamontowany na odpowiedniej nawierzchni z zachowaniem właściwej strefy bezpieczeństwa.

- -

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 1552) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='


' -WHERE (`ps_product_lang`.`id_product` = 1825) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='


' -WHERE (`ps_product_lang`.`id_product` = 2025) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

I. Czyszczenie i konserwacja

-

Tapicerkę należy czyścić powierzchniowo stosując dozwolone środki:

- - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Rodzaj zabrudzenia

-
-

Dozwolone środki

-
-

Postępowanie

-
-

Codzienne zabrudzenia

-

 

-
-

Łagodny detergent najlepiej roztwór szarego mydła

-
-

Czyścić regularnie z użyciem gąbki lub miękkiej szczotki. Na koniec przetrzeć czyszczone miejsce wilgotną szmatką po czym wytrzeć do sucha (w celu usunięcia pozostałości detergentu).

-
-

Miejscowe, silniejsze zabrudzenia

-
-

25% roztwór alkoholu etylowego

-
-

Delikatnie przecierać nasączonym tamponem z gazy. Na koniec przetrzeć czyszczone miejsce wilgotną szmatką po czym wytrzeć do sucha (w celu usunięcia pozostałości detergentu).

-
-

Dezynfekcja

-
-

Ogólnodostępne środki do dezynfekcji zawierające:

-

- aktywny chlor – dichloroizocyjanuran sodu, max stężenie 10000 ppm 

-

- aktywny chlor - dwutlenek chloru w roztworze do 20 000 ppm 

-

- alkohol izopropylowy max stężenie 70 % 

-


-
-

Dezynfekować zgodnie z zaleceniami producenta używanego środka.

-
-

Przed użyciem środka innego niż łagodny detergent trzeba sprawdzić efekt w niewidocznym miejscu, a samo czyszczenie wykonać bardzo ostrożnie. - -

-
-


II. Informacje

-


- - - - - - - - - - - - - - - - - - - - - - - -
-

Szamponować przy użyciu gąbki -

-
-

-   -

-
-

Nie prać!!! (delikatne wyroby)    -

-
-

- -

-
-

Nie chlorować!!! (nie stosować do bielenia związków wydzielających wolny chlor) -

-
-

-   -

-
-

Nie prasować!!! (nie dopuszczać do kontaktu z nagrzanymi powierzchniami np. kaloryfer) -

-
-

-   -

-
-

Nie czyścić chemicznie!!! -

-
-


-

III. Warunki gwarancji

-

Gwarancji nie podlegają:

-' -WHERE (`ps_product_lang`.`id_product` = 2687) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='


-

I. Czyszczenie i konserwacja

-

Tapicerkę należy czyścić powierzchniowo stosując dozwolone środki:

- - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Rodzaj zabrudzenia

-
-

Dozwolone środki

-
-

Postępowanie

-
-

Codzienne zabrudzenia

-

 

-
-

Łagodny detergent najlepiej roztwór szarego mydła

-
-

Czyścić regularnie z użyciem gąbki lub miękkiej szczotki. Na koniec przetrzeć czyszczone miejsce wilgotną szmatką po czym wytrzeć do sucha (w celu usunięcia pozostałości detergentu).

-
-

Miejscowe, silniejsze zabrudzenia

-
-

25% roztwór alkoholu etylowego

-
-

Delikatnie przecierać nasączonym tamponem z gazy. Na koniec przetrzeć czyszczone miejsce wilgotną szmatką po czym wytrzeć do sucha (w celu usunięcia pozostałości detergentu).

-
-

Dezynfekcja

-
-

Ogólnodostępne środki do dezynfekcji zawierające:

-

- aktywny chlor – dichloroizocyjanuran sodu, max stężenie 10000 ppm 

-

- aktywny chlor - dwutlenek chloru w roztworze do 20 000 ppm 

-

- alkohol izopropylowy max stężenie 70 % 

-


-
-

Dezynfekować zgodnie z zaleceniami producenta używanego środka.

-
-

Przed użyciem środka innego niż łagodny detergent trzeba sprawdzić efekt w niewidocznym miejscu, a samo czyszczenie wykonać bardzo ostrożnie. - -

-
-


II. Informacje

-


- - - - - - - - - - - - - - - - - - - - - - - -
-

Szamponować przy użyciu gąbki -

-
-

-   -

-
-

Nie prać!!! (delikatne wyroby)    -

-
-

- -

-
-

Nie chlorować!!! (nie stosować do bielenia związków wydzielających wolny chlor) -

-
-

-   -

-
-

Nie prasować!!! (nie dopuszczać do kontaktu z nagrzanymi powierzchniami np. kaloryfer) -

-
-

-   -

-
-

Nie czyścić chemicznie!!! -

-
-


-

III. Warunki gwarancji

-

Gwarancji nie podlegają:

-' -WHERE (`ps_product_lang`.`id_product` = 3424) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='


' -WHERE (`ps_product_lang`.`id_product` = 3441) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); - -UPDATE `ps_product_lang` -SET `usage`='

- - - -
' -WHERE (`ps_product_lang`.`id_product` = 3842) AND (`ps_product_lang`.`id_shop` = 1) AND (`ps_product_lang`.`id_lang` = 1); diff --git a/app/api/openapi.json b/app/api/openapi.json index f3715cb..fd09b1c 100644 --- a/app/api/openapi.json +++ b/app/api/openapi.json @@ -28,6 +28,26 @@ "name": "Languages", "description": "Language and translation endpoints" }, + { + "name": "Products", + "description": "Product listing and description endpoints (under /api/v1/restricted, requires authentication)" + }, + { + "name": "Product Description", + "description": "Product description management and translation endpoints (under /api/v1/restricted/product-description, requires authentication)" + }, + { + "name": "Menu", + "description": "Menu and routing endpoints (under /api/v1/restricted/menu, requires authentication)" + }, + { + "name": "Search", + "description": "MeiliSearch endpoints (under /api/v1/restricted/meili-search, requires authentication)" + }, + { + "name": "Locale", + "description": "Locale selection endpoints (under /api/v1/restricted/langs-and-countries, requires authentication)" + }, { "name": "Repo", "description": "Repository time tracking data endpoints (under /api/v1/restricted/repo, requires authentication)" @@ -1018,6 +1038,670 @@ } } } + }, + "/api/v1/restricted/list-products/get-listing": { + "get": { + "tags": ["Products"], + "summary": "Get product listing", + "description": "Returns a paginated list of products with their basic information. Requires authentication.", + "operationId": "getProductListing", + "security": [ + { + "CookieAuth": [] + } + ], + "parameters": [ + { + "name": "page", + "in": "query", + "description": "Page number (1-based)", + "required": false, + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "limit", + "in": "query", + "description": "Number of items per page", + "required": false, + "schema": { + "type": "integer", + "default": 30 + } + } + ], + "responses": { + "200": { + "description": "Product listing retrieved successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponse" + } + } + } + }, + "400": { + "description": "Invalid request parameters", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "401": { + "description": "Not authenticated", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, + "/api/v1/restricted/product-description/get-product-description": { + "get": { + "tags": ["Product Description"], + "summary": "Get product description", + "description": "Returns the product description for a given product ID and language. Requires authentication.", + "operationId": "getProductDescription", + "security": [ + { + "CookieAuth": [] + } + ], + "parameters": [ + { + "name": "productID", + "in": "query", + "description": "Product ID", + "required": true, + "schema": { + "type": "integer", + "format": "uint" + } + }, + { + "name": "productLangID", + "in": "query", + "description": "Language ID for the product description", + "required": true, + "schema": { + "type": "integer", + "format": "uint" + } + } + ], + "responses": { + "200": { + "description": "Product description retrieved successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponse" + } + } + } + }, + "400": { + "description": "Invalid request parameters", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "401": { + "description": "Not authenticated", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, + "/api/v1/restricted/product-description/save-product-description": { + "post": { + "tags": ["Product Description"], + "summary": "Save product description", + "description": "Saves the product description for a given product ID in the specified language. Requires authentication.", + "operationId": "saveProductDescription", + "security": [ + { + "CookieAuth": [] + } + ], + "parameters": [ + { + "name": "productID", + "in": "query", + "description": "Product ID", + "required": true, + "schema": { + "type": "integer", + "format": "uint" + } + }, + { + "name": "productLangID", + "in": "query", + "description": "Language ID for the product description", + "required": true, + "schema": { + "type": "integer", + "format": "uint" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductDescriptionUpdate" + } + } + } + }, + "responses": { + "200": { + "description": "Product description saved successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponse" + } + } + } + }, + "400": { + "description": "Invalid request parameters or body", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "401": { + "description": "Not authenticated", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, + "/api/v1/restricted/product-description/translate-product-description": { + "get": { + "tags": ["Product Description"], + "summary": "Translate product description", + "description": "Translates the product description from one language to another using AI (OpenAI or Google). Requires authentication.", + "operationId": "translateProductDescription", + "security": [ + { + "CookieAuth": [] + } + ], + "parameters": [ + { + "name": "productID", + "in": "query", + "description": "Product ID", + "required": true, + "schema": { + "type": "integer", + "format": "uint" + } + }, + { + "name": "productFromLangID", + "in": "query", + "description": "Source language ID", + "required": true, + "schema": { + "type": "integer", + "format": "uint" + } + }, + { + "name": "productToLangID", + "in": "query", + "description": "Target language ID", + "required": true, + "schema": { + "type": "integer", + "format": "uint" + } + }, + { + "name": "model", + "in": "query", + "description": "AI model to use for translation (OpenAI or Google)", + "required": true, + "schema": { + "type": "string", + "enum": ["OpenAI", "Google"] + } + } + ], + "responses": { + "200": { + "description": "Product description translated successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponse" + } + } + } + }, + "400": { + "description": "Invalid request parameters", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "401": { + "description": "Not authenticated", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, + "/api/v1/restricted/menu/get-menu": { + "get": { + "tags": ["Menu"], + "summary": "Get menu structure", + "description": "Returns the menu structure for the current language. Requires authentication.", + "operationId": "getMenu", + "security": [ + { + "CookieAuth": [] + } + ], + "responses": { + "200": { + "description": "Menu retrieved successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponse" + } + } + } + }, + "400": { + "description": "Invalid request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "401": { + "description": "Not authenticated", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, + "/api/v1/restricted/menu/get-routes": { + "get": { + "tags": ["Menu"], + "summary": "Get routes", + "description": "Returns the routing structure for the current language. Requires authentication.", + "operationId": "getRoutes", + "security": [ + { + "CookieAuth": [] + } + ], + "responses": { + "200": { + "description": "Routes retrieved successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponse" + } + } + } + }, + "400": { + "description": "Invalid request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "401": { + "description": "Not authenticated", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, + "/api/v1/restricted/meili-search/search": { + "get": { + "tags": ["Search"], + "summary": "Search products", + "description": "Searches products using MeiliSearch. Requires authentication.", + "operationId": "searchProducts", + "security": [ + { + "CookieAuth": [] + } + ], + "parameters": [ + { + "name": "query", + "in": "query", + "description": "Search query string", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "limit", + "in": "query", + "description": "Maximum number of results", + "required": true, + "schema": { + "type": "integer", + "format": "uint" + } + }, + { + "name": "id_category", + "in": "query", + "description": "Filter by category ID", + "required": true, + "schema": { + "type": "integer", + "format": "uint" + } + }, + { + "name": "price_lower_bound", + "in": "query", + "description": "Lower price bound", + "required": true, + "schema": { + "type": "number", + "format": "double" + } + }, + { + "name": "price_upper_bound", + "in": "query", + "description": "Upper price bound", + "required": true, + "schema": { + "type": "number", + "format": "double" + } + } + ], + "responses": { + "200": { + "description": "Search results retrieved successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponse" + } + } + } + }, + "400": { + "description": "Invalid request parameters", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "401": { + "description": "Not authenticated", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, + "/api/v1/restricted/meili-search/create-index": { + "get": { + "tags": ["Search"], + "summary": "Create search index", + "description": "Creates a MeiliSearch index for products. Requires superadmin access.", + "operationId": "createSearchIndex", + "security": [ + { + "CookieAuth": [] + } + ], + "responses": { + "200": { + "description": "Index created successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponse" + } + } + } + }, + "400": { + "description": "Invalid request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "401": { + "description": "Not authenticated", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, + "/api/v1/restricted/meili-search/test": { + "get": { + "tags": ["Search"], + "summary": "Test MeiliSearch", + "description": "Tests the MeiliSearch connection. Requires superadmin access.", + "operationId": "testMeiliSearch", + "security": [ + { + "CookieAuth": [] + } + ], + "responses": { + "200": { + "description": "MeiliSearch test successful", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponse" + } + } + } + }, + "400": { + "description": "Invalid request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "401": { + "description": "Not authenticated", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, + "/api/v1/restricted/langs-and-countries/get-languages": { + "get": { + "tags": ["Locale"], + "summary": "Get available languages", + "description": "Returns a list of available languages for the application. Requires authentication.", + "operationId": "getAvailableLanguages", + "security": [ + { + "CookieAuth": [] + } + ], + "responses": { + "200": { + "description": "Languages retrieved successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponse" + } + } + } + }, + "400": { + "description": "Invalid request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "401": { + "description": "Not authenticated", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, + "/api/v1/restricted/langs-and-countries/get-countries": { + "get": { + "tags": ["Locale"], + "summary": "Get countries and currencies", + "description": "Returns a list of countries with their associated currencies. Requires authentication.", + "operationId": "getCountriesAndCurrencies", + "security": [ + { + "CookieAuth": [] + } + ], + "responses": { + "200": { + "description": "Countries and currencies retrieved successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApiResponse" + } + } + } + }, + "400": { + "description": "Invalid request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "401": { + "description": "Not authenticated", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } } }, "components": { @@ -1163,6 +1847,272 @@ } } }, + "ApiResponse": { + "type": "object", + "properties": { + "message": { + "type": "string", + "description": "Response message" + }, + "items": { + "type": "object", + "description": "Response data" + }, + "count": { + "type": "integer", + "description": "Number of items returned" + } + } + }, + "ProductDescriptionUpdate": { + "type": "object", + "description": "Map of fields to update for product description", + "additionalProperties": { + "type": "string" + }, + "example": { + "name": "Product Name", + "description": "

Product description in HTML

", + "description_short": "

Short description

", + "meta_title": "Meta Title", + "meta_description": "Meta description text", + "available_now": "In Stock", + "available_later": "Out of Stock", + "usage": "

Usage instructions

" + } + }, + "ProductDescription": { + "type": "object", + "description": "Product description in a specific language", + "properties": { + "product_id": { + "type": "integer", + "format": "uint", + "description": "Product ID" + }, + "shop_id": { + "type": "integer", + "format": "uint", + "description": "Shop ID" + }, + "lang_id": { + "type": "integer", + "format": "uint", + "description": "Language ID" + }, + "name": { + "type": "string", + "description": "Product name" + }, + "description": { + "type": "string", + "description": "Full product description (HTML)" + }, + "description_short": { + "type": "string", + "description": "Short product description (HTML)" + }, + "link_rewrite": { + "type": "string", + "description": "URL-friendly slug" + }, + "meta_description": { + "type": "string", + "description": "Meta description" + }, + "meta_keywords": { + "type": "string", + "description": "Meta keywords" + }, + "meta_title": { + "type": "string", + "description": "Meta title" + }, + "available_now": { + "type": "string", + "description": "Text shown when item is in stock" + }, + "available_later": { + "type": "string", + "description": "Text shown when item is out of stock" + }, + "delivery_in_stock": { + "type": "string", + "description": "Delivery in stock text" + }, + "delivery_out_stock": { + "type": "string", + "description": "Delivery out of stock text" + }, + "usage": { + "type": "string", + "description": "Usage instructions (HTML)" + } + } + }, + "Country": { + "type": "object", + "description": "Country with its currency", + "properties": { + "id": { + "type": "integer", + "format": "uint", + "description": "Country ID" + }, + "name": { + "type": "string", + "description": "Country name" + }, + "flag": { + "type": "string", + "description": "Flag emoji or code" + }, + "currency_id": { + "type": "integer", + "format": "uint", + "description": "Currency ID" + }, + "currency_iso_code": { + "type": "string", + "description": "Currency ISO code (e.g., EUR, USD)" + }, + "currency_name": { + "type": "string", + "description": "Currency name" + } + } + }, + "MenuItem": { + "type": "object", + "description": "Menu item structure", + "properties": { + "category_id": { + "type": "integer", + "format": "uint", + "description": "Category ID" + }, + "label": { + "type": "string", + "description": "Menu item label" + }, + "params": { + "$ref": "#/components/schemas/MenuItemParams" + }, + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MenuItem" + }, + "description": "Child menu items" + } + } + }, + "MenuItemParams": { + "type": "object", + "properties": { + "category_id": { + "type": "integer", + "format": "uint" + }, + "link_rewrite": { + "type": "string" + }, + "locale": { + "type": "string" + } + } + }, + "Route": { + "type": "object", + "description": "Application route", + "properties": { + "id": { + "type": "integer", + "format": "uint", + "description": "Route ID" + }, + "name": { + "type": "string", + "description": "Route name" + }, + "path": { + "type": "string", + "description": "Route path" + }, + "component": { + "type": "string", + "description": "Vue component path" + }, + "layout": { + "type": "string", + "description": "Layout type" + }, + "meta": { + "type": "object", + "description": "Route metadata" + }, + "is_active": { + "type": "boolean", + "description": "Whether the route is active" + }, + "sort_order": { + "type": "integer", + "description": "Sort order" + }, + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Route" + }, + "description": "Child routes" + } + } + }, + "MeiliSearchResult": { + "type": "object", + "description": "MeiliSearch product result", + "properties": { + "id_product": { + "type": "integer", + "format": "uint", + "description": "Product ID" + }, + "name": { + "type": "string", + "description": "Product name" + }, + "active": { + "type": "integer", + "description": "Active status" + }, + "price": { + "type": "number", + "format": "double", + "description": "Product price" + }, + "description": { + "type": "string", + "description": "Product description" + }, + "description_short": { + "type": "string", + "description": "Short description" + }, + "reference": { + "type": "string", + "description": "Product reference" + }, + "id_category": { + "type": "integer", + "format": "uint", + "description": "Category ID" + }, + "category_name": { + "type": "string", + "description": "Category name" + } + } + }, "Language": { "type": "object", "properties": { diff --git a/taskfiles/nalu_db.yml b/taskfiles/nalu_db.yml index 4c82b4c..2997de2 100644 --- a/taskfiles/nalu_db.yml +++ b/taskfiles/nalu_db.yml @@ -16,7 +16,7 @@ tasks: dump: desc: Dump remote Gitea DB to file aliases: [dump] - # silent: true + silent: true vars: TEMP_DB_NAME: "temp_db_copy" SERVER: https://file.ma-al.pl