{ "openapi": "3.0.3", "info": { "title": "lk API", "description": "Auto-generated API specification for lk (fashion_apparel store). Variant dimensions: Size, Color.", "version": "1.0.0" }, "servers": [ { "url": "https://bdwewiveuzpakrzphljo.supabase.co/functions/v1", "description": "Supabase Edge Functions" } ], "components": { "securitySchemes": { "ApiKeyAuth": { "type": "apiKey", "in": "header", "name": "x-api-key" } }, "schemas": { "Product": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "name": { "type": "string" }, "description": { "type": "string" }, "base_price": { "type": "number" }, "category": { "type": "string" }, "is_active": { "type": "boolean" }, "extra_fields": { "type": "object" }, "variants": { "type": "array", "items": { "$ref": "#/components/schemas/Variant" } } } }, "Variant": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "product_id": { "type": "string", "format": "uuid" }, "size": { "type": "string" }, "color": { "type": "string" }, "stock_quantity": { "type": "integer" }, "price_override": { "type": "number", "nullable": true }, "image_url": { "type": "string", "nullable": true }, "is_active": { "type": "boolean" } } }, "Order": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "tracking_id": { "type": "string" }, "customer_name": { "type": "string" }, "customer_email": { "type": "string" }, "customer_phone": { "type": "string" }, "delivery_status": { "type": "string" }, "subtotal": { "type": "number" }, "shipping_fee": { "type": "number" }, "total": { "type": "number" }, "items": { "type": "array", "items": { "type": "object", "properties": { "variant_id": { "type": "string", "format": "uuid" }, "product_id": { "type": "string", "format": "uuid" }, "product_name": { "type": "string" }, "variant_label": { "type": "string" }, "quantity": { "type": "integer" }, "unit_price": { "type": "number" } } } }, "created_at": { "type": "string", "format": "date-time" } } }, "TrackingResponse": { "type": "object", "properties": { "tracking_id": { "type": "string" }, "status": { "type": "string" }, "customer_name": { "type": "string" }, "items_summary": { "type": "array", "items": { "type": "string" } }, "created_at": { "type": "string", "format": "date-time" } } }, "Error": { "type": "object", "properties": { "error": { "type": "string" } } } } }, "security": [ { "ApiKeyAuth": [] } ], "paths": { "/products": { "get": { "summary": "List products", "description": "Returns paginated list of active products with nested variants.", "parameters": [ { "name": "category", "in": "query", "schema": { "type": "string" }, "description": "Filter by category" }, { "name": "search", "in": "query", "schema": { "type": "string" }, "description": "Search by product name" }, { "name": "page", "in": "query", "schema": { "type": "integer", "default": 1 } }, { "name": "limit", "in": "query", "schema": { "type": "integer", "default": 20 } } ], "responses": { "200": { "description": "Paginated product list", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/Product" } }, "total": { "type": "integer" }, "page": { "type": "integer" }, "limit": { "type": "integer" } } } } } } } }, "post": { "summary": "Create product", "description": "Create a new product with optional variants. Requires can_write permission.", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Product" } } } }, "responses": { "201": { "description": "Product created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Product" } } } } } } }, "/products/{id}": { "get": { "summary": "Get product by ID", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "Product with variants", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Product" } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } }, "put": { "summary": "Update product", "description": "Update product base fields. Requires can_write.", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Product" } } } }, "responses": { "200": { "description": "Product updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Product" } } } } } }, "delete": { "summary": "Delete product (soft)", "description": "Soft-deletes a product by setting is_active to false.", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "Product deactivated" } } } }, "/variants/{productId}": { "get": { "summary": "List variants for a product", "parameters": [ { "name": "productId", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "Variant list", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/Variant" } } } } } } } } }, "post": { "summary": "Add variant to product", "parameters": [ { "name": "productId", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Variant" } } } }, "responses": { "201": { "description": "Variant created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Variant" } } } } } } }, "/orders": { "get": { "summary": "List orders", "parameters": [ { "name": "status", "in": "query", "schema": { "type": "string" } }, { "name": "search", "in": "query", "schema": { "type": "string" } }, { "name": "page", "in": "query", "schema": { "type": "integer", "default": 1 } } ], "responses": { "200": { "description": "Paginated order list", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/Order" } }, "total": { "type": "integer" }, "page": { "type": "integer" }, "limit": { "type": "integer" } } } } } } } }, "post": { "summary": "Create order", "description": "Creates a new order, validates variants, decrements stock atomically, fires order_created webhook.", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "items", "customer_name" ], "properties": { "customer_name": { "type": "string" }, "customer_email": { "type": "string" }, "customer_phone": { "type": "string" }, "shipping_address": { "type": "object" }, "shipping_fee": { "type": "number" }, "notes": { "type": "string" }, "items": { "type": "array", "items": { "type": "object", "properties": { "variant_id": { "type": "string", "format": "uuid" }, "quantity": { "type": "integer" } } } } } } } } }, "responses": { "201": { "description": "Order created" } } } }, "/orders/{id}": { "patch": { "summary": "Update order status", "description": "Update delivery_status only. Fires status_changed webhook.", "parameters": [ { "name": "id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "delivery_status": { "type": "string" } } } } } }, "responses": { "200": { "description": "Status updated" } } } }, "/orders/track/{trackingId}": { "get": { "summary": "Track order (public)", "description": "Public endpoint — no API key required. Returns minimal tracking info only.", "security": [], "parameters": [ { "name": "trackingId", "in": "path", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Tracking info", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrackingResponse" } } } }, "404": { "description": "Order not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } } } }