API Endpoints

Updated 11 April 2026

Complete API documentation with request/response examples for all 40+ endpoints

Authentication APIs

System

GET

/health

Public health-check endpoint for the plugin

Headers: Authorization: Bearer YOUR_JWT_TOKEN

                        // Response
{
  "status": "ok"
}
                    
POST

/auth/login-register

Send OTP for login/register (when OTP authentication is enabled)

                        {
  "email": "[email protected]",
  "type": "email"
}
// Response
{
  "message": "OTP sent to email.",
  "userId": 1,
  "isNewUser": false,
  "emailSent": true
}
                    
POST

/auth/verify-otp

Verify OTP and get JWT token

                        {
  "email": "[email protected]",
  "otp": "123456",
  "type": "email"
}
// Response
{
  "message": "Login successfully!",
  "jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "user": {
    "id": 1,
    "username": "user1234",
    "email": "[email protected]",
    "first_name": "John",
    "last_name": "Doe"
  }
}

                    
GET

/auth/profile

Get authenticated user profile

Headers: Authorization: Bearer YOUR_JWT_TOKEN

                        // Response
{
  "user": {
    "id": 1,
    "username": "user1234",
    "email": "[email protected]",
    "phone_no": "+1234567890",
    "first_name": "John",
    "last_name": "Doe",
    "display_name": "John Doe",
    "company_name": "WebbyCrown Solutions"
  }
}
                    
PUT

/auth/profile

Update user profile

Headers: Authorization: Bearer YOUR_JWT_TOKEN

                        {
  "first_name": "John",
  "last_name": "Doe",
  "email": "[email protected]",
  "phone_no": "+1234567890",
  "display_name": "John Doe",
  "company_name": "WebbyCrown Solutions",
  "currentPassword": "oldpassword",
  "newPassword": "newpassword"
}
                    

User Management APIs

Address Management

GET

/addresses

Get all user addresses

Headers: Authorization: Bearer YOUR_JWT_TOKEN

Query: ?type=0 (0=billing, 1=shipping)

                        // Response
{
  "data": [
    {
      "id": 1,
      "type": 0,
      "first_name": "John",
      "last_name": "Doe",
      "country": "United States",
      "city": "San Francisco",
      "street_address": "123 Main Street",
      "postcode": "94102",
      "phone": "+1234567890",
      "email_address": "[email protected]"
    }
  ]
}
                    
GET

/addresses/:id

Get single address

Headers: Authorization: Bearer YOUR_JWT_TOKEN

POST

/addresses

Create new address

Headers: Authorization: Bearer YOUR_JWT_TOKEN

                        {
  "type": 0,
  "first_name": "John",
  "last_name": "Doe",
  "country": "United States",
  "city": "San Francisco",
  "street_address": "123 Main Street",
  "postcode": "94102",
  "phone": "+1234567890",
  "email_address": "[email protected]"
}
                    
PUT

/addresses/:id

Update address

Headers: Authorization: Bearer YOUR_JWT_TOKEN

DELETE

/addresses/:id

Delete address

Headers: Authorization: Bearer YOUR_JWT_TOKEN

Product Management APIs

GET

/products

Get products with filtering and pagination

Query Parameters:

                        // Example: GET /products?category=1&sort=price:asc&page=1&limit=20
                    
GET

/products/:id

Get single product details

                        // Response includes: variants, categories, tags, images, reviews
                    
GET

/products/:id/related

Get related products

GET

/products/categories

Get all product categories

GET

/products/tags

Get all product tags

GET

/products/attributes

Get product attributes for filtering

Tag Management

GET

/tags

Get all tags

GET

/tags/:id

Get single tag

POST

/tags

Create a tag

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

                        {
  "name": "New Tag"
}
                    
PUT

/tags/:id

Update a tag

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

                        {
  "name": "Updated Tag"
}
                    
DELETE

/tags/:id

Delete a tag

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

Product Categories (Collection)

GET

/product-categories

Get all product categories

GET

/product-categories/:id

Get single product category

POST

/product-categories

Create product category (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

PUT

/product-categories/:id

Update product category (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

DELETE

/product-categories/:id

Delete product category (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

Product Tags (Collection)

GET

/product-tags

Get all product tags

GET

/product-tags/:id

Get single product tag

POST

/product-tags

Create product tag (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

PUT

/product-tags/:id

Update product tag (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

DELETE

/product-tags/:id

Delete product tag (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

Product Variations (Collection)

GET

/product-variations

Get all product variations

GET

/product-variations/:id

Get single product variation

POST

/product-variations

Create product variation (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

PUT

/product-variations/:id

Update product variation (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

DELETE

/product-variations/:id

Delete product variation (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

Admin Product Management

POST

/products

Create new product (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

PUT

/products/:id

Update product (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

DELETE

/products/:id

Delete product (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

Shopping Cart APIs

GET

/cart

Get cart items

Headers: Authorization: Bearer YOUR_JWT_TOKEN

                        // Response
{
  "items": [
    {
      "id": 1,
      "product_id": 1,
      "variation_id": 1,
      "quantity": 2,
      "product": {
        "name": "Sample Product",
        "price": 29.99,
        "images": [...]
      }
    }
  ],
  "totals": {
    "subtotal": 59.98,
    "tax": 5.40,
    "shipping": 5.00,
    "total": 70.38
  }
}
                    
POST

/cart

Add item to cart

Headers: Authorization: Bearer YOUR_JWT_TOKEN

                        {
  "product_id": 1,
  "variation_id": 1,
  "quantity": 2
}
                    
PUT

/cart/:id

Update cart item quantity

Headers: Authorization: Bearer YOUR_JWT_TOKEN

                        {
  "quantity": 3
}
                    
DELETE

/cart/:id

Remove item from cart

Headers: Authorization: Bearer YOUR_JWT_TOKEN

DELETE

/cart

Clear entire cart

Headers: Authorization: Bearer YOUR_JWT_TOKEN

GET

/cart/totals

Get cart totals and calculations

Headers: Authorization: Bearer YOUR_JWT_TOKEN

Coupon APIs

POST

/cart/apply-coupon

Apply coupon to cart

Headers: Authorization: Bearer YOUR_JWT_TOKEN

                        {
  "code": "SAVE20"
}
                    
DELETE

/cart/coupon

Remove coupon from cart

Headers: Authorization: Bearer YOUR_JWT_TOKEN

Order Management APIs

POST

/checkout

Create new order from cart

Headers: Authorization: Bearer YOUR_JWT_TOKEN

                        {
  "billing_address_id": 1,
  "shipping_address_id": 2,
  "payment_method": "stripe",
  "shipping_method_id": 1,
  "notes": "Please handle with care"
}

// Response
{
  "order": {
    "id": 1,
    "order_number": "ORD-2024-001",
    "status": "pending",
    "total": 70.38,
    "items": [...],
    "createdAt": "2024-01-01T10:00:00.000Z"
  },
  "payment_intent": {
    "client_secret": "pi_xxx_secret_xxx"
  }
}
                    
GET

/orders

Get user orders

Headers: Authorization: Bearer YOUR_JWT_TOKEN

Query Parameters:

GET

/orders/:id

Get single order details

Headers: Authorization: Bearer YOUR_JWT_TOKEN

PUT

/orders/:id/cancel

Cancel an order (if allowed by order status)

Headers: Authorization: Bearer YOUR_JWT_TOKEN

GET

/orders/:id/tracking

Get order tracking information

Headers: Authorization: Bearer YOUR_JWT_TOKEN

                        // Response
{
  "tracking": {
    "carrier": "UPS",
    "tracking_number": "1Z999AA1234567890",
    "status": "in_transit",
    "estimated_delivery": "2024-01-05T00:00:00.000Z",
    "updates": [
      {
        "status": "picked_up",
        "location": "San Francisco, CA",
        "timestamp": "2024-01-01T14:00:00.000Z"
      }
    ]
  }
}
                    

Admin Order Management

PUT

/orders/:id/status

Update order status (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

                        {
  "status": "shipped",
  "tracking_number": "1Z999AA1234567890",
  "carrier": "UPS"
}
                    

Wishlist APIs

Wishlist Management

GET

/wishlist

Get user wishlist

Headers: Authorization: Bearer YOUR_JWT_TOKEN

POST

/wishlist

Add product to wishlist

Headers: Authorization: Bearer YOUR_JWT_TOKEN

                        {
  "product_id": 1
}
                    
DELETE

/wishlist/:productId

Remove from wishlist

Headers: Authorization: Bearer YOUR_JWT_TOKEN

DELETE

/wishlist

Clear entire wishlist

Headers: Authorization: Bearer YOUR_JWT_TOKEN

PUT

/wishlist

Update wishlist (bulk operations)

Headers: Authorization: Bearer YOUR_JWT_TOKEN

GET

/wishlist/status

Check if products are in wishlist

Headers: Authorization: Bearer YOUR_JWT_TOKEN

Query: ?product_ids=1,2,3

POST

/wishlist/items/:id/move-to-cart

Move wishlist item to cart

Headers: Authorization: Bearer YOUR_JWT_TOKEN

Content Manager (Admin) – Collections

GET

/wishlists

List wishlists (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

GET

/wishlists/:id

Get wishlist (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

POST

/wishlists

Create wishlist (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

PUT

/wishlists/:id

Update wishlist (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

DELETE

/wishlists/:id

Delete wishlist (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

Compare APIs

Product Comparison

GET

/compare

Get comparison list

Headers: Authorization: Bearer YOUR_JWT_TOKEN

POST

/compare

Add product to comparison

Headers: Authorization: Bearer YOUR_JWT_TOKEN

                        {
  "product_id": 1
}
                    
PUT

/compare

Update comparison list (bulk operations)

Headers: Authorization: Bearer YOUR_JWT_TOKEN

DELETE

/compare/:productId

Remove product from comparison

Headers: Authorization: Bearer YOUR_JWT_TOKEN

DELETE

/compare

Clear entire comparison list

Headers: Authorization: Bearer YOUR_JWT_TOKEN

GET

/compare/data

Get comparison data with full product details

Headers: Authorization: Bearer YOUR_JWT_TOKEN

GET

/compare/status

Check compare status for products

Headers: Authorization: Bearer YOUR_JWT_TOKEN

Query: ?product_ids=1,2,3

Content Manager (Admin) – Collections

GET

/compares

List compares (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

GET

/compares/:id

Get compare (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

POST

/compares

Create compare (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

PUT

/compares/:id

Update compare (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

DELETE

/compares/:id

Delete compare (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

Payment Processing APIs

Payment Integration: Currently supports Stripe payment processing. Webhook endpoints handle payment confirmations automatically.

POST

/payments/create-intent

Create Stripe payment intent

Headers: Authorization: Bearer YOUR_JWT_TOKEN

                        {
  "amount": 10000,  // Amount in cents
  "currency": "usd",
  "order_id": 1,
  "description": "Order payment"
}

// Response
{
  "client_secret": "pi_xxx_secret_xxx",
  "payment_intent_id": "pi_xxx",
  "amount": 10000,
  "currency": "usd"
}
                    
POST

/payments/confirm

Confirm payment after client-side processing

Headers: Authorization: Bearer YOUR_JWT_TOKEN

                        {
  "payment_intent_id": "pi_xxx",
  "order_id": 1
}
                    
POST

/payments/:id/refund

Process refund for a payment

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

                        {
  "amount": 5000,  // Amount in cents (optional, full refund if not specified)
  "reason": "customer_request"
}
                    
GET

/payments/transactions

Get payment transactions (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

Query Parameters:

Webhook Handling

POST

/payments/webhook

Stripe webhook endpoint (no authentication required)

Headers: Stripe-Signature

Handles payment confirmation, failures, and refunds automatically

Security Note: Configure webhook endpoint secret in plugin settings. Test webhooks in Stripe dashboard before going live.

Shipping Management APIs

POST

/shipping/calculate

Calculate shipping rates for cart

Headers: Authorization: Bearer YOUR_JWT_TOKEN

                        {
  "country": "United States",
  "region": "California",
  "city": "San Francisco",
  "postcode": "94102",
  "cart_items": [
    {
      "product_id": 1,
      "variation_id": 1,
      "quantity": 2,
      "weight": 1.5
    }
  ]
}

// Response
{
  "methods": [
    {
      "id": 1,
      "name": "Standard Shipping",
      "cost": 5.99,
      "estimated_days": "3-5 business days"
    },
    {
      "id": 2,
      "name": "Express Shipping",
      "cost": 12.99,
      "estimated_days": "1-2 business days"
    }
  ]
}
                    
GET

/shipping/zones

Get all shipping zones

Headers: Authorization: Bearer YOUR_JWT_TOKEN

Admin Shipping Management

POST

/shipping/zones

Create shipping zone (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

                        {
  "name": "United States",
  "countries": ["US"],
  "regions": ["California", "New York"]
}
                    
PUT

/shipping/zones/:id

Update shipping zone (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

DELETE

/shipping/zones/:id

Delete shipping zone (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

GET

/shipping/methods

Get all shipping methods (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

POST

/shipping/methods

Create shipping method (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

                        {
  "name": "Express Shipping",
  "type": "flat_rate",
  "cost": 12.99,
  "zone": 1,
  "estimated_days": "1-2 business days"
}
                    
PUT

/shipping/methods/:id

Update shipping method (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

DELETE

/shipping/methods/:id

Delete shipping method (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

GET

/shipping/methods/:methodId/rates

Get shipping rates for a method (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

POST

/shipping/rates

Create shipping rate (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

                        {
  "method": 1,
  "min_weight": 0,
  "max_weight": 5,
  "cost": 5.99
}
                    
PUT

/shipping/rates/:id

Update shipping rate (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

DELETE

/shipping/rates/:id

Delete shipping rate (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

Admin APIs

Note: These endpoints are intended for Strapi Admin usage and require an Admin JWT token.

GET

/settings

Get plugin settings (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

PUT

/settings

Update plugin settings (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

POST

/generate-demo

Generate demo payload (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN

POST

/seed-demo

Seed demo data (Admin only)

Headers: Authorization: Bearer ADMIN_JWT_TOKEN