MENU navbar-image

Introduction

This documentation aims to provide all the information you need to work with our API.

<aside>As you scroll, you'll see code examples for working with the API in different programming languages in the dark area to the right (or as part of the content on mobile).
You can switch the language used with the tabs at the top right (or from the nav menu at the top left on mobile).</aside>

Authenticating requests

This API is not authenticated.

Address

Get list of address by customer

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/addresses" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/addresses"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "error": true,
    "data": null,
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/ecommerce/addresses

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Create new address for customer

requires authentication

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/ecommerce/addresses" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"John Doe\",
    \"email\": \"[email protected]\",
    \"phone\": \"0123456789\",
    \"country\": \"United States or US\",
    \"state\": \"California\",
    \"city\": \"Los Angeles\",
    \"address\": \"123 Main St\",
    \"is_default\": true,
    \"zip_code\": \"90001\"
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/addresses"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "John Doe",
    "email": "[email protected]",
    "phone": "0123456789",
    "country": "United States or US",
    "state": "California",
    "city": "Los Angeles",
    "address": "123 Main St",
    "is_default": true,
    "zip_code": "90001"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "error": false,
    "data": {
        "id": 1,
        "name": "John Doe",
        "phone": "0123456789",
        "email": "[email protected]",
        "country": "United States",
        "state": "California",
        "city": "Los Angeles",
        "address": "123 Main St",
        "zip_code": "90001",
        "is_default": true
    },
    "message": null
}
 

Request      

POST api/v1/ecommerce/addresses

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

name   string   

The name of the address owner. Example: John Doe

email   string   

The email address. Example: [email protected]

phone   string   

The phone number. Example: 0123456789

country   string  optional  

The country name or country code. Example: United States or US

state   string  optional  

The state/province name. Example: California

city   string  optional  

The city name. Example: Los Angeles

address   string  optional  

The street address. Example: 123 Main St

is_default   boolean  optional  

Set as default address. Example: true

zip_code   string  optional  

The postal/zip code. Example: 90001

Update an address

requires authentication

Example request:
curl --request PUT \
    "https://shofy.botble.com/api/v1/ecommerce/addresses/1" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"name\": \"John Doe\",
    \"email\": \"[email protected]\",
    \"phone\": \"0123456789\",
    \"country\": \"United States or US\",
    \"state\": \"California\",
    \"city\": \"Los Angeles\",
    \"address\": \"123 Main St\",
    \"is_default\": true,
    \"zip_code\": \"90001\"
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/addresses/1"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "name": "John Doe",
    "email": "[email protected]",
    "phone": "0123456789",
    "country": "United States or US",
    "state": "California",
    "city": "Los Angeles",
    "address": "123 Main St",
    "is_default": true,
    "zip_code": "90001"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "error": false,
    "data": {
        "id": 1,
        "name": "John Doe",
        "phone": "0123456789",
        "email": "[email protected]",
        "country": "United States",
        "state": "California",
        "city": "Los Angeles",
        "address": "123 Main St",
        "zip_code": "90001",
        "is_default": true
    },
    "message": null
}
 

Request      

PUT api/v1/ecommerce/addresses/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the address. Example: 1

Body Parameters

name   string   

The name of the address owner. Example: John Doe

email   string   

The email address. Example: [email protected]

phone   string   

The phone number. Example: 0123456789

country   string  optional  

The country name or country code. Example: United States or US

state   string   

The state/province name. Example: California

city   string   

The city name. Example: Los Angeles

address   string   

The street address. Example: 123 Main St

is_default   boolean  optional  

Set as default address. Example: true

zip_code   string  optional  

The postal/zip code. Example: 90001

Delete an address

requires authentication

Example request:
curl --request DELETE \
    "https://shofy.botble.com/api/v1/ecommerce/addresses/1" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/addresses/1"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Example response (200):


{
    "error": false,
    "data": null,
    "message": "Address deleted successfully"
}
 

Request      

DELETE api/v1/ecommerce/addresses/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the address. Example: 1

Get list of available countries

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/countries" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/countries"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "error": false,
    "data": [
        {
            "name": "Vietnam",
            "code": "VN"
        }
    ],
    "message": null
}
 

Request      

GET api/v1/ecommerce/countries

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Ads

Get ads

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ads?keys[]=homepage-banner&keys[]=sidebar-banner" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"keys\": [
        \"homepage-banner\",
        \"sidebar-banner\"
    ]
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/ads"
);

const params = {
    "keys[0]": "homepage-banner",
    "keys[1]": "sidebar-banner",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "keys": [
        "homepage-banner",
        "sidebar-banner"
    ]
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "error": false,
    "data": [],
    "message": null
}
 

Request      

GET api/v1/ads

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

keys   string[]  optional  

Array of ad keys to filter by.

Body Parameters

keys   string[]  optional  

Array of ad keys to filter by.

Authentication

Register

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/register" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"first_name\": \"John\",
    \"last_name\": \"Smith\",
    \"name\": \"architecto\",
    \"email\": \"[email protected]\",
    \"password\": \"|]|{+-\",
    \"phone\": \"architecto\",
    \"password_confirmation\": \"architecto\"
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/register"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "first_name": "John",
    "last_name": "Smith",
    "name": "architecto",
    "email": "[email protected]",
    "password": "|]|{+-",
    "phone": "architecto",
    "password_confirmation": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "error": false,
    "data": null,
    "message": "Registered successfully! We emailed you to verify your account!"
}
 

Example response (422):


{
    "message": "The given data was invalid.",
    "errors": {
        "name": [
            "The name field is required."
        ],
        "email": [
            "The email field is required."
        ],
        "password": [
            "The password field is required."
        ]
    }
}
 

Request      

POST api/v1/register

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

first_name   string  optional  

The first name of the user. This field is required when name is not present. Must not be greater than 120 characters. Must be at least 2 characters. Example: John

last_name   string  optional  

The last name of the user. This field is required when name is not present. Must not be greater than 120 characters. Must be at least 2 characters. Example: Smith

name   string   

The name of the user. Example: architecto

email   string   

The email of the user. Example: [email protected]

password   string   

The password of user to create. Example: |]|{+-

phone   string   

The phone of the user. Example: architecto

password_confirmation   string   

The password confirmation. Example: architecto

Login

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/login" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"[email protected]\",
    \"password\": \"|]|{+-\"
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/login"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "[email protected]",
    "password": "|]|{+-"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "error": false,
    "data": {
        "token": "1|aF5s7p3xxx1lVL8hkSrPN72m4wPVpTvTs..."
    },
    "message": null
}
 

Request      

POST api/v1/login

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

email   string   

The email of the user. Example: [email protected]

password   string   

The password of user to create. Example: |]|{+-

Check email existing or not

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/email/check" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"[email protected]\"
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/email/check"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "[email protected]"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "error": false,
    "data": {
        "exists": true
    },
    "message": null
}
 

Request      

POST api/v1/email/check

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

email   string   

The email of the user. Example: [email protected]

Forgot password

Send a reset link to the given user.

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/password/forgot" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"[email protected]\"
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/password/forgot"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "[email protected]"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/password/forgot

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

email   string   

The email of the user. Example: [email protected]

Resend email verification

Resend the email verification notification.

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/resend-verify-account-email" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"[email protected]\"
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/resend-verify-account-email"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "[email protected]"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/resend-verify-account-email

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

email   string   

The email of the user. Example: [email protected]

Logout

requires authentication

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/logout" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/logout"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "error": true,
    "data": null,
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/logout

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Blog

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/search" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"q\": \"architecto\"
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/search"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "q": "architecto"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "error": false,
    "data": {
        "items": [
            {
                "id": 1,
                "title": "Sample Post",
                "slug": "sample-post",
                "excerpt": "This is a sample post excerpt"
            }
        ],
        "query": "sample",
        "count": 1
    }
}
 

Example response (400):


{
    "error": true,
    "message": "No search result"
}
 

List posts

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/posts?per_page=16&page=16" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/posts"
);

const params = {
    "per_page": "16",
    "page": "16",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "error": false,
    "data": [
        {
            "id": 1,
            "title": "Sample Post",
            "slug": "sample-post",
            "excerpt": "This is a sample post excerpt",
            "content": "Full post content here...",
            "published_at": "2023-01-01T00:00:00.000000Z",
            "author": {
                "id": 1,
                "name": "John Doe"
            },
            "categories": [],
            "tags": []
        }
    ],
    "message": null
}
 

Request      

GET api/v1/posts

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

per_page   integer  optional  

The number of items to return per page (default: 10). Example: 16

page   integer  optional  

The page number to retrieve (default: 1). Example: 16

List categories

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/categories?per_page=16&page=16" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/categories"
);

const params = {
    "per_page": "16",
    "page": "16",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "error": false,
    "data": [
        {
            "id": 1,
            "name": "Technology",
            "slug": "technology",
            "description": "Latest tech news and updates",
            "created_at": "2023-01-01T00:00:00.000000Z"
        }
    ],
    "message": null
}
 

Request      

GET api/v1/categories

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

per_page   integer  optional  

The number of items to return per page (default: 10). Example: 16

page   integer  optional  

The page number to retrieve (default: 1). Example: 16

List tags

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/tags?per_page=16&page=16" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/tags"
);

const params = {
    "per_page": "16",
    "page": "16",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "error": false,
    "data": [
        {
            "id": 1,
            "name": "Laravel",
            "slug": "laravel",
            "description": "PHP Framework for web development",
            "created_at": "2023-01-01T00:00:00.000000Z"
        }
    ],
    "message": null
}
 

Request      

GET api/v1/tags

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

per_page   integer  optional  

The number of items to return per page (default: 10). Example: 16

page   integer  optional  

The page number to retrieve (default: 1). Example: 16

Filters posts

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/posts/filters?page=16&per_page=16&search=architecto&after=architecto&author=architecto&author_exclude=architecto&before=architecto&exclude=architecto&include=architecto&order=architecto&order_by=architecto&categories=architecto&categories_exclude=architecto&tags=architecto&tags_exclude=architecto&featured=architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/posts/filters"
);

const params = {
    "page": "16",
    "per_page": "16",
    "search": "architecto",
    "after": "architecto",
    "author": "architecto",
    "author_exclude": "architecto",
    "before": "architecto",
    "exclude": "architecto",
    "include": "architecto",
    "order": "architecto",
    "order_by": "architecto",
    "categories": "architecto",
    "categories_exclude": "architecto",
    "tags": "architecto",
    "tags_exclude": "architecto",
    "featured": "architecto",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "data": [],
    "links": {
        "first": "https://shofy.botble.com/api/v1/posts/filters?page=1",
        "last": "https://shofy.botble.com/api/v1/posts/filters?page=1",
        "prev": "https://shofy.botble.com/api/v1/posts/filters?page=15",
        "next": null
    },
    "meta": {
        "current_page": 16,
        "from": null,
        "last_page": 1,
        "links": [
            {
                "url": "https://shofy.botble.com/api/v1/posts/filters?page=15",
                "label": "&laquo; Previous",
                "page": 15,
                "active": false
            },
            {
                "url": "https://shofy.botble.com/api/v1/posts/filters?page=1",
                "label": "1",
                "page": 1,
                "active": false
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://shofy.botble.com/api/v1/posts/filters",
        "per_page": 16,
        "to": null,
        "total": 0
    },
    "error": false,
    "message": null
}
 

Request      

GET api/v1/posts/filters

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

page   integer  optional  

Current page of the collection. Default: 1 Example: 16

per_page   integer  optional  

Maximum number of items to be returned in result set.Default: 10 Example: 16

search   string  optional  

Limit results to those matching a string. Example: architecto

after   string  optional  

Limit response to posts published after a given ISO8601 compliant date. Example: architecto

author   string  optional  

Limit result set to posts assigned to specific authors. Example: architecto

author_exclude   string  optional  

Ensure result set excludes posts assigned to specific authors. Example: architecto

before   string  optional  

Limit response to posts published before a given ISO8601 compliant date. Example: architecto

exclude   string  optional  

Ensure result set excludes specific IDs. Example: architecto

include   string  optional  

Limit result set to specific IDs. Example: architecto

order   string  optional  

Order sort attribute ascending or descending. Default: desc .One of: asc, desc Example: architecto

order_by   string  optional  

Sort collection by object attribute. Default: updated_at. One of: author, created_at, updated_at, id, slug, title Example: architecto

categories   string  optional  

Limit result set to all items that have the specified term assigned in the categories taxonomy. Example: architecto

categories_exclude   string  optional  

Limit result set to all items except those that have the specified term assigned in the categories taxonomy. Example: architecto

tags   string  optional  

Limit result set to all items that have the specified term assigned in the tags taxonomy. Example: architecto

tags_exclude   string  optional  

Limit result set to all items except those that have the specified term assigned in the tags taxonomy. Example: architecto

featured   string  optional  

Limit result set to items that are sticky. Example: architecto

Get post by slug

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/posts/architecto?slug=architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/posts/architecto"
);

const params = {
    "slug": "architecto",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "error": true,
    "data": null,
    "message": "Not found"
}
 

Request      

GET api/v1/posts/{slug}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

slug   string   

The slug of the post. Example: architecto

Query Parameters

slug   string  optional  

Find by slug of post. Example: architecto

Filters categories

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/categories/filters?page=16&per_page=16&search=architecto&order=architecto&order_by=architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/categories/filters"
);

const params = {
    "page": "16",
    "per_page": "16",
    "search": "architecto",
    "order": "architecto",
    "order_by": "architecto",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "error": false,
    "data": [
        {
            "id": 1,
            "name": "Technology",
            "slug": "technology",
            "description": "Latest tech news and updates"
        }
    ],
    "message": null
}
 

Request      

GET api/v1/categories/filters

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

page   integer  optional  

Current page of the collection (default: 1). Example: 16

per_page   integer  optional  

Maximum number of items to be returned (default: 10). Example: 16

search   string  optional  

Limit results to those matching a string. Example: architecto

order   string  optional  

Order sort attribute ascending or descending (default: desc). One of: asc, desc. Example: architecto

order_by   string  optional  

Sort collection by object attribute (default: created_at). One of: created_at, updated_at, id, name. Example: architecto

Get category by slug

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/categories/architecto?slug=architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/categories/architecto"
);

const params = {
    "slug": "architecto",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "error": true,
    "data": null,
    "message": "Not found"
}
 

Request      

GET api/v1/categories/{slug}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

slug   string   

The slug of the category. Example: architecto

Query Parameters

slug   string  optional  

Find by slug of category. Example: architecto

Brands

Get list of brands

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/brands?brands=" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"is_featured\": false
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/brands"
);

const params = {
    "brands": "",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "is_featured": false
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "data": [],
    "links": {
        "first": "https://shofy.botble.com/api/v1/ecommerce/brands?page=1",
        "last": "https://shofy.botble.com/api/v1/ecommerce/brands?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": null,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://shofy.botble.com/api/v1/ecommerce/brands?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://shofy.botble.com/api/v1/ecommerce/brands",
        "per_page": 16,
        "to": null,
        "total": 0
    },
    "error": false,
    "message": null
}
 

Request      

GET api/v1/ecommerce/brands

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

brands   string[]  optional  

List of brand IDs if you need filter by brands.

page   integer  optional  

Page number. Default: 1.

per_page   integer  optional  

Number of items per page. Default: 16.

Body Parameters

brands   string[]  optional  

The id of an existing record in the ec_product_brands table.

is_featured   boolean  optional  

Filter by featured status. Example: false

Get brand details by slug

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/brands/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/brands/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": ""
}
 

Request      

GET api/v1/ecommerce/brands/{slug}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

slug   string   

The slug of the brand. Example: architecto

Get products by brand

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/brands/1/products" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/brands/1/products"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "data": [
        {
            "id": 47,
            "slug": "sony-a90j-4k-oled-smart-tv",
            "url": "https://shofy.botble.com/products/sony-a90j-4k-oled-smart-tv",
            "name": "Sony A90J 4K OLED Smart TV",
            "sku": "2P-160-A1",
            "description": "The headset also offers MS Teams Certifications and other features like Busylight, Calls controls, Voice guiding, and Wireless range (ft): Up to 100 feet. Best-in-class. Boom The most recent Jabra Evolve2 75 USB-A MS Teams Stereo Headset offers professional-grade call performance that leads the industry, yet Evolve2 75 wins best-in-class.",
            "content": "<div class=\"row justify-content-center\">\n    <div class=\"col-xl-10\">\n        <div class=\"tp-product-details-desc-item pb-105\">\n            <div class=\"row\">\n                <div class=\"col-lg-6\">\n                    <div class=\"pt-25\">\n                        <span>Galaxy A8 tablet</span>\n                        <h3 class=\"tp-product-details-desc-title\">Your world at a glance</h3>\n                        <p>\n                            With a slim design, a vibrant entertainment system, and <br>\n                            outstanding performance, the new Galaxy Tab A7 is a stylish new <br>\n                            companion for your life.Dive head-first into the things you love, <br>\n                            and easily share your favorite moments. Learn, explore, connect <br>\n                            and be inspired.\n                        </p>\n                    </div>\n                    <div>\n                        <h3 class=\"tp-product-details-desc-title\">Draw inspiration with S Pen</h3>\n                        <p>\n                            S Pen is a bundle of writing instruments in one. Its natural grip, <br>\n                            low latency and impressive pressure sensitivity will make it your go-to for everything from drawing to editing documents. And S Pen won't get misplaced thanks.\n                        </p>\n                    </div>\n                </div>\n                <div class=\"col-lg-6\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-1.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item pb-75\">\n            <div class=\"row\">\n                <div class=\"col-lg-7\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-2.jpg\" alt=\"product\">\n                    </div>\n                </div>\n\n                <div class=\"col-lg-5 order-first order-lg-last\">\n                    <div class=\"des-content-2 pl-40\">\n                        <h3 class=\"tp-product-details-desc-title\">\n                            Carry with <br>\n                            Confidence and style\n                        </h3>\n                        <p>\n                            Wrap your tablet in a sleek case that's as stylish as it is convenient. Galaxy Tab S6 Lite Book Cover folds around and clings magnetically, so you can easily gear up as you're headed out the door. There's even a\n                            compartment for S pen, so you can be sure it doesn't get left behind.\n                        </p>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item\">\n            <div class=\"row\">\n                <div class=\"col-xl-12\">\n                    <div class=\"tp-product-details-desc-banner text-center m-img\">\n                        <h3 class=\"tp-product-details-desc-banner-title tp-product-details-desc-title\">Speed Memory Power = Epic Races</h3>\n                        <img src=\"/storage/main/products/product-details-desc-3.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n",
            "with_storehouse_management": true,
            "quantity": 11,
            "is_out_of_stock": false,
            "stock_status_label": "In stock",
            "stock_status_html": "<span class=\"text-success\">In stock</span>",
            "price": 259,
            "price_formatted": "$259.00",
            "original_price": 259,
            "original_price_formatted": "$259.00",
            "reviews_avg": 2.78,
            "reviews_count": 9,
            "images": [
                "https://shofy.botble.com/storage/main/products/product-18.jpg",
                "https://shofy.botble.com/storage/main/products/product-12.jpg",
                "https://shofy.botble.com/storage/main/products/product-5.jpg",
                "https://shofy.botble.com/storage/main/products/product-details-desc-2.jpg"
            ],
            "images_thumb": [
                "https://shofy.botble.com/storage/main/products/product-18-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-12-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-5-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-details-desc-2-150x150.jpg"
            ],
            "image_with_sizes": {
                "origin": [
                    "https://shofy.botble.com/storage/main/products/product-18-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-12-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-2-600x600.jpg"
                ],
                "thumb": [
                    "https://shofy.botble.com/storage/main/products/product-18-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-12-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-2-150x150.jpg"
                ],
                "medium": [
                    "https://shofy.botble.com/storage/main/products/product-18-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-12-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-2-600x600.jpg"
                ],
                "rectangle": [
                    "https://shofy.botble.com/storage/main/products/product-18-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-12-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-2-420x270.jpg"
                ]
            },
            "weight": 642,
            "height": 15,
            "wide": 16,
            "length": 13,
            "image_url": "https://shofy.botble.com/storage/main/products/product-18-150x150.jpg",
            "product_options": [],
            "store": {
                "id": 6,
                "slug": "stouffer",
                "name": "Stouffer"
            }
        },
        {
            "id": 48,
            "slug": "apple-tv-4k-2nd-generation-digital",
            "url": "https://shofy.botble.com/products/apple-tv-4k-2nd-generation-digital",
            "name": "Apple TV 4K (2nd Generation) (Digital)",
            "sku": "DH-181-A1",
            "description": "It complies with Microsoft's Open Office criteria and is specially tuned for outstanding conversations in open-plan workplaces and other loud environments when the microphone boom arm is lowered in Performance Mode",
            "content": "<div class=\"row justify-content-center\">\n    <div class=\"col-xl-10\">\n        <div class=\"tp-product-details-desc-item pb-105\">\n            <div class=\"row\">\n                <div class=\"col-lg-6\">\n                    <div class=\"pt-25\">\n                        <span>Galaxy A8 tablet</span>\n                        <h3 class=\"tp-product-details-desc-title\">Your world at a glance</h3>\n                        <p>\n                            With a slim design, a vibrant entertainment system, and <br>\n                            outstanding performance, the new Galaxy Tab A7 is a stylish new <br>\n                            companion for your life.Dive head-first into the things you love, <br>\n                            and easily share your favorite moments. Learn, explore, connect <br>\n                            and be inspired.\n                        </p>\n                    </div>\n                    <div>\n                        <h3 class=\"tp-product-details-desc-title\">Draw inspiration with S Pen</h3>\n                        <p>\n                            S Pen is a bundle of writing instruments in one. Its natural grip, <br>\n                            low latency and impressive pressure sensitivity will make it your go-to for everything from drawing to editing documents. And S Pen won't get misplaced thanks.\n                        </p>\n                    </div>\n                </div>\n                <div class=\"col-lg-6\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-1.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item pb-75\">\n            <div class=\"row\">\n                <div class=\"col-lg-7\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-2.jpg\" alt=\"product\">\n                    </div>\n                </div>\n\n                <div class=\"col-lg-5 order-first order-lg-last\">\n                    <div class=\"des-content-2 pl-40\">\n                        <h3 class=\"tp-product-details-desc-title\">\n                            Carry with <br>\n                            Confidence and style\n                        </h3>\n                        <p>\n                            Wrap your tablet in a sleek case that's as stylish as it is convenient. Galaxy Tab S6 Lite Book Cover folds around and clings magnetically, so you can easily gear up as you're headed out the door. There's even a\n                            compartment for S pen, so you can be sure it doesn't get left behind.\n                        </p>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item\">\n            <div class=\"row\">\n                <div class=\"col-xl-12\">\n                    <div class=\"tp-product-details-desc-banner text-center m-img\">\n                        <h3 class=\"tp-product-details-desc-banner-title tp-product-details-desc-title\">Speed Memory Power = Epic Races</h3>\n                        <img src=\"/storage/main/products/product-details-desc-3.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n",
            "with_storehouse_management": true,
            "quantity": 15,
            "is_out_of_stock": false,
            "stock_status_label": "In stock",
            "stock_status_html": "<span class=\"text-success\">In stock</span>",
            "price": 1466.16,
            "price_formatted": "$1,466.16",
            "original_price": 1788,
            "original_price_formatted": "$1,788.00",
            "reviews_avg": 2.71,
            "reviews_count": 7,
            "images": [
                "https://shofy.botble.com/storage/main/products/product-2.jpg",
                "https://shofy.botble.com/storage/main/products/product-16.jpg",
                "https://shofy.botble.com/storage/main/products/product-13.jpg",
                "https://shofy.botble.com/storage/main/products/product-12.jpg"
            ],
            "images_thumb": [
                "https://shofy.botble.com/storage/main/products/product-2-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-16-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-13-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-12-150x150.jpg"
            ],
            "image_with_sizes": {
                "origin": [
                    "https://shofy.botble.com/storage/main/products/product-2-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-16-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-13-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-12-600x600.jpg"
                ],
                "thumb": [
                    "https://shofy.botble.com/storage/main/products/product-2-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-16-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-13-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-12-150x150.jpg"
                ],
                "medium": [
                    "https://shofy.botble.com/storage/main/products/product-2-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-16-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-13-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-12-600x600.jpg"
                ],
                "rectangle": [
                    "https://shofy.botble.com/storage/main/products/product-2-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-16-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-13-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-12-420x270.jpg"
                ]
            },
            "weight": 556,
            "height": 19,
            "wide": 15,
            "length": 13,
            "image_url": "https://shofy.botble.com/storage/main/products/product-2-150x150.jpg",
            "product_options": [],
            "store": {
                "id": 4,
                "slug": "global-store",
                "name": "Global Store"
            }
        },
        {
            "id": 49,
            "slug": "roku-ultra-2020-streaming-media-player",
            "url": "https://shofy.botble.com/products/roku-ultra-2020-streaming-media-player",
            "name": "Roku Ultra 2020 Streaming Media Player",
            "sku": "3J-171",
            "description": "The headset also offers MS Teams Certifications and other features like Busylight, Calls controls, Voice guiding, and Wireless range (ft): Up to 100 feet. Best-in-class. Boom The most recent Jabra Evolve2 75 USB-A MS Teams Stereo Headset offers professional-grade call performance that leads the industry, yet Evolve2 75 wins best-in-class.",
            "content": "<div class=\"row justify-content-center\">\n    <div class=\"col-xl-10\">\n        <div class=\"tp-product-details-desc-item pb-105\">\n            <div class=\"row\">\n                <div class=\"col-lg-6\">\n                    <div class=\"pt-25\">\n                        <span>Galaxy A8 tablet</span>\n                        <h3 class=\"tp-product-details-desc-title\">Your world at a glance</h3>\n                        <p>\n                            With a slim design, a vibrant entertainment system, and <br>\n                            outstanding performance, the new Galaxy Tab A7 is a stylish new <br>\n                            companion for your life.Dive head-first into the things you love, <br>\n                            and easily share your favorite moments. Learn, explore, connect <br>\n                            and be inspired.\n                        </p>\n                    </div>\n                    <div>\n                        <h3 class=\"tp-product-details-desc-title\">Draw inspiration with S Pen</h3>\n                        <p>\n                            S Pen is a bundle of writing instruments in one. Its natural grip, <br>\n                            low latency and impressive pressure sensitivity will make it your go-to for everything from drawing to editing documents. And S Pen won't get misplaced thanks.\n                        </p>\n                    </div>\n                </div>\n                <div class=\"col-lg-6\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-1.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item pb-75\">\n            <div class=\"row\">\n                <div class=\"col-lg-7\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-2.jpg\" alt=\"product\">\n                    </div>\n                </div>\n\n                <div class=\"col-lg-5 order-first order-lg-last\">\n                    <div class=\"des-content-2 pl-40\">\n                        <h3 class=\"tp-product-details-desc-title\">\n                            Carry with <br>\n                            Confidence and style\n                        </h3>\n                        <p>\n                            Wrap your tablet in a sleek case that's as stylish as it is convenient. Galaxy Tab S6 Lite Book Cover folds around and clings magnetically, so you can easily gear up as you're headed out the door. There's even a\n                            compartment for S pen, so you can be sure it doesn't get left behind.\n                        </p>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item\">\n            <div class=\"row\">\n                <div class=\"col-xl-12\">\n                    <div class=\"tp-product-details-desc-banner text-center m-img\">\n                        <h3 class=\"tp-product-details-desc-banner-title tp-product-details-desc-title\">Speed Memory Power = Epic Races</h3>\n                        <img src=\"/storage/main/products/product-details-desc-3.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n",
            "with_storehouse_management": true,
            "quantity": 14,
            "is_out_of_stock": false,
            "stock_status_label": "In stock",
            "stock_status_html": "<span class=\"text-success\">In stock</span>",
            "price": 778,
            "price_formatted": "$778.00",
            "original_price": 2284,
            "original_price_formatted": "$2,284.00",
            "reviews_avg": 2,
            "reviews_count": 10,
            "images": [
                "https://shofy.botble.com/storage/main/products/product-6.jpg",
                "https://shofy.botble.com/storage/main/products/product-details-desc-3.jpg",
                "https://shofy.botble.com/storage/main/products/product-10.jpg"
            ],
            "images_thumb": [
                "https://shofy.botble.com/storage/main/products/product-6-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-details-desc-3-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-10-150x150.jpg"
            ],
            "image_with_sizes": {
                "origin": [
                    "https://shofy.botble.com/storage/main/products/product-6-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-3-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-10-600x600.jpg"
                ],
                "thumb": [
                    "https://shofy.botble.com/storage/main/products/product-6-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-3-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-10-150x150.jpg"
                ],
                "medium": [
                    "https://shofy.botble.com/storage/main/products/product-6-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-3-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-10-600x600.jpg"
                ],
                "rectangle": [
                    "https://shofy.botble.com/storage/main/products/product-6-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-3-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-10-420x270.jpg"
                ]
            },
            "weight": 835,
            "height": 17,
            "wide": 20,
            "length": 20,
            "image_url": "https://shofy.botble.com/storage/main/products/product-6-150x150.jpg",
            "product_options": [],
            "store": {
                "id": 7,
                "slug": "starkist",
                "name": "StarKist"
            }
        },
        {
            "id": 50,
            "slug": "amazon-fire-tv-stick-4k-max",
            "url": "https://shofy.botble.com/products/amazon-fire-tv-stick-4k-max",
            "name": "Amazon Fire TV Stick 4K Max",
            "sku": "RR-179-A1",
            "description": "With this intelligent headset, you can stay connected and productive from the first call of the day to the last train home. With an ergonomic earcup design, this headset invented a brand-new dual-foam technology. You will be comfortable from the first call to the last thanks to the re-engineered leatherette ear cushion design that allows for better airflow.",
            "content": "<div class=\"row justify-content-center\">\n    <div class=\"col-xl-10\">\n        <div class=\"tp-product-details-desc-item pb-105\">\n            <div class=\"row\">\n                <div class=\"col-lg-6\">\n                    <div class=\"pt-25\">\n                        <span>Galaxy A8 tablet</span>\n                        <h3 class=\"tp-product-details-desc-title\">Your world at a glance</h3>\n                        <p>\n                            With a slim design, a vibrant entertainment system, and <br>\n                            outstanding performance, the new Galaxy Tab A7 is a stylish new <br>\n                            companion for your life.Dive head-first into the things you love, <br>\n                            and easily share your favorite moments. Learn, explore, connect <br>\n                            and be inspired.\n                        </p>\n                    </div>\n                    <div>\n                        <h3 class=\"tp-product-details-desc-title\">Draw inspiration with S Pen</h3>\n                        <p>\n                            S Pen is a bundle of writing instruments in one. Its natural grip, <br>\n                            low latency and impressive pressure sensitivity will make it your go-to for everything from drawing to editing documents. And S Pen won't get misplaced thanks.\n                        </p>\n                    </div>\n                </div>\n                <div class=\"col-lg-6\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-1.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item pb-75\">\n            <div class=\"row\">\n                <div class=\"col-lg-7\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-2.jpg\" alt=\"product\">\n                    </div>\n                </div>\n\n                <div class=\"col-lg-5 order-first order-lg-last\">\n                    <div class=\"des-content-2 pl-40\">\n                        <h3 class=\"tp-product-details-desc-title\">\n                            Carry with <br>\n                            Confidence and style\n                        </h3>\n                        <p>\n                            Wrap your tablet in a sleek case that's as stylish as it is convenient. Galaxy Tab S6 Lite Book Cover folds around and clings magnetically, so you can easily gear up as you're headed out the door. There's even a\n                            compartment for S pen, so you can be sure it doesn't get left behind.\n                        </p>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item\">\n            <div class=\"row\">\n                <div class=\"col-xl-12\">\n                    <div class=\"tp-product-details-desc-banner text-center m-img\">\n                        <h3 class=\"tp-product-details-desc-banner-title tp-product-details-desc-title\">Speed Memory Power = Epic Races</h3>\n                        <img src=\"/storage/main/products/product-details-desc-3.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n",
            "with_storehouse_management": true,
            "quantity": 19,
            "is_out_of_stock": false,
            "stock_status_label": "In stock",
            "stock_status_html": "<span class=\"text-success\">In stock</span>",
            "price": 1612,
            "price_formatted": "$1,612.00",
            "original_price": 1612,
            "original_price_formatted": "$1,612.00",
            "reviews_avg": 2.88,
            "reviews_count": 8,
            "images": [
                "https://shofy.botble.com/storage/main/products/product-10.jpg",
                "https://shofy.botble.com/storage/main/products/product-5.jpg",
                "https://shofy.botble.com/storage/main/products/product-20.jpg",
                "https://shofy.botble.com/storage/main/products/product-2.jpg",
                "https://shofy.botble.com/storage/main/products/product-details-desc-3.jpg",
                "https://shofy.botble.com/storage/main/products/product-9.jpg",
                "https://shofy.botble.com/storage/main/products/product-11.jpg"
            ],
            "images_thumb": [
                "https://shofy.botble.com/storage/main/products/product-10-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-5-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-20-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-2-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-details-desc-3-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-9-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-11-150x150.jpg"
            ],
            "image_with_sizes": {
                "origin": [
                    "https://shofy.botble.com/storage/main/products/product-10-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-20-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-2-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-3-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-9-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-11-600x600.jpg"
                ],
                "thumb": [
                    "https://shofy.botble.com/storage/main/products/product-10-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-20-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-2-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-3-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-9-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-11-150x150.jpg"
                ],
                "medium": [
                    "https://shofy.botble.com/storage/main/products/product-10-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-20-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-2-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-3-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-9-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-11-600x600.jpg"
                ],
                "rectangle": [
                    "https://shofy.botble.com/storage/main/products/product-10-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-20-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-2-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-3-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-9-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-11-420x270.jpg"
                ]
            },
            "weight": 638,
            "height": 15,
            "wide": 18,
            "length": 15,
            "image_url": "https://shofy.botble.com/storage/main/products/product-10-150x150.jpg",
            "product_options": [],
            "store": {
                "id": 1,
                "slug": "gopro",
                "name": "GoPro"
            }
        },
        {
            "id": 51,
            "slug": "google-chromecast-with-google-tv",
            "url": "https://shofy.botble.com/products/google-chromecast-with-google-tv",
            "name": "Google Chromecast with Google TV",
            "sku": "QT-198-A1",
            "description": "Jabra Evolve2 75 USB-A MS Teams Stereo Headset The Jabra Evolve2 75 USB-A MS Teams Stereo Headset has replaced previous hybrid working standards. Industry-leading call quality thanks to top-notch audio engineering.",
            "content": "<div class=\"row justify-content-center\">\n    <div class=\"col-xl-10\">\n        <div class=\"tp-product-details-desc-item pb-105\">\n            <div class=\"row\">\n                <div class=\"col-lg-6\">\n                    <div class=\"pt-25\">\n                        <span>Galaxy A8 tablet</span>\n                        <h3 class=\"tp-product-details-desc-title\">Your world at a glance</h3>\n                        <p>\n                            With a slim design, a vibrant entertainment system, and <br>\n                            outstanding performance, the new Galaxy Tab A7 is a stylish new <br>\n                            companion for your life.Dive head-first into the things you love, <br>\n                            and easily share your favorite moments. Learn, explore, connect <br>\n                            and be inspired.\n                        </p>\n                    </div>\n                    <div>\n                        <h3 class=\"tp-product-details-desc-title\">Draw inspiration with S Pen</h3>\n                        <p>\n                            S Pen is a bundle of writing instruments in one. Its natural grip, <br>\n                            low latency and impressive pressure sensitivity will make it your go-to for everything from drawing to editing documents. And S Pen won't get misplaced thanks.\n                        </p>\n                    </div>\n                </div>\n                <div class=\"col-lg-6\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-1.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item pb-75\">\n            <div class=\"row\">\n                <div class=\"col-lg-7\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-2.jpg\" alt=\"product\">\n                    </div>\n                </div>\n\n                <div class=\"col-lg-5 order-first order-lg-last\">\n                    <div class=\"des-content-2 pl-40\">\n                        <h3 class=\"tp-product-details-desc-title\">\n                            Carry with <br>\n                            Confidence and style\n                        </h3>\n                        <p>\n                            Wrap your tablet in a sleek case that's as stylish as it is convenient. Galaxy Tab S6 Lite Book Cover folds around and clings magnetically, so you can easily gear up as you're headed out the door. There's even a\n                            compartment for S pen, so you can be sure it doesn't get left behind.\n                        </p>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item\">\n            <div class=\"row\">\n                <div class=\"col-xl-12\">\n                    <div class=\"tp-product-details-desc-banner text-center m-img\">\n                        <h3 class=\"tp-product-details-desc-banner-title tp-product-details-desc-title\">Speed Memory Power = Epic Races</h3>\n                        <img src=\"/storage/main/products/product-details-desc-3.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n",
            "with_storehouse_management": true,
            "quantity": 12,
            "is_out_of_stock": false,
            "stock_status_label": "In stock",
            "stock_status_html": "<span class=\"text-success\">In stock</span>",
            "price": 1470,
            "price_formatted": "$1,470.00",
            "original_price": 1470,
            "original_price_formatted": "$1,470.00",
            "reviews_avg": 3.13,
            "reviews_count": 8,
            "images": [
                "https://shofy.botble.com/storage/main/products/product-8.jpg",
                "https://shofy.botble.com/storage/main/products/product-7.jpg",
                "https://shofy.botble.com/storage/main/products/product-3.jpg",
                "https://shofy.botble.com/storage/main/products/product-15.jpg",
                "https://shofy.botble.com/storage/main/products/product-details-desc-3.jpg"
            ],
            "images_thumb": [
                "https://shofy.botble.com/storage/main/products/product-8-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-7-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-3-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-15-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-details-desc-3-150x150.jpg"
            ],
            "image_with_sizes": {
                "origin": [
                    "https://shofy.botble.com/storage/main/products/product-8-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-7-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-3-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-15-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-3-600x600.jpg"
                ],
                "thumb": [
                    "https://shofy.botble.com/storage/main/products/product-8-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-7-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-3-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-15-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-3-150x150.jpg"
                ],
                "medium": [
                    "https://shofy.botble.com/storage/main/products/product-8-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-7-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-3-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-15-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-3-600x600.jpg"
                ],
                "rectangle": [
                    "https://shofy.botble.com/storage/main/products/product-8-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-7-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-3-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-15-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-3-420x270.jpg"
                ]
            },
            "weight": 532,
            "height": 12,
            "wide": 19,
            "length": 11,
            "image_url": "https://shofy.botble.com/storage/main/products/product-8-150x150.jpg",
            "product_options": [],
            "store": {
                "id": 1,
                "slug": "gopro",
                "name": "GoPro"
            }
        },
        {
            "id": 52,
            "slug": "nvidia-shield-tv-pro-digital",
            "url": "https://shofy.botble.com/products/nvidia-shield-tv-pro-digital",
            "name": "NVIDIA SHIELD TV Pro (Digital)",
            "sku": "4Z-195",
            "description": "We can provide exceptional noise isolation and the best all-day comfort by mixing firm foam for the outer with soft foam for the interior of the ear cushions. So that you may receive Active Noise-Cancellation (ANC) performance that is even greater in a headset that you can wear for whatever length you wish.",
            "content": "<div class=\"row justify-content-center\">\n    <div class=\"col-xl-10\">\n        <div class=\"tp-product-details-desc-item pb-105\">\n            <div class=\"row\">\n                <div class=\"col-lg-6\">\n                    <div class=\"pt-25\">\n                        <span>Galaxy A8 tablet</span>\n                        <h3 class=\"tp-product-details-desc-title\">Your world at a glance</h3>\n                        <p>\n                            With a slim design, a vibrant entertainment system, and <br>\n                            outstanding performance, the new Galaxy Tab A7 is a stylish new <br>\n                            companion for your life.Dive head-first into the things you love, <br>\n                            and easily share your favorite moments. Learn, explore, connect <br>\n                            and be inspired.\n                        </p>\n                    </div>\n                    <div>\n                        <h3 class=\"tp-product-details-desc-title\">Draw inspiration with S Pen</h3>\n                        <p>\n                            S Pen is a bundle of writing instruments in one. Its natural grip, <br>\n                            low latency and impressive pressure sensitivity will make it your go-to for everything from drawing to editing documents. And S Pen won't get misplaced thanks.\n                        </p>\n                    </div>\n                </div>\n                <div class=\"col-lg-6\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-1.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item pb-75\">\n            <div class=\"row\">\n                <div class=\"col-lg-7\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-2.jpg\" alt=\"product\">\n                    </div>\n                </div>\n\n                <div class=\"col-lg-5 order-first order-lg-last\">\n                    <div class=\"des-content-2 pl-40\">\n                        <h3 class=\"tp-product-details-desc-title\">\n                            Carry with <br>\n                            Confidence and style\n                        </h3>\n                        <p>\n                            Wrap your tablet in a sleek case that's as stylish as it is convenient. Galaxy Tab S6 Lite Book Cover folds around and clings magnetically, so you can easily gear up as you're headed out the door. There's even a\n                            compartment for S pen, so you can be sure it doesn't get left behind.\n                        </p>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item\">\n            <div class=\"row\">\n                <div class=\"col-xl-12\">\n                    <div class=\"tp-product-details-desc-banner text-center m-img\">\n                        <h3 class=\"tp-product-details-desc-banner-title tp-product-details-desc-title\">Speed Memory Power = Epic Races</h3>\n                        <img src=\"/storage/main/products/product-details-desc-3.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n",
            "with_storehouse_management": true,
            "quantity": 13,
            "is_out_of_stock": false,
            "stock_status_label": "In stock",
            "stock_status_html": "<span class=\"text-success\">In stock</span>",
            "price": 1169,
            "price_formatted": "$1,169.00",
            "original_price": 2313,
            "original_price_formatted": "$2,313.00",
            "reviews_avg": 3.56,
            "reviews_count": 9,
            "images": [
                "https://shofy.botble.com/storage/main/products/product-1.jpg",
                "https://shofy.botble.com/storage/main/products/product-15.jpg",
                "https://shofy.botble.com/storage/main/products/product-7.jpg"
            ],
            "images_thumb": [
                "https://shofy.botble.com/storage/main/products/product-1-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-15-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-7-150x150.jpg"
            ],
            "image_with_sizes": {
                "origin": [
                    "https://shofy.botble.com/storage/main/products/product-1-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-15-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-7-600x600.jpg"
                ],
                "thumb": [
                    "https://shofy.botble.com/storage/main/products/product-1-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-15-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-7-150x150.jpg"
                ],
                "medium": [
                    "https://shofy.botble.com/storage/main/products/product-1-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-15-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-7-600x600.jpg"
                ],
                "rectangle": [
                    "https://shofy.botble.com/storage/main/products/product-1-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-15-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-7-420x270.jpg"
                ]
            },
            "weight": 840,
            "height": 16,
            "wide": 19,
            "length": 11,
            "image_url": "https://shofy.botble.com/storage/main/products/product-1-150x150.jpg",
            "product_options": [],
            "store": {
                "id": 1,
                "slug": "gopro",
                "name": "GoPro"
            }
        },
        {
            "id": 53,
            "slug": "sonos-beam-gen-2-soundbar",
            "url": "https://shofy.botble.com/products/sonos-beam-gen-2-soundbar",
            "name": "Sonos Beam Gen 2 Soundbar",
            "sku": "9F-104",
            "description": "Additionally, this includes a redesigned microphone boom arm that is 33 percent shorter than the Evolve 75 and offers the industry-leading call performance for which Jabra headsets are known.",
            "content": "<div class=\"row justify-content-center\">\n    <div class=\"col-xl-10\">\n        <div class=\"tp-product-details-desc-item pb-105\">\n            <div class=\"row\">\n                <div class=\"col-lg-6\">\n                    <div class=\"pt-25\">\n                        <span>Galaxy A8 tablet</span>\n                        <h3 class=\"tp-product-details-desc-title\">Your world at a glance</h3>\n                        <p>\n                            With a slim design, a vibrant entertainment system, and <br>\n                            outstanding performance, the new Galaxy Tab A7 is a stylish new <br>\n                            companion for your life.Dive head-first into the things you love, <br>\n                            and easily share your favorite moments. Learn, explore, connect <br>\n                            and be inspired.\n                        </p>\n                    </div>\n                    <div>\n                        <h3 class=\"tp-product-details-desc-title\">Draw inspiration with S Pen</h3>\n                        <p>\n                            S Pen is a bundle of writing instruments in one. Its natural grip, <br>\n                            low latency and impressive pressure sensitivity will make it your go-to for everything from drawing to editing documents. And S Pen won't get misplaced thanks.\n                        </p>\n                    </div>\n                </div>\n                <div class=\"col-lg-6\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-1.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item pb-75\">\n            <div class=\"row\">\n                <div class=\"col-lg-7\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-2.jpg\" alt=\"product\">\n                    </div>\n                </div>\n\n                <div class=\"col-lg-5 order-first order-lg-last\">\n                    <div class=\"des-content-2 pl-40\">\n                        <h3 class=\"tp-product-details-desc-title\">\n                            Carry with <br>\n                            Confidence and style\n                        </h3>\n                        <p>\n                            Wrap your tablet in a sleek case that's as stylish as it is convenient. Galaxy Tab S6 Lite Book Cover folds around and clings magnetically, so you can easily gear up as you're headed out the door. There's even a\n                            compartment for S pen, so you can be sure it doesn't get left behind.\n                        </p>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item\">\n            <div class=\"row\">\n                <div class=\"col-xl-12\">\n                    <div class=\"tp-product-details-desc-banner text-center m-img\">\n                        <h3 class=\"tp-product-details-desc-banner-title tp-product-details-desc-title\">Speed Memory Power = Epic Races</h3>\n                        <img src=\"/storage/main/products/product-details-desc-3.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n",
            "with_storehouse_management": true,
            "quantity": 20,
            "is_out_of_stock": false,
            "stock_status_label": "In stock",
            "stock_status_html": "<span class=\"text-success\">In stock</span>",
            "price": 629,
            "price_formatted": "$629.00",
            "original_price": 2302,
            "original_price_formatted": "$2,302.00",
            "reviews_avg": 2.7,
            "reviews_count": 10,
            "images": [
                "https://shofy.botble.com/storage/main/products/product-details-desc-2.jpg",
                "https://shofy.botble.com/storage/main/products/product-19.jpg",
                "https://shofy.botble.com/storage/main/products/product-14.jpg",
                "https://shofy.botble.com/storage/main/products/product-6.jpg",
                "https://shofy.botble.com/storage/main/products/product-18.jpg",
                "https://shofy.botble.com/storage/main/products/product-20.jpg"
            ],
            "images_thumb": [
                "https://shofy.botble.com/storage/main/products/product-details-desc-2-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-19-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-14-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-6-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-18-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-20-150x150.jpg"
            ],
            "image_with_sizes": {
                "origin": [
                    "https://shofy.botble.com/storage/main/products/product-details-desc-2-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-14-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-6-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-18-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-20-600x600.jpg"
                ],
                "thumb": [
                    "https://shofy.botble.com/storage/main/products/product-details-desc-2-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-14-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-6-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-18-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-20-150x150.jpg"
                ],
                "medium": [
                    "https://shofy.botble.com/storage/main/products/product-details-desc-2-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-14-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-6-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-18-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-20-600x600.jpg"
                ],
                "rectangle": [
                    "https://shofy.botble.com/storage/main/products/product-details-desc-2-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-14-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-6-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-18-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-20-420x270.jpg"
                ]
            },
            "weight": 852,
            "height": 14,
            "wide": 12,
            "length": 14,
            "image_url": "https://shofy.botble.com/storage/main/products/product-details-desc-2-150x150.jpg",
            "product_options": [],
            "store": {
                "id": 5,
                "slug": "roberts-store",
                "name": "Robert’s Store"
            }
        },
        {
            "id": 54,
            "slug": "bose-smart-soundbar-900",
            "url": "https://shofy.botble.com/products/bose-smart-soundbar-900",
            "name": "Bose Smart Soundbar 900",
            "sku": "KA-111",
            "description": "With this intelligent headset, you can stay connected and productive from the first call of the day to the last train home. With an ergonomic earcup design, this headset invented a brand-new dual-foam technology. You will be comfortable from the first call to the last thanks to the re-engineered leatherette ear cushion design that allows for better airflow.",
            "content": "<div class=\"row justify-content-center\">\n    <div class=\"col-xl-10\">\n        <div class=\"tp-product-details-desc-item pb-105\">\n            <div class=\"row\">\n                <div class=\"col-lg-6\">\n                    <div class=\"pt-25\">\n                        <span>Galaxy A8 tablet</span>\n                        <h3 class=\"tp-product-details-desc-title\">Your world at a glance</h3>\n                        <p>\n                            With a slim design, a vibrant entertainment system, and <br>\n                            outstanding performance, the new Galaxy Tab A7 is a stylish new <br>\n                            companion for your life.Dive head-first into the things you love, <br>\n                            and easily share your favorite moments. Learn, explore, connect <br>\n                            and be inspired.\n                        </p>\n                    </div>\n                    <div>\n                        <h3 class=\"tp-product-details-desc-title\">Draw inspiration with S Pen</h3>\n                        <p>\n                            S Pen is a bundle of writing instruments in one. Its natural grip, <br>\n                            low latency and impressive pressure sensitivity will make it your go-to for everything from drawing to editing documents. And S Pen won't get misplaced thanks.\n                        </p>\n                    </div>\n                </div>\n                <div class=\"col-lg-6\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-1.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item pb-75\">\n            <div class=\"row\">\n                <div class=\"col-lg-7\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-2.jpg\" alt=\"product\">\n                    </div>\n                </div>\n\n                <div class=\"col-lg-5 order-first order-lg-last\">\n                    <div class=\"des-content-2 pl-40\">\n                        <h3 class=\"tp-product-details-desc-title\">\n                            Carry with <br>\n                            Confidence and style\n                        </h3>\n                        <p>\n                            Wrap your tablet in a sleek case that's as stylish as it is convenient. Galaxy Tab S6 Lite Book Cover folds around and clings magnetically, so you can easily gear up as you're headed out the door. There's even a\n                            compartment for S pen, so you can be sure it doesn't get left behind.\n                        </p>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item\">\n            <div class=\"row\">\n                <div class=\"col-xl-12\">\n                    <div class=\"tp-product-details-desc-banner text-center m-img\">\n                        <h3 class=\"tp-product-details-desc-banner-title tp-product-details-desc-title\">Speed Memory Power = Epic Races</h3>\n                        <img src=\"/storage/main/products/product-details-desc-3.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n",
            "with_storehouse_management": true,
            "quantity": 15,
            "is_out_of_stock": false,
            "stock_status_label": "In stock",
            "stock_status_html": "<span class=\"text-success\">In stock</span>",
            "price": 1894,
            "price_formatted": "$1,894.00",
            "original_price": 2240,
            "original_price_formatted": "$2,240.00",
            "reviews_avg": 2.5,
            "reviews_count": 6,
            "images": [
                "https://shofy.botble.com/storage/main/products/product-12.jpg",
                "https://shofy.botble.com/storage/main/products/product-10.jpg",
                "https://shofy.botble.com/storage/main/products/product-19.jpg",
                "https://shofy.botble.com/storage/main/products/product-20.jpg",
                "https://shofy.botble.com/storage/main/products/product-5.jpg"
            ],
            "images_thumb": [
                "https://shofy.botble.com/storage/main/products/product-12-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-10-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-19-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-20-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-5-150x150.jpg"
            ],
            "image_with_sizes": {
                "origin": [
                    "https://shofy.botble.com/storage/main/products/product-12-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-10-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-20-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-600x600.jpg"
                ],
                "thumb": [
                    "https://shofy.botble.com/storage/main/products/product-12-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-10-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-20-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-150x150.jpg"
                ],
                "medium": [
                    "https://shofy.botble.com/storage/main/products/product-12-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-10-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-20-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-600x600.jpg"
                ],
                "rectangle": [
                    "https://shofy.botble.com/storage/main/products/product-12-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-10-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-20-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-420x270.jpg"
                ]
            },
            "weight": 811,
            "height": 12,
            "wide": 17,
            "length": 11,
            "image_url": "https://shofy.botble.com/storage/main/products/product-12-150x150.jpg",
            "product_options": [],
            "store": {
                "id": 7,
                "slug": "starkist",
                "name": "StarKist"
            }
        },
        {
            "id": 55,
            "slug": "jbl-bar-91-soundbar-with-dolby-atmos",
            "url": "https://shofy.botble.com/products/jbl-bar-91-soundbar-with-dolby-atmos",
            "name": "JBL Bar 9.1 Soundbar with Dolby Atmos",
            "sku": "DW-137",
            "description": "It complies with Microsoft's Open Office criteria and is specially tuned for outstanding conversations in open-plan workplaces and other loud environments when the microphone boom arm is lowered in Performance Mode",
            "content": "<div class=\"row justify-content-center\">\n    <div class=\"col-xl-10\">\n        <div class=\"tp-product-details-desc-item pb-105\">\n            <div class=\"row\">\n                <div class=\"col-lg-6\">\n                    <div class=\"pt-25\">\n                        <span>Galaxy A8 tablet</span>\n                        <h3 class=\"tp-product-details-desc-title\">Your world at a glance</h3>\n                        <p>\n                            With a slim design, a vibrant entertainment system, and <br>\n                            outstanding performance, the new Galaxy Tab A7 is a stylish new <br>\n                            companion for your life.Dive head-first into the things you love, <br>\n                            and easily share your favorite moments. Learn, explore, connect <br>\n                            and be inspired.\n                        </p>\n                    </div>\n                    <div>\n                        <h3 class=\"tp-product-details-desc-title\">Draw inspiration with S Pen</h3>\n                        <p>\n                            S Pen is a bundle of writing instruments in one. Its natural grip, <br>\n                            low latency and impressive pressure sensitivity will make it your go-to for everything from drawing to editing documents. And S Pen won't get misplaced thanks.\n                        </p>\n                    </div>\n                </div>\n                <div class=\"col-lg-6\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-1.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item pb-75\">\n            <div class=\"row\">\n                <div class=\"col-lg-7\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-2.jpg\" alt=\"product\">\n                    </div>\n                </div>\n\n                <div class=\"col-lg-5 order-first order-lg-last\">\n                    <div class=\"des-content-2 pl-40\">\n                        <h3 class=\"tp-product-details-desc-title\">\n                            Carry with <br>\n                            Confidence and style\n                        </h3>\n                        <p>\n                            Wrap your tablet in a sleek case that's as stylish as it is convenient. Galaxy Tab S6 Lite Book Cover folds around and clings magnetically, so you can easily gear up as you're headed out the door. There's even a\n                            compartment for S pen, so you can be sure it doesn't get left behind.\n                        </p>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item\">\n            <div class=\"row\">\n                <div class=\"col-xl-12\">\n                    <div class=\"tp-product-details-desc-banner text-center m-img\">\n                        <h3 class=\"tp-product-details-desc-banner-title tp-product-details-desc-title\">Speed Memory Power = Epic Races</h3>\n                        <img src=\"/storage/main/products/product-details-desc-3.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n",
            "with_storehouse_management": true,
            "quantity": 19,
            "is_out_of_stock": false,
            "stock_status_label": "In stock",
            "stock_status_html": "<span class=\"text-success\">In stock</span>",
            "price": 461,
            "price_formatted": "$461.00",
            "original_price": 500,
            "original_price_formatted": "$500.00",
            "reviews_avg": 2.78,
            "reviews_count": 9,
            "images": [
                "https://shofy.botble.com/storage/main/products/product-10.jpg",
                "https://shofy.botble.com/storage/main/products/product-2.jpg",
                "https://shofy.botble.com/storage/main/products/product-19.jpg",
                "https://shofy.botble.com/storage/main/products/product-1.jpg",
                "https://shofy.botble.com/storage/main/products/product-details-desc-3.jpg"
            ],
            "images_thumb": [
                "https://shofy.botble.com/storage/main/products/product-10-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-2-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-19-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-1-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-details-desc-3-150x150.jpg"
            ],
            "image_with_sizes": {
                "origin": [
                    "https://shofy.botble.com/storage/main/products/product-10-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-2-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-1-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-3-600x600.jpg"
                ],
                "thumb": [
                    "https://shofy.botble.com/storage/main/products/product-10-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-2-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-1-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-3-150x150.jpg"
                ],
                "medium": [
                    "https://shofy.botble.com/storage/main/products/product-10-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-2-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-1-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-3-600x600.jpg"
                ],
                "rectangle": [
                    "https://shofy.botble.com/storage/main/products/product-10-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-2-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-1-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-3-420x270.jpg"
                ]
            },
            "weight": 667,
            "height": 10,
            "wide": 19,
            "length": 18,
            "image_url": "https://shofy.botble.com/storage/main/products/product-10-150x150.jpg",
            "product_options": [],
            "store": {
                "id": 7,
                "slug": "starkist",
                "name": "StarKist"
            }
        },
        {
            "id": 56,
            "slug": "sennheiser-ambeo-soundbar-digital",
            "url": "https://shofy.botble.com/products/sennheiser-ambeo-soundbar-digital",
            "name": "Sennheiser Ambeo Soundbar (Digital)",
            "sku": "QD-118-A1",
            "description": "Jabra Evolve2 75 USB-A MS Teams Stereo Headset The Jabra Evolve2 75 USB-A MS Teams Stereo Headset has replaced previous hybrid working standards. Industry-leading call quality thanks to top-notch audio engineering.",
            "content": "<div class=\"row justify-content-center\">\n    <div class=\"col-xl-10\">\n        <div class=\"tp-product-details-desc-item pb-105\">\n            <div class=\"row\">\n                <div class=\"col-lg-6\">\n                    <div class=\"pt-25\">\n                        <span>Galaxy A8 tablet</span>\n                        <h3 class=\"tp-product-details-desc-title\">Your world at a glance</h3>\n                        <p>\n                            With a slim design, a vibrant entertainment system, and <br>\n                            outstanding performance, the new Galaxy Tab A7 is a stylish new <br>\n                            companion for your life.Dive head-first into the things you love, <br>\n                            and easily share your favorite moments. Learn, explore, connect <br>\n                            and be inspired.\n                        </p>\n                    </div>\n                    <div>\n                        <h3 class=\"tp-product-details-desc-title\">Draw inspiration with S Pen</h3>\n                        <p>\n                            S Pen is a bundle of writing instruments in one. Its natural grip, <br>\n                            low latency and impressive pressure sensitivity will make it your go-to for everything from drawing to editing documents. And S Pen won't get misplaced thanks.\n                        </p>\n                    </div>\n                </div>\n                <div class=\"col-lg-6\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-1.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item pb-75\">\n            <div class=\"row\">\n                <div class=\"col-lg-7\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-2.jpg\" alt=\"product\">\n                    </div>\n                </div>\n\n                <div class=\"col-lg-5 order-first order-lg-last\">\n                    <div class=\"des-content-2 pl-40\">\n                        <h3 class=\"tp-product-details-desc-title\">\n                            Carry with <br>\n                            Confidence and style\n                        </h3>\n                        <p>\n                            Wrap your tablet in a sleek case that's as stylish as it is convenient. Galaxy Tab S6 Lite Book Cover folds around and clings magnetically, so you can easily gear up as you're headed out the door. There's even a\n                            compartment for S pen, so you can be sure it doesn't get left behind.\n                        </p>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item\">\n            <div class=\"row\">\n                <div class=\"col-xl-12\">\n                    <div class=\"tp-product-details-desc-banner text-center m-img\">\n                        <h3 class=\"tp-product-details-desc-banner-title tp-product-details-desc-title\">Speed Memory Power = Epic Races</h3>\n                        <img src=\"/storage/main/products/product-details-desc-3.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n",
            "with_storehouse_management": true,
            "quantity": 19,
            "is_out_of_stock": false,
            "stock_status_label": "In stock",
            "stock_status_html": "<span class=\"text-success\">In stock</span>",
            "price": 724.95,
            "price_formatted": "$724.95",
            "original_price": 895,
            "original_price_formatted": "$895.00",
            "reviews_avg": 3.22,
            "reviews_count": 9,
            "images": [
                "https://shofy.botble.com/storage/main/products/product-20.jpg",
                "https://shofy.botble.com/storage/main/products/product-details-desc-2.jpg",
                "https://shofy.botble.com/storage/main/products/product-details-desc-1.jpg",
                "https://shofy.botble.com/storage/main/products/product-7.jpg",
                "https://shofy.botble.com/storage/main/products/product-18.jpg"
            ],
            "images_thumb": [
                "https://shofy.botble.com/storage/main/products/product-20-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-details-desc-2-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-details-desc-1-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-7-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-18-150x150.jpg"
            ],
            "image_with_sizes": {
                "origin": [
                    "https://shofy.botble.com/storage/main/products/product-20-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-2-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-1-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-7-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-18-600x600.jpg"
                ],
                "thumb": [
                    "https://shofy.botble.com/storage/main/products/product-20-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-2-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-1-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-7-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-18-150x150.jpg"
                ],
                "medium": [
                    "https://shofy.botble.com/storage/main/products/product-20-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-2-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-1-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-7-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-18-600x600.jpg"
                ],
                "rectangle": [
                    "https://shofy.botble.com/storage/main/products/product-20-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-2-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-1-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-7-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-18-420x270.jpg"
                ]
            },
            "weight": 821,
            "height": 13,
            "wide": 11,
            "length": 12,
            "image_url": "https://shofy.botble.com/storage/main/products/product-20-150x150.jpg",
            "product_options": [],
            "store": {
                "id": 2,
                "slug": "global-office",
                "name": "Global Office"
            }
        },
        {
            "id": 57,
            "slug": "sony-ht-a9-home-theater-system",
            "url": "https://shofy.botble.com/products/sony-ht-a9-home-theater-system",
            "name": "Sony HT-A9 Home Theater System",
            "sku": "UL-112-A1",
            "description": "With this intelligent headset, you can stay connected and productive from the first call of the day to the last train home. With an ergonomic earcup design, this headset invented a brand-new dual-foam technology. You will be comfortable from the first call to the last thanks to the re-engineered leatherette ear cushion design that allows for better airflow.",
            "content": "<div class=\"row justify-content-center\">\n    <div class=\"col-xl-10\">\n        <div class=\"tp-product-details-desc-item pb-105\">\n            <div class=\"row\">\n                <div class=\"col-lg-6\">\n                    <div class=\"pt-25\">\n                        <span>Galaxy A8 tablet</span>\n                        <h3 class=\"tp-product-details-desc-title\">Your world at a glance</h3>\n                        <p>\n                            With a slim design, a vibrant entertainment system, and <br>\n                            outstanding performance, the new Galaxy Tab A7 is a stylish new <br>\n                            companion for your life.Dive head-first into the things you love, <br>\n                            and easily share your favorite moments. Learn, explore, connect <br>\n                            and be inspired.\n                        </p>\n                    </div>\n                    <div>\n                        <h3 class=\"tp-product-details-desc-title\">Draw inspiration with S Pen</h3>\n                        <p>\n                            S Pen is a bundle of writing instruments in one. Its natural grip, <br>\n                            low latency and impressive pressure sensitivity will make it your go-to for everything from drawing to editing documents. And S Pen won't get misplaced thanks.\n                        </p>\n                    </div>\n                </div>\n                <div class=\"col-lg-6\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-1.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item pb-75\">\n            <div class=\"row\">\n                <div class=\"col-lg-7\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-2.jpg\" alt=\"product\">\n                    </div>\n                </div>\n\n                <div class=\"col-lg-5 order-first order-lg-last\">\n                    <div class=\"des-content-2 pl-40\">\n                        <h3 class=\"tp-product-details-desc-title\">\n                            Carry with <br>\n                            Confidence and style\n                        </h3>\n                        <p>\n                            Wrap your tablet in a sleek case that's as stylish as it is convenient. Galaxy Tab S6 Lite Book Cover folds around and clings magnetically, so you can easily gear up as you're headed out the door. There's even a\n                            compartment for S pen, so you can be sure it doesn't get left behind.\n                        </p>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item\">\n            <div class=\"row\">\n                <div class=\"col-xl-12\">\n                    <div class=\"tp-product-details-desc-banner text-center m-img\">\n                        <h3 class=\"tp-product-details-desc-banner-title tp-product-details-desc-title\">Speed Memory Power = Epic Races</h3>\n                        <img src=\"/storage/main/products/product-details-desc-3.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n",
            "with_storehouse_management": true,
            "quantity": 18,
            "is_out_of_stock": false,
            "stock_status_label": "In stock",
            "stock_status_html": "<span class=\"text-success\">In stock</span>",
            "price": 1238,
            "price_formatted": "$1,238.00",
            "original_price": 1238,
            "original_price_formatted": "$1,238.00",
            "reviews_avg": 3.5,
            "reviews_count": 6,
            "images": [
                "https://shofy.botble.com/storage/main/products/product-11.jpg",
                "https://shofy.botble.com/storage/main/products/product-17.jpg",
                "https://shofy.botble.com/storage/main/products/product-9.jpg",
                "https://shofy.botble.com/storage/main/products/product-10.jpg",
                "https://shofy.botble.com/storage/main/products/product-8.jpg",
                "https://shofy.botble.com/storage/main/products/product-details-desc-3.jpg",
                "https://shofy.botble.com/storage/main/products/product-19.jpg"
            ],
            "images_thumb": [
                "https://shofy.botble.com/storage/main/products/product-11-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-17-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-9-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-10-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-8-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-details-desc-3-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-19-150x150.jpg"
            ],
            "image_with_sizes": {
                "origin": [
                    "https://shofy.botble.com/storage/main/products/product-11-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-17-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-9-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-10-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-8-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-3-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-600x600.jpg"
                ],
                "thumb": [
                    "https://shofy.botble.com/storage/main/products/product-11-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-17-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-9-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-10-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-8-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-3-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-150x150.jpg"
                ],
                "medium": [
                    "https://shofy.botble.com/storage/main/products/product-11-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-17-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-9-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-10-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-8-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-3-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-600x600.jpg"
                ],
                "rectangle": [
                    "https://shofy.botble.com/storage/main/products/product-11-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-17-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-9-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-10-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-8-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-3-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-420x270.jpg"
                ]
            },
            "weight": 584,
            "height": 16,
            "wide": 12,
            "length": 16,
            "image_url": "https://shofy.botble.com/storage/main/products/product-11-150x150.jpg",
            "product_options": [],
            "store": {
                "id": 5,
                "slug": "roberts-store",
                "name": "Robert’s Store"
            }
        },
        {
            "id": 6,
            "slug": "dji-mavic-air-2-drone",
            "url": "https://shofy.botble.com/products/dji-mavic-air-2-drone",
            "name": "DJI Mavic Air 2 Drone",
            "sku": "ET-195",
            "description": "With this intelligent headset, you can stay connected and productive from the first call of the day to the last train home. With an ergonomic earcup design, this headset invented a brand-new dual-foam technology. You will be comfortable from the first call to the last thanks to the re-engineered leatherette ear cushion design that allows for better airflow.",
            "content": "<div class=\"row justify-content-center\">\n    <div class=\"col-xl-10\">\n        <div class=\"tp-product-details-desc-item pb-105\">\n            <div class=\"row\">\n                <div class=\"col-lg-6\">\n                    <div class=\"pt-25\">\n                        <span>Galaxy A8 tablet</span>\n                        <h3 class=\"tp-product-details-desc-title\">Your world at a glance</h3>\n                        <p>\n                            With a slim design, a vibrant entertainment system, and <br>\n                            outstanding performance, the new Galaxy Tab A7 is a stylish new <br>\n                            companion for your life.Dive head-first into the things you love, <br>\n                            and easily share your favorite moments. Learn, explore, connect <br>\n                            and be inspired.\n                        </p>\n                    </div>\n                    <div>\n                        <h3 class=\"tp-product-details-desc-title\">Draw inspiration with S Pen</h3>\n                        <p>\n                            S Pen is a bundle of writing instruments in one. Its natural grip, <br>\n                            low latency and impressive pressure sensitivity will make it your go-to for everything from drawing to editing documents. And S Pen won't get misplaced thanks.\n                        </p>\n                    </div>\n                </div>\n                <div class=\"col-lg-6\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-1.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item pb-75\">\n            <div class=\"row\">\n                <div class=\"col-lg-7\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-2.jpg\" alt=\"product\">\n                    </div>\n                </div>\n\n                <div class=\"col-lg-5 order-first order-lg-last\">\n                    <div class=\"des-content-2 pl-40\">\n                        <h3 class=\"tp-product-details-desc-title\">\n                            Carry with <br>\n                            Confidence and style\n                        </h3>\n                        <p>\n                            Wrap your tablet in a sleek case that's as stylish as it is convenient. Galaxy Tab S6 Lite Book Cover folds around and clings magnetically, so you can easily gear up as you're headed out the door. There's even a\n                            compartment for S pen, so you can be sure it doesn't get left behind.\n                        </p>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item\">\n            <div class=\"row\">\n                <div class=\"col-xl-12\">\n                    <div class=\"tp-product-details-desc-banner text-center m-img\">\n                        <h3 class=\"tp-product-details-desc-banner-title tp-product-details-desc-title\">Speed Memory Power = Epic Races</h3>\n                        <img src=\"/storage/main/products/product-details-desc-3.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n",
            "with_storehouse_management": true,
            "quantity": 17,
            "is_out_of_stock": false,
            "stock_status_label": "In stock",
            "stock_status_html": "<span class=\"text-success\">In stock</span>",
            "price": 686.16,
            "price_formatted": "$686.16",
            "original_price": 2307,
            "original_price_formatted": "$2,307.00",
            "reviews_avg": 3.78,
            "reviews_count": 9,
            "images": [
                "https://shofy.botble.com/storage/main/products/product-6.jpg",
                "https://shofy.botble.com/storage/main/products/product-19.jpg",
                "https://shofy.botble.com/storage/main/products/product-details-desc-2.jpg",
                "https://shofy.botble.com/storage/main/products/product-12.jpg",
                "https://shofy.botble.com/storage/main/products/product-16.jpg",
                "https://shofy.botble.com/storage/main/products/product-17.jpg"
            ],
            "images_thumb": [
                "https://shofy.botble.com/storage/main/products/product-6-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-19-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-details-desc-2-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-12-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-16-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-17-150x150.jpg"
            ],
            "image_with_sizes": {
                "origin": [
                    "https://shofy.botble.com/storage/main/products/product-6-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-2-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-12-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-16-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-17-600x600.jpg"
                ],
                "thumb": [
                    "https://shofy.botble.com/storage/main/products/product-6-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-2-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-12-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-16-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-17-150x150.jpg"
                ],
                "medium": [
                    "https://shofy.botble.com/storage/main/products/product-6-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-2-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-12-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-16-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-17-600x600.jpg"
                ],
                "rectangle": [
                    "https://shofy.botble.com/storage/main/products/product-6-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-2-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-12-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-16-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-17-420x270.jpg"
                ]
            },
            "weight": 600,
            "height": 20,
            "wide": 13,
            "length": 18,
            "image_url": "https://shofy.botble.com/storage/main/products/product-6-150x150.jpg",
            "product_options": [],
            "store": {
                "id": 7,
                "slug": "starkist",
                "name": "StarKist"
            }
        },
        {
            "id": 7,
            "slug": "gopro-hero9-black-action-camera",
            "url": "https://shofy.botble.com/products/gopro-hero9-black-action-camera",
            "name": "GoPro HERO9 Black Action Camera",
            "sku": "RJ-149",
            "description": "We can provide exceptional noise isolation and the best all-day comfort by mixing firm foam for the outer with soft foam for the interior of the ear cushions. So that you may receive Active Noise-Cancellation (ANC) performance that is even greater in a headset that you can wear for whatever length you wish.",
            "content": "<div class=\"row justify-content-center\">\n    <div class=\"col-xl-10\">\n        <div class=\"tp-product-details-desc-item pb-105\">\n            <div class=\"row\">\n                <div class=\"col-lg-6\">\n                    <div class=\"pt-25\">\n                        <span>Galaxy A8 tablet</span>\n                        <h3 class=\"tp-product-details-desc-title\">Your world at a glance</h3>\n                        <p>\n                            With a slim design, a vibrant entertainment system, and <br>\n                            outstanding performance, the new Galaxy Tab A7 is a stylish new <br>\n                            companion for your life.Dive head-first into the things you love, <br>\n                            and easily share your favorite moments. Learn, explore, connect <br>\n                            and be inspired.\n                        </p>\n                    </div>\n                    <div>\n                        <h3 class=\"tp-product-details-desc-title\">Draw inspiration with S Pen</h3>\n                        <p>\n                            S Pen is a bundle of writing instruments in one. Its natural grip, <br>\n                            low latency and impressive pressure sensitivity will make it your go-to for everything from drawing to editing documents. And S Pen won't get misplaced thanks.\n                        </p>\n                    </div>\n                </div>\n                <div class=\"col-lg-6\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-1.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item pb-75\">\n            <div class=\"row\">\n                <div class=\"col-lg-7\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-2.jpg\" alt=\"product\">\n                    </div>\n                </div>\n\n                <div class=\"col-lg-5 order-first order-lg-last\">\n                    <div class=\"des-content-2 pl-40\">\n                        <h3 class=\"tp-product-details-desc-title\">\n                            Carry with <br>\n                            Confidence and style\n                        </h3>\n                        <p>\n                            Wrap your tablet in a sleek case that's as stylish as it is convenient. Galaxy Tab S6 Lite Book Cover folds around and clings magnetically, so you can easily gear up as you're headed out the door. There's even a\n                            compartment for S pen, so you can be sure it doesn't get left behind.\n                        </p>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item\">\n            <div class=\"row\">\n                <div class=\"col-xl-12\">\n                    <div class=\"tp-product-details-desc-banner text-center m-img\">\n                        <h3 class=\"tp-product-details-desc-banner-title tp-product-details-desc-title\">Speed Memory Power = Epic Races</h3>\n                        <img src=\"/storage/main/products/product-details-desc-3.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n",
            "with_storehouse_management": true,
            "quantity": 11,
            "is_out_of_stock": false,
            "stock_status_label": "In stock",
            "stock_status_html": "<span class=\"text-success\">In stock</span>",
            "price": 602.08,
            "price_formatted": "$602.08",
            "original_price": 1586,
            "original_price_formatted": "$1,586.00",
            "reviews_avg": 3.88,
            "reviews_count": 8,
            "images": [
                "https://shofy.botble.com/storage/main/products/product-14.jpg",
                "https://shofy.botble.com/storage/main/products/product-12.jpg",
                "https://shofy.botble.com/storage/main/products/product-19.jpg",
                "https://shofy.botble.com/storage/main/products/product-9.jpg"
            ],
            "images_thumb": [
                "https://shofy.botble.com/storage/main/products/product-14-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-12-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-19-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-9-150x150.jpg"
            ],
            "image_with_sizes": {
                "origin": [
                    "https://shofy.botble.com/storage/main/products/product-14-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-12-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-9-600x600.jpg"
                ],
                "thumb": [
                    "https://shofy.botble.com/storage/main/products/product-14-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-12-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-9-150x150.jpg"
                ],
                "medium": [
                    "https://shofy.botble.com/storage/main/products/product-14-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-12-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-9-600x600.jpg"
                ],
                "rectangle": [
                    "https://shofy.botble.com/storage/main/products/product-14-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-12-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-9-420x270.jpg"
                ]
            },
            "weight": 842,
            "height": 11,
            "wide": 19,
            "length": 18,
            "image_url": "https://shofy.botble.com/storage/main/products/product-14-150x150.jpg",
            "product_options": [],
            "store": {
                "id": 6,
                "slug": "stouffer",
                "name": "Stouffer"
            }
        },
        {
            "id": 8,
            "slug": "bose-soundlink-revolve-portable-bluetooth-speaker-digital",
            "url": "https://shofy.botble.com/products/bose-soundlink-revolve-portable-bluetooth-speaker-digital",
            "name": "Bose SoundLink Revolve+ Portable Bluetooth Speaker (Digital)",
            "sku": "MD-103",
            "description": "We can provide exceptional noise isolation and the best all-day comfort by mixing firm foam for the outer with soft foam for the interior of the ear cushions. So that you may receive Active Noise-Cancellation (ANC) performance that is even greater in a headset that you can wear for whatever length you wish.",
            "content": "<div class=\"row justify-content-center\">\n    <div class=\"col-xl-10\">\n        <div class=\"tp-product-details-desc-item pb-105\">\n            <div class=\"row\">\n                <div class=\"col-lg-6\">\n                    <div class=\"pt-25\">\n                        <span>Galaxy A8 tablet</span>\n                        <h3 class=\"tp-product-details-desc-title\">Your world at a glance</h3>\n                        <p>\n                            With a slim design, a vibrant entertainment system, and <br>\n                            outstanding performance, the new Galaxy Tab A7 is a stylish new <br>\n                            companion for your life.Dive head-first into the things you love, <br>\n                            and easily share your favorite moments. Learn, explore, connect <br>\n                            and be inspired.\n                        </p>\n                    </div>\n                    <div>\n                        <h3 class=\"tp-product-details-desc-title\">Draw inspiration with S Pen</h3>\n                        <p>\n                            S Pen is a bundle of writing instruments in one. Its natural grip, <br>\n                            low latency and impressive pressure sensitivity will make it your go-to for everything from drawing to editing documents. And S Pen won't get misplaced thanks.\n                        </p>\n                    </div>\n                </div>\n                <div class=\"col-lg-6\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-1.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item pb-75\">\n            <div class=\"row\">\n                <div class=\"col-lg-7\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-2.jpg\" alt=\"product\">\n                    </div>\n                </div>\n\n                <div class=\"col-lg-5 order-first order-lg-last\">\n                    <div class=\"des-content-2 pl-40\">\n                        <h3 class=\"tp-product-details-desc-title\">\n                            Carry with <br>\n                            Confidence and style\n                        </h3>\n                        <p>\n                            Wrap your tablet in a sleek case that's as stylish as it is convenient. Galaxy Tab S6 Lite Book Cover folds around and clings magnetically, so you can easily gear up as you're headed out the door. There's even a\n                            compartment for S pen, so you can be sure it doesn't get left behind.\n                        </p>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item\">\n            <div class=\"row\">\n                <div class=\"col-xl-12\">\n                    <div class=\"tp-product-details-desc-banner text-center m-img\">\n                        <h3 class=\"tp-product-details-desc-banner-title tp-product-details-desc-title\">Speed Memory Power = Epic Races</h3>\n                        <img src=\"/storage/main/products/product-details-desc-3.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n",
            "with_storehouse_management": true,
            "quantity": 19,
            "is_out_of_stock": false,
            "stock_status_label": "In stock",
            "stock_status_html": "<span class=\"text-success\">In stock</span>",
            "price": 168.6,
            "price_formatted": "$168.60",
            "original_price": 1673,
            "original_price_formatted": "$1,673.00",
            "reviews_avg": 1.86,
            "reviews_count": 7,
            "images": [
                "https://shofy.botble.com/storage/main/products/product-12.jpg",
                "https://shofy.botble.com/storage/main/products/product-5.jpg",
                "https://shofy.botble.com/storage/main/products/product-15.jpg",
                "https://shofy.botble.com/storage/main/products/product-details-desc-1.jpg",
                "https://shofy.botble.com/storage/main/products/product-2.jpg"
            ],
            "images_thumb": [
                "https://shofy.botble.com/storage/main/products/product-12-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-5-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-15-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-details-desc-1-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-2-150x150.jpg"
            ],
            "image_with_sizes": {
                "origin": [
                    "https://shofy.botble.com/storage/main/products/product-12-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-15-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-1-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-2-600x600.jpg"
                ],
                "thumb": [
                    "https://shofy.botble.com/storage/main/products/product-12-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-15-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-1-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-2-150x150.jpg"
                ],
                "medium": [
                    "https://shofy.botble.com/storage/main/products/product-12-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-15-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-1-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-2-600x600.jpg"
                ],
                "rectangle": [
                    "https://shofy.botble.com/storage/main/products/product-12-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-15-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-1-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-2-420x270.jpg"
                ]
            },
            "weight": 725,
            "height": 15,
            "wide": 12,
            "length": 14,
            "image_url": "https://shofy.botble.com/storage/main/products/product-12-150x150.jpg",
            "product_options": [],
            "store": {
                "id": 7,
                "slug": "starkist",
                "name": "StarKist"
            }
        },
        {
            "id": 9,
            "slug": "nest-learning-thermostat-3rd-generation",
            "url": "https://shofy.botble.com/products/nest-learning-thermostat-3rd-generation",
            "name": "Nest Learning Thermostat (3rd Generation)",
            "sku": "2Y-158-A1",
            "description": "It complies with Microsoft's Open Office criteria and is specially tuned for outstanding conversations in open-plan workplaces and other loud environments when the microphone boom arm is lowered in Performance Mode",
            "content": "<div class=\"row justify-content-center\">\n    <div class=\"col-xl-10\">\n        <div class=\"tp-product-details-desc-item pb-105\">\n            <div class=\"row\">\n                <div class=\"col-lg-6\">\n                    <div class=\"pt-25\">\n                        <span>Galaxy A8 tablet</span>\n                        <h3 class=\"tp-product-details-desc-title\">Your world at a glance</h3>\n                        <p>\n                            With a slim design, a vibrant entertainment system, and <br>\n                            outstanding performance, the new Galaxy Tab A7 is a stylish new <br>\n                            companion for your life.Dive head-first into the things you love, <br>\n                            and easily share your favorite moments. Learn, explore, connect <br>\n                            and be inspired.\n                        </p>\n                    </div>\n                    <div>\n                        <h3 class=\"tp-product-details-desc-title\">Draw inspiration with S Pen</h3>\n                        <p>\n                            S Pen is a bundle of writing instruments in one. Its natural grip, <br>\n                            low latency and impressive pressure sensitivity will make it your go-to for everything from drawing to editing documents. And S Pen won't get misplaced thanks.\n                        </p>\n                    </div>\n                </div>\n                <div class=\"col-lg-6\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-1.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item pb-75\">\n            <div class=\"row\">\n                <div class=\"col-lg-7\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-2.jpg\" alt=\"product\">\n                    </div>\n                </div>\n\n                <div class=\"col-lg-5 order-first order-lg-last\">\n                    <div class=\"des-content-2 pl-40\">\n                        <h3 class=\"tp-product-details-desc-title\">\n                            Carry with <br>\n                            Confidence and style\n                        </h3>\n                        <p>\n                            Wrap your tablet in a sleek case that's as stylish as it is convenient. Galaxy Tab S6 Lite Book Cover folds around and clings magnetically, so you can easily gear up as you're headed out the door. There's even a\n                            compartment for S pen, so you can be sure it doesn't get left behind.\n                        </p>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item\">\n            <div class=\"row\">\n                <div class=\"col-xl-12\">\n                    <div class=\"tp-product-details-desc-banner text-center m-img\">\n                        <h3 class=\"tp-product-details-desc-banner-title tp-product-details-desc-title\">Speed Memory Power = Epic Races</h3>\n                        <img src=\"/storage/main/products/product-details-desc-3.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n",
            "with_storehouse_management": true,
            "quantity": 13,
            "is_out_of_stock": false,
            "stock_status_label": "In stock",
            "stock_status_html": "<span class=\"text-success\">In stock</span>",
            "price": 937.02,
            "price_formatted": "$937.02",
            "original_price": 2037,
            "original_price_formatted": "$2,037.00",
            "reviews_avg": 3,
            "reviews_count": 8,
            "images": [
                "https://shofy.botble.com/storage/main/products/product-2.jpg",
                "https://shofy.botble.com/storage/main/products/product-14.jpg",
                "https://shofy.botble.com/storage/main/products/product-10.jpg",
                "https://shofy.botble.com/storage/main/products/product-5.jpg",
                "https://shofy.botble.com/storage/main/products/product-6.jpg",
                "https://shofy.botble.com/storage/main/products/product-19.jpg"
            ],
            "images_thumb": [
                "https://shofy.botble.com/storage/main/products/product-2-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-14-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-10-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-5-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-6-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-19-150x150.jpg"
            ],
            "image_with_sizes": {
                "origin": [
                    "https://shofy.botble.com/storage/main/products/product-2-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-14-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-10-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-6-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-600x600.jpg"
                ],
                "thumb": [
                    "https://shofy.botble.com/storage/main/products/product-2-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-14-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-10-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-6-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-150x150.jpg"
                ],
                "medium": [
                    "https://shofy.botble.com/storage/main/products/product-2-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-14-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-10-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-6-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-600x600.jpg"
                ],
                "rectangle": [
                    "https://shofy.botble.com/storage/main/products/product-2-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-14-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-10-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-6-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-420x270.jpg"
                ]
            },
            "weight": 889,
            "height": 20,
            "wide": 18,
            "length": 11,
            "image_url": "https://shofy.botble.com/storage/main/products/product-2-150x150.jpg",
            "product_options": [],
            "store": {
                "id": 6,
                "slug": "stouffer",
                "name": "Stouffer"
            }
        },
        {
            "id": 10,
            "slug": "ring-video-doorbell-pro",
            "url": "https://shofy.botble.com/products/ring-video-doorbell-pro",
            "name": "Ring Video Doorbell Pro",
            "sku": "3G-121",
            "description": "With this intelligent headset, you can stay connected and productive from the first call of the day to the last train home. With an ergonomic earcup design, this headset invented a brand-new dual-foam technology. You will be comfortable from the first call to the last thanks to the re-engineered leatherette ear cushion design that allows for better airflow.",
            "content": "<div class=\"row justify-content-center\">\n    <div class=\"col-xl-10\">\n        <div class=\"tp-product-details-desc-item pb-105\">\n            <div class=\"row\">\n                <div class=\"col-lg-6\">\n                    <div class=\"pt-25\">\n                        <span>Galaxy A8 tablet</span>\n                        <h3 class=\"tp-product-details-desc-title\">Your world at a glance</h3>\n                        <p>\n                            With a slim design, a vibrant entertainment system, and <br>\n                            outstanding performance, the new Galaxy Tab A7 is a stylish new <br>\n                            companion for your life.Dive head-first into the things you love, <br>\n                            and easily share your favorite moments. Learn, explore, connect <br>\n                            and be inspired.\n                        </p>\n                    </div>\n                    <div>\n                        <h3 class=\"tp-product-details-desc-title\">Draw inspiration with S Pen</h3>\n                        <p>\n                            S Pen is a bundle of writing instruments in one. Its natural grip, <br>\n                            low latency and impressive pressure sensitivity will make it your go-to for everything from drawing to editing documents. And S Pen won't get misplaced thanks.\n                        </p>\n                    </div>\n                </div>\n                <div class=\"col-lg-6\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-1.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item pb-75\">\n            <div class=\"row\">\n                <div class=\"col-lg-7\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-2.jpg\" alt=\"product\">\n                    </div>\n                </div>\n\n                <div class=\"col-lg-5 order-first order-lg-last\">\n                    <div class=\"des-content-2 pl-40\">\n                        <h3 class=\"tp-product-details-desc-title\">\n                            Carry with <br>\n                            Confidence and style\n                        </h3>\n                        <p>\n                            Wrap your tablet in a sleek case that's as stylish as it is convenient. Galaxy Tab S6 Lite Book Cover folds around and clings magnetically, so you can easily gear up as you're headed out the door. There's even a\n                            compartment for S pen, so you can be sure it doesn't get left behind.\n                        </p>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item\">\n            <div class=\"row\">\n                <div class=\"col-xl-12\">\n                    <div class=\"tp-product-details-desc-banner text-center m-img\">\n                        <h3 class=\"tp-product-details-desc-banner-title tp-product-details-desc-title\">Speed Memory Power = Epic Races</h3>\n                        <img src=\"/storage/main/products/product-details-desc-3.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n",
            "with_storehouse_management": true,
            "quantity": 19,
            "is_out_of_stock": false,
            "stock_status_label": "In stock",
            "stock_status_html": "<span class=\"text-success\">In stock</span>",
            "price": 456.48,
            "price_formatted": "$456.48",
            "original_price": 1060,
            "original_price_formatted": "$1,060.00",
            "reviews_avg": 2.33,
            "reviews_count": 9,
            "images": [
                "https://shofy.botble.com/storage/main/products/product-1.jpg",
                "https://shofy.botble.com/storage/main/products/product-5.jpg",
                "https://shofy.botble.com/storage/main/products/product-12.jpg",
                "https://shofy.botble.com/storage/main/products/product-16.jpg",
                "https://shofy.botble.com/storage/main/products/product-9.jpg"
            ],
            "images_thumb": [
                "https://shofy.botble.com/storage/main/products/product-1-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-5-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-12-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-16-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-9-150x150.jpg"
            ],
            "image_with_sizes": {
                "origin": [
                    "https://shofy.botble.com/storage/main/products/product-1-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-12-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-16-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-9-600x600.jpg"
                ],
                "thumb": [
                    "https://shofy.botble.com/storage/main/products/product-1-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-12-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-16-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-9-150x150.jpg"
                ],
                "medium": [
                    "https://shofy.botble.com/storage/main/products/product-1-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-12-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-16-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-9-600x600.jpg"
                ],
                "rectangle": [
                    "https://shofy.botble.com/storage/main/products/product-1-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-12-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-16-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-9-420x270.jpg"
                ]
            },
            "weight": 871,
            "height": 17,
            "wide": 15,
            "length": 15,
            "image_url": "https://shofy.botble.com/storage/main/products/product-1-150x150.jpg",
            "product_options": [],
            "store": {
                "id": 5,
                "slug": "roberts-store",
                "name": "Robert’s Store"
            }
        },
        {
            "id": 11,
            "slug": "amazon-echo-show-10-3rd-gen",
            "url": "https://shofy.botble.com/products/amazon-echo-show-10-3rd-gen",
            "name": "Amazon Echo Show 10 (3rd Gen)",
            "sku": "QL-168-A1",
            "description": "With this intelligent headset, you can stay connected and productive from the first call of the day to the last train home. With an ergonomic earcup design, this headset invented a brand-new dual-foam technology. You will be comfortable from the first call to the last thanks to the re-engineered leatherette ear cushion design that allows for better airflow.",
            "content": "<div class=\"row justify-content-center\">\n    <div class=\"col-xl-10\">\n        <div class=\"tp-product-details-desc-item pb-105\">\n            <div class=\"row\">\n                <div class=\"col-lg-6\">\n                    <div class=\"pt-25\">\n                        <span>Galaxy A8 tablet</span>\n                        <h3 class=\"tp-product-details-desc-title\">Your world at a glance</h3>\n                        <p>\n                            With a slim design, a vibrant entertainment system, and <br>\n                            outstanding performance, the new Galaxy Tab A7 is a stylish new <br>\n                            companion for your life.Dive head-first into the things you love, <br>\n                            and easily share your favorite moments. Learn, explore, connect <br>\n                            and be inspired.\n                        </p>\n                    </div>\n                    <div>\n                        <h3 class=\"tp-product-details-desc-title\">Draw inspiration with S Pen</h3>\n                        <p>\n                            S Pen is a bundle of writing instruments in one. Its natural grip, <br>\n                            low latency and impressive pressure sensitivity will make it your go-to for everything from drawing to editing documents. And S Pen won't get misplaced thanks.\n                        </p>\n                    </div>\n                </div>\n                <div class=\"col-lg-6\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-1.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item pb-75\">\n            <div class=\"row\">\n                <div class=\"col-lg-7\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-2.jpg\" alt=\"product\">\n                    </div>\n                </div>\n\n                <div class=\"col-lg-5 order-first order-lg-last\">\n                    <div class=\"des-content-2 pl-40\">\n                        <h3 class=\"tp-product-details-desc-title\">\n                            Carry with <br>\n                            Confidence and style\n                        </h3>\n                        <p>\n                            Wrap your tablet in a sleek case that's as stylish as it is convenient. Galaxy Tab S6 Lite Book Cover folds around and clings magnetically, so you can easily gear up as you're headed out the door. There's even a\n                            compartment for S pen, so you can be sure it doesn't get left behind.\n                        </p>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item\">\n            <div class=\"row\">\n                <div class=\"col-xl-12\">\n                    <div class=\"tp-product-details-desc-banner text-center m-img\">\n                        <h3 class=\"tp-product-details-desc-banner-title tp-product-details-desc-title\">Speed Memory Power = Epic Races</h3>\n                        <img src=\"/storage/main/products/product-details-desc-3.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n",
            "with_storehouse_management": true,
            "quantity": 11,
            "is_out_of_stock": false,
            "stock_status_label": "In stock",
            "stock_status_html": "<span class=\"text-success\">In stock</span>",
            "price": 1355,
            "price_formatted": "$1,355.00",
            "original_price": 1355,
            "original_price_formatted": "$1,355.00",
            "reviews_avg": 3.75,
            "reviews_count": 8,
            "images": [
                "https://shofy.botble.com/storage/main/products/product-11.jpg",
                "https://shofy.botble.com/storage/main/products/product-10.jpg",
                "https://shofy.botble.com/storage/main/products/product-8.jpg",
                "https://shofy.botble.com/storage/main/products/product-5.jpg",
                "https://shofy.botble.com/storage/main/products/product-13.jpg"
            ],
            "images_thumb": [
                "https://shofy.botble.com/storage/main/products/product-11-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-10-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-8-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-5-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-13-150x150.jpg"
            ],
            "image_with_sizes": {
                "origin": [
                    "https://shofy.botble.com/storage/main/products/product-11-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-10-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-8-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-13-600x600.jpg"
                ],
                "thumb": [
                    "https://shofy.botble.com/storage/main/products/product-11-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-10-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-8-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-13-150x150.jpg"
                ],
                "medium": [
                    "https://shofy.botble.com/storage/main/products/product-11-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-10-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-8-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-13-600x600.jpg"
                ],
                "rectangle": [
                    "https://shofy.botble.com/storage/main/products/product-11-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-10-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-8-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-13-420x270.jpg"
                ]
            },
            "weight": 852,
            "height": 20,
            "wide": 19,
            "length": 17,
            "image_url": "https://shofy.botble.com/storage/main/products/product-11-150x150.jpg",
            "product_options": [],
            "store": {
                "id": 6,
                "slug": "stouffer",
                "name": "Stouffer"
            }
        },
        {
            "id": 12,
            "slug": "samsung-qn90a-neo-qled-4k-smart-tv-digital",
            "url": "https://shofy.botble.com/products/samsung-qn90a-neo-qled-4k-smart-tv-digital",
            "name": "Samsung QN90A Neo QLED 4K Smart TV (Digital)",
            "sku": "ZK-134",
            "description": "It complies with Microsoft's Open Office criteria and is specially tuned for outstanding conversations in open-plan workplaces and other loud environments when the microphone boom arm is lowered in Performance Mode",
            "content": "<div class=\"row justify-content-center\">\n    <div class=\"col-xl-10\">\n        <div class=\"tp-product-details-desc-item pb-105\">\n            <div class=\"row\">\n                <div class=\"col-lg-6\">\n                    <div class=\"pt-25\">\n                        <span>Galaxy A8 tablet</span>\n                        <h3 class=\"tp-product-details-desc-title\">Your world at a glance</h3>\n                        <p>\n                            With a slim design, a vibrant entertainment system, and <br>\n                            outstanding performance, the new Galaxy Tab A7 is a stylish new <br>\n                            companion for your life.Dive head-first into the things you love, <br>\n                            and easily share your favorite moments. Learn, explore, connect <br>\n                            and be inspired.\n                        </p>\n                    </div>\n                    <div>\n                        <h3 class=\"tp-product-details-desc-title\">Draw inspiration with S Pen</h3>\n                        <p>\n                            S Pen is a bundle of writing instruments in one. Its natural grip, <br>\n                            low latency and impressive pressure sensitivity will make it your go-to for everything from drawing to editing documents. And S Pen won't get misplaced thanks.\n                        </p>\n                    </div>\n                </div>\n                <div class=\"col-lg-6\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-1.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item pb-75\">\n            <div class=\"row\">\n                <div class=\"col-lg-7\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-2.jpg\" alt=\"product\">\n                    </div>\n                </div>\n\n                <div class=\"col-lg-5 order-first order-lg-last\">\n                    <div class=\"des-content-2 pl-40\">\n                        <h3 class=\"tp-product-details-desc-title\">\n                            Carry with <br>\n                            Confidence and style\n                        </h3>\n                        <p>\n                            Wrap your tablet in a sleek case that's as stylish as it is convenient. Galaxy Tab S6 Lite Book Cover folds around and clings magnetically, so you can easily gear up as you're headed out the door. There's even a\n                            compartment for S pen, so you can be sure it doesn't get left behind.\n                        </p>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item\">\n            <div class=\"row\">\n                <div class=\"col-xl-12\">\n                    <div class=\"tp-product-details-desc-banner text-center m-img\">\n                        <h3 class=\"tp-product-details-desc-banner-title tp-product-details-desc-title\">Speed Memory Power = Epic Races</h3>\n                        <img src=\"/storage/main/products/product-details-desc-3.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n",
            "with_storehouse_management": true,
            "quantity": 13,
            "is_out_of_stock": false,
            "stock_status_label": "In stock",
            "stock_status_html": "<span class=\"text-success\">In stock</span>",
            "price": 128,
            "price_formatted": "$128.00",
            "original_price": 1076,
            "original_price_formatted": "$1,076.00",
            "reviews_avg": 2.75,
            "reviews_count": 8,
            "images": [
                "https://shofy.botble.com/storage/main/products/product-13.jpg",
                "https://shofy.botble.com/storage/main/products/product-5.jpg",
                "https://shofy.botble.com/storage/main/products/product-16.jpg",
                "https://shofy.botble.com/storage/main/products/product-18.jpg",
                "https://shofy.botble.com/storage/main/products/product-7.jpg"
            ],
            "images_thumb": [
                "https://shofy.botble.com/storage/main/products/product-13-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-5-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-16-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-18-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-7-150x150.jpg"
            ],
            "image_with_sizes": {
                "origin": [
                    "https://shofy.botble.com/storage/main/products/product-13-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-16-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-18-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-7-600x600.jpg"
                ],
                "thumb": [
                    "https://shofy.botble.com/storage/main/products/product-13-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-16-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-18-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-7-150x150.jpg"
                ],
                "medium": [
                    "https://shofy.botble.com/storage/main/products/product-13-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-16-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-18-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-7-600x600.jpg"
                ],
                "rectangle": [
                    "https://shofy.botble.com/storage/main/products/product-13-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-16-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-18-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-7-420x270.jpg"
                ]
            },
            "weight": 853,
            "height": 16,
            "wide": 11,
            "length": 13,
            "image_url": "https://shofy.botble.com/storage/main/products/product-13-150x150.jpg",
            "product_options": [],
            "store": {
                "id": 7,
                "slug": "starkist",
                "name": "StarKist"
            }
        },
        {
            "id": 13,
            "slug": "lg-oled-c1-series-4k-smart-tv",
            "url": "https://shofy.botble.com/products/lg-oled-c1-series-4k-smart-tv",
            "name": "LG OLED C1 Series 4K Smart TV",
            "sku": "84-158",
            "description": "With this intelligent headset, you can stay connected and productive from the first call of the day to the last train home. With an ergonomic earcup design, this headset invented a brand-new dual-foam technology. You will be comfortable from the first call to the last thanks to the re-engineered leatherette ear cushion design that allows for better airflow.",
            "content": "<div class=\"row justify-content-center\">\n    <div class=\"col-xl-10\">\n        <div class=\"tp-product-details-desc-item pb-105\">\n            <div class=\"row\">\n                <div class=\"col-lg-6\">\n                    <div class=\"pt-25\">\n                        <span>Galaxy A8 tablet</span>\n                        <h3 class=\"tp-product-details-desc-title\">Your world at a glance</h3>\n                        <p>\n                            With a slim design, a vibrant entertainment system, and <br>\n                            outstanding performance, the new Galaxy Tab A7 is a stylish new <br>\n                            companion for your life.Dive head-first into the things you love, <br>\n                            and easily share your favorite moments. Learn, explore, connect <br>\n                            and be inspired.\n                        </p>\n                    </div>\n                    <div>\n                        <h3 class=\"tp-product-details-desc-title\">Draw inspiration with S Pen</h3>\n                        <p>\n                            S Pen is a bundle of writing instruments in one. Its natural grip, <br>\n                            low latency and impressive pressure sensitivity will make it your go-to for everything from drawing to editing documents. And S Pen won't get misplaced thanks.\n                        </p>\n                    </div>\n                </div>\n                <div class=\"col-lg-6\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-1.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item pb-75\">\n            <div class=\"row\">\n                <div class=\"col-lg-7\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-2.jpg\" alt=\"product\">\n                    </div>\n                </div>\n\n                <div class=\"col-lg-5 order-first order-lg-last\">\n                    <div class=\"des-content-2 pl-40\">\n                        <h3 class=\"tp-product-details-desc-title\">\n                            Carry with <br>\n                            Confidence and style\n                        </h3>\n                        <p>\n                            Wrap your tablet in a sleek case that's as stylish as it is convenient. Galaxy Tab S6 Lite Book Cover folds around and clings magnetically, so you can easily gear up as you're headed out the door. There's even a\n                            compartment for S pen, so you can be sure it doesn't get left behind.\n                        </p>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item\">\n            <div class=\"row\">\n                <div class=\"col-xl-12\">\n                    <div class=\"tp-product-details-desc-banner text-center m-img\">\n                        <h3 class=\"tp-product-details-desc-banner-title tp-product-details-desc-title\">Speed Memory Power = Epic Races</h3>\n                        <img src=\"/storage/main/products/product-details-desc-3.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n",
            "with_storehouse_management": true,
            "quantity": 20,
            "is_out_of_stock": false,
            "stock_status_label": "In stock",
            "stock_status_html": "<span class=\"text-success\">In stock</span>",
            "price": 402,
            "price_formatted": "$402.00",
            "original_price": 453,
            "original_price_formatted": "$453.00",
            "reviews_avg": 3.14,
            "reviews_count": 7,
            "images": [
                "https://shofy.botble.com/storage/main/products/product-20.jpg",
                "https://shofy.botble.com/storage/main/products/product-19.jpg",
                "https://shofy.botble.com/storage/main/products/product-details-desc-1.jpg"
            ],
            "images_thumb": [
                "https://shofy.botble.com/storage/main/products/product-20-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-19-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-details-desc-1-150x150.jpg"
            ],
            "image_with_sizes": {
                "origin": [
                    "https://shofy.botble.com/storage/main/products/product-20-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-1-600x600.jpg"
                ],
                "thumb": [
                    "https://shofy.botble.com/storage/main/products/product-20-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-1-150x150.jpg"
                ],
                "medium": [
                    "https://shofy.botble.com/storage/main/products/product-20-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-1-600x600.jpg"
                ],
                "rectangle": [
                    "https://shofy.botble.com/storage/main/products/product-20-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-1-420x270.jpg"
                ]
            },
            "weight": 633,
            "height": 20,
            "wide": 14,
            "length": 16,
            "image_url": "https://shofy.botble.com/storage/main/products/product-20-150x150.jpg",
            "product_options": [],
            "store": {
                "id": 6,
                "slug": "stouffer",
                "name": "Stouffer"
            }
        },
        {
            "id": 14,
            "slug": "sony-x950h-4k-ultra-hd-smart-led-tv",
            "url": "https://shofy.botble.com/products/sony-x950h-4k-ultra-hd-smart-led-tv",
            "name": "Sony X950H 4K Ultra HD Smart LED TV",
            "sku": "8J-137",
            "description": "With this intelligent headset, you can stay connected and productive from the first call of the day to the last train home. With an ergonomic earcup design, this headset invented a brand-new dual-foam technology. You will be comfortable from the first call to the last thanks to the re-engineered leatherette ear cushion design that allows for better airflow.",
            "content": "<div class=\"row justify-content-center\">\n    <div class=\"col-xl-10\">\n        <div class=\"tp-product-details-desc-item pb-105\">\n            <div class=\"row\">\n                <div class=\"col-lg-6\">\n                    <div class=\"pt-25\">\n                        <span>Galaxy A8 tablet</span>\n                        <h3 class=\"tp-product-details-desc-title\">Your world at a glance</h3>\n                        <p>\n                            With a slim design, a vibrant entertainment system, and <br>\n                            outstanding performance, the new Galaxy Tab A7 is a stylish new <br>\n                            companion for your life.Dive head-first into the things you love, <br>\n                            and easily share your favorite moments. Learn, explore, connect <br>\n                            and be inspired.\n                        </p>\n                    </div>\n                    <div>\n                        <h3 class=\"tp-product-details-desc-title\">Draw inspiration with S Pen</h3>\n                        <p>\n                            S Pen is a bundle of writing instruments in one. Its natural grip, <br>\n                            low latency and impressive pressure sensitivity will make it your go-to for everything from drawing to editing documents. And S Pen won't get misplaced thanks.\n                        </p>\n                    </div>\n                </div>\n                <div class=\"col-lg-6\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-1.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item pb-75\">\n            <div class=\"row\">\n                <div class=\"col-lg-7\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-2.jpg\" alt=\"product\">\n                    </div>\n                </div>\n\n                <div class=\"col-lg-5 order-first order-lg-last\">\n                    <div class=\"des-content-2 pl-40\">\n                        <h3 class=\"tp-product-details-desc-title\">\n                            Carry with <br>\n                            Confidence and style\n                        </h3>\n                        <p>\n                            Wrap your tablet in a sleek case that's as stylish as it is convenient. Galaxy Tab S6 Lite Book Cover folds around and clings magnetically, so you can easily gear up as you're headed out the door. There's even a\n                            compartment for S pen, so you can be sure it doesn't get left behind.\n                        </p>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item\">\n            <div class=\"row\">\n                <div class=\"col-xl-12\">\n                    <div class=\"tp-product-details-desc-banner text-center m-img\">\n                        <h3 class=\"tp-product-details-desc-banner-title tp-product-details-desc-title\">Speed Memory Power = Epic Races</h3>\n                        <img src=\"/storage/main/products/product-details-desc-3.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n",
            "with_storehouse_management": true,
            "quantity": 14,
            "is_out_of_stock": false,
            "stock_status_label": "In stock",
            "stock_status_html": "<span class=\"text-success\">In stock</span>",
            "price": 1129,
            "price_formatted": "$1,129.00",
            "original_price": 2272,
            "original_price_formatted": "$2,272.00",
            "reviews_avg": 3.22,
            "reviews_count": 9,
            "images": [
                "https://shofy.botble.com/storage/main/products/product-2.jpg",
                "https://shofy.botble.com/storage/main/products/product-13.jpg",
                "https://shofy.botble.com/storage/main/products/product-14.jpg",
                "https://shofy.botble.com/storage/main/products/product-16.jpg",
                "https://shofy.botble.com/storage/main/products/product-8.jpg",
                "https://shofy.botble.com/storage/main/products/product-10.jpg",
                "https://shofy.botble.com/storage/main/products/product-3.jpg"
            ],
            "images_thumb": [
                "https://shofy.botble.com/storage/main/products/product-2-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-13-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-14-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-16-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-8-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-10-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-3-150x150.jpg"
            ],
            "image_with_sizes": {
                "origin": [
                    "https://shofy.botble.com/storage/main/products/product-2-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-13-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-14-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-16-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-8-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-10-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-3-600x600.jpg"
                ],
                "thumb": [
                    "https://shofy.botble.com/storage/main/products/product-2-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-13-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-14-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-16-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-8-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-10-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-3-150x150.jpg"
                ],
                "medium": [
                    "https://shofy.botble.com/storage/main/products/product-2-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-13-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-14-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-16-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-8-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-10-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-3-600x600.jpg"
                ],
                "rectangle": [
                    "https://shofy.botble.com/storage/main/products/product-2-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-13-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-14-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-16-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-8-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-10-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-3-420x270.jpg"
                ]
            },
            "weight": 622,
            "height": 13,
            "wide": 19,
            "length": 16,
            "image_url": "https://shofy.botble.com/storage/main/products/product-2-150x150.jpg",
            "product_options": [],
            "store": {
                "id": 5,
                "slug": "roberts-store",
                "name": "Robert’s Store"
            }
        },
        {
            "id": 15,
            "slug": "apple-watch-series-7",
            "url": "https://shofy.botble.com/products/apple-watch-series-7",
            "name": "Apple Watch Series 7",
            "sku": "UF-188-A1",
            "description": "It complies with Microsoft's Open Office criteria and is specially tuned for outstanding conversations in open-plan workplaces and other loud environments when the microphone boom arm is lowered in Performance Mode",
            "content": "<div class=\"row justify-content-center\">\n    <div class=\"col-xl-10\">\n        <div class=\"tp-product-details-desc-item pb-105\">\n            <div class=\"row\">\n                <div class=\"col-lg-6\">\n                    <div class=\"pt-25\">\n                        <span>Galaxy A8 tablet</span>\n                        <h3 class=\"tp-product-details-desc-title\">Your world at a glance</h3>\n                        <p>\n                            With a slim design, a vibrant entertainment system, and <br>\n                            outstanding performance, the new Galaxy Tab A7 is a stylish new <br>\n                            companion for your life.Dive head-first into the things you love, <br>\n                            and easily share your favorite moments. Learn, explore, connect <br>\n                            and be inspired.\n                        </p>\n                    </div>\n                    <div>\n                        <h3 class=\"tp-product-details-desc-title\">Draw inspiration with S Pen</h3>\n                        <p>\n                            S Pen is a bundle of writing instruments in one. Its natural grip, <br>\n                            low latency and impressive pressure sensitivity will make it your go-to for everything from drawing to editing documents. And S Pen won't get misplaced thanks.\n                        </p>\n                    </div>\n                </div>\n                <div class=\"col-lg-6\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-1.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item pb-75\">\n            <div class=\"row\">\n                <div class=\"col-lg-7\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-2.jpg\" alt=\"product\">\n                    </div>\n                </div>\n\n                <div class=\"col-lg-5 order-first order-lg-last\">\n                    <div class=\"des-content-2 pl-40\">\n                        <h3 class=\"tp-product-details-desc-title\">\n                            Carry with <br>\n                            Confidence and style\n                        </h3>\n                        <p>\n                            Wrap your tablet in a sleek case that's as stylish as it is convenient. Galaxy Tab S6 Lite Book Cover folds around and clings magnetically, so you can easily gear up as you're headed out the door. There's even a\n                            compartment for S pen, so you can be sure it doesn't get left behind.\n                        </p>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item\">\n            <div class=\"row\">\n                <div class=\"col-xl-12\">\n                    <div class=\"tp-product-details-desc-banner text-center m-img\">\n                        <h3 class=\"tp-product-details-desc-banner-title tp-product-details-desc-title\">Speed Memory Power = Epic Races</h3>\n                        <img src=\"/storage/main/products/product-details-desc-3.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n",
            "with_storehouse_management": true,
            "quantity": 18,
            "is_out_of_stock": false,
            "stock_status_label": "In stock",
            "stock_status_html": "<span class=\"text-success\">In stock</span>",
            "price": 1995,
            "price_formatted": "$1,995.00",
            "original_price": 1995,
            "original_price_formatted": "$1,995.00",
            "reviews_avg": 2.8,
            "reviews_count": 10,
            "images": [
                "https://shofy.botble.com/storage/main/products/product-16.jpg",
                "https://shofy.botble.com/storage/main/products/product-11.jpg",
                "https://shofy.botble.com/storage/main/products/product-14.jpg",
                "https://shofy.botble.com/storage/main/products/product-details-desc-2.jpg",
                "https://shofy.botble.com/storage/main/products/product-9.jpg"
            ],
            "images_thumb": [
                "https://shofy.botble.com/storage/main/products/product-16-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-11-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-14-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-details-desc-2-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-9-150x150.jpg"
            ],
            "image_with_sizes": {
                "origin": [
                    "https://shofy.botble.com/storage/main/products/product-16-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-11-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-14-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-2-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-9-600x600.jpg"
                ],
                "thumb": [
                    "https://shofy.botble.com/storage/main/products/product-16-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-11-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-14-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-2-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-9-150x150.jpg"
                ],
                "medium": [
                    "https://shofy.botble.com/storage/main/products/product-16-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-11-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-14-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-2-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-9-600x600.jpg"
                ],
                "rectangle": [
                    "https://shofy.botble.com/storage/main/products/product-16-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-11-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-14-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-details-desc-2-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-9-420x270.jpg"
                ]
            },
            "weight": 852,
            "height": 16,
            "wide": 20,
            "length": 16,
            "image_url": "https://shofy.botble.com/storage/main/products/product-16-150x150.jpg",
            "product_options": [],
            "store": {
                "id": 3,
                "slug": "young-shop",
                "name": "Young Shop"
            }
        },
        {
            "id": 16,
            "slug": "fitbit-charge-5-fitness-tracker-digital",
            "url": "https://shofy.botble.com/products/fitbit-charge-5-fitness-tracker-digital",
            "name": "Fitbit Charge 5 Fitness Tracker (Digital)",
            "sku": "V8-197-A1",
            "description": "With this intelligent headset, you can stay connected and productive from the first call of the day to the last train home. With an ergonomic earcup design, this headset invented a brand-new dual-foam technology. You will be comfortable from the first call to the last thanks to the re-engineered leatherette ear cushion design that allows for better airflow.",
            "content": "<div class=\"row justify-content-center\">\n    <div class=\"col-xl-10\">\n        <div class=\"tp-product-details-desc-item pb-105\">\n            <div class=\"row\">\n                <div class=\"col-lg-6\">\n                    <div class=\"pt-25\">\n                        <span>Galaxy A8 tablet</span>\n                        <h3 class=\"tp-product-details-desc-title\">Your world at a glance</h3>\n                        <p>\n                            With a slim design, a vibrant entertainment system, and <br>\n                            outstanding performance, the new Galaxy Tab A7 is a stylish new <br>\n                            companion for your life.Dive head-first into the things you love, <br>\n                            and easily share your favorite moments. Learn, explore, connect <br>\n                            and be inspired.\n                        </p>\n                    </div>\n                    <div>\n                        <h3 class=\"tp-product-details-desc-title\">Draw inspiration with S Pen</h3>\n                        <p>\n                            S Pen is a bundle of writing instruments in one. Its natural grip, <br>\n                            low latency and impressive pressure sensitivity will make it your go-to for everything from drawing to editing documents. And S Pen won't get misplaced thanks.\n                        </p>\n                    </div>\n                </div>\n                <div class=\"col-lg-6\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-1.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item pb-75\">\n            <div class=\"row\">\n                <div class=\"col-lg-7\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-2.jpg\" alt=\"product\">\n                    </div>\n                </div>\n\n                <div class=\"col-lg-5 order-first order-lg-last\">\n                    <div class=\"des-content-2 pl-40\">\n                        <h3 class=\"tp-product-details-desc-title\">\n                            Carry with <br>\n                            Confidence and style\n                        </h3>\n                        <p>\n                            Wrap your tablet in a sleek case that's as stylish as it is convenient. Galaxy Tab S6 Lite Book Cover folds around and clings magnetically, so you can easily gear up as you're headed out the door. There's even a\n                            compartment for S pen, so you can be sure it doesn't get left behind.\n                        </p>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item\">\n            <div class=\"row\">\n                <div class=\"col-xl-12\">\n                    <div class=\"tp-product-details-desc-banner text-center m-img\">\n                        <h3 class=\"tp-product-details-desc-banner-title tp-product-details-desc-title\">Speed Memory Power = Epic Races</h3>\n                        <img src=\"/storage/main/products/product-details-desc-3.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n",
            "with_storehouse_management": true,
            "quantity": 10,
            "is_out_of_stock": false,
            "stock_status_label": "In stock",
            "stock_status_html": "<span class=\"text-success\">In stock</span>",
            "price": 1333.65,
            "price_formatted": "$1,333.65",
            "original_price": 1569,
            "original_price_formatted": "$1,569.00",
            "reviews_avg": 3,
            "reviews_count": 8,
            "images": [
                "https://shofy.botble.com/storage/main/products/product-3.jpg",
                "https://shofy.botble.com/storage/main/products/product-5.jpg",
                "https://shofy.botble.com/storage/main/products/product-8.jpg",
                "https://shofy.botble.com/storage/main/products/product-19.jpg",
                "https://shofy.botble.com/storage/main/products/product-1.jpg",
                "https://shofy.botble.com/storage/main/products/product-20.jpg",
                "https://shofy.botble.com/storage/main/products/product-17.jpg"
            ],
            "images_thumb": [
                "https://shofy.botble.com/storage/main/products/product-3-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-5-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-8-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-19-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-1-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-20-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-17-150x150.jpg"
            ],
            "image_with_sizes": {
                "origin": [
                    "https://shofy.botble.com/storage/main/products/product-3-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-8-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-1-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-20-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-17-600x600.jpg"
                ],
                "thumb": [
                    "https://shofy.botble.com/storage/main/products/product-3-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-8-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-1-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-20-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-17-150x150.jpg"
                ],
                "medium": [
                    "https://shofy.botble.com/storage/main/products/product-3-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-8-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-1-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-20-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-17-600x600.jpg"
                ],
                "rectangle": [
                    "https://shofy.botble.com/storage/main/products/product-3-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-8-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-19-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-1-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-20-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-17-420x270.jpg"
                ]
            },
            "weight": 721,
            "height": 12,
            "wide": 17,
            "length": 19,
            "image_url": "https://shofy.botble.com/storage/main/products/product-3-150x150.jpg",
            "product_options": [],
            "store": {
                "id": 1,
                "slug": "gopro",
                "name": "GoPro"
            }
        },
        {
            "id": 17,
            "slug": "garmin-fenix-7x-sapphire-solar-gps-watch",
            "url": "https://shofy.botble.com/products/garmin-fenix-7x-sapphire-solar-gps-watch",
            "name": "Garmin Fenix 7X Sapphire Solar GPS Watch",
            "sku": "0O-130",
            "description": "We can provide exceptional noise isolation and the best all-day comfort by mixing firm foam for the outer with soft foam for the interior of the ear cushions. So that you may receive Active Noise-Cancellation (ANC) performance that is even greater in a headset that you can wear for whatever length you wish.",
            "content": "<div class=\"row justify-content-center\">\n    <div class=\"col-xl-10\">\n        <div class=\"tp-product-details-desc-item pb-105\">\n            <div class=\"row\">\n                <div class=\"col-lg-6\">\n                    <div class=\"pt-25\">\n                        <span>Galaxy A8 tablet</span>\n                        <h3 class=\"tp-product-details-desc-title\">Your world at a glance</h3>\n                        <p>\n                            With a slim design, a vibrant entertainment system, and <br>\n                            outstanding performance, the new Galaxy Tab A7 is a stylish new <br>\n                            companion for your life.Dive head-first into the things you love, <br>\n                            and easily share your favorite moments. Learn, explore, connect <br>\n                            and be inspired.\n                        </p>\n                    </div>\n                    <div>\n                        <h3 class=\"tp-product-details-desc-title\">Draw inspiration with S Pen</h3>\n                        <p>\n                            S Pen is a bundle of writing instruments in one. Its natural grip, <br>\n                            low latency and impressive pressure sensitivity will make it your go-to for everything from drawing to editing documents. And S Pen won't get misplaced thanks.\n                        </p>\n                    </div>\n                </div>\n                <div class=\"col-lg-6\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-1.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item pb-75\">\n            <div class=\"row\">\n                <div class=\"col-lg-7\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-2.jpg\" alt=\"product\">\n                    </div>\n                </div>\n\n                <div class=\"col-lg-5 order-first order-lg-last\">\n                    <div class=\"des-content-2 pl-40\">\n                        <h3 class=\"tp-product-details-desc-title\">\n                            Carry with <br>\n                            Confidence and style\n                        </h3>\n                        <p>\n                            Wrap your tablet in a sleek case that's as stylish as it is convenient. Galaxy Tab S6 Lite Book Cover folds around and clings magnetically, so you can easily gear up as you're headed out the door. There's even a\n                            compartment for S pen, so you can be sure it doesn't get left behind.\n                        </p>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item\">\n            <div class=\"row\">\n                <div class=\"col-xl-12\">\n                    <div class=\"tp-product-details-desc-banner text-center m-img\">\n                        <h3 class=\"tp-product-details-desc-banner-title tp-product-details-desc-title\">Speed Memory Power = Epic Races</h3>\n                        <img src=\"/storage/main/products/product-details-desc-3.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n",
            "with_storehouse_management": true,
            "quantity": 20,
            "is_out_of_stock": false,
            "stock_status_label": "In stock",
            "stock_status_html": "<span class=\"text-success\">In stock</span>",
            "price": 1853,
            "price_formatted": "$1,853.00",
            "original_price": 2142,
            "original_price_formatted": "$2,142.00",
            "reviews_avg": 2.57,
            "reviews_count": 7,
            "images": [
                "https://shofy.botble.com/storage/main/products/product-2.jpg",
                "https://shofy.botble.com/storage/main/products/product-1.jpg",
                "https://shofy.botble.com/storage/main/products/product-11.jpg"
            ],
            "images_thumb": [
                "https://shofy.botble.com/storage/main/products/product-2-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-1-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-11-150x150.jpg"
            ],
            "image_with_sizes": {
                "origin": [
                    "https://shofy.botble.com/storage/main/products/product-2-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-1-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-11-600x600.jpg"
                ],
                "thumb": [
                    "https://shofy.botble.com/storage/main/products/product-2-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-1-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-11-150x150.jpg"
                ],
                "medium": [
                    "https://shofy.botble.com/storage/main/products/product-2-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-1-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-11-600x600.jpg"
                ],
                "rectangle": [
                    "https://shofy.botble.com/storage/main/products/product-2-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-1-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-11-420x270.jpg"
                ]
            },
            "weight": 756,
            "height": 17,
            "wide": 20,
            "length": 12,
            "image_url": "https://shofy.botble.com/storage/main/products/product-2-150x150.jpg",
            "product_options": [],
            "store": {
                "id": 8,
                "slug": "old-el-paso",
                "name": "Old El Paso"
            }
        },
        {
            "id": 18,
            "slug": "microsoft-surface-pro-8",
            "url": "https://shofy.botble.com/products/microsoft-surface-pro-8",
            "name": "Microsoft Surface Pro 8",
            "sku": "JE-133-A1",
            "description": "We can provide exceptional noise isolation and the best all-day comfort by mixing firm foam for the outer with soft foam for the interior of the ear cushions. So that you may receive Active Noise-Cancellation (ANC) performance that is even greater in a headset that you can wear for whatever length you wish.",
            "content": "<div class=\"row justify-content-center\">\n    <div class=\"col-xl-10\">\n        <div class=\"tp-product-details-desc-item pb-105\">\n            <div class=\"row\">\n                <div class=\"col-lg-6\">\n                    <div class=\"pt-25\">\n                        <span>Galaxy A8 tablet</span>\n                        <h3 class=\"tp-product-details-desc-title\">Your world at a glance</h3>\n                        <p>\n                            With a slim design, a vibrant entertainment system, and <br>\n                            outstanding performance, the new Galaxy Tab A7 is a stylish new <br>\n                            companion for your life.Dive head-first into the things you love, <br>\n                            and easily share your favorite moments. Learn, explore, connect <br>\n                            and be inspired.\n                        </p>\n                    </div>\n                    <div>\n                        <h3 class=\"tp-product-details-desc-title\">Draw inspiration with S Pen</h3>\n                        <p>\n                            S Pen is a bundle of writing instruments in one. Its natural grip, <br>\n                            low latency and impressive pressure sensitivity will make it your go-to for everything from drawing to editing documents. And S Pen won't get misplaced thanks.\n                        </p>\n                    </div>\n                </div>\n                <div class=\"col-lg-6\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-1.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item pb-75\">\n            <div class=\"row\">\n                <div class=\"col-lg-7\">\n                    <div class=\"tp-product-details-desc-thumb\">\n                        <img src=\"/storage/main/products/product-details-desc-2.jpg\" alt=\"product\">\n                    </div>\n                </div>\n\n                <div class=\"col-lg-5 order-first order-lg-last\">\n                    <div class=\"des-content-2 pl-40\">\n                        <h3 class=\"tp-product-details-desc-title\">\n                            Carry with <br>\n                            Confidence and style\n                        </h3>\n                        <p>\n                            Wrap your tablet in a sleek case that's as stylish as it is convenient. Galaxy Tab S6 Lite Book Cover folds around and clings magnetically, so you can easily gear up as you're headed out the door. There's even a\n                            compartment for S pen, so you can be sure it doesn't get left behind.\n                        </p>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"tp-product-details-desc-item\">\n            <div class=\"row\">\n                <div class=\"col-xl-12\">\n                    <div class=\"tp-product-details-desc-banner text-center m-img\">\n                        <h3 class=\"tp-product-details-desc-banner-title tp-product-details-desc-title\">Speed Memory Power = Epic Races</h3>\n                        <img src=\"/storage/main/products/product-details-desc-3.jpg\" alt=\"product\">\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n",
            "with_storehouse_management": true,
            "quantity": 20,
            "is_out_of_stock": false,
            "stock_status_label": "In stock",
            "stock_status_html": "<span class=\"text-success\">In stock</span>",
            "price": 2470,
            "price_formatted": "$2,470.00",
            "original_price": 2470,
            "original_price_formatted": "$2,470.00",
            "reviews_avg": 3,
            "reviews_count": 10,
            "images": [
                "https://shofy.botble.com/storage/main/products/product-9.jpg",
                "https://shofy.botble.com/storage/main/products/product-1.jpg",
                "https://shofy.botble.com/storage/main/products/product-16.jpg",
                "https://shofy.botble.com/storage/main/products/product-5.jpg",
                "https://shofy.botble.com/storage/main/products/product-17.jpg"
            ],
            "images_thumb": [
                "https://shofy.botble.com/storage/main/products/product-9-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-1-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-16-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-5-150x150.jpg",
                "https://shofy.botble.com/storage/main/products/product-17-150x150.jpg"
            ],
            "image_with_sizes": {
                "origin": [
                    "https://shofy.botble.com/storage/main/products/product-9-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-1-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-16-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-17-600x600.jpg"
                ],
                "thumb": [
                    "https://shofy.botble.com/storage/main/products/product-9-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-1-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-16-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-150x150.jpg",
                    "https://shofy.botble.com/storage/main/products/product-17-150x150.jpg"
                ],
                "medium": [
                    "https://shofy.botble.com/storage/main/products/product-9-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-1-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-16-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-600x600.jpg",
                    "https://shofy.botble.com/storage/main/products/product-17-600x600.jpg"
                ],
                "rectangle": [
                    "https://shofy.botble.com/storage/main/products/product-9-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-1-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-16-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-5-420x270.jpg",
                    "https://shofy.botble.com/storage/main/products/product-17-420x270.jpg"
                ]
            },
            "weight": 889,
            "height": 12,
            "wide": 14,
            "length": 18,
            "image_url": "https://shofy.botble.com/storage/main/products/product-9-150x150.jpg",
            "product_options": [],
            "store": {
                "id": 4,
                "slug": "global-store",
                "name": "Global Store"
            }
        }
    ],
    "links": {
        "first": "https://shofy.botble.com/api/v1/ecommerce/brands/1/products?page=1",
        "last": "https://shofy.botble.com/api/v1/ecommerce/brands/1/products?page=3",
        "prev": null,
        "next": "https://shofy.botble.com/api/v1/ecommerce/brands/1/products?page=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 3,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://shofy.botble.com/api/v1/ecommerce/brands/1/products?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": "https://shofy.botble.com/api/v1/ecommerce/brands/1/products?page=2",
                "label": "2",
                "page": 2,
                "active": false
            },
            {
                "url": "https://shofy.botble.com/api/v1/ecommerce/brands/1/products?page=3",
                "label": "3",
                "page": 3,
                "active": false
            },
            {
                "url": "https://shofy.botble.com/api/v1/ecommerce/brands/1/products?page=2",
                "label": "Next &raquo;",
                "page": 2,
                "active": false
            }
        ],
        "path": "https://shofy.botble.com/api/v1/ecommerce/brands/1/products",
        "per_page": 24,
        "to": 24,
        "total": 57
    },
    "error": false,
    "message": null
}
 

Request      

GET api/v1/ecommerce/brands/{id}/products

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the brand. Example: 1

Cart

Add product to cart

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/ecommerce/cart" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"product_id\": 1,
    \"qty\": 1
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/cart"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "product_id": 1,
    "qty": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/ecommerce/cart

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

product_id   integer   

ID of the product. Example: 1

qty   integer   

Quantity of the product. Default: 1. Example: 1

Add product to cart

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/ecommerce/cart/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"product_id\": 1,
    \"qty\": 1
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/cart/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "product_id": 1,
    "qty": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/ecommerce/cart/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the cart. Example: architecto

Body Parameters

product_id   integer   

ID of the product. Example: 1

qty   integer   

Quantity of the product. Default: 1. Example: 1

Update quantity of a product in cart

Example request:
curl --request PUT \
    "https://shofy.botble.com/api/v1/ecommerce/cart/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"product_id\": 1,
    \"qty\": 1
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/cart/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "product_id": 1,
    "qty": 1
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/v1/ecommerce/cart/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the cart. Example: architecto

Body Parameters

product_id   integer   

ID of the product. Example: 1

qty   integer   

Quantity of the product. Example: 1

Remove a cart item by its ID.

Example request:
curl --request DELETE \
    "https://shofy.botble.com/api/v1/ecommerce/cart/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"product_id\": 1
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/cart/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "product_id": 1
};

fetch(url, {
    method: "DELETE",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

DELETE api/v1/ecommerce/cart/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the cart. Example: architecto

Body Parameters

product_id   string   

The ID of the product to remove from the cart. The id of an existing record in the ec_products table. Example: 1

Get a cart item by id.

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/cart/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"customer_id\": 1,
    \"id\": \"e70c6c88dae8344b03e39bb147eba66a\"
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/cart/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "customer_id": 1,
    "id": "e70c6c88dae8344b03e39bb147eba66a"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "id": "architecto",
    "cart_items": [],
    "count": 0,
    "raw_total": 0,
    "raw_total_formatted": "$0.00",
    "sub_total": 0,
    "sub_total_formatted": "$0.00",
    "tax_amount": 0,
    "tax_amount_formatted": "$0.00",
    "promotion_discount_amount": 0,
    "promotion_discount_amount_formatted": "$0.00",
    "coupon_discount_amount": 0,
    "coupon_discount_amount_formatted": "$0.00",
    "applied_coupon_code": null,
    "order_total": 0,
    "order_total_formatted": "$0.00"
}
 

Request      

GET api/v1/ecommerce/cart/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the cart. Example: architecto

Body Parameters

customer_id   integer  optional  

is ID of the customer. Example: 1

id   string   

ID of the cart item. Example: e70c6c88dae8344b03e39bb147eba66a

Refresh cart items

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/ecommerce/cart/refresh" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"products\": [
        \"architecto\"
    ]
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/cart/refresh"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "products": [
        "architecto"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/ecommerce/cart/refresh

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

products   string[]   

List of products with product_id and quantity.

product_id   integer   

The ID of the product. The id of an existing record in the ec_products table. Example: 1

quantity   integer   

The quantity of the product. Must be at least 1. Example: 2

*   object  optional  
product_id   integer   

ID of the product. Example: 1

quantity   integer   

Quantity of the product. Example: 1

Calculate tax for products in cart

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/ecommerce/checkout/taxes/calculate" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"products\": [
        \"architecto\"
    ],
    \"country\": \"US\",
    \"state\": \"CA\",
    \"city\": \"Los Angeles\",
    \"zip_code\": \"90001\"
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/checkout/taxes/calculate"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "products": [
        "architecto"
    ],
    "country": "US",
    "state": "CA",
    "city": "Los Angeles",
    "zip_code": "90001"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "items": [
        {
            "product_id": 1,
            "price": 100,
            "price_formatted": "$100.00",
            "quantity": 2,
            "tax_rate": 10,
            "tax_amount": 20,
            "tax_amount_formatted": "$20.00",
            "subtotal": 200,
            "subtotal_formatted": "$200.00",
            "total": 220,
            "total_formatted": "$220.00"
        }
    ],
    "totals": {
        "sub_total": 200,
        "sub_total_formatted": "$200.00",
        "tax_amount": 20,
        "tax_amount_formatted": "$20.00",
        "total": 220,
        "total_formatted": "$220.00"
    }
}
 

