API endpoints catalog
Nội dung này hiện chưa có sẵn bằng ngôn ngữ của bạn.
Auto-generated from Indochina API OpenAPI (v1.0) — do not edit by hand.
How to refresh
Section titled “How to refresh”From the repo root:
cd apps/backend && npm run openapi:exportThis updates openapi.json and backend-api-catalog.md.
Static OpenAPI JSON
Section titled “Static OpenAPI JSON”Download the machine-readable spec: /openapi.json (served from apps/docs/public/ when the docs site is built).
Endpoints by Swagger tag
Section titled “Endpoints by Swagger tag”Admin / Business settings
Section titled “Admin / Business settings”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/admin/settings/business | Global business settings (Laravel business_settings, business tab subset) |
| PATCH | /api/v1/admin/settings/business | Update business settings (partial) |
| POST | /api/v1/admin/settings/business/test-smtp | Send a test email using saved SMTP settings (business_settings mail_*) |
Admin / Employee Roles
Section titled “Admin / Employee Roles”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/admin/employee-roles | List all employee roles |
| POST | /api/v1/admin/employee-roles | Create a new employee role |
| DELETE | /api/v1/admin/employee-roles/{id} | Delete an employee role |
| GET | /api/v1/admin/employee-roles/{id} | Get a single employee role |
| PATCH | /api/v1/admin/employee-roles/{id} | Update an employee role |
Admin / Gallery
Section titled “Admin / Gallery”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/admin/gallery | List uploaded gallery images for the current admin |
| POST | /api/v1/admin/gallery | Upload an image to the admin gallery |
| DELETE | /api/v1/admin/gallery/{id} | Delete a gallery image |
Admin / Managers
Section titled “Admin / Managers”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/admin/managers | List all admin managers/staff |
| POST | /api/v1/admin/managers | Create a new admin manager |
| DELETE | /api/v1/admin/managers/{id} | Delete an admin manager |
| GET | /api/v1/admin/managers/{id} | Get a single admin manager |
| PATCH | /api/v1/admin/managers/{id} | Update an admin manager |
Admin / Membership products (SaaS plans for vendors)
Section titled “Admin / Membership products (SaaS plans for vendors)”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/admin/membership-products | List platform_vendor membership catalog |
| POST | /api/v1/admin/membership-products | Create platform membership product |
| DELETE | /api/v1/admin/membership-products/{id} | Delete platform membership product |
| GET | /api/v1/admin/membership-products/{id} | Get one platform membership product |
| PATCH | /api/v1/admin/membership-products/{id} | Update platform membership product |
| GET | /api/v1/admin/membership-products/{id}/linked-vendors | List vendors linked to this platform membership product |
Admin / Membership subscriptions
Section titled “Admin / Membership subscriptions”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/admin/membership-subscriptions | List membership subscriptions (all audiences) |
| GET | /api/v1/admin/membership-subscriptions/{id} | Get one membership invoice detail by subscription id |
| PATCH | /api/v1/admin/membership-subscriptions/batch | Batch update membership invoice payment status |
| POST | /api/v1/admin/membership-subscriptions/invoices | Create membership invoice draft |
Admin / Modules
Section titled “Admin / Modules”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/admin/modules | List modules (paginated) or compact id+name for selects when compact=1 |
| POST | /api/v1/admin/modules | Create module (super admin only) |
| DELETE | /api/v1/admin/modules/{id} | Delete module (super admin only, if unused by stores/items) |
| GET | /api/v1/admin/modules/{id} | Get one module (visibility per admin rules) |
| PATCH | /api/v1/admin/modules/{id} | Update module (super admin only) |
Admin / Roles
Section titled “Admin / Roles”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/admin/roles | AdminRolesController_list |
| POST | /api/v1/admin/roles | Create a new admin role |
| DELETE | /api/v1/admin/roles/{id} | Delete an admin role |
| GET | /api/v1/admin/roles/{id} | Get a single admin role |
| PATCH | /api/v1/admin/roles/{id} | Update an admin role |
| GET | /api/v1/admin/roles/{id}/detail | Get admin role detail with subscribed customers and plan details (permissions) |
Admin / Stores
Section titled “Admin / Stores”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/admin/stores | List all stores |
| POST | /api/v1/admin/stores | Create a new store |
| DELETE | /api/v1/admin/stores/{id} | Delete a store |
| GET | /api/v1/admin/stores/{id} | Get a single store |
| PATCH | /api/v1/admin/stores/{id} | Update a store |
Admin / Vendor employees
Section titled “Admin / Vendor employees”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/admin/vendor-employees | List vendor employees (filtered for the signed-in admin) |
| POST | /api/v1/admin/vendor-employees | Create a vendor employee |
| DELETE | /api/v1/admin/vendor-employees/{id} | Delete a vendor employee |
| GET | /api/v1/admin/vendor-employees/{id} | Get a single vendor employee |
| PATCH | /api/v1/admin/vendor-employees/{id} | Update a vendor employee |
Admin / Vendors
Section titled “Admin / Vendors”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/admin/vendors | List all vendors |
| POST | /api/v1/admin/vendors | Create a new vendor |
| DELETE | /api/v1/admin/vendors/{id} | Delete a vendor |
| GET | /api/v1/admin/vendors/{id} | Get a single vendor |
| PATCH | /api/v1/admin/vendors/{id} | Update a vendor |
| GET | /api/v1/admin/vendors/{id}/customer-membership-products | List vendor-customer membership plans (for assist flows such as admin order lines) |
| GET | /api/v1/admin/vendors/{id}/membership-package | Get current platform membership package for vendor |
| PATCH | /api/v1/admin/vendors/{id}/membership-package | Assign or change platform membership package for a vendor |
| GET | /api/v1/admin/vendors/autocomplete | List all vendors |
Admin Adjustments
Section titled “Admin Adjustments”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/admin/adjustments/{id} | AdminAdjustmentsController_detail |
| GET | /api/v1/admin/adjustments/list | AdminAdjustmentsController_list |
Admin attributes
Section titled “Admin attributes”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/admin/attributes | List attributes (paginated) |
| POST | /api/v1/admin/attributes | Create attribute |
| DELETE | /api/v1/admin/attributes/{id} | Delete attribute |
| GET | /api/v1/admin/attributes/{id} | Get one attribute |
| PATCH | /api/v1/admin/attributes/{id} | Update attribute |
| POST | /api/v1/admin/attributes/batch/delete | Batch delete global attributes (max 200 ids) |
| GET | /api/v1/admin/attributes/export | Export global attributes as Excel (.xlsx) |
| POST | /api/v1/admin/attributes/import | Import attributes from Excel (.xlsx) |
Admin banners
Section titled “Admin banners”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/admin/banners | List global banners (paginated) |
| POST | /api/v1/admin/banners | Create a global banner |
| DELETE | /api/v1/admin/banners/{id} | Delete a global banner |
| GET | /api/v1/admin/banners/{id} | Get one global banner |
| PATCH | /api/v1/admin/banners/{id} | Update a global banner |
Admin categories
Section titled “Admin categories”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/admin/categories | List categories (paginated) |
| POST | /api/v1/admin/categories | Create category |
| DELETE | /api/v1/admin/categories/{id} | Delete category |
| GET | /api/v1/admin/categories/{id} | Get one category |
| PATCH | /api/v1/admin/categories/{id} | Update category |
| POST | /api/v1/admin/categories/batch/delete | Batch delete global categories (max 200 ids) |
| GET | /api/v1/admin/categories/export | Export global categories as Excel (.xlsx) |
| POST | /api/v1/admin/categories/import | Import categories from Excel (.xlsx) |
Admin dashboard
Section titled “Admin dashboard”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/admin/dashboard/analytics | Charts and widgets: admin-order revenue by day, orders by weekday, top stores/vendors, revenue by category, vendors with platform packages expiring soon, expiring-soon counts |
| GET | /api/v1/admin/dashboard/overview | KPI cards: admin B2B revenue & orders vs prior window, master-catalog product count, open platform vendor subscription totals & expiring-soon count (optional store/vendor scope) |
Admin Lots
Section titled “Admin Lots”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/admin/lots/{id} | AdminLotsController_detail |
| GET | /api/v1/admin/lots/list | AdminLotsController_list |
Admin products
Section titled “Admin products”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/admin/products | List products with pagination and filters |
| POST | /api/v1/admin/products | Create product |
| DELETE | /api/v1/admin/products/{id} | Delete product |
| GET | /api/v1/admin/products/{id} | Get one product |
| PATCH | /api/v1/admin/products/{id} | Update product |
| POST | /api/v1/admin/products/{id}/duplicate | Duplicate product |
| GET | /api/v1/admin/products/attributes | AdminProductsController_attributes |
| POST | /api/v1/admin/products/batch/delete | Batch soft-delete products (max 200 ids) |
| PATCH | /api/v1/admin/products/batch/status | Batch update product status (max 200 ids) |
| GET | /api/v1/admin/products/categories | AdminProductsController_categories |
| GET | /api/v1/admin/products/export | Export products as CSV |
| GET | /api/v1/admin/products/export-excel | Export products as Excel (.xlsx) |
| POST | /api/v1/admin/products/import | Import product status from CSV |
| POST | /api/v1/admin/products/import-excel | Import products from Excel (first sheet) |
| GET | /api/v1/admin/products/import-template-excel | Download empty Excel template for product import |
| GET | /api/v1/admin/products/item-types | Distinct item type values (for filters) |
| GET | /api/v1/admin/products/low-stock | Products with low stock (1–10 units), lowest first |
| GET | /api/v1/admin/products/overview | Product KPIs for dashboard cards |
| GET | /api/v1/admin/products/stores | AdminProductsController_stores |
| GET | /api/v1/admin/products/suppliers | AdminProductsController_suppliers |
| GET | /api/v1/admin/products/tags | AdminProductsController_tags |
| GET | /api/v1/admin/products/top-by-revenue | Top products by line revenue from paid, completed orders |
| GET | /api/v1/admin/products/units | AdminProductsController_units |
Admin Stocks
Section titled “Admin Stocks”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/admin/stocks/{id} | AdminStocksController_detail |
| GET | /api/v1/admin/stocks/list | AdminStocksController_list |
Admin tags
Section titled “Admin tags”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/admin/tags | List tags (paginated) |
| POST | /api/v1/admin/tags | Create tag |
| DELETE | /api/v1/admin/tags/{id} | Delete tag |
| GET | /api/v1/admin/tags/{id} | Get one tag |
| PATCH | /api/v1/admin/tags/{id} | Update tag |
| POST | /api/v1/admin/tags/batch/delete | Batch delete global tags (max 200 ids) |
| GET | /api/v1/admin/tags/export | Export global tags as Excel (.xlsx) |
| POST | /api/v1/admin/tags/import | Import tags from Excel (.xlsx) |
Admin tickets
Section titled “Admin tickets”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/admin/support-tickets | List tickets (filters + pagination) |
| POST | /api/v1/admin/support-tickets | Create ticket (admin workspace) |
| GET | /api/v1/admin/support-tickets/{id} | Get one ticket |
| PATCH | /api/v1/admin/support-tickets/{id} | Update ticket status, priority, assignee, internal note |
| GET | /api/v1/admin/support-tickets/{id}/comments | List staff discussion comments for a ticket |
| POST | /api/v1/admin/support-tickets/{id}/comments | Add a staff discussion comment |
| GET | /api/v1/admin/support-tickets/overview | Ticket counts by status |
Admin units
Section titled “Admin units”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/admin/units | List units (paginated) |
| POST | /api/v1/admin/units | Create unit |
| DELETE | /api/v1/admin/units/{id} | Delete unit |
| GET | /api/v1/admin/units/{id} | Get one unit |
| PATCH | /api/v1/admin/units/{id} | Update unit |
| POST | /api/v1/admin/units/batch/delete | Batch delete global units (max 200 ids) |
| GET | /api/v1/admin/units/export | Export global units as Excel (.xlsx) |
| POST | /api/v1/admin/units/import | Import units from Excel (.xlsx) |
Admin Warehouses
Section titled “Admin Warehouses”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/admin/warehouses/{id} | AdminWarehousesController_detail |
| GET | /api/v1/admin/warehouses/list | AdminWarehousesController_list |
AdminSuppliers
Section titled “AdminSuppliers”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/admin/suppliers | AdminSuppliersController_list |
| POST | /api/v1/admin/suppliers | AdminSuppliersController_create |
| DELETE | /api/v1/admin/suppliers/{id} | AdminSuppliersController_remove |
| GET | /api/v1/admin/suppliers/{id} | AdminSuppliersController_getOne |
| PATCH | /api/v1/admin/suppliers/{id} | AdminSuppliersController_update |
| GET | /api/v1/admin/suppliers/overview | AdminSuppliersController_overview |
Auth (admin)
Section titled “Auth (admin)”| Method | Path | Summary |
|---|---|---|
| POST | /api/v1/auth/admin/login | Admin panel login (super admin or staff) |
| GET | /api/v1/auth/admin/me | Current admin (role + modules from DB) |
| PATCH | /api/v1/auth/admin/me | Update current admin profile |
| GET | /api/v1/auth/admin/notifications | List database notifications for the current admin |
| DELETE | /api/v1/auth/admin/notifications/{id} | Delete one notification for this admin |
| PATCH | /api/v1/auth/admin/notifications/{id}/read | Mark one notification as read |
| POST | /api/v1/auth/admin/notifications/delete | Delete multiple notifications for this admin |
| POST | /api/v1/auth/admin/notifications/read-all | Mark all notifications as read for this admin |
| PATCH | /api/v1/auth/admin/password | Change password for the authenticated admin |
| POST | /api/v1/auth/admin/password-reset | Request admin password reset (6-digit OTP) |
| POST | /api/v1/auth/admin/password-reset/complete | Set new password using reset_token from verify step |
| POST | /api/v1/auth/admin/password-reset/verify | Verify OTP and receive short-lived reset_token JWT |
| POST | /api/v1/auth/admin/refresh | Refresh admin panel tokens |
| GET | /api/v1/auth/admin/settings/notifications | Current admin notification preferences |
| PATCH | /api/v1/auth/admin/settings/notifications | Update admin notification preferences |
| GET | /api/v1/auth/admin/ui-client-events | List client UI / error telemetry events |
| POST | /api/v1/auth/admin/ui-client-events | Report a client-side event (authenticated admin) |
| DELETE | /api/v1/auth/admin/ui-client-events/{id} | Delete one client event |
| GET | /api/v1/auth/admin/ui-client-events/{id} | Get one telemetry event |
| POST | /api/v1/auth/admin/ui-client-events/{id}/resolve | Mark one client event as resolved |
| POST | /api/v1/auth/admin/ui-client-events/batch/delete | Delete multiple client events |
| POST | /api/v1/auth/admin/ui-client-events/batch/resolve | Mark multiple client events as resolved |
Auth (customer)
Section titled “Auth (customer)”| Method | Path | Summary |
|---|---|---|
| POST | /api/v1/auth/login | Login (Laravel-style envelope on success) |
| GET | /api/v1/auth/me | Current user (access token) |
| POST | /api/v1/auth/refresh | Refresh access token |
Auth (vendor)
Section titled “Auth (vendor)”| Method | Path | Summary |
|---|---|---|
| POST | /api/v1/auth/vendor/login | Vendor login (owner or employee) |
| GET | /api/v1/auth/vendor/me | Current vendor user (owner or employee) with modules |
| GET | /api/v1/auth/vendor/notifications | List notifications (Laravel VendorController@get_notifications parity) |
| POST | /api/v1/auth/vendor/notifications/delete | Delete in-app notifications (user_notifications) |
| POST | /api/v1/auth/vendor/notifications/read | Mark in-app notifications as read (user_notifications) |
| PATCH | /api/v1/auth/vendor/password | Change password for the authenticated vendor user |
| POST | /api/v1/auth/vendor/password-reset | Request vendor password reset (6-digit OTP) |
| POST | /api/v1/auth/vendor/password-reset/complete | Set new password using reset_token |
| POST | /api/v1/auth/vendor/password-reset/verify | Verify OTP and receive short-lived reset_token JWT |
| GET | /api/v1/auth/vendor/profile | Current vendor owner or employee profile |
| PATCH | /api/v1/auth/vendor/profile | Update current user profile |
| POST | /api/v1/auth/vendor/refresh | Refresh vendor tokens |
| POST | /api/v1/auth/vendor/register | Register vendor owner + default store |
| GET | /api/v1/auth/vendor/register/modules | List business modules for vendor registration (public) |
| GET | /api/v1/auth/vendor/settings/notifications | Notification preference toggles for current store |
| PATCH | /api/v1/auth/vendor/settings/notifications | Update notification preference toggles |
| POST | /api/v1/auth/vendor/ui-client-events | Report a client-side event (authenticated vendor) |
Auth (vendor) — context reads
Section titled “Auth (vendor) — context reads”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/auth/vendor/context/categories | List catalog categories (read-only bootstrap) |
| GET | /api/v1/auth/vendor/context/categories/{id} | Get one catalog category (read-only bootstrap) |
| GET | /api/v1/auth/vendor/context/coupons | List coupons / discounts (read-only bootstrap) |
| GET | /api/v1/auth/vendor/context/coupons/{id} | Get one coupon (read-only bootstrap) |
| GET | /api/v1/auth/vendor/context/coupons/overview | Coupons overview stats (read-only bootstrap) |
| GET | /api/v1/auth/vendor/context/customers | List customers (read-only bootstrap) |
| GET | /api/v1/auth/vendor/context/customers/{id} | Get one customer (read-only bootstrap) |
| GET | /api/v1/auth/vendor/context/customers/{id}/loyalty | Get customer loyalty summary (read-only bootstrap) |
| GET | /api/v1/auth/vendor/context/customers/{id}/loyalty-transactions | Get customer loyalty transactions (read-only bootstrap) |
| GET | /api/v1/auth/vendor/context/customers/{id}/timeline | Get customer timeline (read-only bootstrap) |
| GET | /api/v1/auth/vendor/context/customers/{id}/wallet | Get customer wallet summary (read-only bootstrap) |
| GET | /api/v1/auth/vendor/context/customers/{id}/wallet-transactions | Get customer wallet transactions (read-only bootstrap) |
| GET | /api/v1/auth/vendor/context/customers/crm/kpis | Customer CRM KPI summary (read-only bootstrap) |
| GET | /api/v1/auth/vendor/context/customers/overview | Customer KPIs (read-only bootstrap) |
| GET | /api/v1/auth/vendor/context/customers/segments/overview | Customer segmentation overview (read-only bootstrap) |
| GET | /api/v1/auth/vendor/context/product/{id} | Get one product (read-only bootstrap) |
| GET | /api/v1/auth/vendor/context/products | List products with stock (read-only bootstrap) |
| GET | /api/v1/auth/vendor/context/products/attributes | Product form: attributes for store |
| GET | /api/v1/auth/vendor/context/products/categories | Product form: category tree for store |
| GET | /api/v1/auth/vendor/context/products/low-stock | Low-stock products (read-only bootstrap) |
| GET | /api/v1/auth/vendor/context/products/overview | Product KPIs (read-only bootstrap) |
| GET | /api/v1/auth/vendor/context/products/stores | Product form: store lookup |
| GET | /api/v1/auth/vendor/context/products/suppliers | Product form: suppliers for store |
| GET | /api/v1/auth/vendor/context/products/tags | Product form: tags for store |
| GET | /api/v1/auth/vendor/context/products/top-by-revenue | Top products by revenue (read-only bootstrap) |
| GET | /api/v1/auth/vendor/context/products/units | Product form: units list |
| GET | /api/v1/auth/vendor/context/shifts/templates | List shift templates for authenticated vendor user (fallback for users without settings module) |
| GET | /api/v1/auth/vendor/context/shifts/work-shifts | List work shifts for authenticated vendor user (fallback for users without settings module) |
| POST | /api/v1/auth/vendor/context/shifts/work-shifts | Open work shift for authenticated vendor user (fallback for users without settings module; auto clock-in for opener) |
| GET | /api/v1/auth/vendor/context/shifts/work-shifts/{id} | Work shift detail for authenticated vendor user (fallback for users without settings module) |
| PATCH | /api/v1/auth/vendor/context/shifts/work-shifts/{id}/close | Close work shift for authenticated vendor user (fallback for users without settings module) |
| GET | /api/v1/auth/vendor/context/shifts/work-shifts/current | Current open work shift (fallback for users without settings module; employees scoped to own store and mine-only) |
| GET | /api/v1/auth/vendor/context/shifts/work-shifts/last-closed | Last closed work shift for handover defaults (fallback for users without settings module) |
| GET | /api/v1/auth/vendor/context/stores | List stores the current user may access (JWT + employee store scope) |
| GET | /api/v1/auth/vendor/context/stores/{id} | Get one store (read-only bootstrap) |
| GET | /api/v1/auth/vendor/context/stores/overview | Store KPI counts for vendor (read-only bootstrap) |
Health
Section titled “Health”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/health | Liveness probe |
Orders
Section titled “Orders”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/admin/orders | List orders with pagination and filters |
| POST | /api/v1/admin/orders | Create admin order (counterparty vendor + optional store + line items) |
| GET | /api/v1/admin/orders/{id} | Get one order with line items |
| PATCH | /api/v1/admin/orders/{id} | Partially update order (status, payment fields, amounts — Laravel admin parity subset) |
| GET | /api/v1/admin/orders/{id}/receipt-html | Thermal receipt HTML for print/preview (same layout as vendor POS receipt) |
| GET | /api/v1/admin/orders/overview | Order KPI counts (store/vendor filters) |
POS (vendor + admin)
Section titled “POS (vendor + admin)”| Method | Path | Summary |
|---|---|---|
| POST | /api/v1/pos/apply-coupon | Validate and return coupon discount details for the POS cart |
| GET | /api/v1/pos/categories | List categories for the POS store (module-scoped or derived from items) |
| GET | /api/v1/pos/customers | Search customers by name/phone (Laravel token OR query) |
| GET | /api/v1/pos/items | Paginated menu items; optional filters: stock, stock_max, in_stock, category_id, category_ids, variations, has_variations, discount, discount_max, has_discount, unit_id, unit_ids |
| GET | /api/v1/pos/items/grouped | Menu items grouped by category; supports stock, category_id(s), variations, discount, unit_id(s) filters (see query DTO) |
| POST | /api/v1/pos/orders | Place a POS order (Laravel place_order parity) |
| POST | /api/v1/pos/orders/{orderId}/cancel-payment | Cancel/mark failed pending POS card payment |
| POST | /api/v1/pos/orders/{orderId}/mark-payment-success | Manually mark pending POS order payment as success |
| POST | /api/v1/pos/orders/{orderId}/payment-intent | Create/recreate terminal payment intent for pending card order |
| GET | /api/v1/pos/orders/{orderId}/payment-status | Get POS order payment status (used by vendor-web while waiting terminal card payment) |
| POST | /api/v1/pos/orders/{orderId}/terminal-post-capture | After successful card capture: void sale on terminal or send tip adjustment (ECR hub relay) |
| GET | /api/v1/pos/promotions | Discounts and coupons for the store |
Public
Section titled “Public”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/public/landing-settings | Public marketing landing SEO and hero copy (no auth) |
| POST | /api/v1/public/ui-client-events | Record a client-side UI event (no auth) |
Vendor / Attributes
Section titled “Vendor / Attributes”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/vendor/attributes | VendorAttributesController_list |
| POST | /api/v1/vendor/attributes | VendorAttributesController_create |
| DELETE | /api/v1/vendor/attributes/{id} | VendorAttributesController_remove |
| GET | /api/v1/vendor/attributes/{id} | VendorAttributesController_getOne |
| PATCH | /api/v1/vendor/attributes/{id} | VendorAttributesController_update |
| POST | /api/v1/vendor/attributes/batch/delete | Batch delete vendor attributes (max 200 ids) |
| GET | /api/v1/vendor/attributes/export | Export vendor attributes as Excel (.xlsx) |
| POST | /api/v1/vendor/attributes/import | Import vendor attributes from Excel (.xlsx) |
Vendor / Modules
Section titled “Vendor / Modules”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/vendor/modules | List modules (vender and global) |
| POST | /api/v1/vendor/modules | Create vendor module |
| DELETE | /api/v1/vendor/modules/{id} | Delete vendor module |
| GET | /api/v1/vendor/modules/{id} | Get module detail |
| PUT | /api/v1/vendor/modules/{id} | Update vendor module |
Vendor / Roles
Section titled “Vendor / Roles”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/vendor/roles | List roles (vendor and global) |
| POST | /api/v1/vendor/roles | Create vendor role |
| DELETE | /api/v1/vendor/roles/{id} | Delete vendor role |
| GET | /api/v1/vendor/roles/{id} | Get role detail |
| PUT | /api/v1/vendor/roles/{id} | Update vendor role |
| GET | /api/v1/vendor/roles/{id}/detail | Get role detail with subscribed customers and plan details (permissions) |
Vendor / Store configuration
Section titled “Vendor / Store configuration”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/vendor/stores/{storeId}/configuration | Get store profile slice + structured configuration + document numbering rules |
| PATCH | /api/v1/vendor/stores/{storeId}/configuration | Partially update store scalars, configuration row, and optionally replace document rule rows |
Vendor / Stores
Section titled “Vendor / Stores”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/vendor/stores | List stores belonging to the current vendor |
| POST | /api/v1/vendor/stores | Create a new store for the current vendor |
| DELETE | /api/v1/vendor/stores/{id} | Delete a store |
| GET | /api/v1/vendor/stores/{id} | Get a single store |
| PATCH | /api/v1/vendor/stores/{id} | Update a store |
| GET | /api/v1/vendor/stores/overview | Get stores overview for the current vendor |
Vendor / Vendor Employees
Section titled “Vendor / Vendor Employees”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/vendor/vendor-employees | List vendor employees (owner: any store on vendor; employee: must pass store_id matching their store) |
| POST | /api/v1/vendor/vendor-employees | Create a new vendor employee |
| DELETE | /api/v1/vendor/vendor-employees/{id} | Delete a vendor employee |
| GET | /api/v1/vendor/vendor-employees/{id} | Get a single vendor employee |
| PATCH | /api/v1/vendor/vendor-employees/{id} | Update a vendor employee |
| GET | /api/v1/vendor/vendor-employees/roles | List employee roles for vendor stores (store_id optional; scopes to one store) |
Vendor adjustments
Section titled “Vendor adjustments”| Method | Path | Summary |
|---|---|---|
| POST | /api/v1/vendor/adjustments | Create stock adjustment (updates stock rows) |
| GET | /api/v1/vendor/adjustments/{id} | Adjustment detail |
| GET | /api/v1/vendor/adjustments/list | List stock adjustments for vendor stores |
Vendor banners
Section titled “Vendor banners”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/vendor/banners | List banners for the logged-in vendor store |
| POST | /api/v1/vendor/banners | Create a banner scoped to the vendor store (zone/module default from store) |
| DELETE | /api/v1/vendor/banners/{id} | Delete a vendor-scoped banner |
| GET | /api/v1/vendor/banners/{id} | Get one vendor-scoped banner |
| PATCH | /api/v1/vendor/banners/{id} | Update a vendor-scoped banner |
Vendor categories
Section titled “Vendor categories”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/vendor/categories | List categories for current vendor |
| POST | /api/v1/vendor/categories | Create category for current vendor |
| DELETE | /api/v1/vendor/categories/{id} | Delete category |
| GET | /api/v1/vendor/categories/{id} | Get one category |
| PATCH | /api/v1/vendor/categories/{id} | Update category |
| POST | /api/v1/vendor/categories/batch/delete | Batch delete vendor categories (max 200 ids) |
| GET | /api/v1/vendor/categories/export | Export vendor categories as Excel (.xlsx) |
| POST | /api/v1/vendor/categories/import | Import vendor categories from Excel (.xlsx) |
Vendor customers
Section titled “Vendor customers”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/vendor/customers | List customers with pagination and filters |
| POST | /api/v1/vendor/customers | Create customer (retail) |
| DELETE | /api/v1/vendor/customers/{id} | Soft-delete customer |
| GET | /api/v1/vendor/customers/{id} | Get one customer |
| PATCH | /api/v1/vendor/customers/{id} | Update customer |
| GET | /api/v1/vendor/customers/{id}/loyalty | Get customer loyalty summary |
| GET | /api/v1/vendor/customers/{id}/loyalty-transactions | Get customer loyalty transactions |
| POST | /api/v1/vendor/customers/{id}/loyalty/adjust | Manual loyalty point adjustment for a customer |
| GET | /api/v1/vendor/customers/{id}/timeline | Customer activity timeline (orders + loyalty) |
| GET | /api/v1/vendor/customers/{id}/wallet | Get customer wallet summary |
| GET | /api/v1/vendor/customers/{id}/wallet-transactions | Get customer wallet transactions |
| GET | /api/v1/vendor/customers/crm/kpis | CRM KPI summary (Phase 3) |
| GET | /api/v1/vendor/customers/export | Export customers as Excel (.xlsx) matching current list filters (max 5000 rows) |
| POST | /api/v1/vendor/customers/import | Import customers from Excel (first sheet). Match by CRM id (customers.id) then phone → CRM row; new rows need first_name, email, phone (password optional, min 6 chars or default). |
| GET | /api/v1/vendor/customers/import-template | Download empty Excel template for customer import |
| GET | /api/v1/vendor/customers/overview | Dashboard KPIs: totals and signup trend |
| GET | /api/v1/vendor/customers/segments/overview | Customer segmentation overview (MVP) |
Vendor delivery partners
Section titled “Vendor delivery partners”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/vendor/delivery-partners | List delivery partners |
| POST | /api/v1/vendor/delivery-partners | Create delivery partner |
| DELETE | /api/v1/vendor/delivery-partners/{id} | Delete delivery partner |
| GET | /api/v1/vendor/delivery-partners/{id} | Get one delivery partner |
| PATCH | /api/v1/vendor/delivery-partners/{id} | Update delivery partner |
| POST | /api/v1/vendor/delivery-partners/{id}/duplicate | Duplicate delivery partner (new code, name suffix) |
| GET | /api/v1/vendor/delivery-partners/export | Export delivery partners as Excel (.xlsx) |
| POST | /api/v1/vendor/delivery-partners/import | Import delivery partners from Excel (first sheet); existing code rows are updated |
| GET | /api/v1/vendor/delivery-partners/import-template | Download empty Excel template for import |
| GET | /api/v1/vendor/delivery-partners/overview | Delivery partner counts by type |
Vendor finance
Section titled “Vendor finance”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/vendor/finance/expenses | Paginated expenses list |
| POST | /api/v1/vendor/finance/expenses | Create a new expense (any expense_type) tied to a vendor-authorized store |
| GET | /api/v1/vendor/finance/expenses/{id} | Single expense detail by id |
| PATCH | /api/v1/vendor/finance/expenses/{id} | Update expense lifecycle status/description and write audit log |
| PATCH | /api/v1/vendor/finance/expenses/batch | Batch update expense status (approve, mark paid, cancel); writes audit_logs per row |
| GET | /api/v1/vendor/finance/expenses/overview | Expenses KPI overview (vendor-scoped) |
| GET | /api/v1/vendor/finance/invoices | Paginated invoices list |
| POST | /api/v1/vendor/finance/invoices | Create invoice for an existing order under vendor-authorized stores |
| GET | /api/v1/vendor/finance/invoices/{id} | Single invoice detail by id |
| PATCH | /api/v1/vendor/finance/invoices/batch | Batch update invoice status for vendor-authorized stores |
| GET | /api/v1/vendor/finance/invoices/overview | Invoices KPI overview (vendor-scoped) |
| GET | /api/v1/vendor/finance/receivables | Paginated receivables list |
| POST | /api/v1/vendor/finance/receivables | Create a new receivable from an existing order (tenancy via order.store_id) |
| GET | /api/v1/vendor/finance/receivables/{id} | Single receivable detail by id |
| PATCH | /api/v1/vendor/finance/receivables/{id} | Update receivable fields (due date / paid amount partial) and write audit log |
| PATCH | /api/v1/vendor/finance/receivables/batch | Batch update receivables (mark paid, cancel, or waive); each row writes audit_logs with actor |
| GET | /api/v1/vendor/finance/receivables/overview | Receivables KPI overview (vendor-scoped) |
| GET | /api/v1/vendor/finance/refunds | Paginated refunds list |
| GET | /api/v1/vendor/finance/refunds/{id} | Single refund detail by id |
| PATCH | /api/v1/vendor/finance/refunds/{id} | Approve or reject a refund |
| GET | /api/v1/vendor/finance/refunds/overview | Refunds KPI overview (vendor-scoped) |
| GET | /api/v1/vendor/finance/sales-overview | Sales overview: gross/net sales, tender breakdown (incl. check note buckets), cash deposits by POS device, revenue classes (vendor-scoped; completed + paid orders in period) |
| GET | /api/v1/vendor/finance/report/customers | Financial report by customer (line-level sales/returns on completed + paid orders, user_id set) |
| GET | /api/v1/vendor/finance/report/daily | Daily financial report trend (vendor-scoped) |
| GET | /api/v1/vendor/finance/report/inventory-ratio | Revenue vs inventory: gross sales + COGS (sum of order store_expense) in range, current stock valuation, turnover-style ratios |
| GET | /api/v1/vendor/finance/report/product-categories | Financial report revenue by product category (completed + paid orders) |
| GET | /api/v1/vendor/finance/report/products | Financial report by product (line-level sales/returns on completed + paid orders) |
| GET | /api/v1/vendor/finance/report/registers | Sales and tax by POS register / checkout lane (vendor-scoped; order rollups) |
| GET | /api/v1/vendor/finance/report/staff | Financial report by staff (orders linked to vendor_employees for the store) |
| GET | /api/v1/vendor/finance/report/summary | Financial report summary (vendor-scoped) |
| GET | /api/v1/vendor/finance/report/suppliers | Purchase report by supplier from inventory lots (line qty + line value; excludes declined lots) |
| GET | /api/v1/vendor/finance/report/taxes | Taxes report: applicable sales, collected, refunded, and net tax by rate bucket on completed + paid order lines (vendor-scoped) |
| GET | /api/v1/vendor/finance/transactions | Paginated account_transactions cash ledger (store-scoped) |
| POST | /api/v1/vendor/finance/transactions | Create an account transaction row (analytical ledger only, store-scoped) |
| GET | /api/v1/vendor/finance/transactions/{id} | Single account_transaction detail by id |
| GET | /api/v1/vendor/finance/transactions/orders | Paginated order_transactions ledger (store-scoped) |
| GET | /api/v1/vendor/finance/transactions/orders/{id} | Single order_transaction detail by id |
| GET | /api/v1/vendor/finance/transactions/orders/overview | Order-transaction KPI overview (vendor-scoped) |
| GET | /api/v1/vendor/finance/transactions/overview | Transaction KPI overview (vendor-scoped) |
Vendor gallery
Section titled “Vendor gallery”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/vendor/gallery | List uploaded gallery images |
| POST | /api/v1/vendor/gallery | Upload an image to the vendor gallery |
| DELETE | /api/v1/vendor/gallery/{id} | Delete a gallery image |
| POST | /api/v1/vendor/gallery/batch/delete | Delete multiple gallery images by id |
Vendor internal transfers
Section titled “Vendor internal transfers”| Method | Path | Summary |
|---|---|---|
| POST | /api/v1/vendor/internal-transfers | Create internal stock transfer between warehouses |
| GET | /api/v1/vendor/internal-transfers/list | List internal stock transfers |
Vendor inventory
Section titled “Vendor inventory”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/vendor/inventory/summary | Scoped inventory counts (warehouses, stock lines, lots, adjustments, low stock) |
Vendor lots
Section titled “Vendor lots”| Method | Path | Summary |
|---|---|---|
| POST | /api/v1/vendor/lots | Create purchase lot with line items |
| GET | /api/v1/vendor/lots/{id} | Lot detail |
| PATCH | /api/v1/vendor/lots/{id}/status | Update lot status (DELIVERED/DECLINED) |
| GET | /api/v1/vendor/lots/list | List purchase lots for vendor stores |
Vendor membership products (customer programs)
Section titled “Vendor membership products (customer programs)”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/vendor/membership-products | List membership products for customers |
| POST | /api/v1/vendor/membership-products | Create membership product |
| DELETE | /api/v1/vendor/membership-products/{id} | Delete membership product |
| GET | /api/v1/vendor/membership-products/{id} | Get one membership product |
| PATCH | /api/v1/vendor/membership-products/{id} | Update membership product |
| GET | /api/v1/vendor/membership-products/platform-invoices | List vendor platform membership purchase invoices |
| GET | /api/v1/vendor/membership-products/platform-invoices/{id} | Get one platform membership invoice detail |
| POST | /api/v1/vendor/membership-products/platform-invoices/{id}/cancel | Cancel a platform membership purchase or active package |
| POST | /api/v1/vendor/membership-products/platform-invoices/{id}/pay | Pay a pending platform membership invoice |
| POST | /api/v1/vendor/membership-products/platform-packages/{id}/purchase | Create pending invoice for a platform membership package |
| GET | /api/v1/vendor/membership-products/platform-packages/list | List platform membership packages for vendor checkout |
Vendor membership subscriptions (customer programs)
Section titled “Vendor membership subscriptions (customer programs)”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/vendor/membership-subscriptions | List membership subscriptions |
| POST | /api/v1/vendor/membership-subscriptions | Create membership subscription for a customer |
| GET | /api/v1/vendor/membership-subscriptions/{id} | Get one membership subscription |
| PATCH | /api/v1/vendor/membership-subscriptions/{id} | Update membership subscription |
| GET | /api/v1/vendor/membership-subscriptions/{id}/benefit-history | List membership benefit history by subscription id |
| GET | /api/v1/vendor/membership-subscriptions/benefit-history | List precomputed membership benefit history rows |
Vendor orders
Section titled “Vendor orders”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/vendor/orders | List orders with pagination and filters |
| GET | /api/v1/vendor/orders/{id} | Get one order with line items |
| PATCH | /api/v1/vendor/orders/{id} | Partially update order (status, payment fields, amounts — Laravel admin parity subset) |
| GET | /api/v1/vendor/orders/{id}/receipt-html | Render receipt HTML for printing by order id |
| GET | /api/v1/vendor/orders/{id}/track | Track order — extended details (delivery window, refund summary) |
| POST | /api/v1/vendor/orders/cancel | Cancel order (pre-confirmation only, vendor-initiated) |
| POST | /api/v1/vendor/orders/cancel-return | Cancel an in-progress return (Laravel parity) |
| POST | /api/v1/vendor/orders/draft/delete | Soft-delete a POS server-held draft order (sets deleted_at; hidden from lists) |
| GET | /api/v1/vendor/orders/meta/cancellation-reasons | Paginated cancellation reasons |
| GET | /api/v1/vendor/orders/meta/parcel-instructions | Parcel / delivery instructions for returns |
| GET | /api/v1/vendor/orders/meta/refund-reasons | Active refund reasons (Laravel parity) |
| GET | /api/v1/vendor/orders/overview | Order KPI counts — optional store, date range, search, order_type, pos_staff_only (matches list filters) |
| PATCH | /api/v1/vendor/orders/payment-method | Update payment method on order |
| POST | /api/v1/vendor/orders/place | Place order (POS parity — requires store_id for vendor store) |
| GET | /api/v1/vendor/orders/pos-report/summary | POS shift report aggregates (paid POS orders, returns, payment mix, goods, expenses) |
| POST | /api/v1/vendor/orders/pos-return-submit | POS: submit return + approve refund immediately (skips pending return-request vendor inbox notification) |
| POST | /api/v1/vendor/orders/refund-request | Request refund / return for line items |
| POST | /api/v1/vendor/orders/retrieve-payment | Confirm / retrieve gateway payment intent |
Vendor POS registers
Section titled “Vendor POS registers”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/vendor/pos-registers | List checkout registers (lanes) for a store |
| POST | /api/v1/vendor/pos-registers | Create a checkout register for a store (owner only) |
| DELETE | /api/v1/vendor/pos-registers/{id} | Deactivate a checkout lane (owner only; blocked if an open shift uses it) |
| GET | /api/v1/vendor/pos-registers/{id} | Get one register |
| PATCH | /api/v1/vendor/pos-registers/{id} | Update a checkout register: display name and/or active status (owner only). Deactivating is blocked while an open shift uses the lane. |
Vendor products
Section titled “Vendor products”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/vendor/products | List products with pagination and filters |
| POST | /api/v1/vendor/products | Create product (store_id / warehouse_id are 13-character public ids; omit empty store_id) |
| DELETE | /api/v1/vendor/products/{id} | Delete product |
| GET | /api/v1/vendor/products/{id} | Get one product |
| PATCH | /api/v1/vendor/products/{id} | Update product |
| POST | /api/v1/vendor/products/{id}/duplicate | Duplicate product |
| GET | /api/v1/vendor/products/attributes | VendorProductsController_attributes |
| POST | /api/v1/vendor/products/batch/delete | Batch soft-delete products (max 200 ids) |
| PATCH | /api/v1/vendor/products/batch/status | Batch update product status (max 200 ids) |
| GET | /api/v1/vendor/products/categories | VendorProductsController_categories |
| GET | /api/v1/vendor/products/export-excel | Export products as Excel (.xlsx) |
| POST | /api/v1/vendor/products/import-excel | Import products from Excel (first sheet) |
| GET | /api/v1/vendor/products/import-template-excel | Download empty Excel template for product import |
| GET | /api/v1/vendor/products/low-stock | Products with low stock (1–10 units), lowest first |
| GET | /api/v1/vendor/products/overview | Product KPIs for dashboard cards |
| POST | /api/v1/vendor/products/quick-add-from-master | Quick add product from system master data |
| GET | /api/v1/vendor/products/quick-add-master-search | Autocomplete master products for quick add |
| GET | /api/v1/vendor/products/stores | VendorProductsController_stores |
| GET | /api/v1/vendor/products/suppliers | VendorProductsController_suppliers |
| GET | /api/v1/vendor/products/tags | VendorProductsController_tags |
| GET | /api/v1/vendor/products/top-by-revenue | Top products by line revenue from paid, completed orders |
| GET | /api/v1/vendor/products/units | VendorProductsController_units |
Vendor shifts
Section titled “Vendor shifts”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/vendor/shifts/templates | List shift templates for vendor stores |
| POST | /api/v1/vendor/shifts/templates | Create a shift template |
| DELETE | /api/v1/vendor/shifts/templates/{id} | Delete a shift template |
| PATCH | /api/v1/vendor/shifts/templates/{id} | Update a shift template |
| PATCH / PUT | /api/v1/vendor/shifts/templates/{id}/assignees | Replace suggested members (vendor_shift_template_assignees; public char(13) template/employee ids) |
| GET | /api/v1/vendor/shifts/work-shifts | List work shifts |
| POST | /api/v1/vendor/shifts/work-shifts | Open a work shift (also auto clock-in for opener / assigned staff timecards) |
| GET | /api/v1/vendor/shifts/work-shifts/{id} | Work shift detail with order aggregates |
| PATCH | /api/v1/vendor/shifts/work-shifts/{id}/assignees | Set the single work shift assignee (owner or current assignee; exactly one employee ID) |
| PATCH | /api/v1/vendor/shifts/work-shifts/{id}/close | Close a work shift (auto clock-out when participant has no other open shift) |
| GET | /api/v1/vendor/shifts/work-shifts/current | Current open shift for a store |
| GET | /api/v1/vendor/shifts/work-shifts/last-closed | Last closed shift (handover defaults) |
Vendor stocks
Section titled “Vendor stocks”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/vendor/stocks/{id} | Stock detail |
| POST | /api/v1/vendor/stocks/import | Apply absolute target quantities as stock adjustments (grouped per warehouse) |
| POST | /api/v1/vendor/stocks/import-excel | Import stock target quantities from Excel (first sheet) |
| GET | /api/v1/vendor/stocks/list | List stock rows for vendor stores |
Vendor suppliers
Section titled “Vendor suppliers”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/vendor/suppliers | List suppliers for current vendor |
| POST | /api/v1/vendor/suppliers | Create supplier for current vendor |
| DELETE | /api/v1/vendor/suppliers/{id} | Delete supplier |
| GET | /api/v1/vendor/suppliers/{id} | Get one supplier |
| PATCH | /api/v1/vendor/suppliers/{id} | Update supplier |
| GET | /api/v1/vendor/suppliers/export | Export suppliers as Excel (.xlsx) |
| POST | /api/v1/vendor/suppliers/import | Import suppliers from Excel (.xlsx) |
| GET | /api/v1/vendor/suppliers/import-template | Download empty Excel template for supplier import |
| GET | /api/v1/vendor/suppliers/overview | Get suppliers overview statistics |
Vendor tags
Section titled “Vendor tags”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/vendor/tags | VendorTagsController_list |
| POST | /api/v1/vendor/tags | VendorTagsController_create |
| DELETE | /api/v1/vendor/tags/{id} | VendorTagsController_remove |
| GET | /api/v1/vendor/tags/{id} | VendorTagsController_getOne |
| PATCH | /api/v1/vendor/tags/{id} | VendorTagsController_update |
| POST | /api/v1/vendor/tags/batch/delete | Batch delete vendor tags (max 200 ids) |
| GET | /api/v1/vendor/tags/export | Export vendor tags as Excel (.xlsx) |
| POST | /api/v1/vendor/tags/import | Import vendor tags from Excel (.xlsx) |
Vendor tickets
Section titled “Vendor tickets”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/vendor/support-tickets | List tickets for the authenticated vendor |
| POST | /api/v1/vendor/support-tickets | Create a ticket for admin review |
| GET | /api/v1/vendor/support-tickets/{id} | Get one ticket (vendor-scoped) |
| GET | /api/v1/vendor/support-tickets/{id}/comments | List discussion messages (vendor + admin) |
| POST | /api/v1/vendor/support-tickets/{id}/comments | Post a reply on a ticket |
Vendor units
Section titled “Vendor units”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/vendor/units | List units with pagination and search |
| POST | /api/v1/vendor/units | Create unit |
| DELETE | /api/v1/vendor/units/{id} | Delete unit |
| GET | /api/v1/vendor/units/{id} | Get one unit |
| PATCH | /api/v1/vendor/units/{id} | Update unit |
| POST | /api/v1/vendor/units/batch/delete | Batch delete vendor units (max 200 ids) |
| GET | /api/v1/vendor/units/export | Export vendor units as Excel (.xlsx) |
| POST | /api/v1/vendor/units/import | Import vendor units from Excel (.xlsx) |
Vendor warehouses
Section titled “Vendor warehouses”| Method | Path | Summary |
|---|---|---|
| POST | /api/v1/vendor/warehouses | Create warehouse (store-scoped or vendor-wide) |
| DELETE | /api/v1/vendor/warehouses/{id} | Soft-delete warehouse (only when it has no stock lines, lots, or adjustments) |
| GET | /api/v1/vendor/warehouses/{id} | Warehouse detail |
| PATCH | /api/v1/vendor/warehouses/{id} | Update warehouse |
| GET | /api/v1/vendor/warehouses/list | List warehouses for vendor stores |
vendor-coupons
Section titled “vendor-coupons”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/vendor/coupons | List vendor coupons with pagination and filtering |
| POST | /api/v1/vendor/coupons | Create a new coupon |
| DELETE | /api/v1/vendor/coupons/{id} | Delete a coupon |
| GET | /api/v1/vendor/coupons/{id} | Get a single coupon details |
| PATCH | /api/v1/vendor/coupons/{id} | Update an existing coupon |
| POST | /api/v1/vendor/coupons/{id}/attach-order | Attach coupon discount to an order (same store / vendor) |
| POST | /api/v1/vendor/coupons/{id}/duplicate | Duplicate a coupon |
| GET | /api/v1/vendor/coupons/overview | Get coupons overview stats |
Vendor: Dashboard
Section titled “Vendor: Dashboard”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/vendor/dashboard/analytics | Store-scoped analytics (revenue, top products/customers, categories). Query: days, from, to, store_id, timezone (IANA, store calendar bounds) |
| GET | /api/v1/vendor/dashboard/charts | Get dashboard chart data (timezone for from/to) |
| GET | /api/v1/vendor/dashboard/overview | Get dashboard statistics overview (timezone for from/to) |
| GET | /api/v1/vendor/dashboard/payment-breakdown | Paid orders aggregated by payment method (method_key: cash, card, debt, check, wallet, …). timezone for from/to |
Vendor: Point of Sale (store-scoped checkout)
Section titled “Vendor: Point of Sale (store-scoped checkout)”| Method | Path | Summary |
|---|---|---|
| POST | /api/v1/vendor/point-of-sale/apply-coupon | Apply coupon (requires store_id on body) |
| GET | /api/v1/vendor/point-of-sale/barcode/validate | Validate barcode payload for POS shelf labels (requires store_id; auth-scoped only) |
| GET | /api/v1/vendor/point-of-sale/categories | List POS categories (requires store_id) |
| GET | /api/v1/vendor/point-of-sale/customers | Search POS customers (requires store_id) |
| GET | /api/v1/vendor/point-of-sale/items | Paginated menu items (requires store_id) |
| GET | /api/v1/vendor/point-of-sale/items/grouped | Grouped menu items (requires store_id) |
| POST | /api/v1/vendor/point-of-sale/orders | Place POS order (requires store_id on body) |
| POST | /api/v1/vendor/point-of-sale/orders/{orderId}/cancel-payment | Cancel payment (requires store_id) |
| POST | /api/v1/vendor/point-of-sale/orders/{orderId}/mark-payment-success | Mark payment success (requires store_id) |
| POST | /api/v1/vendor/point-of-sale/orders/{orderId}/payment-intent | Create payment intent (requires store_id) |
| GET | /api/v1/vendor/point-of-sale/orders/{orderId}/payment-status | POS order payment status (requires store_id query) |
| POST | /api/v1/vendor/point-of-sale/orders/{orderId}/terminal-post-capture | Terminal post-capture (requires store_id) |
| GET | /api/v1/vendor/point-of-sale/promotions | POS promotions for store (requires store_id) |
Vendor: Point of Sale (v2 shell)
Section titled “Vendor: Point of Sale (v2 shell)”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/vendor/point-of-sale/bootstrap | POS v2 workspace bootstrap (JWT context). Does not replace legacy /pos/* checkout APIs. |
Vendor: Settings
Section titled “Vendor: Settings”| Method | Path | Summary |
|---|---|---|
| GET | /api/v1/vendor/settings/billing | Billing summary and invoice list (stored prefs + defaults) |
| PATCH | /api/v1/vendor/settings/billing | Update billing display preferences |
| GET | /api/v1/vendor/settings/context | Current JWT store/vendor ids (for role pickers, etc.) |
| GET | /api/v1/vendor/settings/devices | Store devices and terminal API key config |
| PATCH | /api/v1/vendor/settings/devices | Replace devices configuration for current store |
| GET | /api/v1/vendor/settings/devices/{deviceId} | Single store payment terminal by id (store_devices.id) |
| GET | /api/v1/vendor/settings/devices/discover | Discover currently connected devices for current store |
| POST | /api/v1/vendor/settings/devices/payment-terminal/close-batch | Close settlement batch on a saved payment terminal |
| POST | /api/v1/vendor/settings/devices/pos-bridge/activate | Build POS bridge WebSocket URL from a saved payment terminal |
| POST | /api/v1/vendor/settings/devices/receipt-printer/print | Send print command to active receipt printer bridge device (vendor-desktop). |
| POST | /api/v1/vendor/settings/devices/terminal-api-key/regenerate | Regenerate store terminal webhook API key |
| POST | /api/v1/vendor/settings/devices/test-connect | Test connection to a candidate device before saving |
| GET | /api/v1/vendor/settings/general | Store name, support email, currency, timezone |
| PATCH | /api/v1/vendor/settings/general | Update general store settings |
| GET | /api/v1/vendor/settings/invoice-template | Get invoice template for current store |
| PATCH | /api/v1/vendor/settings/invoice-template | Update invoice template for current store |
| GET | /api/v1/vendor/settings/receipt-template | Get receipt template for current store |
| PATCH | /api/v1/vendor/settings/receipt-template | Update receipt template for current store |
| GET | /api/v1/vendor/settings/smtp | Get SMTP settings for current store |
| PATCH | /api/v1/vendor/settings/smtp | Update SMTP settings for current store |
| POST | /api/v1/vendor/settings/smtp/test | Send SMTP test email for current store settings |
| GET | /api/v1/vendor/settings/team | Vendor owner + employees for current store |
| POST | /api/v1/vendor/settings/team/invites | Create employee account (returns temp password if server-generated) |