update openapi
This commit is contained in:
@@ -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": "<p>Product description in HTML</p>",
|
||||
"description_short": "<p>Short description</p>",
|
||||
"meta_title": "Meta Title",
|
||||
"meta_description": "Meta description text",
|
||||
"available_now": "In Stock",
|
||||
"available_later": "Out of Stock",
|
||||
"usage": "<p>Usage instructions</p>"
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
|
||||
Reference in New Issue
Block a user