Request      

POST api/v1/ecommerce/checkout/taxes/calculate

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

products   string[]   

List of products with id and quantity.

id   string   

The ID of the product. The id of an existing record in the ec_products table. Example: 1

quantity   integer   

The quantity of the product. Must be at least 1. Example: 2

*   object  optional  
id   integer   

Product ID. Example: 1

quantity   integer   

Product quantity. Example: 2

country   string  optional  

Country code. Example: US

state   string  optional  

State code. Example: CA

city   string  optional  

City name. Example: Los Angeles

zip_code   string  optional  

ZIP code. Example: 90001

Checkout

Process Checkout Process the checkout for a specific cart ID. This endpoint restores the cart, generates an order token, and redirects the user to the checkout page.

requires authentication

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/checkout/cart/12345" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/checkout/cart/12345"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (302):


{}
 

Example response (302):

Show headers
cache-control: no-cache, private
location: https://shofy.botble.com/checkout/7ced83f5169c72a146b6ba6e5870b564
content-type: text/html; charset=utf-8
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
referrer-policy: strict-origin-when-cross-origin
access-control-allow-origin: *
set-cookie: botble_session=eyJpdiI6IjM0TTZkZlh4TWtoWUk4ZHVvWWFQVnc9PSIsInZhbHVlIjoiTFNsVlhsTXhvRmIvR3FvdElML2NJN3VPY2krUUcyQ21UNG9nOFdEcXg1ZE53NlhSMk9NWkZNdVgvREdSVS9PcDdUbzN0VFBsbTBlNSt6SnhGVmgzSTdEQk1qNmlEOUo4UkJMTFZsODNkUnhUZ01ZUVNXOWpBdG1FYldCdkRFdmsiLCJtYWMiOiIwNTI4ZmYzMDk2ODA2MzMwNjVjYjFiNjFlNjBiNmZhOTc5MmZhZTBlNTM2NDE2M2MxNWRlOWNmMGYzOWNiYjg0IiwidGFnIjoiIn0%3D; expires=Mon, 22 Sep 2025 03:56:52 GMT; Max-Age=7200; path=/; secure; httponly; samesite=lax; botble_footprints_cookie=eyJpdiI6ImM0M1FEaG85Y0U1YUY3bU9kY3lFckE9PSIsInZhbHVlIjoiK3VFd04wQzI3bFc2eG9jbG5jaVZXL0RpRzNKYldHRHYrdkFpN1ZnOXdCSTMvTUltNzZraUdZZjlYa1FLL3lQaGtJRlRHL2ZremFiOXN4ZHduOXZqNDJwdjg3R0ZyZ1d2QWp2T01vUlo3cTRSY0sybWZ6TFNyWWJqTFJuSVFDZ1ciLCJtYWMiOiJjMjE2M2Y0YTBkM2UxYjA1Mjk4ZmEyNjY5ZGJkNDA1ZTc1MGE2YTdlZTNlNTg4NTVjYTcxMzM0ZTgxOTEwNTI0IiwidGFnIjoiIn0%3D; expires=Mon, 16 Nov 2026 01:56:52 GMT; Max-Age=36288000; path=/; secure; httponly; samesite=lax; botble_footprints_cookie_data=eyJpdiI6ImQ4dUhFNnpRcWJGb1RnNmJmNnE1VHc9PSIsInZhbHVlIjoidXNsMDBxMUVvcHlxV0h1dlFHRUV4eDZiZXVLbnJzYklQNkFjK012dXMrdTEzcE4yMVdXTnFjS0h1amljUXFNYkhGVGlZTGlRZWE5Y1NsOS9YVFVEVlAxR2tVNHBCMkh1SnVoV0I3cjVBL0g4eTA0QWZvdVY5UE5YT2M5VVpBZnZPR3dvdms3eWpZTXM3Qzl4dkMxU0s2LytYS0Y5NCs0NUJZNExvam9ONlkrSHZCc2tKVy9rSEtKQ1Z4TmFqQW53YTBmZ0UzR3ludHg3M1ExQm9RRmhRcVFLcmVlSWpmMXhHSVFNYXd5ckdrUG9SMCtCQWVSOTZGUjhjRWcyWDVQZ1lyUlN3WEx1L1F6bWRHZmk5YTUralZXMFpLWFBOcHE2WnhXMVk4Qkl2UlBTWGp3TUVVS29oZ0t1VE9WdFRnajRtdDhoUjFmQ2xxcjk0U0xSZ3hKZDErNkROejEzWTk0bWp6QUl1ZzF0K1NHUW1ONGY2eHZrZnRCZVk3SGNmdDdueGdKZVVab1o3R00wZlFlOWhnQzFEVm0yamRkTXZka2ZPWDRHajhQVjdiTlZURkxrMkFlTzlsMUlmTnZQZnJBQS8zRG1wWjNPcFpvZ0dEaGFoTVA3UHlJaTErbk5YSkVXZFp3SWUxbFZRL1RISXpPUFMveFhTbFBUUGVlUnFnNHE1NUgvOFFPWURGeWU5aGxUdW54S2VveTJGeThqTlMzaWZjck9aWmFlUVlVPSIsIm1hYyI6ImU5ZGJlMjE4OWFkYjdhOTk5NTQwNDg1ZTM4M2E1NmUyMDFiZTEyMTg3NTkwNWVmMjVlNjEyNzNiNzU4YmViODUiLCJ0YWciOiIifQ%3D%3D; expires=Mon, 16 Nov 2026 01:56:52 GMT; Max-Age=36288000; path=/; secure; httponly; samesite=lax
 

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="refresh" content="0;url='https://shofy.botble.com/checkout/7ced83f5169c72a146b6ba6e5870b564'" />

        <title>Redirecting to https://shofy.botble.com/checkout/7ced83f5169c72a146b6ba6e5870b564</title>
    </head>
    <body>
        Redirecting to <a href="https://shofy.botble.com/checkout/7ced83f5169c72a146b6ba6e5870b564">https://shofy.botble.com/checkout/7ced83f5169c72a146b6ba6e5870b564</a>.
    </body>
</html>
 

Example response (401):


{
    "message": "Unauthenticated."
}
 

Example response (404):


{
    "message": "Cart not found."
}
 

Request      

GET api/v1/ecommerce/checkout/cart/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the cart to process. Example: 12345

Compare

Add product to compare

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/ecommerce/compare" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"product_id\": 1
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/compare"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "product_id": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/ecommerce/compare

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

product_id   integer   

ID of the product. Example: 1

Add product to compare

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/ecommerce/compare/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"product_id\": 1
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/compare/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "product_id": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/ecommerce/compare/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the compare. Example: architecto

Body Parameters

product_id   integer   

ID of the product. Example: 1

Remove a product from compare list

Example request:
curl --request DELETE \
    "https://shofy.botble.com/api/v1/ecommerce/compare/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"product_id\": 1
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/compare/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "product_id": 1
};

fetch(url, {
    method: "DELETE",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

DELETE api/v1/ecommerce/compare/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the compare. Example: architecto

Body Parameters

product_id   string   

The ID of the product to remove from the compare list. The id of an existing record in the ec_products table. Example: 1

Get compare items

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/compare/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id\": \"e70c6c88dae8344b03e39bb147eba66a\"
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/compare/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "id": "e70c6c88dae8344b03e39bb147eba66a"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "id": "architecto",
    "data": {
        "count": 0,
        "items": []
    }
}
 

Request      

GET api/v1/ecommerce/compare/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the compare. Example: architecto

Body Parameters

id   string   

ID of the compare list. Example: e70c6c88dae8344b03e39bb147eba66a

Coupons

Get all available coupons

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/coupons?coupon_ids=1%2C2%2C3" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/coupons"
);

const params = {
    "coupon_ids": "1,2,3",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "data": [
        {
            "id": 3,
            "title": "Discount 3",
            "code": "NDYTGAQAUYIT",
            "description": null,
            "value": 45,
            "type_option": "percentage",
            "target": "all-orders",
            "min_order_price": null,
            "min_order_price_formatted": "$0.00",
            "start_date": "2025-08-07T16:03:37.000000Z",
            "end_date": null,
            "quantity": null,
            "total_used": 0,
            "left_quantity": 0,
            "can_use_with_promotion": false,
            "can_use_with_flash_sale": false,
            "apply_via_url": false,
            "display_at_checkout": true,
            "is_expired": false
        }
    ],
    "error": false,
    "message": null
}
 

Request      

GET api/v1/ecommerce/coupons

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

coupon_ids   string  optional  

Optional comma-separated list of coupon IDs to filter by. Example: 1,2,3

Apply coupon code

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/ecommerce/coupon/apply" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"coupon_code\": \"DISCOUNT20\",
    \"cart_id\": \"e70c6c88dae8344b03e39bb147eba66a\"
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/coupon/apply"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "coupon_code": "DISCOUNT20",
    "cart_id": "e70c6c88dae8344b03e39bb147eba66a"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/ecommerce/coupon/apply

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

coupon_code   string   

The coupon code. Example: DISCOUNT20

cart_id   string   

ID of the cart to apply coupon to. Example: e70c6c88dae8344b03e39bb147eba66a

Remove coupon code

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/ecommerce/coupon/remove" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"cart_id\": \"e70c6c88dae8344b03e39bb147eba66a\"
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/coupon/remove"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "cart_id": "e70c6c88dae8344b03e39bb147eba66a"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/ecommerce/coupon/remove

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

cart_id   string  optional  

ID of the cart to remove coupon from. Example: e70c6c88dae8344b03e39bb147eba66a

Currencies

Get list of available currencies

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/currencies" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/currencies"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "error": false,
    "data": [
        {
            "id": 1,
            "title": "USD",
            "symbol": "$",
            "is_prefix_symbol": true,
            "decimals": 2,
            "order": 0,
            "is_default": true,
            "exchange_rate": 1
        },
        {
            "id": 2,
            "title": "EUR",
            "symbol": "€",
            "is_prefix_symbol": false,
            "decimals": 2,
            "order": 1,
            "is_default": false,
            "exchange_rate": 0.91
        }
    ],
    "message": null
}
 

Request      

GET api/v1/ecommerce/currencies

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Get current currency

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/currencies/current" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/currencies/current"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "error": false,
    "data": {
        "id": 1,
        "title": "USD",
        "symbol": "$",
        "is_prefix_symbol": true,
        "decimals": 2,
        "order": 0,
        "is_default": true,
        "exchange_rate": 1
    },
    "message": null
}
 

Request      

GET api/v1/ecommerce/currencies/current

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Device Tokens

Register or update device token

Register a new device token or update an existing one for push notifications.

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/device-tokens" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"token\": \"architecto\",
    \"platform\": \"architecto\",
    \"app_version\": \"architecto\",
    \"device_id\": \"architecto\",
    \"user_type\": \"architecto\",
    \"user_id\": 16
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/device-tokens"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "token": "architecto",
    "platform": "architecto",
    "app_version": "architecto",
    "device_id": "architecto",
    "user_type": "architecto",
    "user_id": 16
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/device-tokens

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

token   string   

The FCM device token. Example: architecto

platform   string  optional  

The device platform (android, ios). Example: architecto

app_version   string  optional  

The app version. Example: architecto

device_id   string  optional  

The unique device identifier. Example: architecto

user_type   string  optional  

The user type (customer, admin). Example: architecto

user_id   integer  optional  

The user ID. Example: 16

Get user's device tokens

Retrieve all device tokens for the authenticated user.

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/device-tokens" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/device-tokens"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "error": true,
    "data": null,
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/device-tokens

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Update device token

Update an existing device token.

Example request:
curl --request PUT \
    "https://shofy.botble.com/api/v1/device-tokens/564" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"platform\": \"architecto\",
    \"app_version\": \"architecto\",
    \"device_id\": \"architecto\"
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/device-tokens/564"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "platform": "architecto",
    "app_version": "architecto",
    "device_id": "architecto"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/v1/device-tokens/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the device token. Example: 564

Body Parameters

platform   string  optional  

The device platform (android, ios). Example: architecto

app_version   string  optional  

The app version. Example: architecto

device_id   string  optional  

The unique device identifier. Example: architecto

Delete device token by token value

Delete a device token using the token value.

Example request:
curl --request DELETE \
    "https://shofy.botble.com/api/v1/device-tokens/by-token" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"token\": \"architecto\"
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/device-tokens/by-token"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "token": "architecto"
};

fetch(url, {
    method: "DELETE",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

DELETE api/v1/device-tokens/by-token

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

token   string   

The FCM device token to delete. Example: architecto

Delete device token

Delete a device token to stop receiving push notifications.

Example request:
curl --request DELETE \
    "https://shofy.botble.com/api/v1/device-tokens/564" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/device-tokens/564"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/device-tokens/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the device token. Example: 564

Deactivate device token

Deactivate a device token without deleting it.

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/device-tokens/564/deactivate" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/device-tokens/564/deactivate"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/device-tokens/{id}/deactivate

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the device token. Example: 564

Downloads

Get list of digital products available for download

requires authentication

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/downloads" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/downloads"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "error": true,
    "data": null,
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/ecommerce/downloads

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Download a digital product

requires authentication

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/downloads/564" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/downloads/564"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "error": true,
    "data": null,
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/ecommerce/downloads/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the download. Example: 564

Endpoints

Download a file using a token

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/download/architecto/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/download/architecto/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": ""
}
 

Request      

GET api/v1/ecommerce/download/{token}/{order_id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

token   string   

Example: architecto

order_id   string   

The ID of the order. Example: architecto

Download a proof file using a token

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/orders/download-proof/architecto/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/orders/download-proof/architecto/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "No query results for model [Botble\\Ecommerce\\Models\\Order] architecto"
}
 

Request      

GET api/v1/ecommerce/orders/download-proof/{token}/{order_id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

token   string   

Example: architecto

order_id   string   

The ID of the order. Example: architecto

Filters

Get filter data for products

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/filters" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/filters"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "data": {
        "categories": [
            {
                "id": 1,
                "name": "New Arrivals",
                "slug": "new-arrivals",
                "url": "product-categories/new-arrivals",
                "parent_id": 0
            },
            {
                "id": 2,
                "name": "Electronics",
                "slug": "electronics",
                "url": "product-categories/electronics",
                "parent_id": 0
            },
            {
                "id": 19,
                "name": "Gifts",
                "slug": "gifts",
                "url": "product-categories/gifts",
                "parent_id": 0
            },
            {
                "id": 20,
                "name": "Computers",
                "slug": "computers",
                "url": "product-categories/computers",
                "parent_id": 0
            },
            {
                "id": 25,
                "name": "Smartphones & Tablets",
                "slug": "smartphones-tablets",
                "url": "product-categories/smartphones-tablets",
                "parent_id": 0
            },
            {
                "id": 26,
                "name": "TV,\n                Video & Music",
                "slug": "tv-video-music",
                "url": "product-categories/tv-video-music",
                "parent_id": 0
            },
            {
                "id": 27,
                "name": "Cameras",
                "slug": "cameras",
                "url": "product-categories/cameras",
                "parent_id": 0
            },
            {
                "id": 28,
                "name": "Cooking",
                "slug": "cooking",
                "url": "product-categories/cooking",
                "parent_id": 0
            },
            {
                "id": 29,
                "name": "Accessories",
                "slug": "accessories",
                "url": "product-categories/accessories",
                "parent_id": 0
            },
            {
                "id": 31,
                "name": "Sports",
                "slug": "sports",
                "url": "product-categories/sports",
                "parent_id": 0
            },
            {
                "id": 32,
                "name": "Electronics Gadgets",
                "slug": "electronics-gadgets",
                "url": "product-categories/electronics-gadgets",
                "parent_id": 0
            },
            {
                "id": 3,
                "name": "Featured",
                "slug": "featured",
                "url": "product-categories/featured",
                "parent_id": 2
            },
            {
                "id": 7,
                "name": "Computers & Laptops",
                "slug": "computers-laptops",
                "url": "product-categories/computers-laptops",
                "parent_id": 2
            },
            {
                "id": 12,
                "name": "Accessories",
                "slug": "accessories",
                "url": "product-categories/accessories",
                "parent_id": 2
            },
            {
                "id": 17,
                "name": "Gaming Console",
                "slug": "gaming-console",
                "url": "product-categories/gaming-console",
                "parent_id": 2
            },
            {
                "id": 18,
                "name": "Playstation",
                "slug": "playstation",
                "url": "product-categories/playstation",
                "parent_id": 2
            },
            {
                "id": 4,
                "name": "New Arrivals",
                "slug": "new-arrivals",
                "url": "product-categories/new-arrivals",
                "parent_id": 3
            },
            {
                "id": 5,
                "name": "Best Sellers",
                "slug": "best-sellers",
                "url": "product-categories/best-sellers",
                "parent_id": 3
            },
            {
                "id": 6,
                "name": "Mobile Phone",
                "slug": "mobile-phone",
                "url": "product-categories/mobile-phone",
                "parent_id": 3
            },
            {
                "id": 8,
                "name": "Top Brands",
                "slug": "top-brands",
                "url": "product-categories/top-brands",
                "parent_id": 7
            },
            {
                "id": 9,
                "name": "Weekly Best Selling",
                "slug": "weekly-best-selling",
                "url": "product-categories/weekly-best-selling",
                "parent_id": 7
            },
            {
                "id": 10,
                "name": "CPU Heat Pipes",
                "slug": "cpu-heat-pipes",
                "url": "product-categories/cpu-heat-pipes",
                "parent_id": 7
            },
            {
                "id": 11,
                "name": "CPU Coolers",
                "slug": "cpu-coolers",
                "url": "product-categories/cpu-coolers",
                "parent_id": 7
            },
            {
                "id": 13,
                "name": "Headphones",
                "slug": "headphones",
                "url": "product-categories/headphones",
                "parent_id": 12
            },
            {
                "id": 14,
                "name": "Wireless Headphones",
                "slug": "wireless-headphones",
                "url": "product-categories/wireless-headphones",
                "parent_id": 12
            },
            {
                "id": 15,
                "name": "TWS Earphones",
                "slug": "tws-earphones",
                "url": "product-categories/tws-earphones",
                "parent_id": 12
            },
            {
                "id": 16,
                "name": "Smart Watch",
                "slug": "smart-watch",
                "url": "product-categories/smart-watch",
                "parent_id": 12
            },
            {
                "id": 21,
                "name": "Desktop",
                "slug": "desktop",
                "url": "product-categories/desktop",
                "parent_id": 20
            },
            {
                "id": 22,
                "name": "Laptop",
                "slug": "laptop",
                "url": "product-categories/laptop",
                "parent_id": 20
            },
            {
                "id": 23,
                "name": "Tablet",
                "slug": "tablet",
                "url": "product-categories/tablet",
                "parent_id": 20
            },
            {
                "id": 24,
                "name": "Accessories",
                "slug": "accessories",
                "url": "product-categories/accessories",
                "parent_id": 20
            },
            {
                "id": 30,
                "name": "With Bluetooth",
                "slug": "with-bluetooth",
                "url": "product-categories/with-bluetooth",
                "parent_id": 29
            },
            {
                "id": 33,
                "name": "Micrscope",
                "slug": "micrscope",
                "url": "product-categories/micrscope",
                "parent_id": 32
            },
            {
                "id": 34,
                "name": "Remote Control",
                "slug": "remote-control",
                "url": "product-categories/remote-control",
                "parent_id": 32
            },
            {
                "id": 35,
                "name": "Monitor",
                "slug": "monitor",
                "url": "product-categories/monitor",
                "parent_id": 32
            },
            {
                "id": 36,
                "name": "Thermometer",
                "slug": "thermometer",
                "url": "product-categories/thermometer",
                "parent_id": 32
            },
            {
                "id": 37,
                "name": "Backpack",
                "slug": "backpack",
                "url": "product-categories/backpack",
                "parent_id": 32
            },
            {
                "id": 38,
                "name": "Headphones",
                "slug": "headphones",
                "url": "product-categories/headphones",
                "parent_id": 32
            }
        ],
        "brands": [
            {
                "id": 1,
                "name": "FoodPound",
                "slug": "foodpound",
                "url": "https://shofy.botble.com/products?brands%5B%5D=1",
                "products_count": 12
            },
            {
                "id": 2,
                "name": "iTea JSC",
                "slug": "itea-jsc",
                "url": "https://shofy.botble.com/products?brands%5B%5D=2",
                "products_count": 9
            },
            {
                "id": 3,
                "name": "Soda Brand",
                "slug": "soda-brand",
                "url": "https://shofy.botble.com/products?brands%5B%5D=3",
                "products_count": 15
            },
            {
                "id": 4,
                "name": "Shofy",
                "slug": "shofy",
                "url": "https://shofy.botble.com/products?brands%5B%5D=4",
                "products_count": 13
            },
            {
                "id": 5,
                "name": "Soda Brand",
                "slug": "soda-brand",
                "url": "https://shofy.botble.com/products?brands%5B%5D=5",
                "products_count": 8
            }
        ],
        "tags": [
            {
                "id": 5,
                "name": "Office",
                "slug": "office",
                "url": "https://shofy.botble.com/products?tags%5B%5D=5",
                "products_count": 34
            },
            {
                "id": 3,
                "name": "Iphone",
                "slug": "iphone",
                "url": "https://shofy.botble.com/products?tags%5B%5D=3",
                "products_count": 32
            },
            {
                "id": 4,
                "name": "Printer",
                "slug": "printer",
                "url": "https://shofy.botble.com/products?tags%5B%5D=4",
                "products_count": 32
            },
            {
                "id": 1,
                "name": "Electronic",
                "slug": "electronic",
                "url": "https://shofy.botble.com/products?tags%5B%5D=1",
                "products_count": 28
            },
            {
                "id": 6,
                "name": "IT",
                "slug": "it",
                "url": "https://shofy.botble.com/products?tags%5B%5D=6",
                "products_count": 28
            },
            {
                "id": 2,
                "name": "Mobile",
                "slug": "mobile",
                "url": "https://shofy.botble.com/products?tags%5B%5D=2",
                "products_count": 17
            }
        ],
        "price_ranges": [],
        "max_price": 2485,
        "current_category_id": 0,
        "current_filter_categories": [],
        "attributes": [
            {
                "id": 1,
                "title": "Color",
                "slug": "color",
                "display_layout": "visual",
                "attributes": [
                    {
                        "id": 1,
                        "title": "Green",
                        "slug": "green",
                        "color": "#5FB7D4",
                        "image": null,
                        "is_default": 1,
                        "is_selected": false
                    },
                    {
                        "id": 2,
                        "title": "Blue",
                        "slug": "blue",
                        "color": "#333333",
                        "image": null,
                        "is_default": 0,
                        "is_selected": false
                    },
                    {
                        "id": 3,
                        "title": "Red",
                        "slug": "red",
                        "color": "#DA323F",
                        "image": null,
                        "is_default": 0,
                        "is_selected": false
                    },
                    {
                        "id": 4,
                        "title": "Black",
                        "slug": "black",
                        "color": "#2F366C",
                        "image": null,
                        "is_default": 0,
                        "is_selected": false
                    },
                    {
                        "id": 5,
                        "title": "Brown",
                        "slug": "brown",
                        "color": "#87554B",
                        "image": null,
                        "is_default": 0,
                        "is_selected": false
                    }
                ]
            },
            {
                "id": 3,
                "title": "Weight",
                "slug": "weight",
                "display_layout": "text",
                "attributes": [
                    {
                        "id": 11,
                        "title": "1KG",
                        "slug": "1kg",
                        "color": null,
                        "image": null,
                        "is_default": 1,
                        "is_selected": false
                    },
                    {
                        "id": 12,
                        "title": "2KG",
                        "slug": "2kg",
                        "color": null,
                        "image": null,
                        "is_default": 0,
                        "is_selected": false
                    },
                    {
                        "id": 13,
                        "title": "3KG",
                        "slug": "3kg",
                        "color": null,
                        "image": null,
                        "is_default": 0,
                        "is_selected": false
                    },
                    {
                        "id": 14,
                        "title": "4KG",
                        "slug": "4kg",
                        "color": null,
                        "image": null,
                        "is_default": 0,
                        "is_selected": false
                    },
                    {
                        "id": 15,
                        "title": "5KG",
                        "slug": "5kg",
                        "color": null,
                        "image": null,
                        "is_default": 0,
                        "is_selected": false
                    }
                ]
            },
            {
                "id": 2,
                "title": "Size",
                "slug": "size",
                "display_layout": "text",
                "attributes": [
                    {
                        "id": 6,
                        "title": "S",
                        "slug": "s",
                        "color": null,
                        "image": null,
                        "is_default": 1,
                        "is_selected": false
                    },
                    {
                        "id": 7,
                        "title": "M",
                        "slug": "m",
                        "color": null,
                        "image": null,
                        "is_default": 0,
                        "is_selected": false
                    },
                    {
                        "id": 8,
                        "title": "L",
                        "slug": "l",
                        "color": null,
                        "image": null,
                        "is_default": 0,
                        "is_selected": false
                    },
                    {
                        "id": 9,
                        "title": "XL",
                        "slug": "xl",
                        "color": null,
                        "image": null,
                        "is_default": 0,
                        "is_selected": false
                    },
                    {
                        "id": 10,
                        "title": "XXL",
                        "slug": "xxl",
                        "color": null,
                        "image": null,
                        "is_default": 0,
                        "is_selected": false
                    }
                ]
            },
            {
                "id": 4,
                "title": "Boxes",
                "slug": "boxes",
                "display_layout": "text",
                "attributes": [
                    {
                        "id": 16,
                        "title": "1 Box",
                        "slug": "1-box",
                        "color": null,
                        "image": null,
                        "is_default": 1,
                        "is_selected": false
                    },
                    {
                        "id": 17,
                        "title": "2 Boxes",
                        "slug": "2-boxes",
                        "color": null,
                        "image": null,
                        "is_default": 0,
                        "is_selected": false
                    },
                    {
                        "id": 18,
                        "title": "3 Boxes",
                        "slug": "3-boxes",
                        "color": null,
                        "image": null,
                        "is_default": 0,
                        "is_selected": false
                    },
                    {
                        "id": 19,
                        "title": "4 Boxes",
                        "slug": "4-boxes",
                        "color": null,
                        "image": null,
                        "is_default": 0,
                        "is_selected": false
                    },
                    {
                        "id": 20,
                        "title": "5 Boxes",
                        "slug": "5-boxes",
                        "color": null,
                        "image": null,
                        "is_default": 0,
                        "is_selected": false
                    }
                ]
            }
        ]
    },
    "error": false,
    "message": null
}
 

Request      

GET api/v1/ecommerce/filters

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

category   integer  optional  

Category ID to get filter data for a specific category.

Flash Sale

Get flash sales

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/flash-sales?keys=&thumbnail_size=architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"keys\": null
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/flash-sales"
);

const params = {
    "keys": "",
    "thumbnail_size": "architecto",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "keys": null
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (422):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "error": true,
    "data": null,
    "message": "The keys field is required."
}
 

Request      

GET api/v1/ecommerce/flash-sales

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

keys   string[]  optional  

Array of flash sale keys to filter by.

thumbnail_size   string  optional  

Size of product thumbnail images. Value: thumb, small, medium, large. Default: thumb Example: architecto

Body Parameters

keys   string[]  optional  

Array of flash sale keys to filter by.

Languages

Get list of available languages

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/languages" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/languages"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "error": false,
    "data": [
        {
            "lang_id": 1,
            "lang_name": "English",
            "lang_locale": "en",
            "lang_code": "en_US",
            "lang_flag": "<svg ...>",
            "lang_is_default": true,
            "lang_is_rtl": false,
            "lang_order": 0
        },
        {
            "lang_id": 2,
            "lang_name": "Vietnamese",
            "lang_locale": "vi",
            "lang_code": "vi",
            "lang_flag": "<svg ...>",
            "lang_is_default": false,
            "lang_is_rtl": false,
            "lang_order": 1
        }
    ],
    "message": null
}
 

Request      

GET api/v1/languages

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Get current language

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/languages/current" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/languages/current"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "error": false,
    "data": {
        "lang_id": 1,
        "lang_name": "English",
        "lang_locale": "en",
        "lang_code": "en_US",
        "lang_flag": "us",
        "lang_is_default": true,
        "lang_is_rtl": false,
        "lang_order": 0
    },
    "message": null
}
 

Request      

GET api/v1/languages/current

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Notifications

Get user notifications

Retrieve notifications for the authenticated user.

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/notifications?page=1&per_page=20&unread_only=&type=general" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/notifications"
);

const params = {
    "page": "1",
    "per_page": "20",
    "unread_only": "0",
    "type": "general",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "error": true,
    "data": null,
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/notifications

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

page   integer  optional  

Page number for pagination. Example: 1

per_page   integer  optional  

Number of notifications per page (max 50). Example: 20

unread_only   boolean  optional  

Filter to show only unread notifications. Example: false

type   string  optional  

Filter by notification type. Example: general

Get notification statistics

Get notification statistics for the authenticated user.

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/notifications/stats" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/notifications/stats"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "error": true,
    "data": null,
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/notifications/stats

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Mark all notifications as read

Mark all notifications as read for the authenticated user.

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/notifications/mark-all-read" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/notifications/mark-all-read"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/notifications/mark-all-read

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Mark notification as read

Mark a specific notification as read for the authenticated user.

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/notifications/564/read" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/notifications/564/read"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/notifications/{id}/read

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the notification. Example: 564

Mark notification as clicked

Mark a notification as clicked when user taps on it.

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/notifications/564/clicked" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/notifications/564/clicked"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/notifications/{id}/clicked

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the notification. Example: 564

Delete notification

Delete a notification from user's list.

Example request:
curl --request DELETE \
    "https://shofy.botble.com/api/v1/notifications/564" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/notifications/564"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/notifications/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the notification. Example: 564

Order Returns

Get list of order return requests for the current user

requires authentication

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/order-returns" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/order-returns"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "error": true,
    "data": null,
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/ecommerce/order-returns

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Get detail of an order return request

requires authentication

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/order-returns/564" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/order-returns/564"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "error": true,
    "data": null,
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/ecommerce/order-returns/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the order return. Example: 564

Submit a new order return request

requires authentication

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/ecommerce/order-returns" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"order_id\": 1,
    \"return_items\": [
        \"architecto\"
    ],
    \"reason\": \"DAMAGED_PRODUCT\"
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/order-returns"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "order_id": 1,
    "return_items": [
        "architecto"
    ],
    "reason": "DAMAGED_PRODUCT"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/ecommerce/order-returns

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

order_id   integer   

The ID of the order to return. Example: 1

return_items   string[]   

The items to return with order_item_id, is_return, and qty.

is_return   string  optional  

Whether this item should be returned. Example: true

order_item_id   number  optional  

The ID of the order item to return. This field is required when return_items.*.is_return or checked is present. The id of an existing record in the ec_order_product table. Example: 1

qty   number  optional  

The quantity to return. Must be at least 1. Example: 2

*   object  optional  
order_item_id   integer   

The ID of the order item. Example: 1

is_return   boolean   

Whether to return this item. Example: true

qty   integer  optional  

The quantity to return (required if partial return is enabled). Example: 1

reason   string  optional  

The reason for returning this item (required if partial return is enabled). Example: DAMAGED_PRODUCT

reason   string   

The reason for the return. Example: DAMAGED_PRODUCT

Get order information for return request

requires authentication

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/orders/564/returns" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/orders/564/returns"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "error": true,
    "data": null,
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/ecommerce/orders/{order_id}/returns

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

order_id   string   

The ID of the order. Example: 564

Orders

APIs for order tracking

Get list of orders by customer

requires authentication

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/orders?status=completed&shipping_status=delivered&payment_status=completed&per_page=10" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/orders"
);

const params = {
    "status": "completed",
    "shipping_status": "delivered",
    "payment_status": "completed",
    "per_page": "10",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "error": true,
    "data": null,
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/ecommerce/orders

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

status   string  optional  

Filter orders by status (pending, processing, completed, canceled). Example: completed

shipping_status   string  optional  

Filter orders by shipping status (not_shipped, delivering, delivered, canceled). Example: delivered

payment_status   string  optional  

Filter orders by payment status (pending, completed, refunding, refunded, canceled). Example: completed

per_page   integer  optional  

Number of orders per page. Example: 10

Get order detail

requires authentication

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/orders/564" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/orders/564"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "error": true,
    "data": null,
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/ecommerce/orders/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the order. Example: 564

Cancel an order

requires authentication

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/ecommerce/orders/564/cancel" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"cancellation_reason\": \"OTHER\",
    \"cancellation_reason_description\": \"I found a better deal elsewhere\"
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/orders/564/cancel"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "cancellation_reason": "OTHER",
    "cancellation_reason_description": "I found a better deal elsewhere"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/ecommerce/orders/{id}/cancel

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the order. Example: 564

Body Parameters

cancellation_reason   string   

The reason for cancellation. Example: OTHER

cancellation_reason_description   string  optional  

The description of the cancellation reason (required if cancellation_reason is OTHER). Example: I found a better deal elsewhere

Print an order invoice

requires authentication

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/orders/564/invoice?type=download&format=architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/orders/564/invoice"
);

const params = {
    "type": "download",
    "format": "architecto",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "error": true,
    "data": null,
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/ecommerce/orders/{id}/invoice

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the order. Example: 564

Query Parameters

type   string  optional  

Type of response (print or download). Example: download

format   string  optional  

Response format (url or pdf). Use 'pdf' for direct PDF content, 'url' for URL response. Default: url Example: architecto

Upload payment proof for an order

requires authentication

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/ecommerce/orders/564/upload-proof" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "file=@/tmp/php2g97ju02go6nenUwij4" 
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/orders/564/upload-proof"
);

const headers = {
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('file', document.querySelector('input[name="file"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());

Request      

POST api/v1/ecommerce/orders/{id}/upload-proof

Headers

Content-Type      

Example: multipart/form-data

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the order. Example: 564

Body Parameters

file   file   

The payment proof file (jpeg, jpg, png, pdf, max 2MB). Example: /tmp/php2g97ju02go6nenUwij4

Download payment proof for an order

requires authentication

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/orders/564/download-proof" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/orders/564/download-proof"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "error": true,
    "data": null,
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/ecommerce/orders/{id}/download-proof

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the order. Example: 564

Confirm delivery of an order

requires authentication

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/ecommerce/orders/564/confirm-delivery" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/orders/564/confirm-delivery"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/v1/ecommerce/orders/{id}/confirm-delivery

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the order. Example: 564

Track an order

Track an order by order code and email/phone

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/ecommerce/orders/tracking" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"code\": \"ORD-12345\",
    \"email\": \"[email protected]\",
    \"phone\": \"+1234567890\"
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/orders/tracking"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "code": "ORD-12345",
    "email": "[email protected]",
    "phone": "+1234567890"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "error": false,
    "message": "Order found successfully",
    "data": {
        "order": {
            "id": 1,
            "code": "ORD-12345",
            "status": "completed",
            "amount": 100,
            "shipping_amount": 10,
            "payment_fee": 5,
            "tax_amount": 5,
            "sub_total": 90,
            "discount_amount": 0,
            "payment_id": 1,
            "user_id": 1,
            "created_at": "2023-08-10T12:34:56.000000Z",
            "updated_at": "2023-08-10T12:34:56.000000Z",
            "address": {
                "id": 1,
                "name": "John Doe",
                "email": "[email protected]",
                "phone": "+1234567890",
                "address": "123 Main St",
                "city": "New York",
                "state": "NY",
                "country": "US",
                "zip_code": "10001"
            },
            "products": [
                {
                    "id": 1,
                    "name": "Product 1",
                    "price": 90,
                    "qty": 1
                }
            ],
            "histories": [
                {
                    "id": 1,
                    "action": "create_order",
                    "description": "Order was created",
                    "created_at": "2023-08-10T12:34:56.000000Z"
                }
            ],
            "shipment": {
                "id": 1,
                "status": "delivered",
                "tracking_id": "SHIP-12345",
                "tracking_link": "https://example.com/tracking/SHIP-12345"
            },
            "payment": {
                "id": 1,
                "status": "completed",
                "payment_channel": "stripe",
                "amount": 100
            }
        }
    }
}
 

Example response (404):


{
    "error": true,
    "message": "Order not found",
    "code": 404
}
 

Request      

POST api/v1/ecommerce/orders/tracking

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

code   string   

The order code. Example: ORD-12345

email   string   

if phone not provided The email associated with the order. Example: [email protected]

phone   string   

if email not provided The phone number associated with the order. Example: +1234567890

Page

List pages

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/pages?per_page=16&page=16" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/pages"
);

const params = {
    "per_page": "16",
    "page": "16",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "error": false,
    "data": [
        {
            "id": 1,
            "title": "About Us",
            "slug": "about-us",
            "content": "This is the about us page content...",
            "published_at": "2023-01-01T00:00:00.000000Z"
        }
    ],
    "message": null
}
 

Request      

GET api/v1/pages

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

per_page   integer  optional  

The number of items to return per page (default: 10). Example: 16

page   integer  optional  

The page number to retrieve (default: 1). Example: 16

Get page by ID

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/pages/16" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/pages/16"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "error": false,
    "data": {
        "id": 1,
        "title": "About Us",
        "slug": "about-us",
        "content": "This is the about us page content...",
        "published_at": "2023-01-01T00:00:00.000000Z"
    },
    "message": null
}
 

Example response (404):


{
    "error": true,
    "message": "Not found"
}
 

Request      

GET api/v1/pages/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the page to retrieve. Example: 16

Product Categories

