# Zoho Commerce Integration via LowCodeAPI

## Overview

E-commerce platform

## Base Endpoint

```
https://api.lowcodeapi.com/zohocommerce/
```

## Authentication

LowCodeAPI handles authentication automatically. You only need to:

1. **Sign up** at [Zoho Commerce](https://www.zoho.com/commerce)
2. **Get your credentials** from [credential page](https://accounts.zoho.com/developerconsole)
3. **Connect your account** in LowCodeAPI dashboard
4. **Use your `api_token`** in all requests

**Auth Type**: OAUTH2.0

## API Categories

- **Account Dashboard** - 3 endpoints
- **Address Book** - 5 endpoints
- **Cart** - 3 endpoints
- **Categories** - 9 endpoints
- **Checkout** - 5 endpoints
- **Coupons** - 5 endpoints
- **Import Products** - 3 endpoints
- **Inventory** - 1 endpoints
- **Listing** - 4 endpoints
- **My Orders** - 3 endpoints
- **Payments** - 3 endpoints
- **Portal** - 3 endpoints
- **Products** - 9 endpoints
- **Sales Orders** - 5 endpoints
- **Sales Return** - 3 endpoints
- **Shipment Orders** - 3 endpoints
- **Taxes** - 6 endpoints
- **Variants** - 5 endpoints

## Common Endpoints

### Category: Account Dashboard

#### Get User Profile

**Method**: `GET` | **LowCodeAPI Path**: `/portaluser/userprofile`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/portaluser/userprofile?api_token={api_token}
```

**Description**: Get User Profile

---

#### Edit User Profile

**Method**: `POST` | **LowCodeAPI Path**: `/portaluser/userprofile`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/portaluser/userprofile?api_token={api_token}
```

**Description**: Edit User Profile

**Request Body**:
```json
{
  "token": "<string>",
  "contact_person_list": "<object>",
  "user_info": "<array>",
  "email": "<string>"
}
```

---

#### Change Password

**Method**: `POST` | **LowCodeAPI Path**: `/portaluser/changepassword`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/portaluser/changepassword?api_token={api_token}
```

**Description**: Change Password

**Request Body**:
```json
{
  "token": "<string>",
  "current_password": "<string>",
  "new_password": "<string>",
  "confirm_password": "<string>"
}
```

---

### Category: Address Book

#### Get Address Book

**Method**: `GET` | **LowCodeAPI Path**: `/portaluser/address`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/portaluser/address?api_token={api_token}
```

**Description**: Get Address Book

---

#### Create Address Book

**Method**: `POST` | **LowCodeAPI Path**: `/portaluser/address`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/portaluser/address?api_token={api_token}
```

**Description**: Create Address Book

**Request Body**:
```json
{
  "address_details": "<object>",
  "zuid": "<string>"
}
```

---

#### Mark Address as Default

**Method**: `POST` | **LowCodeAPI Path**: `/portaluser/address/address_id/default`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/portaluser/address/address_id/default?api_token={api_token}
```

**Description**: Mark Address as Default

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`address_id` | string | Yes | Address ID in the mapped shipping address detail of the user |

---

#### Delete Address Book

**Method**: `DELETE` | **LowCodeAPI Path**: `/portaluser/address/address_id`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/portaluser/address/address_id?api_token={api_token}
```

**Description**: Delete Address Book

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`address_id` | string | Yes | Address ID in the mapped shipping address detail of the user |

---

#### Update Address Book

**Method**: `POST` | **LowCodeAPI Path**: `/portaluser/address/address_id`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/portaluser/address/address_id?api_token={api_token}
```

**Description**: Update Address Book

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`address_id` | string | Yes | Address ID in the mapped shipping address detail of the user |

**Request Body**:
```json
{
  "address_details": "<object>",
  "zuid": "<string>"
}
```

---

### Category: Cart

#### Add to Cart

**Method**: `POST` | **LowCodeAPI Path**: `/storefront/api/v1/cart`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/storefront/api/v1/cart?api_token={api_token}
```

**Description**: Add to Cart

**Request Body**:
```json
{
  "product_variant_id": "<string>",
  "quantity": "<number>",
  "cart_id": "<string>"
}
```

---

#### Delete from Cart

**Method**: `DELETE` | **LowCodeAPI Path**: `/storefront/api/v1/cart`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/storefront/api/v1/cart?product_variant_id={product_variant_id}&cart_id={cart_id}&api_token={api_token}
```

**Description**: Delete from Cart

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`product_variant_id` | string | Yes | The item to be deleted from cart |
|`cart_id` | string | No | The identifier of the cart |

---

#### Update a Cart

**Method**: `PUT` | **LowCodeAPI Path**: `/storefront/api/v1/cart`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/storefront/api/v1/cart?api_token={api_token}
```

**Description**: Update a Cart

**Request Body**:
```json
{
  "product_variant_id": "<string>",
  "quantity": "<number>",
  "cart_id": "<string>"
}
```

---

### Category: Categories

#### List All Categories

**Method**: `GET` | **LowCodeAPI Path**: `/store/api/v1/categories`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/categories?page={page}&per_page={per_page}&api_token={api_token}
```

**Description**: List All Categories

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`page` | number | No | Page number |
|`per_page` | number | No | Number of percentage taxable |

---

#### Create a Category

**Method**: `POST` | **LowCodeAPI Path**: `/store/api/v1/categories`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/categories?api_token={api_token}
```

**Description**: Create a Category

**Request Body**:
```json
{
  "name": "<string>",
  "url": "<string>"
}
```

---

#### Retrieve a Category

**Method**: `GET` | **LowCodeAPI Path**: `/store/api/v1/categories/editpage`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/categories/editpage?category_id={category_id}&api_token={api_token}
```

**Description**: Retrieve a Category

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`category_id` | number | Yes | Category id for which category detail is required |

---

#### Update a Category

**Method**: `PUT` | **LowCodeAPI Path**: `/store/api/v1/categories`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/categories?api_token={api_token}
```

**Description**: Update a Category

**Request Body**:
```json
{
  "key": "value"
}
```

---

#### Delete a Category

**Method**: `DELETE` | **LowCodeAPI Path**: `/store/api/v1/categories`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/categories?delete_sub_categories={delete_sub_categories}&api_token={api_token}
```

**Description**: Delete a Category

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`delete_sub_categories` | boolean | No | The value should be true when you're deleting the parent category. If the category has no child the param can be neglected |

---

#### Re-order Categories

**Method**: `POST` | **LowCodeAPI Path**: `/store/api/v1/categories/siblingorder`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/categories/siblingorder?api_token={api_token}
```

**Description**: Re-order Categories

**Request Body**:
```json
{
  "categories": "<object>"
}
```

---

#### Add Category Image

**Method**: `POST` | **LowCodeAPI Path**: `/store/api/v1/categories/images`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/categories/images?api_token={api_token}
```

**Description**: Add Category Image

**Request Body**:
```json
{
  "image": "<file>"
}
```

---

#### Edit Category Image

**Method**: `PUT` | **LowCodeAPI Path**: `/store/api/v1/categories/images`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/categories/images?name={name}&alter_text={alter_text}&api_token={api_token}
```

**Description**: Edit Category Image

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`name` | string | No | Name of the category's image (shouldn't contain any html characters like <>) |
|`alter_text` | string | No |  Alternate text for the category's image (shouldn't contain any html characters like <>) |

---

#### Delete Category Image

**Method**: `DELETE` | **LowCodeAPI Path**: `/store/api/v1/categories/documents`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/categories/documents?api_token={api_token}
```

**Description**: Delete Category Image

---

### Category: Checkout

#### Get Checkout

**Method**: `GET` | **LowCodeAPI Path**: `/storefront/api/v1/checkout`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/storefront/api/v1/checkout?checkout_id={checkout_id}&api_token={api_token}
```

**Description**: Get Checkout

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`checkout_id` | string | Yes | Unique ID generated by the server for the checkout. This is used as an identifier |

---

#### Add Address

**Method**: `POST` | **LowCodeAPI Path**: `/storefront/api/v1/checkout/address`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/storefront/api/v1/checkout/address?checkout_id={checkout_id}&api_token={api_token}
```

**Description**: Add Address

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`checkout_id` | string | Yes | Unique ID generated by the server for the checkout. This is used as an identifier |

**Request Body**:
```json
{
  "shipping_address": "<object>",
  "billing_address": "<string>"
}
```

---

#### Add Shipping Method

**Method**: `POST` | **LowCodeAPI Path**: `/storefront/api/v1/checkout/shipping-methods`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/storefront/api/v1/checkout/shipping-methods?checkout_id={checkout_id}&api_token={api_token}
```

**Description**: Add Shipping Method

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`checkout_id` | string | Yes | Unique ID generated by the server for the checkout. This is used as an identifier |

**Request Body**:
```json
{
  "shipping": "<string>"
}
```

---

#### Place an Order

**Method**: `POST` | **LowCodeAPI Path**: `/storefront/api/v1/checkout/process-offline-payment`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/storefront/api/v1/checkout/process-offline-payment?api_token={api_token}
```

**Description**: Place an Order

**Request Body**:
```json
{
  "checkout_id": "<string>",
  "payment_mode": "<string>"
}
```

---

#### Add or Remove Coupons

**Method**: `POST` | **LowCodeAPI Path**: `/storefront/api/v1/checkout/applycoupon`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/storefront/api/v1/checkout/applycoupon?api_token={api_token}
```

**Description**: Add or Remove Coupons

**Request Body**:
```json
{
  "checkout_id": "<string>",
  "coupon_code": "<string>"
}
```

---

### Category: Coupons

#### List Coupons

**Method**: `GET` | **LowCodeAPI Path**: `/store/api/v1/coupons`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/coupons?api_token={api_token}
```

**Description**: List Coupons

---

#### Get Coupon

**Method**: `GET` | **LowCodeAPI Path**: `/store/api/v1/coupons/coupon_id`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/coupons/coupon_id?api_token={api_token}
```

**Description**: Get Coupon

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`coupon_id` | string | Yes | Coupon Id |

---

#### Create Coupon

**Method**: `POST` | **LowCodeAPI Path**: `/store/api/v1/coupons`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/coupons?api_token={api_token}
```

**Description**: Create Coupon

**Request Body**:
```json
{
  "coupon_code": "<string>",
  "coupon_name": "<string>",
  "activation_time": "<boolean>",
  "minimum_order_value": "<string>",
  "discount_type": "<string>",
  "discount_value": "<string>",
  "max_redemption_count": "<number>",
  "max_redemption_count_per_user": "<number>"
}
```

---

#### Update Coupon

**Method**: `PUT` | **LowCodeAPI Path**: `/store/api/v1/coupons/coupon_id`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/coupons/coupon_id?api_token={api_token}
```

**Description**: Update Coupon

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`coupon_id` | string | Yes | Coupon Id |

**Request Body**:
```json
{
  "coupon_code": "<string>",
  "coupon_name": "<string>",
  "activation_time": "<string>",
  "expiry_time": "<string>",
  "minimum_order_value": "<string>",
  "discount_type": "<string>",
  "discount_value": "<string>",
  "max_redemption_count": "<number>",
  "max_redemption_count_per_user": "<number>"
}
```

---

#### Delete Coupon

**Method**: `DELETE` | **LowCodeAPI Path**: `/store/api/v1/coupons/coupon_id`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/coupons/coupon_id?api_token={api_token}
```

**Description**: Delete Coupon

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`coupon_id` | string | Yes | Coupon Id |

---

### Category: Import Products

#### Upload Import File

**Method**: `POST` | **LowCodeAPI Path**: `/store/api/v1/import/uploadfile`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/import/uploadfile?api_token={api_token}
```

**Description**: Upload Import File

**Request Body**:
```json
{
  "importfile": "<file>",
  "entity": "<string>",
  "duplicate_handling": "<string>",
  "charencoding": "<string>",
  "delimiter": "<string>"
}
```

---

#### Preview Imported File

**Method**: `PUT` | **LowCodeAPI Path**: `/store/api/v1/import/preview`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/import/preview?api_token={api_token}
```

**Description**: Preview Imported File

**Request Body**:
```json
{
  "entity_columns": "<array>",
  "csv_column": "<string>",
  "entity_column": "<string>"
}
```

---

#### Import Products

**Method**: `PUT` | **LowCodeAPI Path**: `/store/api/v1/import`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/import?api_token={api_token}
```

**Description**: Import Products

---

### Category: Inventory

#### Manage Stock

**Method**: `POST` | **LowCodeAPI Path**: `/store/api/v1/inventoryadjustments`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/inventoryadjustments?api_token={api_token}
```

**Description**: Manage Stock

**Request Body**:
```json
{
  "reason": "<string>",
  "adjustment_type": "<string>",
  "line_items": "<array>",
  "item_id": "<number>",
  "quantity_adjusted": "<string>"
}
```

---

### Category: Listing

#### Get Product

**Method**: `GET` | **LowCodeAPI Path**: `/storefront/api/v1/products/product_id`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/storefront/api/v1/products/product_id?api_token={api_token}
```

**Description**: Get Product

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`product_id` | string | Yes | Unique ID generated by the server for the product. This is used as identifier |

---

#### Get Category

**Method**: `GET` | **LowCodeAPI Path**: `/storefront/api/v1/categories/category_id`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/storefront/api/v1/categories/category_id?api_token={api_token}
```

**Description**: Get Category

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`category_id` | string | Yes | Unique ID generated by the server for the category. This is used as identifier |

---

#### Get Collection

**Method**: `GET` | **LowCodeAPI Path**: `/storefront/api/v1/collections/collection_id`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/storefront/api/v1/collections/collection_id?api_token={api_token}
```

**Description**: Get Collection

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`collection_id` | string | Yes | Unique ID generated by the server for the collection. This is used as identifier |

---

#### Search Product

**Method**: `GET` | **LowCodeAPI Path**: `/storefront/api/v1/search-products`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/storefront/api/v1/search-products?q={q}&api_token={api_token}
```

**Description**: Search Product

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`q` | string | Yes | The query string to be searched for in the store |

---

### Category: My Orders

#### Get User Orders

**Method**: `GET` | **LowCodeAPI Path**: `/portaluser/orders`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/portaluser/orders?filterDate={filterDate}&api_token={api_token}
```

**Description**: Get User Orders

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`filterDate` | string | No | Represents the number of months for which the orders need to be displayed |

---

#### Get Order Details

**Method**: `GET` | **LowCodeAPI Path**: `/portaluser/orders/order_id`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/portaluser/orders/order_id?api_token={api_token}
```

**Description**: Get Order Details

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`order_id` | string | Yes | order_id of an order |

---

#### Cancel Order

**Method**: `POST` | **LowCodeAPI Path**: `/portaluser/orders/returns`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/portaluser/orders/returns?api_token={api_token}
```

**Description**: Cancel Order

**Request Body**:
```json
{
  "line_items": "<array>",
  "salesorder_id": "<string>",
  "reason": "<string>"
}
```

---

### Category: Payments

#### Mark as Paid

**Method**: `POST` | **LowCodeAPI Path**: `/store/api/v1/salesorders/salesorders_id/payments`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/salesorders/salesorders_id/payments?api_token={api_token}
```

**Description**: Mark as Paid

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`salesorders_id` | string | Yes | Salesorder Id |

**Request Body**:
```json
{
  "payment_mode": "<string>",
  "amount": "<number>",
  "reference_number": "<string>",
  "date": "<string>"
}
```

---

#### Update Payment

**Method**: `PUT` | **LowCodeAPI Path**: `/store/api/v1/salesorders/order_id/payments/payment_id`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/salesorders/order_id/payments/payment_id?api_token={api_token}
```

**Description**: Update Payment

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`order_id` | string | Yes | Order Id |
|`payment_id` | string | Yes | Payment Id |

**Request Body**:
```json
{
  "payment_mode": "<string>",
  "amount": "<number>",
  "reference_number": "<string>",
  "date": "<string>"
}
```

---

#### Refund Payment

**Method**: `POST` | **LowCodeAPI Path**: `/store/api/v1/salesorders/salesorder_id/refund`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/salesorders/salesorder_id/refund?api_token={api_token}
```

**Description**: Refund Payment

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`salesorder_id` | string | Yes | Salesorder Id |

**Request Body**:
```json
{
  "amount": "<number>"
}
```

---

### Category: Portal

#### Get Signup Fields

**Method**: `GET` | **LowCodeAPI Path**: `/portaluser/signupfields`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/portaluser/signupfields?api_token={api_token}
```

**Description**: Get Signup Fields

---

#### Signout

**Method**: `GET` | **LowCodeAPI Path**: `/signout`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/signout?api_token={api_token}
```

**Description**: Signout

---

#### Get Current User

**Method**: `GET` | **LowCodeAPI Path**: `/portaluser/getcurrentportaluser`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/portaluser/getcurrentportaluser?api_token={api_token}
```

**Description**: Get Current User

---

### Category: Products

#### List All Products

**Method**: `GET` | **LowCodeAPI Path**: `/store/api/v1/products`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/products?filter_by={filter_by}&sort_column={sort_column}&sort_order={sort_order}&page_start_from={page_start_from}&per_page={per_page}&api_token={api_token}
```

**Description**: List All Products

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`filter_by` | string | No | Allowed Values : Status.All, Status.Active, Status.Inactive, ItemType.All, ItemType.Inventory, ItemType.NonInventory |
|`sort_column` | string | No | Allowed Values : name, created_time, last_modified_time, min_rate, max_rate |
|`sort_order` | string | No | Allowed Values : A ,D |
|`page_start_from` | number | No | Allowed Values : 1 to n |
|`per_page` | number | No | Allowed Values : 10,25,50,100,200 |

---

#### Create a Product with Variant

**Method**: `POST` | **LowCodeAPI Path**: `/store/api/v1/products`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/products?api_token={api_token}
```

**Description**: Create a Product with Variant

**Request Body**:
```json
{
  "name": "<string>",
  "url": "<string>",
  "variants": "<array>"
}
```

---

#### Product Details

**Method**: `GET` | **LowCodeAPI Path**: `/store/api/v1/products/editpage`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/products/editpage?product_id={product_id}&api_token={api_token}
```

**Description**: Product Details

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`product_id` | string | Yes | Give unique product id to get the details |

---

#### Update a Product

**Method**: `PUT` | **LowCodeAPI Path**: `/store/api/v1/products`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/products?api_token={api_token}
```

**Description**: Update a Product

**Request Body**:
```json
{
  "key": "value"
}
```

---

#### Delete a List of Products

**Method**: `DELETE` | **LowCodeAPI Path**: `/store/api/v1/products`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/products?product_ids={product_ids}&is_deletedInfoNeeded={is_deletedInfoNeeded}&api_token={api_token}
```

**Description**: Delete a List of Products

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`product_ids` | string | Yes | Give list of product_ids with comma separated |
|`is_deletedInfoNeeded` | string | No | To get the detail of the product |

---

#### Add Product Images

**Method**: `POST` | **LowCodeAPI Path**: `/store/api/v1/products/images`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/products/images?api_token={api_token}
```

**Description**: Add Product Images

**Request Body**:
```json
{
  "image": "<file>"
}
```

---

#### Re-order Product Images

**Method**: `POST` | **LowCodeAPI Path**: `/store/api/v1/products/images/reorder`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/products/images/reorder?api_token={api_token}
```

**Description**: Re-order Product Images

**Request Body**:
```json
{
  "documents": "<array>",
  "document_id": "<string>",
  "order": "<number>"
}
```

---

#### Delete Product Image

**Method**: `DELETE` | **LowCodeAPI Path**: `/store/api/v1/products/documents`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/products/documents?api_token={api_token}
```

**Description**: Delete Product Image

---

#### Export Products

**Method**: `GET` | **LowCodeAPI Path**: `/store/api/v1/export`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/export?entity={entity}&accept={accept}&from_date={from_date}&to_date={to_date}&export_limit={export_limit}&export_start_id={export_start_id}&export_start_index={export_start_index}&api_token={api_token}
```

**Description**: Export Products

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`entity` | string | Yes | Give entity type of the export. Only possible value is 'itemgroup' |
|`accept` | string | Yes | Give format for the export file. Possible values are csv/xls |
|`from_date` | string | No | Give from date for the export. Format: yyyy-mm-dd |
|`to_date` | string | No | Give to_date for the export. Format: yyyy-mm-dd |
|`export_limit` | string | No | Give export limit. Should be less than 25,000 |
|`export_start_id` | string | No | Entity that have IDs greater to this start id will be fetched with limit |
|`export_start_index` | string | No | Offset row number: this will start exporting from nth row of export entity |

---

### Category: Sales Orders

#### List All Sales Orders

**Method**: `GET` | **LowCodeAPI Path**: `/store/api/v1/salesorders`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/salesorders?filter_by={filter_by}&sort_column={sort_column}&sort_order={sort_order}&page={page}&per_page={per_page}&api_token={api_token}
```

**Description**: List All Sales Orders

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`filter_by` | string | No | Status filter. Options: All, Draft, Confirmed, ToBePacked, ToBeShipped, Shipped, ToBeInvoiced, Closed, Void |
|`sort_column` | string | No | Column to sort by. Options: customer_name, salesorder_number, date, shipment_date, total, bcy_total, created_time, last_modified_time |
|`sort_order` | string | No | Sort order. Options: A (ascending), D (descending) |
|`page` | number | No | Page number. Should be a positive integer |
|`per_page` | number | No | Items per page. Options: 10, 25, 50, 100, 200 |

---

#### Retrieve a Sales Order

**Method**: `GET` | **LowCodeAPI Path**: `/store/api/v1/salesorders/order_id`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/salesorders/order_id?api_token={api_token}
```

**Description**: Retrieve a Sales Order

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`order_id` | string | Yes | Order Id |

---

#### Update Status

**Method**: `POST` | **LowCodeAPI Path**: `/store/api/v1/salesorders/salesorder_id/status/status`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/salesorders/salesorder_id/status/status?api_token={api_token}
```

**Description**: Update Status

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`salesorder_id` | string | Yes | Salesorder Id |
|`status` | string | Yes | Satus |

---

#### Add Comments

**Method**: `POST` | **LowCodeAPI Path**: `/store/api/v1/salesorders/salesorder_id/comments`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/salesorders/salesorder_id/comments?api_token={api_token}
```

**Description**: Add Comments

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`salesorder_id` | string | Yes | Salesorder Id |

**Request Body**:
```json
{
  "description": "<string>",
  "transaction_type": "<string>"
}
```

---

#### Update Address

**Method**: `PUT` | **LowCodeAPI Path**: `/store/api/v1/salesorders/order_id/address/address_type`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/salesorders/order_id/address/address_type?api_token={api_token}
```

**Description**: Update Address

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`order_id` | string | Yes | Order Id |
|`address_type` | string | Yes | Address Type |

**Request Body**:
```json
{
  "attention": "<string>",
  "address": "<string>",
  "city": "<string>",
  "state": "<string>",
  "zip": "<string>",
  "country": "<string>",
  "phone": "<string>"
}
```

---

### Category: Sales Return

#### Create a Sales Return

**Method**: `POST` | **LowCodeAPI Path**: `/store/api/v1/salesreturns`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/salesreturns?salesorder_id={salesorder_id}&api_token={api_token}
```

**Description**: Create a Sales Return

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`salesorder_id` | number | No | Unique ID generated by the server for the sales order. This is used as identifier. |

**Request Body**:
```json
{
  "line_items": "<array>",
  "salesorder_item_id": "<number>",
  "quantity": "<number>"
}
```

---

#### Change Status

**Method**: `POST` | **LowCodeAPI Path**: `/store/api/v1/salesreturns/salesreturn_id/status/salesreturn_status`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/salesreturns/salesreturn_id/status/salesreturn_status?api_token={api_token}
```

**Description**: Change Status

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`salesreturn_id` | number | Yes | Unique ID generated by the server for the sales return. This is used as identifier |
|`salesreturn_status` | string | Yes | The current status of the sales return |

**Request Body**:
```json
{
  "key": "value"
}
```

---

#### Refund a Sales Return

**Method**: `POST` | **LowCodeAPI Path**: `/store/api/v1/salesreturn/salesreturn_id/refund`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/salesreturn/salesreturn_id/refund?api_token={api_token}
```

**Description**: Refund a Sales Return

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`salesreturn_id` | number | Yes | Unique ID generated by the server for the sales return. This is used as identifier |

**Request Body**:
```json
{
  "line_items": "<array>",
  "amount": "<number>"
}
```

---

### Category: Shipment Orders

#### Mark as Delivered

**Method**: `POST` | **LowCodeAPI Path**: `/store/api/v1/salesorders/order_id/shipmentorders/delivered`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/salesorders/order_id/shipmentorders/delivered?api_token={api_token}
```

**Description**: Mark as Delivered

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`order_id` | string | Yes | Order Id |

**Request Body**:
```json
{
  "delivery_date": "<string>"
}
```

---

#### Mark as Shipped

**Method**: `POST` | **LowCodeAPI Path**: `/store/api/v1/salesorders/order_id/shipmentorders/shipped`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/salesorders/order_id/shipmentorders/shipped?api_token={api_token}
```

**Description**: Mark as Shipped

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`order_id` | string | Yes | Order Id |

**Request Body**:
```json
{
  "shipment_date": "<string>",
  "tracking_number": "<string>",
  "carrier": "<string>"
}
```

---

#### Update a Shipment Order

**Method**: `PUT` | **LowCodeAPI Path**: `/store/api/v1/salesorders/salesorder_id/shipmentorders`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/salesorders/salesorder_id/shipmentorders?api_token={api_token}
```

**Description**: Update a Shipment Order

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`salesorder_id` | string | Yes | Salesorder Id |

**Request Body**:
```json
{
  "salesorder_id": "<string>",
  "shipment_date": "<string>",
  "tracking_number": "<string>",
  "carrier": "<string>"
}
```

---

### Category: Taxes

#### Create a Tax

**Method**: `POST` | **LowCodeAPI Path**: `/store/api/v1/settings/taxrules`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/settings/taxrules?api_token={api_token}
```

**Description**: Create a Tax

**Request Body**:
```json
{
  "tax_name": "<string>",
  "tax_percentage": "<number>",
  "tax_type": "<string>",
  "country_code": "<string>"
}
```

---

#### Update a Tax

**Method**: `PUT` | **LowCodeAPI Path**: `/store/api/v1/settings/taxrules/tax_id`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/settings/taxrules/tax_id?api_token={api_token}
```

**Description**: Update a Tax

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`tax_id` | string | Yes | Tax Id |

---

#### Delete a Tax

**Method**: `DELETE` | **LowCodeAPI Path**: `/store/api/v1/settings/taxrules/tax_id`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/settings/taxrules/tax_id?api_token={api_token}
```

**Description**: Delete a Tax

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`tax_id` | string | Yes | Tax Id |

---

#### List Taxes

**Method**: `GET` | **LowCodeAPI Path**: `/store/api/v1/settings/taxrules`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/settings/taxrules?api_token={api_token}
```

**Description**: List Taxes

---

#### Update Tax Preferences

**Method**: `PUT` | **LowCodeAPI Path**: `/store/api/v1/settings/taxpreferences`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/settings/taxpreferences?api_token={api_token}
```

**Description**: Update Tax Preferences

---

#### Get Tax Preferences

**Method**: `GET` | **LowCodeAPI Path**: `/store/api/v1/settings/taxpreferences`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/settings/taxpreferences?api_token={api_token}
```

**Description**: Get Tax Preferences

---

### Category: Variants

#### List All Variants

**Method**: `GET` | **LowCodeAPI Path**: `/store/api/v1/variants`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/variants?status={status}&item_type={item_type}&sort_column={sort_column}&sort_order={sort_order}&page={page}&per_page={per_page}&variant_ids={variant_ids}&api_token={api_token}
```

**Description**: List All Variants

**Query Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`status` | string | No | active, inactive |
|`item_type` | string | No | ItemType.Inventory, ItemType.NonInventory |
|`sort_column` | string | No | name, last_modified_time, actual_available_stock |
|`sort_order` | string | No | A, D |
|`page` | number | No | 1 to n |
|`per_page` | number | No | 10, 25, 50, 100, 200 |
|`variant_ids` | number | No | list of unique variant ids separated by comma to get specific variant details. Limit : 50 |

---

#### Create a Variant

**Method**: `POST` | **LowCodeAPI Path**: `/store/api/v1/variants`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/variants?api_token={api_token}
```

**Description**: Create a Variant

**Request Body**:
```json
{
  "rate": "<string>"
}
```

---

#### Variant Details

**Method**: `GET` | **LowCodeAPI Path**: `/store/api/v1/variants/variant_id`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/variants/variant_id?api_token={api_token}
```

**Description**: Variant Details

**Path Parameters**:

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
|`variant_id` | string | Yes | Variant Id |

---

#### Update a Variant

**Method**: `PUT` | **LowCodeAPI Path**: `/store/api/v1/variants`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/variants?api_token={api_token}
```

**Description**: Update a Variant

**Request Body**:
```json
{
  "key": "value"
}
```

---

#### Delete a Variant

**Method**: `DELETE` | **LowCodeAPI Path**: `/store/api/v1/variants`

**Full URL**:
```
https://api.lowcodeapi.com/zohocommerce/store/api/v1/variants?api_token={api_token}
```

**Description**: Delete a Variant

---

## Complete Endpoint Reference

For a complete list of all 78 endpoints, refer to:
- **OpenAPI Definition**: `https://backend.lowcodeapi.com/zohocommerce/definition`
- **Official Provider Documentation**: https://www.zoho.com/commerce/api/introduction.html