Bỏ qua để đến nội dung

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.

From the repo root:

Terminal window
cd apps/backend && npm run openapi:export

This updates openapi.json and backend-api-catalog.md.

Download the machine-readable spec: /openapi.json (served from apps/docs/public/ when the docs site is built).

MethodPathSummary
GET/api/v1/admin/settings/businessGlobal business settings (Laravel business_settings, business tab subset)
PATCH/api/v1/admin/settings/businessUpdate business settings (partial)
POST/api/v1/admin/settings/business/test-smtpSend a test email using saved SMTP settings (business_settings mail_*)
MethodPathSummary
GET/api/v1/admin/employee-rolesList all employee roles
POST/api/v1/admin/employee-rolesCreate 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
MethodPathSummary
GET/api/v1/admin/galleryList uploaded gallery images for the current admin
POST/api/v1/admin/galleryUpload an image to the admin gallery
DELETE/api/v1/admin/gallery/{id}Delete a gallery image
MethodPathSummary
GET/api/v1/admin/managersList all admin managers/staff
POST/api/v1/admin/managersCreate 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)”
MethodPathSummary
GET/api/v1/admin/membership-productsList platform_vendor membership catalog
POST/api/v1/admin/membership-productsCreate 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-vendorsList vendors linked to this platform membership product
MethodPathSummary
GET/api/v1/admin/membership-subscriptionsList 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/batchBatch update membership invoice payment status
POST/api/v1/admin/membership-subscriptions/invoicesCreate membership invoice draft
MethodPathSummary
GET/api/v1/admin/modulesList modules (paginated) or compact id+name for selects when compact=1
POST/api/v1/admin/modulesCreate 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)
MethodPathSummary
GET/api/v1/admin/rolesAdminRolesController_list
POST/api/v1/admin/rolesCreate 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}/detailGet admin role detail with subscribed customers and plan details (permissions)
MethodPathSummary
GET/api/v1/admin/storesList all stores
POST/api/v1/admin/storesCreate 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
MethodPathSummary
GET/api/v1/admin/vendor-employeesList vendor employees (filtered for the signed-in admin)
POST/api/v1/admin/vendor-employeesCreate 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
MethodPathSummary
GET/api/v1/admin/vendorsList all vendors
POST/api/v1/admin/vendorsCreate 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-productsList vendor-customer membership plans (for assist flows such as admin order lines)
GET/api/v1/admin/vendors/{id}/membership-packageGet current platform membership package for vendor
PATCH/api/v1/admin/vendors/{id}/membership-packageAssign or change platform membership package for a vendor
GET/api/v1/admin/vendors/autocompleteList all vendors
MethodPathSummary
GET/api/v1/admin/adjustments/{id}AdminAdjustmentsController_detail
GET/api/v1/admin/adjustments/listAdminAdjustmentsController_list
MethodPathSummary
GET/api/v1/admin/attributesList attributes (paginated)
POST/api/v1/admin/attributesCreate 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/deleteBatch delete global attributes (max 200 ids)
GET/api/v1/admin/attributes/exportExport global attributes as Excel (.xlsx)
POST/api/v1/admin/attributes/importImport attributes from Excel (.xlsx)
MethodPathSummary
GET/api/v1/admin/bannersList global banners (paginated)
POST/api/v1/admin/bannersCreate 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
MethodPathSummary
GET/api/v1/admin/categoriesList categories (paginated)
POST/api/v1/admin/categoriesCreate 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/deleteBatch delete global categories (max 200 ids)
GET/api/v1/admin/categories/exportExport global categories as Excel (.xlsx)
POST/api/v1/admin/categories/importImport categories from Excel (.xlsx)
MethodPathSummary
GET/api/v1/admin/dashboard/analyticsCharts 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/overviewKPI cards: admin B2B revenue & orders vs prior window, master-catalog product count, open platform vendor subscription totals & expiring-soon count (optional store/vendor scope)
MethodPathSummary
GET/api/v1/admin/lots/{id}AdminLotsController_detail
GET/api/v1/admin/lots/listAdminLotsController_list
MethodPathSummary
GET/api/v1/admin/productsList products with pagination and filters
POST/api/v1/admin/productsCreate 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}/duplicateDuplicate product
GET/api/v1/admin/products/attributesAdminProductsController_attributes
POST/api/v1/admin/products/batch/deleteBatch soft-delete products (max 200 ids)
PATCH/api/v1/admin/products/batch/statusBatch update product status (max 200 ids)
GET/api/v1/admin/products/categoriesAdminProductsController_categories
GET/api/v1/admin/products/exportExport products as CSV
GET/api/v1/admin/products/export-excelExport products as Excel (.xlsx)
POST/api/v1/admin/products/importImport product status from CSV
POST/api/v1/admin/products/import-excelImport products from Excel (first sheet)
GET/api/v1/admin/products/import-template-excelDownload empty Excel template for product import
GET/api/v1/admin/products/item-typesDistinct item type values (for filters)
GET/api/v1/admin/products/low-stockProducts with low stock (1–10 units), lowest first
GET/api/v1/admin/products/overviewProduct KPIs for dashboard cards
GET/api/v1/admin/products/storesAdminProductsController_stores
GET/api/v1/admin/products/suppliersAdminProductsController_suppliers
GET/api/v1/admin/products/tagsAdminProductsController_tags
GET/api/v1/admin/products/top-by-revenueTop products by line revenue from paid, completed orders
GET/api/v1/admin/products/unitsAdminProductsController_units
MethodPathSummary
GET/api/v1/admin/stocks/{id}AdminStocksController_detail
GET/api/v1/admin/stocks/listAdminStocksController_list
MethodPathSummary
GET/api/v1/admin/tagsList tags (paginated)
POST/api/v1/admin/tagsCreate 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/deleteBatch delete global tags (max 200 ids)
GET/api/v1/admin/tags/exportExport global tags as Excel (.xlsx)
POST/api/v1/admin/tags/importImport tags from Excel (.xlsx)
MethodPathSummary
GET/api/v1/admin/support-ticketsList tickets (filters + pagination)
POST/api/v1/admin/support-ticketsCreate 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}/commentsList staff discussion comments for a ticket
POST/api/v1/admin/support-tickets/{id}/commentsAdd a staff discussion comment
GET/api/v1/admin/support-tickets/overviewTicket counts by status
MethodPathSummary
GET/api/v1/admin/unitsList units (paginated)
POST/api/v1/admin/unitsCreate 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/deleteBatch delete global units (max 200 ids)
GET/api/v1/admin/units/exportExport global units as Excel (.xlsx)
POST/api/v1/admin/units/importImport units from Excel (.xlsx)
MethodPathSummary
GET/api/v1/admin/warehouses/{id}AdminWarehousesController_detail
GET/api/v1/admin/warehouses/listAdminWarehousesController_list
MethodPathSummary
GET/api/v1/admin/suppliersAdminSuppliersController_list
POST/api/v1/admin/suppliersAdminSuppliersController_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/overviewAdminSuppliersController_overview
MethodPathSummary
POST/api/v1/auth/admin/loginAdmin panel login (super admin or staff)
GET/api/v1/auth/admin/meCurrent admin (role + modules from DB)
PATCH/api/v1/auth/admin/meUpdate current admin profile
GET/api/v1/auth/admin/notificationsList 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}/readMark one notification as read
POST/api/v1/auth/admin/notifications/deleteDelete multiple notifications for this admin
POST/api/v1/auth/admin/notifications/read-allMark all notifications as read for this admin
PATCH/api/v1/auth/admin/passwordChange password for the authenticated admin
POST/api/v1/auth/admin/password-resetRequest admin password reset (6-digit OTP)
POST/api/v1/auth/admin/password-reset/completeSet new password using reset_token from verify step
POST/api/v1/auth/admin/password-reset/verifyVerify OTP and receive short-lived reset_token JWT
POST/api/v1/auth/admin/refreshRefresh admin panel tokens
GET/api/v1/auth/admin/settings/notificationsCurrent admin notification preferences
PATCH/api/v1/auth/admin/settings/notificationsUpdate admin notification preferences
GET/api/v1/auth/admin/ui-client-eventsList client UI / error telemetry events
POST/api/v1/auth/admin/ui-client-eventsReport 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}/resolveMark one client event as resolved
POST/api/v1/auth/admin/ui-client-events/batch/deleteDelete multiple client events
POST/api/v1/auth/admin/ui-client-events/batch/resolveMark multiple client events as resolved
MethodPathSummary
POST/api/v1/auth/loginLogin (Laravel-style envelope on success)
GET/api/v1/auth/meCurrent user (access token)
POST/api/v1/auth/refreshRefresh access token
MethodPathSummary
POST/api/v1/auth/vendor/loginVendor login (owner or employee)
GET/api/v1/auth/vendor/meCurrent vendor user (owner or employee) with modules
GET/api/v1/auth/vendor/notificationsList notifications (Laravel VendorController@get_notifications parity)
POST/api/v1/auth/vendor/notifications/deleteDelete in-app notifications (user_notifications)
POST/api/v1/auth/vendor/notifications/readMark in-app notifications as read (user_notifications)
PATCH/api/v1/auth/vendor/passwordChange password for the authenticated vendor user
POST/api/v1/auth/vendor/password-resetRequest vendor password reset (6-digit OTP)
POST/api/v1/auth/vendor/password-reset/completeSet new password using reset_token
POST/api/v1/auth/vendor/password-reset/verifyVerify OTP and receive short-lived reset_token JWT
GET/api/v1/auth/vendor/profileCurrent vendor owner or employee profile
PATCH/api/v1/auth/vendor/profileUpdate current user profile
POST/api/v1/auth/vendor/refreshRefresh vendor tokens
POST/api/v1/auth/vendor/registerRegister vendor owner + default store
GET/api/v1/auth/vendor/register/modulesList business modules for vendor registration (public)
GET/api/v1/auth/vendor/settings/notificationsNotification preference toggles for current store
PATCH/api/v1/auth/vendor/settings/notificationsUpdate notification preference toggles
POST/api/v1/auth/vendor/ui-client-eventsReport a client-side event (authenticated vendor)
MethodPathSummary
GET/api/v1/auth/vendor/context/categoriesList 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/couponsList 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/overviewCoupons overview stats (read-only bootstrap)
GET/api/v1/auth/vendor/context/customersList 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}/loyaltyGet customer loyalty summary (read-only bootstrap)
GET/api/v1/auth/vendor/context/customers/{id}/loyalty-transactionsGet customer loyalty transactions (read-only bootstrap)
GET/api/v1/auth/vendor/context/customers/{id}/timelineGet customer timeline (read-only bootstrap)
GET/api/v1/auth/vendor/context/customers/{id}/walletGet customer wallet summary (read-only bootstrap)
GET/api/v1/auth/vendor/context/customers/{id}/wallet-transactionsGet customer wallet transactions (read-only bootstrap)
GET/api/v1/auth/vendor/context/customers/crm/kpisCustomer CRM KPI summary (read-only bootstrap)
GET/api/v1/auth/vendor/context/customers/overviewCustomer KPIs (read-only bootstrap)
GET/api/v1/auth/vendor/context/customers/segments/overviewCustomer 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/productsList products with stock (read-only bootstrap)
GET/api/v1/auth/vendor/context/products/attributesProduct form: attributes for store
GET/api/v1/auth/vendor/context/products/categoriesProduct form: category tree for store
GET/api/v1/auth/vendor/context/products/low-stockLow-stock products (read-only bootstrap)
GET/api/v1/auth/vendor/context/products/overviewProduct KPIs (read-only bootstrap)
GET/api/v1/auth/vendor/context/products/storesProduct form: store lookup
GET/api/v1/auth/vendor/context/products/suppliersProduct form: suppliers for store
GET/api/v1/auth/vendor/context/products/tagsProduct form: tags for store
GET/api/v1/auth/vendor/context/products/top-by-revenueTop products by revenue (read-only bootstrap)
GET/api/v1/auth/vendor/context/products/unitsProduct form: units list
GET/api/v1/auth/vendor/context/shifts/templatesList shift templates for authenticated vendor user (fallback for users without settings module)
GET/api/v1/auth/vendor/context/shifts/work-shiftsList work shifts for authenticated vendor user (fallback for users without settings module)
POST/api/v1/auth/vendor/context/shifts/work-shiftsOpen 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}/closeClose work shift for authenticated vendor user (fallback for users without settings module)
GET/api/v1/auth/vendor/context/shifts/work-shifts/currentCurrent 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-closedLast closed work shift for handover defaults (fallback for users without settings module)
GET/api/v1/auth/vendor/context/storesList 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/overviewStore KPI counts for vendor (read-only bootstrap)
MethodPathSummary
GET/api/v1/healthLiveness probe
MethodPathSummary
GET/api/v1/admin/ordersList orders with pagination and filters
POST/api/v1/admin/ordersCreate 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-htmlThermal receipt HTML for print/preview (same layout as vendor POS receipt)
GET/api/v1/admin/orders/overviewOrder KPI counts (store/vendor filters)
MethodPathSummary
POST/api/v1/pos/apply-couponValidate and return coupon discount details for the POS cart
GET/api/v1/pos/categoriesList categories for the POS store (module-scoped or derived from items)
GET/api/v1/pos/customersSearch customers by name/phone (Laravel token OR query)
GET/api/v1/pos/itemsPaginated 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/groupedMenu items grouped by category; supports stock, category_id(s), variations, discount, unit_id(s) filters (see query DTO)
POST/api/v1/pos/ordersPlace a POS order (Laravel place_order parity)
POST/api/v1/pos/orders/{orderId}/cancel-paymentCancel/mark failed pending POS card payment
POST/api/v1/pos/orders/{orderId}/mark-payment-successManually mark pending POS order payment as success
POST/api/v1/pos/orders/{orderId}/payment-intentCreate/recreate terminal payment intent for pending card order
GET/api/v1/pos/orders/{orderId}/payment-statusGet POS order payment status (used by vendor-web while waiting terminal card payment)
POST/api/v1/pos/orders/{orderId}/terminal-post-captureAfter successful card capture: void sale on terminal or send tip adjustment (ECR hub relay)
GET/api/v1/pos/promotionsDiscounts and coupons for the store
MethodPathSummary
GET/api/v1/public/landing-settingsPublic marketing landing SEO and hero copy (no auth)
POST/api/v1/public/ui-client-eventsRecord a client-side UI event (no auth)
MethodPathSummary
GET/api/v1/vendor/attributesVendorAttributesController_list
POST/api/v1/vendor/attributesVendorAttributesController_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/deleteBatch delete vendor attributes (max 200 ids)
GET/api/v1/vendor/attributes/exportExport vendor attributes as Excel (.xlsx)
POST/api/v1/vendor/attributes/importImport vendor attributes from Excel (.xlsx)
MethodPathSummary
GET/api/v1/vendor/modulesList modules (vender and global)
POST/api/v1/vendor/modulesCreate 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
MethodPathSummary
GET/api/v1/vendor/rolesList roles (vendor and global)
POST/api/v1/vendor/rolesCreate 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}/detailGet role detail with subscribed customers and plan details (permissions)
MethodPathSummary
GET/api/v1/vendor/stores/{storeId}/configurationGet store profile slice + structured configuration + document numbering rules
PATCH/api/v1/vendor/stores/{storeId}/configurationPartially update store scalars, configuration row, and optionally replace document rule rows
MethodPathSummary
GET/api/v1/vendor/storesList stores belonging to the current vendor
POST/api/v1/vendor/storesCreate 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/overviewGet stores overview for the current vendor
MethodPathSummary
GET/api/v1/vendor/vendor-employeesList vendor employees (owner: any store on vendor; employee: must pass store_id matching their store)
POST/api/v1/vendor/vendor-employeesCreate 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/rolesList employee roles for vendor stores (store_id optional; scopes to one store)
MethodPathSummary
POST/api/v1/vendor/adjustmentsCreate stock adjustment (updates stock rows)
GET/api/v1/vendor/adjustments/{id}Adjustment detail
GET/api/v1/vendor/adjustments/listList stock adjustments for vendor stores
MethodPathSummary
GET/api/v1/vendor/bannersList banners for the logged-in vendor store
POST/api/v1/vendor/bannersCreate 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
MethodPathSummary
GET/api/v1/vendor/categoriesList categories for current vendor
POST/api/v1/vendor/categoriesCreate 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/deleteBatch delete vendor categories (max 200 ids)
GET/api/v1/vendor/categories/exportExport vendor categories as Excel (.xlsx)
POST/api/v1/vendor/categories/importImport vendor categories from Excel (.xlsx)
MethodPathSummary
GET/api/v1/vendor/customersList customers with pagination and filters
POST/api/v1/vendor/customersCreate 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}/loyaltyGet customer loyalty summary
GET/api/v1/vendor/customers/{id}/loyalty-transactionsGet customer loyalty transactions
POST/api/v1/vendor/customers/{id}/loyalty/adjustManual loyalty point adjustment for a customer
GET/api/v1/vendor/customers/{id}/timelineCustomer activity timeline (orders + loyalty)
GET/api/v1/vendor/customers/{id}/walletGet customer wallet summary
GET/api/v1/vendor/customers/{id}/wallet-transactionsGet customer wallet transactions
GET/api/v1/vendor/customers/crm/kpisCRM KPI summary (Phase 3)
GET/api/v1/vendor/customers/exportExport customers as Excel (.xlsx) matching current list filters (max 5000 rows)
POST/api/v1/vendor/customers/importImport 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-templateDownload empty Excel template for customer import
GET/api/v1/vendor/customers/overviewDashboard KPIs: totals and signup trend
GET/api/v1/vendor/customers/segments/overviewCustomer segmentation overview (MVP)
MethodPathSummary
GET/api/v1/vendor/delivery-partnersList delivery partners
POST/api/v1/vendor/delivery-partnersCreate 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}/duplicateDuplicate delivery partner (new code, name suffix)
GET/api/v1/vendor/delivery-partners/exportExport delivery partners as Excel (.xlsx)
POST/api/v1/vendor/delivery-partners/importImport delivery partners from Excel (first sheet); existing code rows are updated
GET/api/v1/vendor/delivery-partners/import-templateDownload empty Excel template for import
GET/api/v1/vendor/delivery-partners/overviewDelivery partner counts by type
MethodPathSummary
GET/api/v1/vendor/finance/expensesPaginated expenses list
POST/api/v1/vendor/finance/expensesCreate 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/batchBatch update expense status (approve, mark paid, cancel); writes audit_logs per row
GET/api/v1/vendor/finance/expenses/overviewExpenses KPI overview (vendor-scoped)
GET/api/v1/vendor/finance/invoicesPaginated invoices list
POST/api/v1/vendor/finance/invoicesCreate 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/batchBatch update invoice status for vendor-authorized stores
GET/api/v1/vendor/finance/invoices/overviewInvoices KPI overview (vendor-scoped)
GET/api/v1/vendor/finance/receivablesPaginated receivables list
POST/api/v1/vendor/finance/receivablesCreate 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/batchBatch update receivables (mark paid, cancel, or waive); each row writes audit_logs with actor
GET/api/v1/vendor/finance/receivables/overviewReceivables KPI overview (vendor-scoped)
GET/api/v1/vendor/finance/refundsPaginated 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/overviewRefunds KPI overview (vendor-scoped)
GET/api/v1/vendor/finance/sales-overviewSales 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/customersFinancial report by customer (line-level sales/returns on completed + paid orders, user_id set)
GET/api/v1/vendor/finance/report/dailyDaily financial report trend (vendor-scoped)
GET/api/v1/vendor/finance/report/inventory-ratioRevenue 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-categoriesFinancial report revenue by product category (completed + paid orders)
GET/api/v1/vendor/finance/report/productsFinancial report by product (line-level sales/returns on completed + paid orders)
GET/api/v1/vendor/finance/report/registersSales and tax by POS register / checkout lane (vendor-scoped; order rollups)
GET/api/v1/vendor/finance/report/staffFinancial report by staff (orders linked to vendor_employees for the store)
GET/api/v1/vendor/finance/report/summaryFinancial report summary (vendor-scoped)
GET/api/v1/vendor/finance/report/suppliersPurchase report by supplier from inventory lots (line qty + line value; excludes declined lots)
GET/api/v1/vendor/finance/report/taxesTaxes report: applicable sales, collected, refunded, and net tax by rate bucket on completed + paid order lines (vendor-scoped)
GET/api/v1/vendor/finance/transactionsPaginated account_transactions cash ledger (store-scoped)
POST/api/v1/vendor/finance/transactionsCreate 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/ordersPaginated 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/overviewOrder-transaction KPI overview (vendor-scoped)
GET/api/v1/vendor/finance/transactions/overviewTransaction KPI overview (vendor-scoped)
MethodPathSummary
GET/api/v1/vendor/galleryList uploaded gallery images
POST/api/v1/vendor/galleryUpload an image to the vendor gallery
DELETE/api/v1/vendor/gallery/{id}Delete a gallery image
POST/api/v1/vendor/gallery/batch/deleteDelete multiple gallery images by id
MethodPathSummary
POST/api/v1/vendor/internal-transfersCreate internal stock transfer between warehouses
GET/api/v1/vendor/internal-transfers/listList internal stock transfers
MethodPathSummary
GET/api/v1/vendor/inventory/summaryScoped inventory counts (warehouses, stock lines, lots, adjustments, low stock)
MethodPathSummary
POST/api/v1/vendor/lotsCreate purchase lot with line items
GET/api/v1/vendor/lots/{id}Lot detail
PATCH/api/v1/vendor/lots/{id}/statusUpdate lot status (DELIVERED/DECLINED)
GET/api/v1/vendor/lots/listList purchase lots for vendor stores

Vendor membership products (customer programs)

Section titled “Vendor membership products (customer programs)”
MethodPathSummary
GET/api/v1/vendor/membership-productsList membership products for customers
POST/api/v1/vendor/membership-productsCreate 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-invoicesList 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}/cancelCancel a platform membership purchase or active package
POST/api/v1/vendor/membership-products/platform-invoices/{id}/payPay a pending platform membership invoice
POST/api/v1/vendor/membership-products/platform-packages/{id}/purchaseCreate pending invoice for a platform membership package
GET/api/v1/vendor/membership-products/platform-packages/listList platform membership packages for vendor checkout

Vendor membership subscriptions (customer programs)

Section titled “Vendor membership subscriptions (customer programs)”
MethodPathSummary
GET/api/v1/vendor/membership-subscriptionsList membership subscriptions
POST/api/v1/vendor/membership-subscriptionsCreate 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-historyList membership benefit history by subscription id
GET/api/v1/vendor/membership-subscriptions/benefit-historyList precomputed membership benefit history rows
MethodPathSummary
GET/api/v1/vendor/ordersList 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-htmlRender receipt HTML for printing by order id
GET/api/v1/vendor/orders/{id}/trackTrack order — extended details (delivery window, refund summary)
POST/api/v1/vendor/orders/cancelCancel order (pre-confirmation only, vendor-initiated)
POST/api/v1/vendor/orders/cancel-returnCancel an in-progress return (Laravel parity)
POST/api/v1/vendor/orders/draft/deleteSoft-delete a POS server-held draft order (sets deleted_at; hidden from lists)
GET/api/v1/vendor/orders/meta/cancellation-reasonsPaginated cancellation reasons
GET/api/v1/vendor/orders/meta/parcel-instructionsParcel / delivery instructions for returns
GET/api/v1/vendor/orders/meta/refund-reasonsActive refund reasons (Laravel parity)
GET/api/v1/vendor/orders/overviewOrder KPI counts — optional store, date range, search, order_type, pos_staff_only (matches list filters)
PATCH/api/v1/vendor/orders/payment-methodUpdate payment method on order
POST/api/v1/vendor/orders/placePlace order (POS parity — requires store_id for vendor store)
GET/api/v1/vendor/orders/pos-report/summaryPOS shift report aggregates (paid POS orders, returns, payment mix, goods, expenses)
POST/api/v1/vendor/orders/pos-return-submitPOS: submit return + approve refund immediately (skips pending return-request vendor inbox notification)
POST/api/v1/vendor/orders/refund-requestRequest refund / return for line items
POST/api/v1/vendor/orders/retrieve-paymentConfirm / retrieve gateway payment intent
MethodPathSummary
GET/api/v1/vendor/pos-registersList checkout registers (lanes) for a store
POST/api/v1/vendor/pos-registersCreate 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.
MethodPathSummary
GET/api/v1/vendor/productsList products with pagination and filters
POST/api/v1/vendor/productsCreate 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}/duplicateDuplicate product
GET/api/v1/vendor/products/attributesVendorProductsController_attributes
POST/api/v1/vendor/products/batch/deleteBatch soft-delete products (max 200 ids)
PATCH/api/v1/vendor/products/batch/statusBatch update product status (max 200 ids)
GET/api/v1/vendor/products/categoriesVendorProductsController_categories
GET/api/v1/vendor/products/export-excelExport products as Excel (.xlsx)
POST/api/v1/vendor/products/import-excelImport products from Excel (first sheet)
GET/api/v1/vendor/products/import-template-excelDownload empty Excel template for product import
GET/api/v1/vendor/products/low-stockProducts with low stock (1–10 units), lowest first
GET/api/v1/vendor/products/overviewProduct KPIs for dashboard cards
POST/api/v1/vendor/products/quick-add-from-masterQuick add product from system master data
GET/api/v1/vendor/products/quick-add-master-searchAutocomplete master products for quick add
GET/api/v1/vendor/products/storesVendorProductsController_stores
GET/api/v1/vendor/products/suppliersVendorProductsController_suppliers
GET/api/v1/vendor/products/tagsVendorProductsController_tags
GET/api/v1/vendor/products/top-by-revenueTop products by line revenue from paid, completed orders
GET/api/v1/vendor/products/unitsVendorProductsController_units
MethodPathSummary
GET/api/v1/vendor/shifts/templatesList shift templates for vendor stores
POST/api/v1/vendor/shifts/templatesCreate 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}/assigneesReplace suggested members (vendor_shift_template_assignees; public char(13) template/employee ids)
GET/api/v1/vendor/shifts/work-shiftsList work shifts
POST/api/v1/vendor/shifts/work-shiftsOpen 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}/assigneesSet the single work shift assignee (owner or current assignee; exactly one employee ID)
PATCH/api/v1/vendor/shifts/work-shifts/{id}/closeClose a work shift (auto clock-out when participant has no other open shift)
GET/api/v1/vendor/shifts/work-shifts/currentCurrent open shift for a store
GET/api/v1/vendor/shifts/work-shifts/last-closedLast closed shift (handover defaults)
MethodPathSummary
GET/api/v1/vendor/stocks/{id}Stock detail
POST/api/v1/vendor/stocks/importApply absolute target quantities as stock adjustments (grouped per warehouse)
POST/api/v1/vendor/stocks/import-excelImport stock target quantities from Excel (first sheet)
GET/api/v1/vendor/stocks/listList stock rows for vendor stores
MethodPathSummary
GET/api/v1/vendor/suppliersList suppliers for current vendor
POST/api/v1/vendor/suppliersCreate 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/exportExport suppliers as Excel (.xlsx)
POST/api/v1/vendor/suppliers/importImport suppliers from Excel (.xlsx)
GET/api/v1/vendor/suppliers/import-templateDownload empty Excel template for supplier import
GET/api/v1/vendor/suppliers/overviewGet suppliers overview statistics
MethodPathSummary
GET/api/v1/vendor/tagsVendorTagsController_list
POST/api/v1/vendor/tagsVendorTagsController_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/deleteBatch delete vendor tags (max 200 ids)
GET/api/v1/vendor/tags/exportExport vendor tags as Excel (.xlsx)
POST/api/v1/vendor/tags/importImport vendor tags from Excel (.xlsx)
MethodPathSummary
GET/api/v1/vendor/support-ticketsList tickets for the authenticated vendor
POST/api/v1/vendor/support-ticketsCreate a ticket for admin review
GET/api/v1/vendor/support-tickets/{id}Get one ticket (vendor-scoped)
GET/api/v1/vendor/support-tickets/{id}/commentsList discussion messages (vendor + admin)
POST/api/v1/vendor/support-tickets/{id}/commentsPost a reply on a ticket
MethodPathSummary
GET/api/v1/vendor/unitsList units with pagination and search
POST/api/v1/vendor/unitsCreate 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/deleteBatch delete vendor units (max 200 ids)
GET/api/v1/vendor/units/exportExport vendor units as Excel (.xlsx)
POST/api/v1/vendor/units/importImport vendor units from Excel (.xlsx)
MethodPathSummary
POST/api/v1/vendor/warehousesCreate 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/listList warehouses for vendor stores
MethodPathSummary
GET/api/v1/vendor/couponsList vendor coupons with pagination and filtering
POST/api/v1/vendor/couponsCreate 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-orderAttach coupon discount to an order (same store / vendor)
POST/api/v1/vendor/coupons/{id}/duplicateDuplicate a coupon
GET/api/v1/vendor/coupons/overviewGet coupons overview stats
MethodPathSummary
GET/api/v1/vendor/dashboard/analyticsStore-scoped analytics (revenue, top products/customers, categories). Query: days, from, to, store_id, timezone (IANA, store calendar bounds)
GET/api/v1/vendor/dashboard/chartsGet dashboard chart data (timezone for from/to)
GET/api/v1/vendor/dashboard/overviewGet dashboard statistics overview (timezone for from/to)
GET/api/v1/vendor/dashboard/payment-breakdownPaid 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)”
MethodPathSummary
POST/api/v1/vendor/point-of-sale/apply-couponApply coupon (requires store_id on body)
GET/api/v1/vendor/point-of-sale/barcode/validateValidate barcode payload for POS shelf labels (requires store_id; auth-scoped only)
GET/api/v1/vendor/point-of-sale/categoriesList POS categories (requires store_id)
GET/api/v1/vendor/point-of-sale/customersSearch POS customers (requires store_id)
GET/api/v1/vendor/point-of-sale/itemsPaginated menu items (requires store_id)
GET/api/v1/vendor/point-of-sale/items/groupedGrouped menu items (requires store_id)
POST/api/v1/vendor/point-of-sale/ordersPlace POS order (requires store_id on body)
POST/api/v1/vendor/point-of-sale/orders/{orderId}/cancel-paymentCancel payment (requires store_id)
POST/api/v1/vendor/point-of-sale/orders/{orderId}/mark-payment-successMark payment success (requires store_id)
POST/api/v1/vendor/point-of-sale/orders/{orderId}/payment-intentCreate payment intent (requires store_id)
GET/api/v1/vendor/point-of-sale/orders/{orderId}/payment-statusPOS order payment status (requires store_id query)
POST/api/v1/vendor/point-of-sale/orders/{orderId}/terminal-post-captureTerminal post-capture (requires store_id)
GET/api/v1/vendor/point-of-sale/promotionsPOS promotions for store (requires store_id)
MethodPathSummary
GET/api/v1/vendor/point-of-sale/bootstrapPOS v2 workspace bootstrap (JWT context). Does not replace legacy /pos/* checkout APIs.
MethodPathSummary
GET/api/v1/vendor/settings/billingBilling summary and invoice list (stored prefs + defaults)
PATCH/api/v1/vendor/settings/billingUpdate billing display preferences
GET/api/v1/vendor/settings/contextCurrent JWT store/vendor ids (for role pickers, etc.)
GET/api/v1/vendor/settings/devicesStore devices and terminal API key config
PATCH/api/v1/vendor/settings/devicesReplace 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/discoverDiscover currently connected devices for current store
POST/api/v1/vendor/settings/devices/payment-terminal/close-batchClose settlement batch on a saved payment terminal
POST/api/v1/vendor/settings/devices/pos-bridge/activateBuild POS bridge WebSocket URL from a saved payment terminal
POST/api/v1/vendor/settings/devices/receipt-printer/printSend print command to active receipt printer bridge device (vendor-desktop).
POST/api/v1/vendor/settings/devices/terminal-api-key/regenerateRegenerate store terminal webhook API key
POST/api/v1/vendor/settings/devices/test-connectTest connection to a candidate device before saving
GET/api/v1/vendor/settings/generalStore name, support email, currency, timezone
PATCH/api/v1/vendor/settings/generalUpdate general store settings
GET/api/v1/vendor/settings/invoice-templateGet invoice template for current store
PATCH/api/v1/vendor/settings/invoice-templateUpdate invoice template for current store
GET/api/v1/vendor/settings/receipt-templateGet receipt template for current store
PATCH/api/v1/vendor/settings/receipt-templateUpdate receipt template for current store
GET/api/v1/vendor/settings/smtpGet SMTP settings for current store
PATCH/api/v1/vendor/settings/smtpUpdate SMTP settings for current store
POST/api/v1/vendor/settings/smtp/testSend SMTP test email for current store settings
GET/api/v1/vendor/settings/teamVendor owner + employees for current store
POST/api/v1/vendor/settings/team/invitesCreate employee account (returns temp password if server-generated)