Get list of product categories

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/product-categories" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"is_featured\": false
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/product-categories"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "is_featured": false
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "data": [
        {
            "id": 1,
            "name": "New Arrivals",
            "icon": "ti ti-home",
            "icon_image": null,
            "is_featured": false,
            "parent_id": 0,
            "slug": "new-arrivals",
            "image_with_sizes": null
        },
        {
            "id": 3,
            "name": "Featured",
            "icon": null,
            "icon_image": null,
            "is_featured": false,
            "parent_id": 2,
            "slug": "featured",
            "image_with_sizes": {
                "origin": "https://shofy.botble.com/storage/main/product-categories/menu-1-600x600.jpg",
                "thumb": "https://shofy.botble.com/storage/main/product-categories/menu-1-150x150.jpg",
                "medium": "https://shofy.botble.com/storage/main/product-categories/menu-1-600x600.jpg",
                "rectangle": "https://shofy.botble.com/storage/main/product-categories/menu-1-420x270.jpg"
            }
        },
        {
            "id": 4,
            "name": "New Arrivals",
            "icon": null,
            "icon_image": null,
            "is_featured": false,
            "parent_id": 3,
            "slug": "new-arrivals",
            "image_with_sizes": null
        },
        {
            "id": 8,
            "name": "Top Brands",
            "icon": null,
            "icon_image": null,
            "is_featured": false,
            "parent_id": 7,
            "slug": "top-brands",
            "image_with_sizes": null
        },
        {
            "id": 21,
            "name": "Desktop",
            "icon": "ti ti-device-desktop",
            "icon_image": null,
            "is_featured": false,
            "parent_id": 20,
            "slug": "desktop",
            "image_with_sizes": {
                "origin": "https://shofy.botble.com/storage/main/product-categories/category-thumb-5-600x600.jpg",
                "thumb": "https://shofy.botble.com/storage/main/product-categories/category-thumb-5-150x150.jpg",
                "medium": "https://shofy.botble.com/storage/main/product-categories/category-thumb-5-600x600.jpg",
                "rectangle": "https://shofy.botble.com/storage/main/product-categories/category-thumb-5-420x270.jpg"
            }
        },
        {
            "id": 33,
            "name": "Micrscope",
            "icon": null,
            "icon_image": null,
            "is_featured": false,
            "parent_id": 32,
            "slug": "micrscope",
            "image_with_sizes": null
        },
        {
            "id": 2,
            "name": "Electronics",
            "icon": "ti ti-device-tv",
            "icon_image": null,
            "is_featured": false,
            "parent_id": 0,
            "slug": "electronics",
            "image_with_sizes": null
        },
        {
            "id": 5,
            "name": "Best Sellers",
            "icon": null,
            "icon_image": null,
            "is_featured": false,
            "parent_id": 3,
            "slug": "best-sellers",
            "image_with_sizes": null
        },
        {
            "id": 9,
            "name": "Weekly Best Selling",
            "icon": null,
            "icon_image": null,
            "is_featured": false,
            "parent_id": 7,
            "slug": "weekly-best-selling",
            "image_with_sizes": null
        },
        {
            "id": 14,
            "name": "Wireless Headphones",
            "icon": null,
            "icon_image": null,
            "is_featured": false,
            "parent_id": 12,
            "slug": "wireless-headphones",
            "image_with_sizes": {
                "origin": "https://shofy.botble.com/storage/main/product-categories/category-thumb-1-600x600.jpg",
                "thumb": "https://shofy.botble.com/storage/main/product-categories/category-thumb-1-150x150.jpg",
                "medium": "https://shofy.botble.com/storage/main/product-categories/category-thumb-1-600x600.jpg",
                "rectangle": "https://shofy.botble.com/storage/main/product-categories/category-thumb-1-420x270.jpg"
            }
        },
        {
            "id": 22,
            "name": "Laptop",
            "icon": "ti ti-device-laptop",
            "icon_image": null,
            "is_featured": false,
            "parent_id": 20,
            "slug": "laptop",
            "image_with_sizes": {
                "origin": "https://shofy.botble.com/storage/main/product-categories/category-thumb-3-600x600.jpg",
                "thumb": "https://shofy.botble.com/storage/main/product-categories/category-thumb-3-150x150.jpg",
                "medium": "https://shofy.botble.com/storage/main/product-categories/category-thumb-3-600x600.jpg",
                "rectangle": "https://shofy.botble.com/storage/main/product-categories/category-thumb-3-420x270.jpg"
            }
        },
        {
            "id": 34,
            "name": "Remote Control",
            "icon": null,
            "icon_image": null,
            "is_featured": false,
            "parent_id": 32,
            "slug": "remote-control",
            "image_with_sizes": null
        },
        {
            "id": 12,
            "name": "Accessories",
            "icon": null,
            "icon_image": null,
            "is_featured": false,
            "parent_id": 2,
            "slug": "accessories",
            "image_with_sizes": {
                "origin": "https://shofy.botble.com/storage/main/product-categories/menu-3-600x600.jpg",
                "thumb": "https://shofy.botble.com/storage/main/product-categories/menu-3-150x150.jpg",
                "medium": "https://shofy.botble.com/storage/main/product-categories/menu-3-600x600.jpg",
                "rectangle": "https://shofy.botble.com/storage/main/product-categories/menu-3-420x270.jpg"
            }
        },
        {
            "id": 15,
            "name": "TWS Earphones",
            "icon": null,
            "icon_image": null,
            "is_featured": false,
            "parent_id": 12,
            "slug": "tws-earphones",
            "image_with_sizes": {
                "origin": "https://shofy.botble.com/storage/main/product-categories/category-thumb-6-600x600.jpg",
                "thumb": "https://shofy.botble.com/storage/main/product-categories/category-thumb-6-150x150.jpg",
                "medium": "https://shofy.botble.com/storage/main/product-categories/category-thumb-6-600x600.jpg",
                "rectangle": "https://shofy.botble.com/storage/main/product-categories/category-thumb-6-420x270.jpg"
            }
        },
        {
            "id": 19,
            "name": "Gifts",
            "icon": "ti ti-gift",
            "icon_image": null,
            "is_featured": false,
            "parent_id": 0,
            "slug": "gifts",
            "image_with_sizes": null
        },
        {
            "id": 23,
            "name": "Tablet",
            "icon": "ti ti-device-tablet",
            "icon_image": null,
            "is_featured": false,
            "parent_id": 20,
            "slug": "tablet",
            "image_with_sizes": {
                "origin": "https://shofy.botble.com/storage/main/product-categories/category-thumb-4-600x600.jpg",
                "thumb": "https://shofy.botble.com/storage/main/product-categories/category-thumb-4-150x150.jpg",
                "medium": "https://shofy.botble.com/storage/main/product-categories/category-thumb-4-600x600.jpg",
                "rectangle": "https://shofy.botble.com/storage/main/product-categories/category-thumb-4-420x270.jpg"
            }
        },
        {
            "id": 35,
            "name": "Monitor",
            "icon": null,
            "icon_image": null,
            "is_featured": false,
            "parent_id": 32,
            "slug": "monitor",
            "image_with_sizes": null
        },
        {
            "id": 11,
            "name": "CPU Coolers",
            "icon": null,
            "icon_image": null,
            "is_featured": false,
            "parent_id": 7,
            "slug": "cpu-coolers",
            "image_with_sizes": {
                "origin": "https://shofy.botble.com/storage/main/product-categories/category-thumb-9-600x600.jpg",
                "thumb": "https://shofy.botble.com/storage/main/product-categories/category-thumb-9-150x150.jpg",
                "medium": "https://shofy.botble.com/storage/main/product-categories/category-thumb-9-600x600.jpg",
                "rectangle": "https://shofy.botble.com/storage/main/product-categories/category-thumb-9-420x270.jpg"
            }
        },
        {
            "id": 17,
            "name": "Gaming Console",
            "icon": null,
            "icon_image": null,
            "is_featured": false,
            "parent_id": 2,
            "slug": "gaming-console",
            "image_with_sizes": {
                "origin": "https://shofy.botble.com/storage/main/product-categories/category-thumb-8-600x600.jpg",
                "thumb": "https://shofy.botble.com/storage/main/product-categories/category-thumb-8-150x150.jpg",
                "medium": "https://shofy.botble.com/storage/main/product-categories/category-thumb-8-600x600.jpg",
                "rectangle": "https://shofy.botble.com/storage/main/product-categories/category-thumb-8-420x270.jpg"
            }
        },
        {
            "id": 20,
            "name": "Computers",
            "icon": "ti ti-device-laptop",
            "icon_image": null,
            "is_featured": false,
            "parent_id": 0,
            "slug": "computers",
            "image_with_sizes": null
        },
        {
            "id": 24,
            "name": "Accessories",
            "icon": "ti ti-keyboard",
            "icon_image": null,
            "is_featured": false,
            "parent_id": 20,
            "slug": "accessories",
            "image_with_sizes": null
        },
        {
            "id": 36,
            "name": "Thermometer",
            "icon": null,
            "icon_image": null,
            "is_featured": false,
            "parent_id": 32,
            "slug": "thermometer",
            "image_with_sizes": null
        },
        {
            "id": 18,
            "name": "Playstation",
            "icon": null,
            "icon_image": null,
            "is_featured": false,
            "parent_id": 2,
            "slug": "playstation",
            "image_with_sizes": {
                "origin": "https://shofy.botble.com/storage/main/product-categories/category-thumb-12-600x600.jpg",
                "thumb": "https://shofy.botble.com/storage/main/product-categories/category-thumb-12-150x150.jpg",
                "medium": "https://shofy.botble.com/storage/main/product-categories/category-thumb-12-600x600.jpg",
                "rectangle": "https://shofy.botble.com/storage/main/product-categories/category-thumb-12-420x270.jpg"
            }
        },
        {
            "id": 25,
            "name": "Smartphones & Tablets",
            "icon": "ti ti-device-mobile",
            "icon_image": null,
            "is_featured": false,
            "parent_id": 0,
            "slug": "smartphones-tablets",
            "image_with_sizes": {
                "origin": "https://shofy.botble.com/storage/main/product-categories/category-thumb-10-600x600.jpg",
                "thumb": "https://shofy.botble.com/storage/main/product-categories/category-thumb-10-150x150.jpg",
                "medium": "https://shofy.botble.com/storage/main/product-categories/category-thumb-10-600x600.jpg",
                "rectangle": "https://shofy.botble.com/storage/main/product-categories/category-thumb-10-420x270.jpg"
            }
        },
        {
            "id": 37,
            "name": "Backpack",
            "icon": null,
            "icon_image": null,
            "is_featured": false,
            "parent_id": 32,
            "slug": "backpack",
            "image_with_sizes": null
        },
        {
            "id": 26,
            "name": "TV,\n                Video & Music",
            "icon": "ti ti-device-tv",
            "icon_image": null,
            "is_featured": false,
            "parent_id": 0,
            "slug": "tv-video-music",
            "image_with_sizes": null
        },
        {
            "id": 38,
            "name": "Headphones",
            "icon": null,
            "icon_image": null,
            "is_featured": false,
            "parent_id": 32,
            "slug": "headphones",
            "image_with_sizes": {
                "origin": "https://shofy.botble.com/storage/main/product-categories/category-thumb-1-600x600.jpg",
                "thumb": "https://shofy.botble.com/storage/main/product-categories/category-thumb-1-150x150.jpg",
                "medium": "https://shofy.botble.com/storage/main/product-categories/category-thumb-1-600x600.jpg",
                "rectangle": "https://shofy.botble.com/storage/main/product-categories/category-thumb-1-420x270.jpg"
            }
        },
        {
            "id": 27,
            "name": "Cameras",
            "icon": "ti ti-camera",
            "icon_image": null,
            "is_featured": false,
            "parent_id": 0,
            "slug": "cameras",
            "image_with_sizes": null
        },
        {
            "id": 28,
            "name": "Cooking",
            "icon": "ti ti-grill-spatula",
            "icon_image": null,
            "is_featured": false,
            "parent_id": 0,
            "slug": "cooking",
            "image_with_sizes": null
        },
        {
            "id": 29,
            "name": "Accessories",
            "icon": "ti ti-building-store",
            "icon_image": null,
            "is_featured": false,
            "parent_id": 0,
            "slug": "accessories",
            "image_with_sizes": null
        },
        {
            "id": 31,
            "name": "Sports",
            "icon": "ti ti-ball-football",
            "icon_image": null,
            "is_featured": false,
            "parent_id": 0,
            "slug": "sports",
            "image_with_sizes": null
        },
        {
            "id": 32,
            "name": "Electronics Gadgets",
            "icon": "ti ti-cpu-2",
            "icon_image": null,
            "is_featured": false,
            "parent_id": 0,
            "slug": "electronics-gadgets",
            "image_with_sizes": null
        }
    ],
    "error": false,
    "message": null
}
 

Request      

GET api/v1/ecommerce/product-categories

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

categories   string  optional  

nullable array List of category IDs if you need filter by categories, (e.g. [1,2,3]).

page   integer  optional  

Page number. Default: 1.

per_page   integer  optional  

Number of items per page. Default: 16.

Body Parameters

categories   string[]  optional  

The id of an existing record in the ec_product_categories table.

is_featured   boolean  optional  

Filter by featured status. Example: false

Get product category details by slug

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/product-categories/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/product-categories/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": ""
}
 

Request      

GET api/v1/ecommerce/product-categories/{slug}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

slug   string   

The slug of the product category. Example: architecto

Get products by category

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/product-categories/564/products" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/product-categories/564/products"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "No query results for model [Botble\\Ecommerce\\Models\\ProductCategory] 564"
}
 

Request      

GET api/v1/ecommerce/product-categories/{id}/products

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the product category. Example: 564

Products

Get list of products

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/products?sort_by=architecto&price_ranges=%5B%7B%22from%22%3A10%2C%22to%22%3A20%7D%2C%7B%22from%22%3A30%2C%22to%22%3A40%7D%5D&attributes=%5B%7B%22id%22%3A1%2C%22value%22%3A1%7D%2C%7B%22id%22%3A2%2C%22value%22%3A2%7D%5D&thumbnail_size=architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/products"
);

const params = {
    "sort_by": "architecto",
    "price_ranges": "[{"from":10,"to":20},{"from":30,"to":40}]",
    "attributes": "[{"id":1,"value":1},{"id":2,"value":2}]",
    "thumbnail_size": "architecto",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "data": [],
    "links": {
        "first": "https://shofy.botble.com/api/v1/ecommerce/products?page=1",
        "last": "https://shofy.botble.com/api/v1/ecommerce/products?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": null,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "page": null,
                "active": false
            },
            {
                "url": "https://shofy.botble.com/api/v1/ecommerce/products?page=1",
                "label": "1",
                "page": 1,
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "page": null,
                "active": false
            }
        ],
        "path": "https://shofy.botble.com/api/v1/ecommerce/products",
        "per_page": 24,
        "to": null,
        "total": 0
    },
    "error": false,
    "message": null
}
 

Request      

GET api/v1/ecommerce/products

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

categories   string[]  optional  

Filter by category IDs.

brands   string[]  optional  

Filter by brand IDs.

collections   string[]  optional  

Filter by collection IDs.

q   string  optional  

Search term.

sort_by   string  optional  

Sort field. Value: default_sorting, date_asc, date_desc, price_asc, price_desc, name_asc, name_desc, rating_asc, rating_desc Example: architecto

page   integer  optional  

The current page.

per_page   integer  optional  

Number of items per page.

discounted_only   boolean  optional  

Filter by discounted only.

min_price   integer  optional  

Minimum price.

max_price   integer  optional  

Maximum price.

price_ranges   string  optional  

Price ranges as JSON string. Example: [{"from":10,"to":20},{"from":30,"to":40}]

attributes   string  optional  

Attributes as JSON string. Example: [{"id":1,"value":1},{"id":2,"value":2}]

thumbnail_size   string  optional  

Size of product thumbnail images. Value: thumb, small, medium, large. Default: thumb Example: architecto

Get product details by slug

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/products/architecto?thumbnail_size=architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/products/architecto"
);

const params = {
    "thumbnail_size": "architecto",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": ""
}
 

Request      

GET api/v1/ecommerce/products/{slug}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

slug   string   

The slug of the product. Example: architecto

Query Parameters

thumbnail_size   string  optional  

Size of product thumbnail images. Value: thumb, small, medium, large. Default: thumb Example: architecto

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/products/architecto/related" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/products/architecto/related"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": ""
}
 

Get cross-sale products for a product

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/products/architecto/cross-sale" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/products/architecto/cross-sale"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": ""
}
 

Request      

GET api/v1/ecommerce/products/{slug}/cross-sale

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

slug   string   

The slug of the product. Example: architecto

Get product's reviews

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/products/architecto/reviews" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/products/architecto/reviews"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (404):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": ""
}
 

Request      

GET api/v1/ecommerce/products/{slug}/reviews

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

slug   string   

The slug of the product. Example: architecto

Get product variation by attributes

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/product-variation/564?attributes=" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"reference_product\": \"architecto\",
    \"attributes\": [
        \"architecto\"
    ]
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/product-variation/564"
);

const params = {
    "attributes": "",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "reference_product": "architecto",
    "attributes": [
        "architecto"
    ]
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "error": true,
    "data": null,
    "message": "Not available"
}
 

Request      

GET api/v1/ecommerce/product-variation/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the product variation. Example: 564

Query Parameters

attributes   string[]  optional  

Array of attribute IDs.

reference_product   string  optional  

Reference product slug.

Body Parameters

reference_product   string   

Example: architecto

attributes   string[]   

Profile

Get the user profile information.

requires authentication

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/me" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/me"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "error": true,
    "data": null,
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/me

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Update profile

requires authentication

Example request:
curl --request PUT \
    "https://shofy.botble.com/api/v1/me" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"first_name\": \"bngz\",
    \"last_name\": \"miyv\",
    \"name\": \"architecto\",
    \"phone\": \"architecto\",
    \"dob\": \"architecto\",
    \"gender\": \"architecto\",
    \"description\": \"Eius et animi quos velit et.\",
    \"email\": \"[email protected]\"
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/me"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "first_name": "bngz",
    "last_name": "miyv",
    "name": "architecto",
    "phone": "architecto",
    "dob": "architecto",
    "gender": "architecto",
    "description": "Eius et animi quos velit et.",
    "email": "[email protected]"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/v1/me

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

first_name   string  optional  

This field is required when name is not present. Must not be greater than 120 characters. Must be at least 2 characters. Example: bngz

last_name   string  optional  

This field is required when name is not present. Must not be greater than 120 characters. Must be at least 2 characters. Example: miyv

name   string   

Name. Example: architecto

phone   string   

Phone. Example: architecto

dob   date  optional  

nullable Date of birth (format: Y-m-d). Example: architecto

gender   string  optional  

Gender (male, female, other). Example: architecto

description   string  optional  

Description Example: Eius et animi quos velit et.

email   string  optional  

Email. Example: [email protected]

Update Avatar

requires authentication

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/update/avatar" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "avatar=@/tmp/php8sn5kca20dg517xWiyk" 
const url = new URL(
    "https://shofy.botble.com/api/v1/update/avatar"
);

const headers = {
    "Content-Type": "multipart/form-data",
    "Accept": "application/json",
};

const body = new FormData();
body.append('avatar', document.querySelector('input[name="avatar"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());

Request      

POST api/v1/update/avatar

Headers

Content-Type      

Example: multipart/form-data

Accept      

Example: application/json

Body Parameters

avatar   file   

Avatar file. Example: /tmp/php8sn5kca20dg517xWiyk

Update password

requires authentication

Example request:
curl --request PUT \
    "https://shofy.botble.com/api/v1/update/password" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"password\": \"|]|{+-\",
    \"old_password\": \"architecto\"
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/update/password"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "password": "|]|{+-",
    "old_password": "architecto"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/v1/update/password

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

password   string   

The new password of user. Example: |]|{+-

old_password   string   

The current password of user. Example: architecto

Get user settings

requires authentication

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/settings" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/settings"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "error": true,
    "data": null,
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/settings

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Update user settings

requires authentication

Example request:
curl --request PUT \
    "https://shofy.botble.com/api/v1/settings" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"biometric_enabled\": false,
    \"notification_enabled\": false,
    \"language\": \"architecto\",
    \"currency\": \"architecto\",
    \"theme\": \"architecto\",
    \"timezone\": \"America\\/Hermosillo\"
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/settings"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "biometric_enabled": false,
    "notification_enabled": false,
    "language": "architecto",
    "currency": "architecto",
    "theme": "architecto",
    "timezone": "America\/Hermosillo"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/v1/settings

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

biometric_enabled   boolean  optional  

Enable/disable biometric authentication. Example: false

notification_enabled   boolean  optional  

Enable/disable notifications. Example: false

language   string  optional  

User's preferred language. Example: architecto

currency   string  optional  

User's preferred currency. Example: architecto

theme   string  optional  

User's preferred theme (light, dark, auto). Example: architecto

timezone   string  optional  

User's timezone. Example: America/Hermosillo

Reviews

Get list of reviews for the current user

requires authentication

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/reviews" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/reviews"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "error": true,
    "data": null,
    "message": "Unauthenticated."
}
 

Request      

GET api/v1/ecommerce/reviews

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Create a new review

requires authentication

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/ecommerce/reviews" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"product_id\": 1,
    \"star\": 5,
    \"comment\": \"This is a great product! I highly recommend it.\"
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/reviews"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "product_id": 1,
    "star": 5,
    "comment": "This is a great product! I highly recommend it."
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/ecommerce/reviews

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

product_id   integer   

The ID of the product to review. Example: 1

star   integer   

The rating from 1 to 5 stars. Example: 5

comment   string   

The review comment. Example: This is a great product! I highly recommend it.

images   string[]  optional  

Array of images for the review (optional).

Delete a review

requires authentication

Example request:
curl --request DELETE \
    "https://shofy.botble.com/api/v1/ecommerce/reviews/564" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/reviews/564"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/v1/ecommerce/reviews/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the review. Example: 564

Simple Slider

Get sliders

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/simple-sliders?keys[]=home-slider&keys[]=product-slider" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"keys\": [
        \"home-slider\",
        \"product-slider\"
    ]
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/simple-sliders"
);

const params = {
    "keys[0]": "home-slider",
    "keys[1]": "product-slider",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "keys": [
        "home-slider",
        "product-slider"
    ]
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "error": false,
    "data": [
        {
            "id": 1,
            "name": "Home slider",
            "key": "home-slider",
            "description": "The main slider on homepage",
            "items": [
                {
                    "id": 1,
                    "title": "The best tablet Collection 2023",
                    "description": "Exclusive offer <span>-35%</span> off this week",
                    "image": "https://shofy.botble.com/storage/main/sliders/slider-1.png",
                    "link": "/products",
                    "order": 0,
                    "background_color": "#115061",
                    "is_light": 0,
                    "subtitle": "Starting at <b>$274.00</b>",
                    "button_label": "Shop Now"
                },
                {
                    "id": 2,
                    "title": "The best note book collection 2023",
                    "description": "Exclusive offer <span>-10%</span> off this week",
                    "image": "https://shofy.botble.com/storage/main/sliders/slider-3.png",
                    "link": "/products",
                    "order": 1,
                    "background_color": "#115061",
                    "is_light": 0,
                    "subtitle": "Starting at <b>$999.00</b>",
                    "button_label": "Shop Now"
                },
                {
                    "id": 3,
                    "title": "The best phone collection 2023",
                    "description": "Exclusive offer <span>-10%</span> off this week",
                    "image": "https://shofy.botble.com/storage/main/sliders/slider-2.png",
                    "link": "/products",
                    "order": 2,
                    "background_color": "#E3EDF6",
                    "is_light": 1,
                    "subtitle": "Starting at <b>$999.00</b>",
                    "button_label": "Shop Now"
                }
            ]
        }
    ],
    "message": null
}
 

Request      

GET api/v1/simple-sliders

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

keys   string[]  optional  

Array of slider keys to filter by.

Body Parameters

keys   string[]  optional  

Array of slider keys to filter by.

Social Login

Apple login

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/auth/apple" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"identityToken\": \"architecto\",
    \"guard\": \"architecto\"
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/auth/apple"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "identityToken": "architecto",
    "guard": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "error": false,
    "data": {
        "token": "1|abc123def456...",
        "user": {
            "id": 1,
            "name": "John Doe",
            "email": "[email protected]"
        }
    },
    "message": "Login successful"
}
 

Example response (400):


{
    "error": true,
    "message": "Invalid Apple token"
}
 

Example response (400):


{
    "error": true,
    "message": "Cannot login, no email or Apple ID provided!"
}
 

Request      

POST api/v1/auth/apple

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

identityToken   string   

The Apple identity token received from Apple Sign-In. Example: architecto

guard   string  optional  

optional The guard to use for authentication (default: web). Example: architecto

Google login

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/auth/google" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"identityToken\": \"architecto\",
    \"guard\": \"architecto\"
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/auth/google"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "identityToken": "architecto",
    "guard": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "error": false,
    "data": {
        "token": "1|abc123def456...",
        "user": {
            "id": 1,
            "name": "John Doe",
            "email": "[email protected]"
        }
    },
    "message": "Login successful"
}
 

Example response (400):


{
    "error": true,
    "message": "Invalid Google token"
}
 

Example response (400):


{
    "error": true,
    "message": "Google authentication is not properly configured"
}
 

Request      

POST api/v1/auth/google

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

identityToken   string   

The Google identity token received from Google Sign-In. Example: architecto

guard   string  optional  

optional The guard to use for authentication (default: web). Example: architecto

Facebook login

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/auth/facebook" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"accessToken\": \"architecto\",
    \"guard\": \"architecto\"
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/auth/facebook"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "accessToken": "architecto",
    "guard": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "error": false,
    "data": {
        "token": "1|abc123def456...",
        "user": {
            "id": 1,
            "name": "John Doe",
            "email": "[email protected]"
        }
    },
    "message": "Login successful"
}
 

Example response (400):


{
    "error": true,
    "message": "Invalid Facebook token"
}
 

Example response (400):


{
    "error": true,
    "message": "Facebook authentication is not properly configured"
}
 

Request      

POST api/v1/auth/facebook

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

accessToken   string   

The Facebook access token received from Facebook Login. Example: architecto

guard   string  optional  

optional The guard to use for authentication (default: web). Example: architecto

X (Twitter) login

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/auth/x" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"accessToken\": \"architecto\",
    \"guard\": \"architecto\"
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/auth/x"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "accessToken": "architecto",
    "guard": "architecto"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "error": false,
    "data": {
        "token": "1|abc123def456...",
        "user": {
            "id": 1,
            "name": "John Doe",
            "email": "[email protected]"
        }
    },
    "message": "Login successful"
}
 

Example response (400):


{
    "error": true,
    "message": "Invalid X (Twitter) token"
}
 

Example response (400):


{
    "error": true,
    "message": "X (Twitter) authentication is not properly configured"
}
 

Request      

POST api/v1/auth/x

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

accessToken   string   

The X (Twitter) access token received from X OAuth. Example: architecto

guard   string  optional  

optional The guard to use for authentication (default: web). Example: architecto

Wishlist

Add product to wishlist

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/ecommerce/wishlist" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"product_id\": 1
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/wishlist"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "product_id": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/ecommerce/wishlist

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

product_id   integer   

ID of the product. Example: 1

Add product to wishlist

Example request:
curl --request POST \
    "https://shofy.botble.com/api/v1/ecommerce/wishlist/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"product_id\": 1
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/wishlist/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "product_id": 1
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/v1/ecommerce/wishlist/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the wishlist. Example: architecto

Body Parameters

product_id   integer   

ID of the product. Example: 1

Remove a product from wishlist

Example request:
curl --request DELETE \
    "https://shofy.botble.com/api/v1/ecommerce/wishlist/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"product_id\": 1
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/wishlist/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "product_id": 1
};

fetch(url, {
    method: "DELETE",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

DELETE api/v1/ecommerce/wishlist/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the wishlist. Example: architecto

Body Parameters

product_id   string   

The ID of the product to remove from the wishlist. The id of an existing record in the ec_products table. Example: 1

Get wishlist items

Example request:
curl --request GET \
    --get "https://shofy.botble.com/api/v1/ecommerce/wishlist/architecto" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id\": \"e70c6c88dae8344b03e39bb147eba66a\"
}"
const url = new URL(
    "https://shofy.botble.com/api/v1/ecommerce/wishlist/architecto"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "id": "e70c6c88dae8344b03e39bb147eba66a"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "id": "architecto",
    "data": {
        "count": 0,
        "items": []
    }
}
 

Request      

GET api/v1/ecommerce/wishlist/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the wishlist. Example: architecto

Body Parameters

id   string   

ID of the wishlist. Example: e70c6c88dae8344b03e39bb147eba66a