MENU navbar-image

Introduction

AC POS Connector API

واجهة الربط البرمجية لنظام AC POS تربط تطبيق الجوال والمتاجر والأنظمة الخارجية بمنشأتك.

AC POS Connector API connects the mobile app, online stores and other systems to your business.

{"message": "The name field is required.",
 "error": {"code": "validation_failed", "message": "The name field is required.", "fields": {"name": ["The name field is required."]}},
 "errors": {"name": ["The name field is required."]}}

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer {access_token}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

Getting a token / الحصول على رمز الدخول

  1. A business admin creates a client under Connector › API keys (مفاتيح الربط) and copies the client ID and secret (the secret is shown once).
  2. POST /oauth/token with JSON {"grant_type":"password","client_id":…,"client_secret":…,"username":…,"password":…,"scope":""}. The answer holds access_token (90 days) and refresh_token (180 days).
  3. Send Authorization: Bearer <access_token> and Accept: application/json with every call.
  4. Renew with grant_type=refresh_token; end a session with POST /connector/api/logout.

Only active staff accounts with login rights, of an active business whose plan includes the Connector, can get or use a token. A new password, a disabled account or a deleted user ends every session. POST /oauth/token allows, per account, 10 attempts a minute from one address and 30 a minute or 100 an hour from all addresses, and 60 a minute per address. A right password on a disabled account, a customer-portal account or a suspended business is refused (400) with error = account_disabled, account_not_allowed or business_inactive; a wrong password stays invalid_grant.

Attendance (HRM)

Latest attendance record

requires authentication

The employee's most recent day record and whether they are clocked in now (kept for apps that used the older Essentials-shaped endpoint).

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/get-attendance/12" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/get-attendance/12"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/get-attendance/12',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": {
        "user_id": 12,
        "business_id": 1,
        "attendance_date": "2026-09-24",
        "clock_in_time": "2026-09-24 09:02:11",
        "clock_out_time": null,
        "status": "present",
        "late_minutes": 0,
        "worked_minutes": 0,
        "overtime_minutes": 0,
        "state": {
            "in": true,
            "since": "2026-09-24 09:02:11"
        }
    }
}
 

Request   

GET connector/api/get-attendance/{user_id}

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

user_id   string   

The employee's user id (yourself, or another employee for attendance managers). Example: 12

Clock in

requires authentication

Records the clock-in at the server's time. With the phone's position the branch geofence is applied: in warn mode an outside punch is recorded and flagged, in block mode it is refused (422 outside_geofence), and a punch with no position is refused (422 location_required) unless the phone is on the branch's own network.

Example request:
curl --request POST \
    "https://bqf.ai/connector/api/clock-in" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"latitude\": 24.7136,
    \"longitude\": 46.6753,
    \"accuracy_m\": 12,
    \"clock_in_note\": \"from the app\",
    \"user_id\": 12
}"
const url = new URL(
    "https://bqf.ai/connector/api/clock-in"
);

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

let body = {
    "latitude": 24.7136,
    "longitude": 46.6753,
    "accuracy_m": 12,
    "clock_in_note": "from the app",
    "user_id": 12
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://bqf.ai/connector/api/clock-in',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'latitude' => 24.7136,
            'longitude' => 46.6753,
            'accuracy_m' => 12,
            'clock_in_note' => 'from the app',
            'user_id' => 12,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "msg": "Clocked in at 09:02",
    "type": "clock_in",
    "punch": {
        "id": 5,
        "type": "in",
        "at": "2026-09-24 09:02:11",
        "source": "mobile",
        "within_geofence": true,
        "distance_m": 34
    },
    "state": {
        "in": true,
        "since": "2026-09-24 09:02:11"
    }
}
 

Request   

POST connector/api/clock-in

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

latitude   number  optional  

Phone latitude. Example: 24.7136

longitude   number  optional  

Phone longitude. Example: 46.6753

accuracy_m   integer  optional  

GPS accuracy in metres. Example: 12

clock_in_note   string  optional  

A note (max 255). Example: from the app

user_id   integer  optional  

Another employee (attendance managers only). Example: 12

Clock out

requires authentication

Same rules as clock in. The day record (late, early leave, worked and overtime minutes) is recomputed from the day's punches and the shift.

Example request:
curl --request POST \
    "https://bqf.ai/connector/api/clock-out" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"latitude\": 24.7136,
    \"longitude\": 46.6753,
    \"accuracy_m\": 12,
    \"clock_out_note\": \"done\",
    \"user_id\": 12
}"
const url = new URL(
    "https://bqf.ai/connector/api/clock-out"
);

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

let body = {
    "latitude": 24.7136,
    "longitude": 46.6753,
    "accuracy_m": 12,
    "clock_out_note": "done",
    "user_id": 12
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://bqf.ai/connector/api/clock-out',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'latitude' => 24.7136,
            'longitude' => 46.6753,
            'accuracy_m' => 12,
            'clock_out_note' => 'done',
            'user_id' => 12,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "msg": "Clocked out at 17:31",
    "type": "clock_out",
    "punch": {
        "id": 6,
        "type": "out",
        "at": "2026-09-24 17:31:40",
        "source": "mobile",
        "within_geofence": true,
        "distance_m": 20
    },
    "state": {
        "in": false,
        "since": "2026-09-24 17:31:40"
    },
    "log": {
        "status": "present",
        "clock_in": "09:02:11",
        "clock_out": "17:31:40",
        "late_minutes": 0,
        "early_leave_minutes": 0,
        "worked_minutes": 449,
        "overtime_minutes": 31
    }
}
 

Request   

POST connector/api/clock-out

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

latitude   number  optional  

Phone latitude. Example: 24.7136

longitude   number  optional  

Phone longitude. Example: 46.6753

accuracy_m   integer  optional  

GPS accuracy in metres. Example: 12

clock_out_note   string  optional  

A note (max 255). Example: done

user_id   integer  optional  

Another employee (attendance managers only). Example: 12

My attendance today

requires authentication

The employee, their shift for today, whether they are clocked in, today's punches and day record, the month so far, and the branch geofence the app should show (mode off, warn or block; lat/lng/radius_m when the branch has one).

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/attendance/me?user_id=12" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/attendance/me"
);

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

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/attendance/me',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'user_id' => '12',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": {
        "employee": {
            "user_id": 12,
            "name": "Sami",
            "employee_code": "E-7",
            "location": {
                "id": 1,
                "name": "Main"
            }
        },
        "state": {
            "in": true,
            "since": "2026-09-24 09:02:11"
        },
        "shift": {
            "name": "Morning",
            "start": "09:00",
            "end": "17:00",
            "is_rest_day": false,
            "is_holiday": false
        },
        "today": {
            "punches": [
                {
                    "id": 5,
                    "type": "in",
                    "at": "2026-09-24 09:02:11",
                    "source": "mobile",
                    "within_geofence": true,
                    "distance_m": 34
                }
            ],
            "log": {
                "status": "present",
                "clock_in": "09:02:11",
                "clock_out": null,
                "late_minutes": 0,
                "early_leave_minutes": 0,
                "worked_minutes": 0,
                "overtime_minutes": 0
            }
        },
        "month": {
            "present": 17,
            "late": 2,
            "absent": 0,
            "worked_hours": 136.5,
            "overtime_hours": 3.5
        },
        "geofence": {
            "mode": "warn",
            "has_fence": true,
            "lat": 24.7136,
            "lng": 46.6753,
            "radius_m": 150
        }
    }
}
 

Request   

GET connector/api/attendance/me

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

user_id   integer  optional  

Another employee (attendance managers only). Example: 12

Attendance history

requires authentication

Day records between two dates (at most 92 days), newest first.

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/attendance/history?from=2026-09-01&to=2026-09-30&user_id=12" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"from\": \"2026-09-24T21:24:58\",
    \"to\": \"2026-09-24T21:24:58\",
    \"user_id\": 3
}"
const url = new URL(
    "https://bqf.ai/connector/api/attendance/history"
);

const params = {
    "from": "2026-09-01",
    "to": "2026-09-30",
    "user_id": "12",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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

let body = {
    "from": "2026-09-24T21:24:58",
    "to": "2026-09-24T21:24:58",
    "user_id": 3
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/attendance/history',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'from' => '2026-09-01',
            'to' => '2026-09-30',
            'user_id' => '12',
        ],
        'json' => [
            'from' => '2026-09-24T21:24:58',
            'to' => '2026-09-24T21:24:58',
            'user_id' => 3,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "date": "2026-09-24",
            "status": "late",
            "clock_in": "09:25:00",
            "clock_out": "18:15:00",
            "late_minutes": 15,
            "early_leave_minutes": 0,
            "worked_minutes": 470,
            "overtime_minutes": 75,
            "source": "mobile"
        }
    ]
}
 

Request   

GET connector/api/attendance/history

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

from   string  optional  

date Start date. Example: 2026-09-01

to   string  optional  

date End date. Example: 2026-09-30

user_id   integer  optional  

Another employee (attendance managers only). Example: 12

Body Parameters

from   string  optional  

الحقل value ليس تاريخًا صالحًا. Example: 2026-09-24T21:24:58

to   string  optional  

الحقل value ليس تاريخًا صالحًا. Example: 2026-09-24T21:24:58

user_id   integer  optional  

Example: 3

My attendance violations

requires authentication

Open and recently decided violations (lateness, early leave, absence) with their status, so the employee can explain from the app.

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/attendance/violations?user_id=12" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/attendance/violations"
);

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

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/attendance/violations',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'user_id' => '12',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 3,
            "date": "2026-09-22",
            "type": "late",
            "minutes": 20,
            "occurrence": 2,
            "penalty_fraction": 0.15,
            "status": "justification_requested",
            "justification": null
        }
    ]
}
 

Request   

GET connector/api/attendance/violations

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

user_id   integer  optional  

Another employee (attendance managers only). Example: 12

Explain a violation

requires authentication

The employee's own explanation for one of their violations that is still open.

Example request:
curl --request POST \
    "https://bqf.ai/connector/api/attendance/violations/3/justify" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"justification\": \"traffic accident on the ring road\"
}"
const url = new URL(
    "https://bqf.ai/connector/api/attendance/violations/3/justify"
);

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

let body = {
    "justification": "traffic accident on the ring road"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://bqf.ai/connector/api/attendance/violations/3/justify',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'justification' => 'traffic accident on the ring road',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "msg": "Your explanation was sent.",
    "status": "justified"
}
 

Request   

POST connector/api/attendance/violations/{id}/justify

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The violation id. Example: 3

Body Parameters

justification   string   

The explanation (max 2000). Example: traffic accident on the ring road

Public holidays

requires authentication

The business's public holidays as HRM has them (no lateness or absence on those days; work on them is overtime), for the app's calendar.

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/holidays" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/holidays"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/holidays',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "date": "2026-03-20"
        },
        {
            "date": "2026-03-21"
        },
        {
            "date": "2026-09-23"
        }
    ]
}
 

Request   

GET connector/api/holidays

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Authentication

Log out

requires authentication

Revokes the access token used for this request and its refresh token. Other devices of the same user stay logged in.

Example request:
curl --request POST \
    "https://bqf.ai/connector/api/logout" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/logout"
);

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

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://bqf.ai/connector/api/logout',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true
}
 

Request   

POST connector/api/logout

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Brand management

List brands

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/brand" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/brand"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/brand',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 1,
            "business_id": 1,
            "name": "Levis",
            "description": null,
            "created_by": 1,
            "deleted_at": null,
            "created_at": "2018-01-03 21:19:47",
            "updated_at": "2018-01-03 21:19:47"
        },
        {
            "id": 2,
            "business_id": 1,
            "name": "Espirit",
            "description": null,
            "created_by": 1,
            "deleted_at": null,
            "created_at": "2018-01-03 21:19:58",
            "updated_at": "2018-01-03 21:19:58"
        }
    ]
}
 

Request   

GET connector/api/brand

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Get the specified brand

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/brand/eius" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/brand/eius"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/brand/eius',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 1,
            "business_id": 1,
            "name": "Levis",
            "description": null,
            "created_by": 1,
            "deleted_at": null,
            "created_at": "2018-01-03 21:19:47",
            "updated_at": "2018-01-03 21:19:47"
        }
    ]
}
 

Request   

GET connector/api/brand/{id}

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the brand. Example: eius

brand   string   

comma separated ids of the brands Example: 1

Business Location management

List business locations

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/business-location" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/business-location"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/business-location',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 1,
            "business_id": 1,
            "location_id": null,
            "name": "Awesome Shop",
            "landmark": "Linking Street",
            "country": "USA",
            "state": "Arizona",
            "city": "Phoenix",
            "zip_code": "85001",
            "invoice_scheme_id": 1,
            "invoice_layout_id": 1,
            "selling_price_group_id": null,
            "print_receipt_on_invoice": 1,
            "receipt_printer_type": "browser",
            "printer_id": null,
            "mobile": null,
            "alternate_number": null,
            "email": null,
            "website": null,
            "featured_products": [
                "5",
                "71"
            ],
            "is_active": 1,
            "payment_methods": [
                {
                    "name": "cash",
                    "label": "Cash",
                    "account_id": "1"
                },
                {
                    "name": "card",
                    "label": "Card",
                    "account_id": null
                },
                {
                    "name": "cheque",
                    "label": "Cheque",
                    "account_id": null
                },
                {
                    "name": "bank_transfer",
                    "label": "Bank Transfer",
                    "account_id": null
                },
                {
                    "name": "other",
                    "label": "Other",
                    "account_id": null
                },
                {
                    "name": "custom_pay_1",
                    "label": "Custom Payment 1",
                    "account_id": null
                },
                {
                    "name": "custom_pay_2",
                    "label": "Custom Payment 2",
                    "account_id": null
                },
                {
                    "name": "custom_pay_3",
                    "label": "Custom Payment 3",
                    "account_id": null
                }
            ],
            "custom_field1": null,
            "custom_field2": null,
            "custom_field3": null,
            "custom_field4": null,
            "deleted_at": null,
            "created_at": "2018-01-04 02:15:20",
            "updated_at": "2020-06-05 00:56:54"
        }
    ]
}
 

Request   

GET connector/api/business-location

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Get the specified business location

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/business-location/sed" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/business-location/sed"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/business-location/sed',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 1,
            "business_id": 1,
            "location_id": null,
            "name": "Awesome Shop",
            "landmark": "Linking Street",
            "country": "USA",
            "state": "Arizona",
            "city": "Phoenix",
            "zip_code": "85001",
            "invoice_scheme_id": 1,
            "invoice_layout_id": 1,
            "selling_price_group_id": null,
            "print_receipt_on_invoice": 1,
            "receipt_printer_type": "browser",
            "printer_id": null,
            "mobile": null,
            "alternate_number": null,
            "email": null,
            "website": null,
            "featured_products": [
                "5",
                "71"
            ],
            "is_active": 1,
            "payment_methods": [
                {
                    "name": "cash",
                    "label": "Cash",
                    "account_id": "1"
                },
                {
                    "name": "card",
                    "label": "Card",
                    "account_id": null
                },
                {
                    "name": "cheque",
                    "label": "Cheque",
                    "account_id": null
                },
                {
                    "name": "bank_transfer",
                    "label": "Bank Transfer",
                    "account_id": null
                },
                {
                    "name": "other",
                    "label": "Other",
                    "account_id": null
                },
                {
                    "name": "custom_pay_1",
                    "label": "Custom Payment 1",
                    "account_id": null
                },
                {
                    "name": "custom_pay_2",
                    "label": "Custom Payment 2",
                    "account_id": null
                },
                {
                    "name": "custom_pay_3",
                    "label": "Custom Payment 3",
                    "account_id": null
                }
            ],
            "custom_field1": null,
            "custom_field2": null,
            "custom_field3": null,
            "custom_field4": null,
            "deleted_at": null,
            "created_at": "2018-01-04 02:15:20",
            "updated_at": "2020-06-05 00:56:54"
        }
    ]
}
 

Request   

GET connector/api/business-location/{id}

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the business location. Example: sed

location   string   

comma separated ids of the business location Example: 1

CRM

List Follow ups

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/crm/follow-ups?start_date=2020-12-16&end_date=2020-12-16&status=fuga&follow_up_type=atque&followup_category_id=doloremque&order_by=start_datetime&direction=desc&per_page=15" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/crm/follow-ups"
);

const params = {
    "start_date": "2020-12-16",
    "end_date": "2020-12-16",
    "status": "fuga",
    "follow_up_type": "atque",
    "followup_category_id": "doloremque",
    "order_by": "start_datetime",
    "direction": "desc",
    "per_page": "15",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/crm/follow-ups',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'start_date' => '2020-12-16',
            'end_date' => '2020-12-16',
            'status' => 'fuga',
            'follow_up_type' => 'atque',
            'followup_category_id' => 'doloremque',
            'order_by' => 'start_datetime',
            'direction' => 'desc',
            'per_page' => '15',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 1,
            "business_id": 1,
            "contact_id": 50,
            "title": "Test Follow up",
            "status": "scheduled",
            "start_datetime": "2020-12-16 15:15:00",
            "end_datetime": "2020-12-16 15:15:00",
            "description": "<p>tst</p>",
            "schedule_type": "call",
            "allow_notification": 0,
            "notify_via": {
                "sms": 0,
                "mail": 1
            },
            "notify_before": null,
            "notify_type": "minute",
            "created_by": 1,
            "followup_additional_info": null,
            "created_at": "2020-12-16 03:15:23",
            "updated_at": "2020-12-16 15:46:34",
            "customer": {
                "id": 50,
                "business_id": 1,
                "type": "lead",
                "supplier_business_name": null,
                "name": " Lead 4  ",
                "prefix": null,
                "first_name": "Lead 4",
                "middle_name": null,
                "last_name": null,
                "email": null,
                "contact_id": "CO0011",
                "contact_status": "active",
                "tax_number": null,
                "city": null,
                "state": null,
                "country": null,
                "address_line_1": null,
                "address_line_2": null,
                "zip_code": null,
                "dob": null,
                "mobile": "234567",
                "landline": null,
                "alternate_number": null,
                "pay_term_number": null,
                "pay_term_type": null,
                "credit_limit": null,
                "created_by": 1,
                "balance": "0.0000",
                "total_rp": 0,
                "total_rp_used": 0,
                "total_rp_expired": 0,
                "is_default": 0,
                "shipping_address": null,
                "position": null,
                "customer_group_id": null,
                "crm_source": "55",
                "crm_life_stage": "62",
                "custom_field1": null,
                "custom_field2": null,
                "custom_field3": null,
                "custom_field4": null,
                "custom_field5": null,
                "custom_field6": null,
                "custom_field7": null,
                "custom_field8": null,
                "custom_field9": null,
                "custom_field10": null,
                "deleted_at": null,
                "created_at": "2020-12-15 23:14:48",
                "updated_at": "2021-01-07 15:32:52",
                "remember_token": null,
                "password": null
            }
        },
        {
            "id": 2,
            "business_id": 1,
            "contact_id": 50,
            "title": "Test Follow up 1",
            "status": "completed",
            "start_datetime": "2020-12-16 15:46:00",
            "end_datetime": "2020-12-16 15:46:00",
            "description": "<p>Test Follow up</p>",
            "schedule_type": "call",
            "allow_notification": 0,
            "notify_via": {
                "sms": 0,
                "mail": 1
            },
            "notify_before": null,
            "notify_type": "minute",
            "created_by": 1,
            "followup_additional_info": null,
            "created_at": "2020-12-16 15:46:57",
            "updated_at": "2020-12-17 10:24:11",
            "customer": {
                "id": 50,
                "business_id": 1,
                "type": "lead",
                "supplier_business_name": null,
                "name": " Lead 4  ",
                "prefix": null,
                "first_name": "Lead 4",
                "middle_name": null,
                "last_name": null,
                "email": null,
                "contact_id": "CO0011",
                "contact_status": "active",
                "tax_number": null,
                "city": null,
                "state": null,
                "country": null,
                "address_line_1": null,
                "address_line_2": null,
                "zip_code": null,
                "dob": null,
                "mobile": "234567",
                "landline": null,
                "alternate_number": null,
                "pay_term_number": null,
                "pay_term_type": null,
                "credit_limit": null,
                "created_by": 1,
                "balance": "0.0000",
                "total_rp": 0,
                "total_rp_used": 0,
                "total_rp_expired": 0,
                "is_default": 0,
                "shipping_address": null,
                "position": null,
                "customer_group_id": null,
                "crm_source": "55",
                "crm_life_stage": "62",
                "custom_field1": null,
                "custom_field2": null,
                "custom_field3": null,
                "custom_field4": null,
                "custom_field5": null,
                "custom_field6": null,
                "custom_field7": null,
                "custom_field8": null,
                "custom_field9": null,
                "custom_field10": null,
                "deleted_at": null,
                "created_at": "2020-12-15 23:14:48",
                "updated_at": "2021-01-07 15:32:52",
                "remember_token": null,
                "password": null
            }
        }
    ],
    "links": {
        "first": "https://bqf.ai/connector/api/crm/follow-ups?page=1",
        "last": "https://bqf.ai/connector/api/crm/follow-ups?page=21",
        "prev": null,
        "next": "https://bqf.ai/connector/api/crm/follow-ups?page=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 21,
        "path": "https://bqf.ai/connector/api/crm/follow-ups",
        "per_page": "2",
        "to": 2,
        "total": 42
    }
}
 

Request   

GET connector/api/crm/follow-ups

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

start_date   string  optional  

format: Y-m-d (Ex: 2020-12-16) Example: 2020-12-16

end_date   string  optional  

format: Y-m-d (Ex: 2020-12-16) Example: 2020-12-16

status   string  optional  

filter the result through status, get status from getFollowUpResources->statuses Example: fuga

follow_up_type   string  optional  

filter the result through follow_up_type, get follow_up_type from getFollowUpResources->follow_up_types Example: atque

followup_category_id   string  optional  

filter the result through followup_category_id Example: doloremque

order_by   string  optional  

Column name to sort the result, Column: start_datetime Example: start_datetime

direction   string  optional  

Direction to sort the result, Required if using 'order_by', direction: desc, asc Example: desc

per_page   integer  optional  

Total records per page (up to 500). default: 15, Set -1 for no pagination (up to 1000 records) Example: 15

Add follow up

requires authentication

Example request:
curl --request POST \
    "https://bqf.ai/connector/api/crm/follow-ups" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"Meeting with client\",
    \"contact_id\": 2,
    \"description\": \"Non ullam excepturi repudiandae.\",
    \"schedule_type\": \"quo\",
    \"user_id\": [
        2,
        3,
        5
    ],
    \"notify_before\": 5,
    \"notify_type\": \"minute\",
    \"status\": \"open\",
    \"notify_via\": [
        \"et\"
    ],
    \"start_datetime\": \"2021-01-06 13:05:00\",
    \"end_datetime\": \"2021-01-06 13:05:00\",
    \"followup_additional_info\": [
        \"quaerat\"
    ],
    \"allow_notification\": true
}"
const url = new URL(
    "https://bqf.ai/connector/api/crm/follow-ups"
);

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

let body = {
    "title": "Meeting with client",
    "contact_id": 2,
    "description": "Non ullam excepturi repudiandae.",
    "schedule_type": "quo",
    "user_id": [
        2,
        3,
        5
    ],
    "notify_before": 5,
    "notify_type": "minute",
    "status": "open",
    "notify_via": [
        "et"
    ],
    "start_datetime": "2021-01-06 13:05:00",
    "end_datetime": "2021-01-06 13:05:00",
    "followup_additional_info": [
        "quaerat"
    ],
    "allow_notification": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://bqf.ai/connector/api/crm/follow-ups',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'title' => 'Meeting with client',
            'contact_id' => 2,
            'description' => 'Non ullam excepturi repudiandae.',
            'schedule_type' => 'quo',
            'user_id' => [
                2,
                3,
                5,
            ],
            'notify_before' => 5,
            'notify_type' => 'minute',
            'status' => 'open',
            'notify_via' => [
                'et',
            ],
            'start_datetime' => '2021-01-06 13:05:00',
            'end_datetime' => '2021-01-06 13:05:00',
            'followup_additional_info' => [
                'quaerat',
            ],
            'allow_notification' => true,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": {
        "title": "test",
        "contact_id": "1",
        "description": null,
        "schedule_type": "call",
        "followup_category_id": "1",
        "notify_before": null,
        "status": null,
        "start_datetime": "2021-01-06 15:27:00",
        "end_datetime": "2021-01-06 15:27:00",
        "allow_notification": 0,
        "notify_via": {
            "sms": 1,
            "mail": 1
        },
        "notify_type": "hour",
        "business_id": 1,
        "created_by": 1,
        "updated_at": "2021-01-06 17:04:54",
        "created_at": "2021-01-06 17:04:54",
        "id": 20
    }
}
 

Request   

POST connector/api/crm/follow-ups

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

title   string   

Follow up title Example: Meeting with client

contact_id   integer   

Contact to be followed up Example: 2

description   text  optional  

Follow up description Example: Non ullam excepturi repudiandae.

schedule_type   string   

Follow up type default get from getFollowUpResources->follow_up_types Example: quo

user_id   string[]   

Integer ID; Follow up to be assigned Ex: [2,3,8]

notify_before   integer  optional  

Integer value will be used to send auto notification before follow up starts. Example: 5

notify_type   string  optional  

Notify type Ex: 'minute', 'hour', 'day'. default is hour Example: minute

status   string  optional  

Follow up status Example: open

notify_via   string[]  optional  

Will be used to send notification Ex: ['sms' => 0 ,'mail' => 1]

start_datetime   datetime   

Follow up start datetime format: Y-m-d H:i:s Ex: 2020-12-16 03:15:23 Example: 2021-01-06 13:05:00

end_datetime   datetime   

Follow up end datetime format: Y-m-d H:i:s Ex: 2020-12-16 03:15:23 Example: 2021-01-06 13:05:00

followup_additional_info   string[]  optional  

Follow up additional info Ex: ['call duration' => '1 hour']

allow_notification   boolean  optional  

0/1 : If notification will be send before follow up starts. default is 1(true) Example: true

Get the specified followup

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/crm/follow-ups/rerum" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/crm/follow-ups/rerum"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/crm/follow-ups/rerum',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 20,
            "business_id": 1,
            "contact_id": 1,
            "title": "Meeting with client",
            "status": null,
            "start_datetime": "2021-01-06 15:27:00",
            "end_datetime": "2021-01-06 15:27:00",
            "description": null,
            "schedule_type": "call",
            "allow_notification": 0,
            "notify_via": {
                "sms": 1,
                "mail": 1
            },
            "notify_before": null,
            "notify_type": "hour",
            "created_by": 1,
            "created_at": "2021-01-06 17:04:54",
            "updated_at": "2021-01-06 17:04:54",
            "customer": {
                "id": 1,
                "business_id": 1,
                "type": "customer",
                "supplier_business_name": null,
                "name": "Walk-In Customer",
                "prefix": null,
                "first_name": "Walk-In Customer",
                "middle_name": null,
                "last_name": null,
                "email": null,
                "contact_id": "CO0005",
                "contact_status": "active",
                "tax_number": null,
                "city": "Phoenix",
                "state": "Arizona",
                "country": "USA",
                "address_line_1": "Linking Street",
                "address_line_2": null,
                "zip_code": null,
                "dob": null,
                "mobile": "(378) 400-1234",
                "landline": null,
                "alternate_number": null,
                "pay_term_number": null,
                "pay_term_type": null,
                "credit_limit": null,
                "created_by": 1,
                "balance": "0.0000",
                "total_rp": 0,
                "total_rp_used": 0,
                "total_rp_expired": 0,
                "is_default": 1,
                "shipping_address": null,
                "position": null,
                "customer_group_id": null,
                "crm_source": null,
                "crm_life_stage": null,
                "custom_field1": null,
                "custom_field2": null,
                "custom_field3": null,
                "custom_field4": null,
                "custom_field5": null,
                "custom_field6": null,
                "custom_field7": null,
                "custom_field8": null,
                "custom_field9": null,
                "custom_field10": null,
                "deleted_at": null,
                "created_at": "2018-01-03 20:45:20",
                "updated_at": "2018-06-11 22:22:05",
                "remember_token": null,
                "password": null
            },
            "users": [
                {
                    "id": 2,
                    "user_type": "user",
                    "surname": "Mr",
                    "first_name": "Demo",
                    "last_name": "Cashier",
                    "username": "cashier",
                    "email": "cashier@example.com",
                    "language": "en",
                    "contact_no": null,
                    "address": null,
                    "business_id": 1,
                    "max_sales_discount_percent": null,
                    "allow_login": 1,
                    "essentials_department_id": null,
                    "essentials_designation_id": null,
                    "status": "active",
                    "crm_contact_id": null,
                    "is_cmmsn_agnt": 0,
                    "cmmsn_percent": "0.00",
                    "selected_contacts": 0,
                    "dob": null,
                    "gender": null,
                    "marital_status": null,
                    "blood_group": null,
                    "contact_number": null,
                    "fb_link": null,
                    "twitter_link": null,
                    "social_media_1": null,
                    "social_media_2": null,
                    "permanent_address": null,
                    "current_address": null,
                    "guardian_name": null,
                    "custom_field_1": null,
                    "custom_field_2": null,
                    "custom_field_3": null,
                    "custom_field_4": null,
                    "bank_details": null,
                    "id_proof_name": null,
                    "id_proof_number": null,
                    "deleted_at": null,
                    "created_at": "2018-01-04 02:20:58",
                    "updated_at": "2018-01-04 02:20:58",
                    "pivot": {
                        "schedule_id": 20,
                        "user_id": 2
                    }
                }
            ]
        }
    ]
}
 

Request   

GET connector/api/crm/follow-ups/{id}

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the follow up. Example: rerum

follow_up   string   

comma separated ids of the follow_ups Example: 1,2

Update follow up

requires authentication

Example request:
curl --request PUT \
    "https://bqf.ai/connector/api/crm/follow-ups/quos" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"title\": \"Meeting with client\",
    \"contact_id\": 2,
    \"description\": \"Facere id esse est modi quis.\",
    \"schedule_type\": \"aperiam\",
    \"user_id\": [
        2,
        3,
        5
    ],
    \"notify_before\": 5,
    \"notify_type\": \"minute\",
    \"status\": \"open\",
    \"notify_via\": [
        \"non\"
    ],
    \"followup_additional_info\": [
        \"deleniti\"
    ],
    \"start_datetime\": \"2021-01-06 13:05:00\",
    \"end_datetime\": \"2021-01-06 13:05:00\",
    \"allow_notification\": true
}"
const url = new URL(
    "https://bqf.ai/connector/api/crm/follow-ups/quos"
);

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

let body = {
    "title": "Meeting with client",
    "contact_id": 2,
    "description": "Facere id esse est modi quis.",
    "schedule_type": "aperiam",
    "user_id": [
        2,
        3,
        5
    ],
    "notify_before": 5,
    "notify_type": "minute",
    "status": "open",
    "notify_via": [
        "non"
    ],
    "followup_additional_info": [
        "deleniti"
    ],
    "start_datetime": "2021-01-06 13:05:00",
    "end_datetime": "2021-01-06 13:05:00",
    "allow_notification": true
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->put(
    'https://bqf.ai/connector/api/crm/follow-ups/quos',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'title' => 'Meeting with client',
            'contact_id' => 2,
            'description' => 'Facere id esse est modi quis.',
            'schedule_type' => 'aperiam',
            'user_id' => [
                2,
                3,
                5,
            ],
            'notify_before' => 5,
            'notify_type' => 'minute',
            'status' => 'open',
            'notify_via' => [
                'non',
            ],
            'followup_additional_info' => [
                'deleniti',
            ],
            'start_datetime' => '2021-01-06 13:05:00',
            'end_datetime' => '2021-01-06 13:05:00',
            'allow_notification' => true,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": {
        "id": 20,
        "business_id": 1,
        "contact_id": "1",
        "title": "Meeting with client",
        "status": null,
        "start_datetime": "2021-01-06 15:27:00",
        "end_datetime": "2021-01-06 15:27:00",
        "description": null,
        "schedule_type": "call",
        "allow_notification": 0,
        "notify_via": {
            "sms": 1,
            "mail": 0
        },
        "notify_before": null,
        "notify_type": "hour",
        "created_by": 1,
        "created_at": "2021-01-06 17:04:54",
        "updated_at": "2021-01-06 18:22:21"
    }
}
 

Request   

PUT connector/api/crm/follow-ups/{id}

PATCH connector/api/crm/follow-ups/{id}

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the follow up. Example: quos

follow_up   string   

id of the follow up to be updated Example: 20

Body Parameters

title   string   

Follow up title Example: Meeting with client

contact_id   integer   

Contact to be followed up Example: 2

description   text  optional  

Follow up description Example: Facere id esse est modi quis.

schedule_type   string   

Follow up type default get from getFollowUpResources->follow_up_types Example: aperiam

user_id   string[]   

Integer ID; Follow up to be assigned Ex: [2,3,8]

notify_before   integer  optional  

Integer value will be used to send auto notification before follow up starts. Example: 5

notify_type   string  optional  

Notify type Ex: 'minute', 'hour', 'day'. default is hour Example: minute

status   string  optional  

Follow up status Example: open

notify_via   string[]  optional  

Will be used to send notification Ex: ['sms' => 0 ,'mail' => 1]

followup_additional_info   string[]  optional  

Follow up additional info Ex: ['call duration' => '1 hour']

start_datetime   datetime   

Follow up start datetime format: Y-m-d H:i:s Ex: 2020-12-16 03:15:23 Example: 2021-01-06 13:05:00

end_datetime   datetime   

Follow up end datetime format: Y-m-d H:i:s Ex: 2020-12-16 03:15:23 Example: 2021-01-06 13:05:00

allow_notification   boolean  optional  

0/1 : If notification will be send before follow up starts. default is 1(true) Example: true

Get follow up resources

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/crm/follow-up-resources" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/crm/follow-up-resources"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/crm/follow-up-resources',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": {
        "statuses": {
            "scheduled": "Scheduled",
            "open": "Open",
            "canceled": "Cancelled",
            "completed": "Completed"
        },
        "follow_up_types": {
            "call": "Call",
            "sms": "Sms",
            "meeting": "Meeting",
            "email": "Email"
        },
        "notify_type": {
            "minute": "Minute",
            "hour": "Hour",
            "day": "Day"
        },
        "notify_via": {
            "sms": "Sms",
            "mail": "Email"
        }
    }
}
 

Request   

GET connector/api/crm/follow-up-resources

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

List lead

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/crm/leads?assigned_to=1%2C2%2C3&name=et&biz_name=autem&mobile_num=8&contact_id=dolor&order_by=aut&direction=desc&per_page=15" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/crm/leads"
);

const params = {
    "assigned_to": "1,2,3",
    "name": "et",
    "biz_name": "autem",
    "mobile_num": "8",
    "contact_id": "dolor",
    "order_by": "aut",
    "direction": "desc",
    "per_page": "15",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/crm/leads',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'assigned_to' => '1,2,3',
            'name' => 'et',
            'biz_name' => 'autem',
            'mobile_num' => '8',
            'contact_id' => 'dolor',
            'order_by' => 'aut',
            'direction' => 'desc',
            'per_page' => '15',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "contact_id": "CO0010",
            "name": "mr Lead 3 kr kr 2",
            "supplier_business_name": "POS",
            "email": null,
            "mobile": "9437638555",
            "tax_number": null,
            "created_at": "2020-12-15 23:14:30",
            "custom_field1": null,
            "custom_field2": null,
            "custom_field3": null,
            "custom_field4": null,
            "custom_field5": null,
            "custom_field6": null,
            "alternate_number": null,
            "landline": null,
            "dob": null,
            "contact_status": "active",
            "type": "lead",
            "custom_field7": null,
            "custom_field8": null,
            "custom_field9": null,
            "custom_field10": null,
            "id": 49,
            "business_id": 1,
            "crm_source": "55",
            "crm_life_stage": "60",
            "address_line_1": null,
            "address_line_2": null,
            "city": null,
            "state": null,
            "country": null,
            "zip_code": null,
            "last_follow_up_id": 18,
            "upcoming_follow_up_id": null,
            "last_follow_up": "2021-01-07 10:26:00",
            "upcoming_follow_up": null,
            "last_follow_up_additional_info": "{\"test\":\"test done\",\"call_duration\":\"1.5 Hour\",\"rand\":1}",
            "upcoming_follow_up_additional_info": null,
            "source": {
                "id": 55,
                "name": "Facebook",
                "business_id": 1,
                "short_code": null,
                "parent_id": 0,
                "created_by": 1,
                "category_type": "source",
                "description": "Facebook",
                "slug": null,
                "woocommerce_cat_id": null,
                "deleted_at": null,
                "created_at": "2020-12-15 23:07:53",
                "updated_at": "2020-12-15 23:07:53"
            },
            "life_stage": {
                "id": 60,
                "name": "Open Deal",
                "business_id": 1,
                "short_code": null,
                "parent_id": 0,
                "created_by": 1,
                "category_type": "life_stage",
                "description": "Open Deal",
                "slug": null,
                "woocommerce_cat_id": null,
                "deleted_at": null,
                "created_at": "2020-12-15 23:11:05",
                "updated_at": "2020-12-15 23:11:05"
            },
            "lead_users": [
                {
                    "id": 10,
                    "user_type": "user",
                    "surname": "Mr.",
                    "first_name": "WooCommerce",
                    "last_name": "User",
                    "username": "woocommerce_user",
                    "email": "woo@example.com",
                    "language": "en",
                    "contact_no": null,
                    "address": null,
                    "business_id": 1,
                    "max_sales_discount_percent": null,
                    "allow_login": 1,
                    "essentials_department_id": null,
                    "essentials_designation_id": null,
                    "status": "active",
                    "crm_contact_id": null,
                    "is_cmmsn_agnt": 0,
                    "cmmsn_percent": "0.00",
                    "selected_contacts": 0,
                    "dob": null,
                    "gender": null,
                    "marital_status": null,
                    "blood_group": null,
                    "contact_number": null,
                    "fb_link": null,
                    "twitter_link": null,
                    "social_media_1": null,
                    "social_media_2": null,
                    "permanent_address": null,
                    "current_address": null,
                    "guardian_name": null,
                    "custom_field_1": null,
                    "custom_field_2": null,
                    "custom_field_3": null,
                    "custom_field_4": null,
                    "bank_details": null,
                    "id_proof_name": null,
                    "id_proof_number": null,
                    "deleted_at": null,
                    "created_at": "2018-08-02 04:05:55",
                    "updated_at": "2018-08-02 04:05:55",
                    "pivot": {
                        "contact_id": 49,
                        "user_id": 10
                    }
                }
            ]
        },
        {
            "contact_id": "CO0011",
            "name": " Lead 4  ",
            "supplier_business_name": null,
            "email": null,
            "mobile": "234567",
            "tax_number": null,
            "created_at": "2020-12-15 23:14:48",
            "custom_field1": null,
            "custom_field2": null,
            "custom_field3": null,
            "custom_field4": null,
            "custom_field5": null,
            "custom_field6": null,
            "alternate_number": null,
            "landline": null,
            "dob": null,
            "contact_status": "active",
            "type": "lead",
            "custom_field7": null,
            "custom_field8": null,
            "custom_field9": null,
            "custom_field10": null,
            "id": 50,
            "business_id": 1,
            "crm_source": "55",
            "crm_life_stage": "62",
            "address_line_1": null,
            "address_line_2": null,
            "city": null,
            "state": null,
            "country": null,
            "zip_code": null,
            "last_follow_up_id": 32,
            "upcoming_follow_up_id": null,
            "last_follow_up": "2021-01-08 16:06:00",
            "upcoming_follow_up": null,
            "last_follow_up_additional_info": "{\"call_durartion\":\"5 hour\"}",
            "upcoming_follow_up_additional_info": null,
            "source": {
                "id": 55,
                "name": "Facebook",
                "business_id": 1,
                "short_code": null,
                "parent_id": 0,
                "created_by": 1,
                "category_type": "source",
                "description": "Facebook",
                "slug": null,
                "woocommerce_cat_id": null,
                "deleted_at": null,
                "created_at": "2020-12-15 23:07:53",
                "updated_at": "2020-12-15 23:07:53"
            },
            "life_stage": {
                "id": 62,
                "name": "New",
                "business_id": 1,
                "short_code": null,
                "parent_id": 0,
                "created_by": 1,
                "category_type": "life_stage",
                "description": "New",
                "slug": null,
                "woocommerce_cat_id": null,
                "deleted_at": null,
                "created_at": "2020-12-15 23:11:26",
                "updated_at": "2020-12-15 23:11:26"
            },
            "lead_users": [
                {
                    "id": 11,
                    "user_type": "user",
                    "surname": "Mr",
                    "first_name": "Admin Essential",
                    "last_name": null,
                    "username": "admin-essentials",
                    "email": "admin_essentials@example.com",
                    "language": "en",
                    "contact_no": null,
                    "address": null,
                    "business_id": 1,
                    "max_sales_discount_percent": null,
                    "allow_login": 1,
                    "essentials_department_id": null,
                    "essentials_designation_id": null,
                    "status": "active",
                    "crm_contact_id": null,
                    "is_cmmsn_agnt": 0,
                    "cmmsn_percent": "0.00",
                    "selected_contacts": 0,
                    "dob": null,
                    "gender": null,
                    "marital_status": null,
                    "blood_group": null,
                    "contact_number": null,
                    "fb_link": null,
                    "twitter_link": null,
                    "social_media_1": null,
                    "social_media_2": null,
                    "permanent_address": null,
                    "current_address": null,
                    "guardian_name": null,
                    "custom_field_1": null,
                    "custom_field_2": null,
                    "custom_field_3": null,
                    "custom_field_4": null,
                    "bank_details": null,
                    "id_proof_name": null,
                    "id_proof_number": null,
                    "deleted_at": null,
                    "created_at": "2018-01-04 02:15:19",
                    "updated_at": "2018-01-04 02:15:19",
                    "pivot": {
                        "contact_id": 50,
                        "user_id": 11
                    }
                }
            ]
        },
        {
            "contact_id": "CO0015",
            "name": " Lead kr  ",
            "supplier_business_name": null,
            "email": null,
            "mobile": "9437638555",
            "tax_number": null,
            "created_at": "2021-01-07 18:31:08",
            "custom_field1": null,
            "custom_field2": null,
            "custom_field3": null,
            "custom_field4": null,
            "custom_field5": null,
            "custom_field6": null,
            "alternate_number": null,
            "landline": null,
            "dob": "2021-01-07",
            "contact_status": "active",
            "type": "lead",
            "custom_field7": null,
            "custom_field8": null,
            "custom_field9": null,
            "custom_field10": null,
            "id": 82,
            "business_id": 1,
            "crm_source": null,
            "crm_life_stage": null,
            "address_line_1": null,
            "address_line_2": null,
            "city": null,
            "state": null,
            "country": null,
            "zip_code": null,
            "last_follow_up_id": 36,
            "upcoming_follow_up_id": null,
            "last_follow_up": "2021-01-07 18:31:08",
            "upcoming_follow_up": null,
            "last_follow_up_additional_info": "{\"call duration\":\"1 hour\",\"call descr\":\"talked to him and all okay\"}",
            "upcoming_follow_up_additional_info": null,
            "source": null,
            "life_stage": null,
            "lead_users": [
                {
                    "id": 11,
                    "user_type": "user",
                    "surname": "Mr",
                    "first_name": "Admin Essential",
                    "last_name": null,
                    "username": "admin-essentials",
                    "email": "admin_essentials@example.com",
                    "language": "en",
                    "contact_no": null,
                    "address": null,
                    "business_id": 1,
                    "max_sales_discount_percent": null,
                    "allow_login": 1,
                    "essentials_department_id": null,
                    "essentials_designation_id": null,
                    "status": "active",
                    "crm_contact_id": null,
                    "is_cmmsn_agnt": 0,
                    "cmmsn_percent": "0.00",
                    "selected_contacts": 0,
                    "dob": null,
                    "gender": null,
                    "marital_status": null,
                    "blood_group": null,
                    "contact_number": null,
                    "fb_link": null,
                    "twitter_link": null,
                    "social_media_1": null,
                    "social_media_2": null,
                    "permanent_address": null,
                    "current_address": null,
                    "guardian_name": null,
                    "custom_field_1": null,
                    "custom_field_2": null,
                    "custom_field_3": null,
                    "custom_field_4": null,
                    "bank_details": null,
                    "id_proof_name": null,
                    "id_proof_number": null,
                    "deleted_at": null,
                    "created_at": "2018-01-04 02:15:19",
                    "updated_at": "2018-01-04 02:15:19",
                    "pivot": {
                        "contact_id": 82,
                        "user_id": 11
                    }
                }
            ]
        }
    ],
    "links": {
        "first": "https://bqf.ai/connector/api/crm/leads?page=1",
        "last": "https://bqf.ai/connector/api/crm/leads?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "path": "https://bqf.ai/connector/api/crm/leads",
        "per_page": "10",
        "to": 3,
        "total": 3
    }
}
 

Request   

GET connector/api/crm/leads

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

assigned_to   string  optional  

comma separated ids of users to whom lead is assigned (Ex: 1,2,3) Example: 1,2,3

name   string  optional  

Search term for lead name Example: et

biz_name   string  optional  

Search term for lead's business name Example: autem

mobile_num   integer  optional  

Search term for lead's mobile number Example: 8

contact_id   string  optional  

Search term for lead's contact_id. Ex(CO0005) Example: dolor

order_by   string  optional  

Column name to sort the result, Column: name, supplier_business_name Example: aut

direction   string  optional  

Direction to sort the result, Required if using 'order_by', direction: desc, asc Example: desc

per_page   integer  optional  

Total records per page (up to 500). default: 15, Set -1 for no pagination (up to 1000 records) Example: 15

Save Call Logs

requires authentication

Entries that cannot be read (no number, no or unreadable times) are skipped and counted in skipped; the rest are saved. An entry already saved (same type, number and start time in this business) is not saved twice.

Example request:
curl --request POST \
    "https://bqf.ai/connector/api/crm/call-logs" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
const url = new URL(
    "https://bqf.ai/connector/api/crm/call-logs"
);

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

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://bqf.ai/connector/api/crm/call-logs',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request   

POST connector/api/crm/call-logs

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

call_logs   object  optional  
*   object  optional  
mobile_number   string   

Mobile number of the customer or user Example: consequatur

mobile_name   string  optional  

Name of the contact saved in the mobile Example: omnis

call_type   string  optional  

Call type (call, sms) Example: call

start_time   string  optional  

Start datetime of the call in "Y-m-d H:i:s" format Example: voluptatibus

end_time   string  optional  

End datetime of the call in "Y-m-d H:i:s" format Example: deleniti

duration   string  optional  

Duration of the call in seconds Example: sapiente

Cash register management

List Cash Registers

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/cash-register?status=open&user_id=10&start_date=2018-06-25&end_date=2018-06-25&location_id=1&per_page=15" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/cash-register"
);

const params = {
    "status": "open",
    "user_id": "10",
    "start_date": "2018-06-25",
    "end_date": "2018-06-25",
    "location_id": "1",
    "per_page": "15",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/cash-register',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'status' => 'open',
            'user_id' => '10',
            'start_date' => '2018-06-25',
            'end_date' => '2018-06-25',
            'location_id' => '1',
            'per_page' => '15',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 1,
            "business_id": 1,
            "location_id": 1,
            "user_id": 9,
            "status": "open",
            "closed_at": null,
            "closing_amount": "0.0000",
            "total_card_slips": 0,
            "total_cheques": 0,
            "closing_note": null,
            "created_at": "2020-07-02 12:03:00",
            "updated_at": "2020-07-02 12:03:19",
            "cash_register_transactions": [
                {
                    "id": 1,
                    "cash_register_id": 1,
                    "amount": "0.0000",
                    "pay_method": "cash",
                    "type": "credit",
                    "transaction_type": "initial",
                    "transaction_id": null,
                    "created_at": "2018-07-13 07:39:34",
                    "updated_at": "2018-07-13 07:39:34"
                },
                {
                    "id": 2,
                    "cash_register_id": 1,
                    "amount": "42.5000",
                    "pay_method": "cash",
                    "type": "credit",
                    "transaction_type": "sell",
                    "transaction_id": 41,
                    "created_at": "2018-07-13 07:44:40",
                    "updated_at": "2018-07-13 07:44:40"
                }
            ]
        },
        {
            "id": 2,
            "business_id": 1,
            "location_id": 1,
            "user_id": 1,
            "status": "",
            "closed_at": "2020-07-02 12:03:00",
            "closing_amount": "0.0000",
            "total_card_slips": 0,
            "total_cheques": 0,
            "closing_note": null,
            "created_at": "2020-07-06 15:38:23",
            "updated_at": "2020-07-06 15:38:23",
            "cash_register_transactions": [
                {
                    "id": 19,
                    "cash_register_id": 2,
                    "amount": "10.0000",
                    "pay_method": "cash",
                    "type": "credit",
                    "transaction_type": "initial",
                    "transaction_id": null,
                    "created_at": "2020-07-06 15:38:23",
                    "updated_at": "2020-07-06 15:38:23"
                }
            ]
        }
    ],
    "links": {
        "first": "https://bqf.ai/connector/api/cash-register?page=1",
        "last": null,
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "path": "https://bqf.ai/connector/api/cash-register",
        "per_page": 10,
        "to": 2
    }
}
 

Request   

GET connector/api/cash-register

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

status   string  optional  

status of the register (open, close) Example: open

user_id   string  optional  

id of the user Example: 10

start_date   string  optional  

format:Y-m-d Example: 2018-06-25

end_date   string  optional  

format:Y-m-d Example: 2018-06-25

location_id   string  optional  

id of the location Example: 1

per_page   integer  optional  

Total records per page (up to 500). default: 10, Set -1 for all (up to 1000) Example: 15

Create Cash Register

requires authentication

Example request:
curl --request POST \
    "https://bqf.ai/connector/api/cash-register" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"location_id\": 1,
    \"status\": \"close\",
    \"initial_amount\": 61887607.11,
    \"created_at\": \"2020-5-7 15:20:22\",
    \"closed_at\": \"2020-5-7 15:20:22\",
    \"closing_amount\": 21.618234719,
    \"total_card_slips\": 12,
    \"total_cheques\": 7,
    \"closing_note\": \"ea\",
    \"transaction_ids\": \"1,2,3\\n\\nOpening while the user already has an open register answers 200 with that\\nregister when it is at the requested branch, and 409 (error.code\\nregister_open_elsewhere, the open register in data) when it is elsewhere.\\n\\nresponse {\\n\\\"data\\\": {\\n\\\"status\\\": \\\"closed\\\",\\n\\\"location_id\\\": \\\"1\\\",\\n\\\"closed_at\\\": \\\"2020-07-02 12:03:00\\\",\\n\\\"business_id\\\": 1,\\n\\\"user_id\\\": 1,\\n\\\"updated_at\\\": \\\"2020-07-06 16:28:42\\\",\\n\\\"created_at\\\": \\\"2020-07-06 16:28:42\\\",\\n\\\"id\\\": 3\\n}\\n}\"
}"
const url = new URL(
    "https://bqf.ai/connector/api/cash-register"
);

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

let body = {
    "location_id": 1,
    "status": "close",
    "initial_amount": 61887607.11,
    "created_at": "2020-5-7 15:20:22",
    "closed_at": "2020-5-7 15:20:22",
    "closing_amount": 21.618234719,
    "total_card_slips": 12,
    "total_cheques": 7,
    "closing_note": "ea",
    "transaction_ids": "1,2,3\n\nOpening while the user already has an open register answers 200 with that\nregister when it is at the requested branch, and 409 (error.code\nregister_open_elsewhere, the open register in data) when it is elsewhere.\n\nresponse {\n\"data\": {\n\"status\": \"closed\",\n\"location_id\": \"1\",\n\"closed_at\": \"2020-07-02 12:03:00\",\n\"business_id\": 1,\n\"user_id\": 1,\n\"updated_at\": \"2020-07-06 16:28:42\",\n\"created_at\": \"2020-07-06 16:28:42\",\n\"id\": 3\n}\n}"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://bqf.ai/connector/api/cash-register',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'location_id' => 1,
            'status' => 'close',
            'initial_amount' => 61887607.11,
            'created_at' => '2020-5-7 15:20:22',
            'closed_at' => '2020-5-7 15:20:22',
            'closing_amount' => 21.618234719,
            'total_card_slips' => 12,
            'total_cheques' => 7,
            'closing_note' => 'ea',
            'transaction_ids' => '1,2,3'."\n"
                ."\n"
                .'Opening while the user already has an open register answers 200 with that'."\n"
                .'register when it is at the requested branch, and 409 (error.code'."\n"
                .'register_open_elsewhere, the open register in data) when it is elsewhere.'."\n"
                ."\n"
                .'response {'."\n"
                .'"data": {'."\n"
                .'"status": "closed",'."\n"
                .'"location_id": "1",'."\n"
                .'"closed_at": "2020-07-02 12:03:00",'."\n"
                .'"business_id": 1,'."\n"
                .'"user_id": 1,'."\n"
                .'"updated_at": "2020-07-06 16:28:42",'."\n"
                .'"created_at": "2020-07-06 16:28:42",'."\n"
                .'"id": 3'."\n"
                .'}'."\n"
                .'}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request   

POST connector/api/cash-register

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

location_id   integer   

id of the business location Example: 1

status   register  optional  

status (open, close) Example: close

initial_amount   number  optional  

Initial amount Example: 61887607.11

created_at   string  optional  

Register open datetime format:Y-m-d H:i:s, Example: 2020-5-7 15:20:22

closed_at   string  optional  

Register closed datetime format:Y-m-d H:i:s, Example: 2020-5-7 15:20:22

closing_amount   number  optional  

Closing amount Example: 21.618234719

total_card_slips   integer  optional  

total number of card slips Example: 12

total_cheques   integer  optional  

total number of checks Example: 7

closing_note   string  optional  

Closing note Example: ea

transaction_ids   string  optional  

Comma separated ids of sells associated with the register Example: `1,2,3

Opening while the user already has an open register answers 200 with that register when it is at the requested branch, and 409 (error.code register_open_elsewhere, the open register in data) when it is elsewhere.

response { "data": { "status": "closed", "location_id": "1", "closed_at": "2020-07-02 12:03:00", "business_id": 1, "user_id": 1, "updated_at": "2020-07-06 16:28:42", "created_at": "2020-07-06 16:28:42", "id": 3 } }`

Get the specified Register

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/cash-register/aliquam" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/cash-register/aliquam"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/cash-register/aliquam',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 1,
            "business_id": 1,
            "location_id": 1,
            "user_id": 9,
            "status": "open",
            "closed_at": null,
            "closing_amount": "0.0000",
            "total_card_slips": 0,
            "total_cheques": 0,
            "closing_note": null,
            "created_at": "2020-07-02 12:03:00",
            "updated_at": "2020-07-02 12:03:19",
            "cash_register_transactions": [
                {
                    "id": 1,
                    "cash_register_id": 1,
                    "amount": "0.0000",
                    "pay_method": "cash",
                    "type": "credit",
                    "transaction_type": "initial",
                    "transaction_id": null,
                    "created_at": "2018-07-13 07:39:34",
                    "updated_at": "2018-07-13 07:39:34"
                },
                {
                    "id": 2,
                    "cash_register_id": 1,
                    "amount": "42.5000",
                    "pay_method": "cash",
                    "type": "credit",
                    "transaction_type": "sell",
                    "transaction_id": 41,
                    "created_at": "2018-07-13 07:44:40",
                    "updated_at": "2018-07-13 07:44:40"
                }
            ]
        }
    ]
}
 

Request   

GET connector/api/cash-register/{id}

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the cash register. Example: aliquam

cash_register   string   

comma separated ids of the cash registers Example: 59

Close a cash register

requires authentication

Closes an open register as the web "close register" does: the counted amounts are recorded, the cash over/short is posted to the ledger and the closing reports are sent. Your own register, or — with the same permission — another user's register at a branch you may act on.

Example request:
curl --request PUT \
    "https://bqf.ai/connector/api/cash-register/eos" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"status\": \"close\",
    \"closing_amount\": 51713676.2769821,
    \"total_card_slips\": 14,
    \"total_cheques\": 2,
    \"closing_note\": \"dignissimos\",
    \"denominations\": []
}"
const url = new URL(
    "https://bqf.ai/connector/api/cash-register/eos"
);

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

let body = {
    "status": "close",
    "closing_amount": 51713676.2769821,
    "total_card_slips": 14,
    "total_cheques": 2,
    "closing_note": "dignissimos",
    "denominations": []
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->put(
    'https://bqf.ai/connector/api/cash-register/eos',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'status' => 'close',
            'closing_amount' => 51713676.2769821,
            'total_card_slips' => 14,
            'total_cheques' => 2,
            'closing_note' => 'dignissimos',
            'denominations' => [],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request   

PUT connector/api/cash-register/{id}

PATCH connector/api/cash-register/{id}

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the cash register. Example: eos

cash_register   string   

id of the open register Example: 7

Body Parameters

status   string  optional  

Must be one of close. Example: close

closing_amount   number   

Counted cash in the drawer Example: 51713676.276982

total_card_slips   integer  optional  

total number of card slips Example: 14

total_cheques   integer  optional  

total number of cheques Example: 2

closing_note   string  optional  

Closing note Example: dignissimos

denominations   object  optional  

counted notes/coins, e.g. {"100": 2}

Contact management

List contact

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/contactapi?type=inventore&name=placeat&biz_name=et&mobile_num=7&contact_id=aspernatur&order_by=aut&direction=laboriosam&per_page=15" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/contactapi"
);

const params = {
    "type": "inventore",
    "name": "placeat",
    "biz_name": "et",
    "mobile_num": "7",
    "contact_id": "aspernatur",
    "order_by": "aut",
    "direction": "laboriosam",
    "per_page": "15",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/contactapi',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'type' => 'inventore',
            'name' => 'placeat',
            'biz_name' => 'et',
            'mobile_num' => '7',
            'contact_id' => 'aspernatur',
            'order_by' => 'aut',
            'direction' => 'laboriosam',
            'per_page' => '15',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 2,
            "business_id": 1,
            "type": "supplier",
            "supplier_business_name": "Alpha Clothings",
            "name": "Michael",
            "prefix": null,
            "first_name": "Michael",
            "middle_name": null,
            "last_name": null,
            "email": null,
            "contact_id": "CO0001",
            "contact_status": "active",
            "tax_number": "4590091535",
            "city": "Phoenix",
            "state": "Arizona",
            "country": "USA",
            "address_line_1": "Linking Street",
            "address_line_2": null,
            "zip_code": null,
            "dob": null,
            "mobile": "(378) 400-1234",
            "landline": null,
            "alternate_number": null,
            "pay_term_number": 15,
            "pay_term_type": "days",
            "credit_limit": null,
            "created_by": 1,
            "balance": "0.0000",
            "total_rp": 0,
            "total_rp_used": 0,
            "total_rp_expired": 0,
            "is_default": 0,
            "shipping_address": null,
            "position": null,
            "customer_group_id": null,
            "crm_source": null,
            "crm_life_stage": null,
            "custom_field1": null,
            "custom_field2": null,
            "custom_field3": null,
            "custom_field4": null,
            "custom_field5": null,
            "custom_field6": null,
            "custom_field7": null,
            "custom_field8": null,
            "custom_field9": null,
            "custom_field10": null,
            "deleted_at": null,
            "created_at": "2018-01-03 20:59:38",
            "updated_at": "2018-06-11 22:21:03",
            "remember_token": null,
            "password": null
        },
        {
            "id": 3,
            "business_id": 1,
            "type": "supplier",
            "supplier_business_name": "Manhattan Clothing Ltd.",
            "name": "Philip",
            "prefix": null,
            "first_name": "Philip",
            "middle_name": null,
            "last_name": null,
            "email": null,
            "contact_id": "CO0003",
            "contact_status": "active",
            "tax_number": "54869310093",
            "city": "Phoenix",
            "state": "Arizona",
            "country": "USA",
            "address_line_1": "Linking Street",
            "address_line_2": null,
            "zip_code": null,
            "dob": null,
            "mobile": "(378) 400-1234",
            "landline": null,
            "alternate_number": null,
            "pay_term_number": 15,
            "pay_term_type": "days",
            "credit_limit": null,
            "created_by": 1,
            "balance": "0.0000",
            "total_rp": 0,
            "total_rp_used": 0,
            "total_rp_expired": 0,
            "is_default": 0,
            "shipping_address": null,
            "position": null,
            "customer_group_id": null,
            "crm_source": null,
            "crm_life_stage": null,
            "custom_field1": null,
            "custom_field2": null,
            "custom_field3": null,
            "custom_field4": null,
            "custom_field5": null,
            "custom_field6": null,
            "custom_field7": null,
            "custom_field8": null,
            "custom_field9": null,
            "custom_field10": null,
            "deleted_at": null,
            "created_at": "2018-01-03 21:00:55",
            "updated_at": "2018-06-11 22:21:36",
            "remember_token": null,
            "password": null
        },
        {
            "id": 5,
            "business_id": 1,
            "type": "supplier",
            "supplier_business_name": "Digital Ocean",
            "name": "Mike McCubbin",
            "prefix": null,
            "first_name": "Mike McCubbin",
            "middle_name": null,
            "last_name": null,
            "email": null,
            "contact_id": "CN0004",
            "contact_status": "active",
            "tax_number": "52965489001",
            "city": "Phoenix",
            "state": "Arizona",
            "country": "USA",
            "address_line_1": "Linking Street",
            "address_line_2": null,
            "zip_code": null,
            "dob": null,
            "mobile": "(378) 400-1234",
            "landline": null,
            "alternate_number": null,
            "pay_term_number": 30,
            "pay_term_type": "days",
            "credit_limit": null,
            "created_by": 1,
            "balance": "0.0000",
            "total_rp": 0,
            "total_rp_used": 0,
            "total_rp_expired": 0,
            "is_default": 0,
            "shipping_address": null,
            "position": null,
            "customer_group_id": null,
            "crm_source": null,
            "crm_life_stage": null,
            "custom_field1": null,
            "custom_field2": null,
            "custom_field3": null,
            "custom_field4": null,
            "custom_field5": null,
            "custom_field6": null,
            "custom_field7": null,
            "custom_field8": null,
            "custom_field9": null,
            "custom_field10": null,
            "deleted_at": null,
            "created_at": "2018-01-06 06:53:22",
            "updated_at": "2018-06-11 22:21:47",
            "remember_token": null,
            "password": null
        },
        {
            "id": 6,
            "business_id": 1,
            "type": "supplier",
            "supplier_business_name": "Univer Suppliers",
            "name": "Jackson Hill",
            "prefix": null,
            "first_name": "Jackson Hill",
            "middle_name": null,
            "last_name": null,
            "email": null,
            "contact_id": "CO0002",
            "contact_status": "active",
            "tax_number": "5459000655",
            "city": "Phoenix",
            "state": "Arizona",
            "country": "USA",
            "address_line_1": "Linking Street",
            "address_line_2": null,
            "zip_code": null,
            "dob": null,
            "mobile": "(378) 400-1234",
            "landline": null,
            "alternate_number": null,
            "pay_term_number": 45,
            "pay_term_type": "days",
            "credit_limit": null,
            "created_by": 1,
            "balance": "0.0000",
            "total_rp": 0,
            "total_rp_used": 0,
            "total_rp_expired": 0,
            "is_default": 0,
            "shipping_address": null,
            "position": null,
            "customer_group_id": null,
            "crm_source": null,
            "crm_life_stage": null,
            "custom_field1": null,
            "custom_field2": null,
            "custom_field3": null,
            "custom_field4": null,
            "custom_field5": null,
            "custom_field6": null,
            "custom_field7": null,
            "custom_field8": null,
            "custom_field9": null,
            "custom_field10": null,
            "deleted_at": null,
            "created_at": "2018-01-06 06:55:09",
            "updated_at": "2018-06-11 22:21:18",
            "remember_token": null,
            "password": null
        }
    ],
    "links": {
        "first": "https://bqf.ai/connector/api/contactapi?page=1",
        "last": "https://bqf.ai/connector/api/contactapi?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "path": "https://bqf.ai/connector/api/contactapi",
        "per_page": "10",
        "to": 4,
        "total": 4
    }
}
 

Request   

GET connector/api/contactapi

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

type   string   

Type of contact (supplier, customer) Example: inventore

name   string  optional  

Search term for contact name Example: placeat

biz_name   string  optional  

Search term for contact's business name Example: et

mobile_num   integer  optional  

Search term for contact's mobile number Example: 7

contact_id   string  optional  

Search term for contact's contact_id. Ex(CO0005) Example: aspernatur

order_by   string  optional  

Column name to sort the result, Column: name, supplier_business_name Example: aut

direction   string  optional  

Direction to sort the result, Direction: desc, asc Example: laboriosam

per_page   integer  optional  

Total records per page (up to 500). default: 15, Set -1 for no pagination (up to 1000 records) Example: 15

Create contact

requires authentication

Example request:
curl --request POST \
    "https://bqf.ai/connector/api/contactapi" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"customer\",
    \"supplier_business_name\": \"incidunt\",
    \"prefix\": \"nihil\",
    \"first_name\": \"sint\",
    \"middle_name\": \"ut\",
    \"last_name\": \"laboriosam\",
    \"tax_number\": \"8787fefef\",
    \"pay_term_number\": 3,
    \"pay_term_type\": \"months\",
    \"mobile\": \"4578691009\",
    \"landline\": \"5487-8454-4145\",
    \"alternate_number\": \"841847541222\",
    \"address_line_1\": \"iste\",
    \"address_line_2\": \"est\",
    \"city\": \"fugit\",
    \"state\": \"laboriosam\",
    \"country\": \"porro\",
    \"zip_code\": \"sit\",
    \"customer_group_id\": \"inventore\",
    \"contact_id\": \"esse\",
    \"dob\": \"2000-06-13\",
    \"custom_field1\": \"commodi\",
    \"custom_field2\": \"quo\",
    \"custom_field3\": \"sit\",
    \"custom_field4\": \"nobis\",
    \"email\": \"hoyt.howe@example.com\",
    \"shipping_address\": \"non\",
    \"position\": \"excepturi\",
    \"opening_balance\": 0,
    \"source_id\": 13,
    \"life_stage_id\": 17,
    \"assigned_to\": [
        \"eius\"
    ]
}"
const url = new URL(
    "https://bqf.ai/connector/api/contactapi"
);

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

let body = {
    "type": "customer",
    "supplier_business_name": "incidunt",
    "prefix": "nihil",
    "first_name": "sint",
    "middle_name": "ut",
    "last_name": "laboriosam",
    "tax_number": "8787fefef",
    "pay_term_number": 3,
    "pay_term_type": "months",
    "mobile": "4578691009",
    "landline": "5487-8454-4145",
    "alternate_number": "841847541222",
    "address_line_1": "iste",
    "address_line_2": "est",
    "city": "fugit",
    "state": "laboriosam",
    "country": "porro",
    "zip_code": "sit",
    "customer_group_id": "inventore",
    "contact_id": "esse",
    "dob": "2000-06-13",
    "custom_field1": "commodi",
    "custom_field2": "quo",
    "custom_field3": "sit",
    "custom_field4": "nobis",
    "email": "hoyt.howe@example.com",
    "shipping_address": "non",
    "position": "excepturi",
    "opening_balance": 0,
    "source_id": 13,
    "life_stage_id": 17,
    "assigned_to": [
        "eius"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://bqf.ai/connector/api/contactapi',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'type' => 'customer',
            'supplier_business_name' => 'incidunt',
            'prefix' => 'nihil',
            'first_name' => 'sint',
            'middle_name' => 'ut',
            'last_name' => 'laboriosam',
            'tax_number' => '8787fefef',
            'pay_term_number' => 3.0,
            'pay_term_type' => 'months',
            'mobile' => '4578691009',
            'landline' => '5487-8454-4145',
            'alternate_number' => '841847541222',
            'address_line_1' => 'iste',
            'address_line_2' => 'est',
            'city' => 'fugit',
            'state' => 'laboriosam',
            'country' => 'porro',
            'zip_code' => 'sit',
            'customer_group_id' => 'inventore',
            'contact_id' => 'esse',
            'dob' => '2000-06-13',
            'custom_field1' => 'commodi',
            'custom_field2' => 'quo',
            'custom_field3' => 'sit',
            'custom_field4' => 'nobis',
            'email' => 'hoyt.howe@example.com',
            'shipping_address' => 'non',
            'position' => 'excepturi',
            'opening_balance' => 0.0,
            'source_id' => 13,
            'life_stage_id' => 17,
            'assigned_to' => [
                'eius',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": {
        "type": "customer",
        "name": "test customer",
        "tax_number": "75879BHF",
        "mobile": "7878825008",
        "business_id": 1,
        "created_by": 9,
        "credit_limit": null,
        "contact_id": "CO0007",
        "updated_at": "2020-06-04 21:59:21",
        "created_at": "2020-06-04 21:59:21",
        "id": 17
    }
}
 

Request   

POST connector/api/contactapi

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

type   string   

Type of contact (supplier, customer, both, lead) Example: customer

supplier_business_name   string   

Required if type is supplier Example: incidunt

prefix   string  optional  

Prefix for the name of the contact Example: nihil

first_name   string   

Name of the contact Example: sint

middle_name   string  optional  

Example: ut

last_name   string  optional  

Example: laboriosam

tax_number   string  optional  

Example: 8787fefef

pay_term_number   number  optional  

Example: 3

pay_term_type   string  optional  

(months ,days) Example: months

mobile   string   

Example: 4578691009

landline   string  optional  

Example: 5487-8454-4145

alternate_number   string  optional  

Example: 841847541222

address_line_1   string  optional  

Example: iste

address_line_2   string  optional  

Example: est

city   string  optional  

Example: fugit

state   string  optional  

Example: laboriosam

country   string  optional  

Example: porro

zip_code   string  optional  

Example: sit

customer_group_id   string  optional  

Example: inventore

contact_id   string  optional  

Example: esse

dob   string  optional  

Fromat: Y-m-d Example: 2000-06-13

custom_field1   string  optional  

Example: commodi

custom_field2   string  optional  

Example: quo

custom_field3   string  optional  

Example: sit

custom_field4   string  optional  

Example: nobis

email   string  optional  

Example: hoyt.howe@example.com

shipping_address   string  optional  

Example: non

position   string  optional  

Example: excepturi

opening_balance   number  optional  

Example: 0

source_id   integer  optional  

Id of the source. Applicable only if the type is lead Example: 13

life_stage_id   integer  optional  

Id of the Life stage. Applicable only if the type is lead Example: 17

assigned_to   string[]  optional  

Ids of the users the lead is assigned to. Applicable only if the type is lead

Get the specified contact

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/contactapi/inventore" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/contactapi/inventore"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/contactapi/inventore',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 1,
            "business_id": 1,
            "type": "customer",
            "supplier_business_name": null,
            "name": " Walk-In Customer  ",
            "prefix": null,
            "first_name": "Walk-In Customer",
            "middle_name": null,
            "last_name": null,
            "email": "walkin@test.com",
            "contact_id": "CO0005",
            "contact_status": "active",
            "tax_number": null,
            "city": "Phoenix",
            "state": "Arizona",
            "country": "USA",
            "address_line_1": "Linking Street",
            "address_line_2": null,
            "zip_code": "85001",
            "dob": null,
            "mobile": "(378) 400-1234",
            "landline": null,
            "alternate_number": null,
            "pay_term_number": null,
            "pay_term_type": null,
            "credit_limit": "0.0000",
            "created_by": 1,
            "balance": "0.0000",
            "total_rp": 0,
            "total_rp_used": 0,
            "total_rp_expired": 0,
            "is_default": 1,
            "shipping_address": null,
            "position": null,
            "customer_group_id": null,
            "crm_source": null,
            "crm_life_stage": null,
            "custom_field1": null,
            "custom_field2": null,
            "custom_field3": null,
            "custom_field4": null,
            "deleted_at": null,
            "created_at": "2018-01-03 20:45:20",
            "updated_at": "2020-08-10 10:26:45",
            "remember_token": null,
            "password": null,
            "customer_group": null,
            "opening_balance": "0.0000",
            "opening_balance_paid": "0.0000",
            "total_purchase": "0.0000",
            "purchase_paid": "0.0000",
            "total_purchase_return": "0.0000",
            "purchase_return_paid": "0.0000",
            "total_invoice": "2050.0000",
            "invoice_received": "1987.5000",
            "total_sell_return": "0.0000",
            "sell_return_paid": "0.0000",
            "purchase_due": 0,
            "sell_due": 62.5,
            "purchase_return_due": 0,
            "sell_return_due": 0
        }
    ]
}
 

Request   

GET connector/api/contactapi/{id}

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the contactapi. Example: inventore

contact   string   

comma separated ids of contacts Example: 2

Update contact

requires authentication

Example request:
curl --request PUT \
    "https://bqf.ai/connector/api/contactapi/illo" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"type\": \"customer\",
    \"supplier_business_name\": \"aut\",
    \"prefix\": \"autem\",
    \"first_name\": \"voluptatem\",
    \"middle_name\": \"voluptas\",
    \"last_name\": \"rem\",
    \"tax_number\": \"488744dwd\",
    \"pay_term_number\": 3,
    \"pay_term_type\": \"months\",
    \"mobile\": \"8795461009\",
    \"landline\": \"65484-848-848\",
    \"alternate_number\": \"9898795220\",
    \"address_line_1\": \"fugiat\",
    \"address_line_2\": \"nulla\",
    \"city\": \"esse\",
    \"state\": \"labore\",
    \"country\": \"fuga\",
    \"zip_code\": \"dolores\",
    \"customer_group_id\": \"odit\",
    \"contact_id\": \"iusto\",
    \"dob\": \"2000-06-13\",
    \"custom_field1\": \"nihil\",
    \"custom_field2\": \"error\",
    \"custom_field3\": \"asperiores\",
    \"custom_field4\": \"repellendus\",
    \"email\": \"lila.hettinger@example.net\",
    \"shipping_address\": \"et\",
    \"position\": \"soluta\",
    \"opening_balance\": 2764.841,
    \"source_id\": 14,
    \"life_stage_id\": 1,
    \"assigned_to\": [
        \"nisi\"
    ]
}"
const url = new URL(
    "https://bqf.ai/connector/api/contactapi/illo"
);

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

let body = {
    "type": "customer",
    "supplier_business_name": "aut",
    "prefix": "autem",
    "first_name": "voluptatem",
    "middle_name": "voluptas",
    "last_name": "rem",
    "tax_number": "488744dwd",
    "pay_term_number": 3,
    "pay_term_type": "months",
    "mobile": "8795461009",
    "landline": "65484-848-848",
    "alternate_number": "9898795220",
    "address_line_1": "fugiat",
    "address_line_2": "nulla",
    "city": "esse",
    "state": "labore",
    "country": "fuga",
    "zip_code": "dolores",
    "customer_group_id": "odit",
    "contact_id": "iusto",
    "dob": "2000-06-13",
    "custom_field1": "nihil",
    "custom_field2": "error",
    "custom_field3": "asperiores",
    "custom_field4": "repellendus",
    "email": "lila.hettinger@example.net",
    "shipping_address": "et",
    "position": "soluta",
    "opening_balance": 2764.841,
    "source_id": 14,
    "life_stage_id": 1,
    "assigned_to": [
        "nisi"
    ]
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->put(
    'https://bqf.ai/connector/api/contactapi/illo',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'type' => 'customer',
            'supplier_business_name' => 'aut',
            'prefix' => 'autem',
            'first_name' => 'voluptatem',
            'middle_name' => 'voluptas',
            'last_name' => 'rem',
            'tax_number' => '488744dwd',
            'pay_term_number' => 3.0,
            'pay_term_type' => 'months',
            'mobile' => '8795461009',
            'landline' => '65484-848-848',
            'alternate_number' => '9898795220',
            'address_line_1' => 'fugiat',
            'address_line_2' => 'nulla',
            'city' => 'esse',
            'state' => 'labore',
            'country' => 'fuga',
            'zip_code' => 'dolores',
            'customer_group_id' => 'odit',
            'contact_id' => 'iusto',
            'dob' => '2000-06-13',
            'custom_field1' => 'nihil',
            'custom_field2' => 'error',
            'custom_field3' => 'asperiores',
            'custom_field4' => 'repellendus',
            'email' => 'lila.hettinger@example.net',
            'shipping_address' => 'et',
            'position' => 'soluta',
            'opening_balance' => 2764.841,
            'source_id' => 14,
            'life_stage_id' => 1,
            'assigned_to' => [
                'nisi',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": {
        "id": 21,
        "business_id": 1,
        "type": "customer",
        "supplier_business_name": null,
        "name": "created from api",
        "prefix": null,
        "first_name": "created from api",
        "middle_name": null,
        "last_name": null,
        "email": null,
        "contact_id": "CO0009",
        "contact_status": "active",
        "tax_number": null,
        "city": null,
        "state": null,
        "country": null,
        "address_line_1": "test address",
        "address_line_2": null,
        "zip_code": "54878787",
        "dob": "2000-06-13",
        "mobile": "8754154872154",
        "landline": null,
        "alternate_number": null,
        "pay_term_number": null,
        "pay_term_type": null,
        "credit_limit": null,
        "created_by": 1,
        "balance": "0.0000",
        "total_rp": 0,
        "total_rp_used": 0,
        "total_rp_expired": 0,
        "is_default": 0,
        "shipping_address": null,
        "position": null,
        "customer_group_id": null,
        "crm_source": null,
        "crm_life_stage": null,
        "custom_field1": null,
        "custom_field2": null,
        "custom_field3": null,
        "custom_field4": null,
        "deleted_at": null,
        "created_at": "2020-08-10 10:41:42",
        "updated_at": "2020-08-10 10:41:42",
        "remember_token": null,
        "password": null
    }
}
 

Request   

PUT connector/api/contactapi/{id}

PATCH connector/api/contactapi/{id}

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the contactapi. Example: illo

contact   string   

id of the contact to be updated Example: 17

Body Parameters

type   string  optional  

Type of contact (supplier, customer, both) Example: customer

supplier_business_name   string  optional  

required* Required if type is supplier Example: aut

prefix   string  optional  

Prefix for the name of the contact Example: autem

first_name   string   

Name of the contact Example: voluptatem

middle_name   string  optional  

Example: voluptas

last_name   string  optional  

Example: rem

tax_number   string  optional  

Example: 488744dwd

pay_term_number   number  optional  

Example: 3

pay_term_type   string  optional  

(months ,days) Example: months

mobile   string   

Example: 8795461009

landline   string  optional  

Example: 65484-848-848

alternate_number   string  optional  

Example: 9898795220

address_line_1   string  optional  

Example: fugiat

address_line_2   string  optional  

Example: nulla

city   string  optional  

Example: esse

state   string  optional  

Example: labore

country   string  optional  

Example: fuga

zip_code   string  optional  

Example: dolores

customer_group_id   string  optional  

Example: odit

contact_id   string  optional  

Example: iusto

dob   string  optional  

Fromat: Y-m-d Example: 2000-06-13

custom_field1   string  optional  

Example: nihil

custom_field2   string  optional  

Example: error

custom_field3   string  optional  

Example: asperiores

custom_field4   string  optional  

Example: repellendus

email   string  optional  

Example: lila.hettinger@example.net

shipping_address   string  optional  

Example: et

position   string  optional  

Example: soluta

opening_balance   number  optional  

Not changed through this endpoint (ignored); edit it on the web Example: 2764.841

source_id   integer  optional  

Id of the source. Applicable only if the type is lead Example: 14

life_stage_id   integer  optional  

Id of the Life stage. Applicable only if the type is lead Example: 1

assigned_to   string[]  optional  

Ids of the users the lead is assigned to. Applicable only if the type is lead

Contact payment

requires authentication

Example request:
curl --request POST \
    "https://bqf.ai/connector/api/contactapi-payment" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"contact_id\": 17,
    \"amount\": 453.13,
    \"method\": \"cash\",
    \"due_payment_type\": \"sell\",
    \"paid_on\": \"2020-07-22 15:48:29\",
    \"account_id\": 8,
    \"chart_of_account_id\": 17,
    \"card_number\": \"1234\",
    \"card_holder_name\": \"earum\",
    \"card_transaction_number\": \"nostrum\",
    \"card_type\": \"nisi\",
    \"card_month\": \"dignissimos\",
    \"card_year\": \"impedit\",
    \"transaction_no_1\": \"quis\",
    \"transaction_no_2\": \"excepturi\",
    \"transaction_no_3\": \"similique\",
    \"cheque_number\": \"blanditiis\",
    \"bank_account_number\": \"rerum\",
    \"note\": \"sint\"
}"
const url = new URL(
    "https://bqf.ai/connector/api/contactapi-payment"
);

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

let body = {
    "contact_id": 17,
    "amount": 453.13,
    "method": "cash",
    "due_payment_type": "sell",
    "paid_on": "2020-07-22 15:48:29",
    "account_id": 8,
    "chart_of_account_id": 17,
    "card_number": "1234",
    "card_holder_name": "earum",
    "card_transaction_number": "nostrum",
    "card_type": "nisi",
    "card_month": "dignissimos",
    "card_year": "impedit",
    "transaction_no_1": "quis",
    "transaction_no_2": "excepturi",
    "transaction_no_3": "similique",
    "cheque_number": "blanditiis",
    "bank_account_number": "rerum",
    "note": "sint"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://bqf.ai/connector/api/contactapi-payment',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'contact_id' => 17,
            'amount' => 453.13,
            'method' => 'cash',
            'due_payment_type' => 'sell',
            'paid_on' => '2020-07-22 15:48:29',
            'account_id' => 8,
            'chart_of_account_id' => 17,
            'card_number' => '1234',
            'card_holder_name' => 'earum',
            'card_transaction_number' => 'nostrum',
            'card_type' => 'nisi',
            'card_month' => 'dignissimos',
            'card_year' => 'impedit',
            'transaction_no_1' => 'quis',
            'transaction_no_2' => 'excepturi',
            'transaction_no_3' => 'similique',
            'cheque_number' => 'blanditiis',
            'bank_account_number' => 'rerum',
            'note' => 'sint',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": {
        "amount": "20",
        "method": "cash",
        "paid_on": "2020-07-22 15:48:29",
        "created_by": 1,
        "payment_for": "19",
        "business_id": 1,
        "is_advance": 1,
        "payment_ref_no": "SP2020/0127",
        "document": null,
        "updated_at": "2020-07-22 15:48:29",
        "created_at": "2020-07-22 15:48:29",
        "id": 215
    }
}
 

Request   

POST connector/api/contactapi-payment

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

contact_id   integer   

id of the contact Example: 17

amount   number   

amount of the payment, more than 0 Example: 453.13

method   string   

payment methods ('cash', 'card', 'cheque', 'bank_transfer', 'other', 'custom_pay_1' … 'custom_pay_7'); 'advance' is not accepted here Example: cash

due_payment_type   string  optional  

sell, sell_return (customers) or purchase, purchase_return (suppliers); default: purchase for a supplier, sell otherwise Example: sell

paid_on   string  optional  

transaction date format:Y-m-d H:i:s (the payment is dated by its day), Example: 2020-07-22 15:48:29

account_id   integer  optional  

ledger account id when chart_of_account_id is not sent, or a payment account id (payment-accounts); another business's id is a 422 Example: 8

chart_of_account_id   integer  optional  

ledger (chart of accounts) account id of the business; another business's id is a 422 Example: 17

card_number Last four digits only.   string  optional  

Example: similique

card_holder_name   string  optional  

Example: earum

card_transaction_number   string  optional  

Example: nostrum

card_type   string  optional  

Example: nisi

card_month   string  optional  

Example: dignissimos

card_year   string  optional  

Example: impedit

transaction_no_1   string  optional  

Example: quis

transaction_no_2   string  optional  

Example: excepturi

transaction_no_3   string  optional  

Example: similique

cheque_number   string  optional  

Example: blanditiis

bank_account_number   string  optional  

Example: rerum

note   string  optional  

payment note Example: sint

Expense management

List expenses

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/expense?location_id=1&payment_status=paid&start_date=2018-06-25&end_date=2018-06-25&expense_for=laborum&per_page=15" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/expense"
);

const params = {
    "location_id": "1",
    "payment_status": "paid",
    "start_date": "2018-06-25",
    "end_date": "2018-06-25",
    "expense_for": "laborum",
    "per_page": "15",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/expense',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'location_id' => '1',
            'payment_status' => 'paid',
            'start_date' => '2018-06-25',
            'end_date' => '2018-06-25',
            'expense_for' => 'laborum',
            'per_page' => '15',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 59,
            "business_id": 1,
            "location_id": 1,
            "payment_status": "due",
            "ref_no": "EP2020/0001",
            "transaction_date": "2020-07-03 12:58:00",
            "total_before_tax": "50.0000",
            "tax_id": null,
            "tax_amount": "0.0000",
            "final_total": "50.0000",
            "expense_category_id": null,
            "document": null,
            "created_by": 9,
            "is_recurring": 0,
            "recur_interval": null,
            "recur_interval_type": null,
            "recur_repetitions": null,
            "recur_stopped_on": null,
            "recur_parent_id": null,
            "created_at": "2020-07-03 12:58:23",
            "updated_at": "2020-07-03 12:58:24",
            "transaction_for": {
                "id": 1,
                "user_type": "user",
                "surname": "Mr",
                "first_name": "Admin",
                "last_name": null,
                "username": "admin",
                "email": "admin@example.com",
                "language": "en",
                "contact_no": null,
                "address": null,
                "business_id": 1,
                "max_sales_discount_percent": null,
                "allow_login": 1,
                "essentials_department_id": null,
                "essentials_designation_id": null,
                "status": "active",
                "crm_contact_id": null,
                "is_cmmsn_agnt": 0,
                "cmmsn_percent": "0.00",
                "selected_contacts": 0,
                "dob": null,
                "gender": null,
                "marital_status": null,
                "blood_group": null,
                "contact_number": null,
                "fb_link": null,
                "twitter_link": null,
                "social_media_1": null,
                "social_media_2": null,
                "permanent_address": null,
                "current_address": null,
                "guardian_name": null,
                "custom_field_1": null,
                "custom_field_2": null,
                "custom_field_3": null,
                "custom_field_4": null,
                "bank_details": null,
                "id_proof_name": null,
                "id_proof_number": null,
                "deleted_at": null,
                "created_at": "2018-01-04 02:15:19",
                "updated_at": "2018-01-04 02:15:19"
            }
        }
    ],
    "links": {
        "first": "https://bqf.ai/connector/api/expense?page=1",
        "last": null,
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "path": "https://bqf.ai/connector/api/expense",
        "per_page": 10,
        "to": 1
    }
}
 

Request   

GET connector/api/expense

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

location_id   string  optional  

id of the location Example: 1

payment_status   string  optional  

payment status Example: paid

start_date   string  optional  

format:Y-m-d Example: 2018-06-25

end_date   string  optional  

format:Y-m-d Example: 2018-06-25

expense_for   string  optional  

id of the user for which expense is created Example: laborum

per_page   integer  optional  

Total records per page (up to 500). default: 15, Set -1 for all (up to 1000) Example: 15

Create expense / expense refund

requires authentication

Example request:
curl --request POST \
    "https://bqf.ai/connector/api/expense" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"location_id\": 1,
    \"final_total\": 225922.479344,
    \"transaction_date\": \"2020-5-7 15:20:22\",
    \"tax_rate_id\": 12,
    \"expense_for\": 4,
    \"contact_id\": 20,
    \"expense_category_id\": 1,
    \"expense_sub_category_id\": 2,
    \"additional_notes\": \"maxime\",
    \"is_refund\": 0,
    \"is_recurring\": 0,
    \"recur_interval\": 14,
    \"recur_interval_type\": \"months\",
    \"subscription_repeat_on\": 15,
    \"subscription_no\": \"unde\",
    \"recur_repetitions\": 16,
    \"payment\": [
        \"est\"
    ]
}"
const url = new URL(
    "https://bqf.ai/connector/api/expense"
);

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

let body = {
    "location_id": 1,
    "final_total": 225922.479344,
    "transaction_date": "2020-5-7 15:20:22",
    "tax_rate_id": 12,
    "expense_for": 4,
    "contact_id": 20,
    "expense_category_id": 1,
    "expense_sub_category_id": 2,
    "additional_notes": "maxime",
    "is_refund": 0,
    "is_recurring": 0,
    "recur_interval": 14,
    "recur_interval_type": "months",
    "subscription_repeat_on": 15,
    "subscription_no": "unde",
    "recur_repetitions": 16,
    "payment": [
        "est"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://bqf.ai/connector/api/expense',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'location_id' => 1,
            'final_total' => 225922.479344,
            'transaction_date' => '2020-5-7 15:20:22',
            'tax_rate_id' => 12,
            'expense_for' => 4,
            'contact_id' => 20,
            'expense_category_id' => 1,
            'expense_sub_category_id' => 2,
            'additional_notes' => 'maxime',
            'is_refund' => 0,
            'is_recurring' => 0,
            'recur_interval' => 14,
            'recur_interval_type' => 'months',
            'subscription_repeat_on' => 15,
            'subscription_no' => 'unde',
            'recur_repetitions' => 16,
            'payment' => [
                'est',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": {
        "id": 75,
        "business_id": 1,
        "location_id": "1",
        "payment_status": "due",
        "ref_no": "EP2020/0013",
        "transaction_date": "2020-07-06T05:31:29.480975Z",
        "total_before_tax": "43",
        "tax_id": null,
        "tax_amount": 0,
        "final_total": "43",
        "expense_category_id": null,
        "document": null,
        "created_by": 1,
        "is_recurring": 0,
        "recur_interval": null,
        "recur_interval_type": null,
        "recur_repetitions": null,
        "recur_stopped_on": null,
        "recur_parent_id": null,
        "created_at": "2020-07-06 11:01:29",
        "updated_at": "2020-07-06 11:01:29",
        "expense_for": []
    }
}
 

Request   

POST connector/api/expense

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

location_id   integer   

id of the business location Example: 1

final_total   number   

Expense amount Example: 225922.479344

transaction_date   string  optional  

transaction date format:Y-m-d H:i:s, Example: 2020-5-7 15:20:22

tax_rate_id   integer  optional  

id of the tax rate applicable to the expense Example: 12

expense_for   integer  optional  

id of the user for which expense is created Example: 4

contact_id   integer  optional  

id of the contact(customer or supplier) for which expense is created Example: 20

expense_category_id   integer  optional  

id of the expense category Example: 1

expense_sub_category_id   integer  optional  

id of the expense sub-category Example: 2

additional_notes   string  optional  

Example: maxime

is_refund   integer  optional  

whether expense refund (0, 1) Example: 0

is_recurring   integer  optional  

whether expense is recurring (0, 1) Example: 0

recur_interval   integer  optional  

value of the interval expense will be regenerated Example: 14

recur_interval_type   string  optional  

type of the recur interval ('days', 'months', 'years') Example: months

subscription_repeat_on   integer  optional  

day of the month on which expense will be generated if recur interval type is months (1-30) Example: 15

subscription_no   string  optional  

subscription number Example: unde

recur_repetitions   integer  optional  

total number of expense to be generated Example: 16

payment   string[]  optional  

payment lines for the expense

*   object  optional  
amount   number  optional  

amount of the payment Example: 453.13

method   string  optional  

payment methods ('cash', 'card', 'cheque', 'bank_transfer', 'other', 'custom_pay_1' ... 'custom_pay_7') Example: cash

paid_on   string  optional  

payment date format:Y-m-d H:i:s (default: now) Example: 2020-5-7 15:20:22

account_id   integer  optional  

account id Example: 4

card_number Last four digits only.   string  optional  

Example: enim

card_holder_name   string  optional  

Example: quo

card_transaction_number   string  optional  

Example: minus

card_type   string  optional  

Example: ut

card_month   string  optional  

Example: doloribus

card_year   string  optional  

Example: nemo

transaction_no_1   string  optional  

Example: culpa

transaction_no_2   string  optional  

Example: fugiat

transaction_no_3   string  optional  

Example: aliquid

note   string  optional  

payment note Example: sunt

cheque_number   string  optional  

Example: commodi

Get the specified expense / expense refund

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/expense/illum" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/expense/illum"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/expense/illum',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 59,
            "business_id": 1,
            "location_id": 1,
            "payment_status": "due",
            "ref_no": "EP2020/0001",
            "transaction_date": "2020-07-03 12:58:00",
            "total_before_tax": "50.0000",
            "tax_id": null,
            "tax_amount": "0.0000",
            "final_total": "50.0000",
            "expense_category_id": null,
            "document": null,
            "created_by": 9,
            "is_recurring": 0,
            "recur_interval": null,
            "recur_interval_type": null,
            "recur_repetitions": null,
            "recur_stopped_on": null,
            "recur_parent_id": null,
            "created_at": "2020-07-03 12:58:23",
            "updated_at": "2020-07-03 12:58:24",
            "transaction_for": {
                "id": 1,
                "user_type": "user",
                "surname": "Mr",
                "first_name": "Admin",
                "last_name": null,
                "username": "admin",
                "email": "admin@example.com",
                "language": "en",
                "contact_no": null,
                "address": null,
                "business_id": 1,
                "max_sales_discount_percent": null,
                "allow_login": 1,
                "essentials_department_id": null,
                "essentials_designation_id": null,
                "status": "active",
                "crm_contact_id": null,
                "is_cmmsn_agnt": 0,
                "cmmsn_percent": "0.00",
                "selected_contacts": 0,
                "dob": null,
                "gender": null,
                "marital_status": null,
                "blood_group": null,
                "contact_number": null,
                "fb_link": null,
                "twitter_link": null,
                "social_media_1": null,
                "social_media_2": null,
                "permanent_address": null,
                "current_address": null,
                "guardian_name": null,
                "custom_field_1": null,
                "custom_field_2": null,
                "custom_field_3": null,
                "custom_field_4": null,
                "bank_details": null,
                "id_proof_name": null,
                "id_proof_number": null,
                "deleted_at": null,
                "created_at": "2018-01-04 02:15:19",
                "updated_at": "2018-01-04 02:15:19"
            }
        }
    ]
}
 

Request   

GET connector/api/expense/{id}

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the expense. Example: illum

expense   string   

comma separated ids of the expenses Example: 59

Update expense / expense refund

requires authentication

Example request:
curl --request PUT \
    "https://bqf.ai/connector/api/expense/velit" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"final_total\": 39.71398,
    \"transaction_date\": \"2020-5-7 15:20:22\",
    \"tax_rate_id\": 20,
    \"expense_for\": 9,
    \"contact_id\": 15,
    \"expense_category_id\": 6,
    \"expense_sub_category_id\": 4,
    \"additional_notes\": \"ea\",
    \"is_recurring\": 0,
    \"recur_interval\": 8,
    \"recur_interval_type\": \"months\",
    \"subscription_repeat_on\": 15,
    \"subscription_no\": \"sit\",
    \"recur_repetitions\": 18,
    \"payment\": [
        \"molestiae\"
    ]
}"
const url = new URL(
    "https://bqf.ai/connector/api/expense/velit"
);

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

let body = {
    "final_total": 39.71398,
    "transaction_date": "2020-5-7 15:20:22",
    "tax_rate_id": 20,
    "expense_for": 9,
    "contact_id": 15,
    "expense_category_id": 6,
    "expense_sub_category_id": 4,
    "additional_notes": "ea",
    "is_recurring": 0,
    "recur_interval": 8,
    "recur_interval_type": "months",
    "subscription_repeat_on": 15,
    "subscription_no": "sit",
    "recur_repetitions": 18,
    "payment": [
        "molestiae"
    ]
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->put(
    'https://bqf.ai/connector/api/expense/velit',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'final_total' => 39.71398,
            'transaction_date' => '2020-5-7 15:20:22',
            'tax_rate_id' => 20,
            'expense_for' => 9,
            'contact_id' => 15,
            'expense_category_id' => 6,
            'expense_sub_category_id' => 4,
            'additional_notes' => 'ea',
            'is_recurring' => 0,
            'recur_interval' => 8,
            'recur_interval_type' => 'months',
            'subscription_repeat_on' => 15,
            'subscription_no' => 'sit',
            'recur_repetitions' => 18,
            'payment' => [
                'molestiae',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": {
        "id": 75,
        "business_id": 1,
        "location_id": "1",
        "payment_status": "due",
        "ref_no": "EP2020/0013",
        "transaction_date": "2020-07-06T05:31:29.480975Z",
        "total_before_tax": "43",
        "tax_id": null,
        "tax_amount": 0,
        "final_total": "43",
        "expense_category_id": null,
        "document": null,
        "created_by": 1,
        "is_recurring": 0,
        "recur_interval": null,
        "recur_interval_type": null,
        "recur_repetitions": null,
        "recur_stopped_on": null,
        "recur_parent_id": null,
        "created_at": "2020-07-06 11:01:29",
        "updated_at": "2020-07-06 11:01:29",
        "expense_for": []
    }
}
 

Request   

PUT connector/api/expense/{id}

PATCH connector/api/expense/{id}

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the expense. Example: velit

Body Parameters

final_total   number  optional  

Expense amount Example: 39.71398

transaction_date   string  optional  

transaction date format:Y-m-d H:i:s, Example: 2020-5-7 15:20:22

tax_rate_id   integer  optional  

id of the tax rate applicable to the expense Example: 20

expense_for   integer  optional  

id of the user for which expense is created Example: 9

contact_id   integer  optional  

id of the contact(customer or supplier) for which expense is created Example: 15

expense_category_id   integer  optional  

id of the expense category Example: 6

expense_sub_category_id   integer  optional  

id of the expense sub-category Example: 4

additional_notes   string  optional  

Example: ea

is_recurring   integer  optional  

whether expense is recurring (0, 1) Example: 0

recur_interval   integer  optional  

value of the interval expense will be regenerated Example: 8

recur_interval_type   string  optional  

type of the recur interval ('days', 'months', 'years') Example: months

subscription_repeat_on   integer  optional  

day of the month on which expense will be generated if recur interval type is months (1-30) Example: 15

subscription_no   string  optional  

subscription number Example: sit

recur_repetitions   integer  optional  

total number of expense to be generated Example: 18

payment   string[]  optional  

payment lines for the expense

List expense refunds

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/expense-refund?location_id=1&payment_status=paid&start_date=2018-06-25&end_date=2018-06-25&expense_for=beatae&per_page=15" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/expense-refund"
);

const params = {
    "location_id": "1",
    "payment_status": "paid",
    "start_date": "2018-06-25",
    "end_date": "2018-06-25",
    "expense_for": "beatae",
    "per_page": "15",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/expense-refund',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'location_id' => '1',
            'payment_status' => 'paid',
            'start_date' => '2018-06-25',
            'end_date' => '2018-06-25',
            'expense_for' => 'beatae',
            'per_page' => '15',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 230,
            "business_id": 1,
            "location_id": 1,
            "payment_status": "partial",
            "ref_no": "refund",
            "transaction_date": "2020-12-15 11:16:00",
            "total_before_tax": "65.0000",
            "tax_id": null,
            "tax_amount": "0.0000",
            "final_total": "65.0000",
            "expense_category_id": null,
            "document": null,
            "created_by": 9,
            "created_at": "2020-12-15 11:46:56",
            "updated_at": "2020-12-15 12:47:30",
            "expense_for": []
        }
    ],
    "links": {
        "first": "https://bqf.ai/connector/api/expense-refund?page=1",
        "last": null,
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "path": "https://bqf.ai/connector/api/expense-refund",
        "per_page": 15,
        "to": 1
    }
}
 

Request   

GET connector/api/expense-refund

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

location_id   string  optional  

id of the location Example: 1

payment_status   string  optional  

payment status Example: paid

start_date   string  optional  

format:Y-m-d Example: 2018-06-25

end_date   string  optional  

format:Y-m-d Example: 2018-06-25

expense_for   string  optional  

id of the user for which expense is created Example: beatae

per_page   integer  optional  

Total records per page (up to 500). default: 15, Set -1 for all (up to 1000) Example: 15

List expense categories

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/expense-categories" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/expense-categories"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/expense-categories',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 1,
            "name": "cat 1",
            "business_id": 1,
            "code": null,
            "parent_id": null,
            "deleted_at": null,
            "created_at": "2021-12-16 17:54:40",
            "updated_at": "2021-12-16 17:54:40",
            "sub_categories": [
                {
                    "id": 3,
                    "name": "sub cat 1",
                    "business_id": 1,
                    "code": null,
                    "parent_id": 1,
                    "deleted_at": null,
                    "created_at": "2021-12-16 18:12:07",
                    "updated_at": "2021-12-16 18:12:07"
                }
            ]
        },
        {
            "id": 7,
            "name": "cat 2",
            "business_id": 1,
            "code": null,
            "parent_id": null,
            "deleted_at": null,
            "created_at": "2021-12-17 10:36:13",
            "updated_at": "2021-12-17 10:36:13",
            "sub_categories": [
                {
                    "id": 8,
                    "name": "sub cat 2",
                    "business_id": 1,
                    "code": null,
                    "parent_id": 7,
                    "deleted_at": null,
                    "created_at": "2021-12-17 10:36:44",
                    "updated_at": "2021-12-17 10:36:44"
                }
            ]
        }
    ]
}
 

Request   

GET connector/api/expense-categories

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Field Force

List visits

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/field-force?contact_id=dicta&assigned_to=non&status=repellat&start_date=2018-06-25&end_date=2018-06-25&per_page=15&order_by_date=0" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/field-force"
);

const params = {
    "contact_id": "dicta",
    "assigned_to": "non",
    "status": "repellat",
    "start_date": "2018-06-25",
    "end_date": "2018-06-25",
    "per_page": "15",
    "order_by_date": "0",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/field-force',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'contact_id' => 'dicta',
            'assigned_to' => 'non',
            'status' => 'repellat',
            'start_date' => '2018-06-25',
            'end_date' => '2018-06-25',
            'per_page' => '15',
            'order_by_date' => '0',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request   

GET connector/api/field-force

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

contact_id   string  optional  

id of the contact Example: dicta

assigned_to   string  optional  

id of the assigned user Example: non

status   string  optional  

status of the visit (assigned, finished) Example: repellat

start_date   string  optional  

Start date filter for visit on format:Y-m-d Example: 2018-06-25

end_date   string  optional  

End date filter for visit on format:Y-m-d Example: 2018-06-25

per_page   integer  optional  

Total records per page. default: 10, Set -1 for no pagination Example: 15

order_by_date   integer  optional  

Sort visit by visit on date ('asc', 'desc') Example: 0

Create Visit

requires authentication

Example request:
curl --request POST \
    "https://bqf.ai/connector/api/field-force/create" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"contact_id\": 10,
    \"visit_to\": \"omnis\",
    \"visit_address\": \"est\",
    \"assigned_to\": 1,
    \"visit_on\": \"2021-12-28 17:23:00\",
    \"visit_for\": \"aut\"
}"
const url = new URL(
    "https://bqf.ai/connector/api/field-force/create"
);

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

let body = {
    "contact_id": 10,
    "visit_to": "omnis",
    "visit_address": "est",
    "assigned_to": 1,
    "visit_on": "2021-12-28 17:23:00",
    "visit_for": "aut"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://bqf.ai/connector/api/field-force/create',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'contact_id' => 10,
            'visit_to' => 'omnis',
            'visit_address' => 'est',
            'assigned_to' => 1,
            'visit_on' => '2021-12-28 17:23:00',
            'visit_for' => 'aut',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": {
        "contact_id": "6",
        "assigned_to": "9",
        "visit_on": "2022-01-15 17:23:00",
        "visit_for": "",
        "meet_with": "",
        "meet_with2": "",
        "meet_with3": "",
        "meet_with_mobileno": "",
        "meet_with_mobileno2": "",
        "meet_with_mobileno3": "",
        "meet_with_designation": "",
        "meet_with_designation2": "",
        "meet_with_designation3": "",
        "visit_id": "2021/0031",
        "status": "assigned",
        "business_id": 1,
        "updated_at": "2021-12-30 11:00:47",
        "created_at": "2021-12-30 11:00:47",
        "id": 3
    }
}
 

Request   

POST connector/api/field-force/create

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

contact_id   integer  optional  

id of the contact Example: 10

visit_to   string  optional  

Name of the visiting person or company if contact_id is not given Example: omnis

visit_address   string  optional  

Address of the visiting person or company if contact_id is not given Example: est

assigned_to   integer   

id of the assigned user Example: 1

visit_on   format:Y-m-d  optional  

H:i:s Example: 2021-12-28 17:23:00

visit_for   string  optional  

Purpose of visiting Example: aut

Update Visit status

requires authentication

Example request:
curl --request POST \
    "https://bqf.ai/connector/api/field-force/update-visit-status/17" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: multipart/form-data" \
    --header "Accept: application/json" \
    --form "status=finished"\
    --form "reason_to_not_meet_contact=expedita"\
    --form "visited_on=2021-12-28 17:23:00"\
    --form "visited_address=Radhanath Mullick Ln, Tiretta Bazaar, Bow Bazaar, Kolkata, West Bengal, 700 073, India"\
    --form "latitude=41.40338"\
    --form "longitude=2.17403"\
    --form "comments=quas"\
    --form "meet_with=maxime"\
    --form "meet_with_mobileno=tempore"\
    --form "photo=@/tmp/phpCc52HR" 
const url = new URL(
    "https://bqf.ai/connector/api/field-force/update-visit-status/17"
);

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

const body = new FormData();
body.append('status', 'finished');
body.append('reason_to_not_meet_contact', 'expedita');
body.append('visited_on', '2021-12-28 17:23:00');
body.append('visited_address', 'Radhanath Mullick Ln, Tiretta Bazaar, Bow Bazaar, Kolkata, West Bengal, 700 073, India');
body.append('latitude', '41.40338');
body.append('longitude', '2.17403');
body.append('comments', 'quas');
body.append('meet_with', 'maxime');
body.append('meet_with_mobileno', 'tempore');
body.append('photo', document.querySelector('input[name="photo"]').files[0]);

fetch(url, {
    method: "POST",
    headers,
    body,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://bqf.ai/connector/api/field-force/update-visit-status/17',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'multipart/form-data',
            'Accept' => 'application/json',
        ],
        'multipart' => [
            [
                'name' => 'status',
                'contents' => 'finished'
            ],
            [
                'name' => 'reason_to_not_meet_contact',
                'contents' => 'expedita'
            ],
            [
                'name' => 'visited_on',
                'contents' => '2021-12-28 17:23:00'
            ],
            [
                'name' => 'visited_address',
                'contents' => 'Radhanath Mullick Ln, Tiretta Bazaar, Bow Bazaar, Kolkata, West Bengal, 700 073, India'
            ],
            [
                'name' => 'latitude',
                'contents' => '41.40338'
            ],
            [
                'name' => 'longitude',
                'contents' => '2.17403'
            ],
            [
                'name' => 'comments',
                'contents' => 'quas'
            ],
            [
                'name' => 'meet_with',
                'contents' => 'maxime'
            ],
            [
                'name' => 'meet_with_mobileno',
                'contents' => 'tempore'
            ],
            [
                'name' => 'photo',
                'contents' => fopen('/tmp/phpCc52HR', 'r')
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": {
        "id": 10,
        "business_id": 1,
        "contact_id": 6,
        "assigned_to": 9,
        "latitude": "23.6101808",
        "longitude": "85.2799354",
        "visited_address": "New address",
        "status": "finished",
        "visit_on": "2021-12-28 17:23:00",
        "visit_for": "assigned from api",
        "meet_with": "Name",
        "meet_with2": "Name",
        "meet_with3": "Name",
        "meet_with_mobileno": "123456789",
        "meet_with_mobileno2": "123456789",
        "meet_with_mobileno3": "123456789",
        "meet_with_designation": "dr",
        "meet_with_designation2": "dr",
        "meet_with_designation3": "dr",
        "comments": "Users comment",
        "created_at": "2021-12-28 17:35:13",
        "updated_at": "2021-12-28 18:06:03"
    }
}
 

Request   

POST connector/api/field-force/update-visit-status/{id}

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: multipart/form-data

Accept      

Example: application/json

URL Parameters

id   string   

id of the visit to be updated Example: 17

Body Parameters

status   string  optional  

Current status of the visit (assigned, finished, met_contact, did_not_meet_contact) Example: finished

reason_to_not_meet_contact   string  optional  

Reason if status is did_not_meet_contact Example: expedita

visited_on   format:Y-m-d  optional  

H:i:s Example: 2021-12-28 17:23:00

visited_address   string  optional  

Full address of the contact Example: Radhanath Mullick Ln, Tiretta Bazaar, Bow Bazaar, Kolkata, West Bengal, 700 073, India

latitude   decimal  optional  

Lattitude of the user location if full address is not given Example: 41.40338

longitude   decimal  optional  

Longitude of the user location if full address is not given Example: 2.17403

comments   string  optional  

Extra comments Example: quas

photo   file  optional  

Upload Photo as a file of the visit if any or base64 encoded image Example: /tmp/phpCc52HR

meet_with   required  optional  

name of person field force meet with Example: maxime

meet_with_mobileno   required  optional  

mobile number of the person field force meet with Example: tempore

New end points

New List products

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/new_product?order_by=consequuntur&order_direction=libero&location_custom_field_1=eos&category_id=amet&sub_category_id=vero&location_id=1&not_for_sell=nihil&send_lot_detail=quas&name=aut&sku=inventore&product_ids=1%2C2&per_page=10" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/new_product"
);

const params = {
    "order_by": "consequuntur",
    "order_direction": "libero",
    "location_custom_field_1": "eos",
    "category_id": "amet",
    "sub_category_id": "vero",
    "location_id": "1",
    "not_for_sell": "nihil",
    "send_lot_detail": "quas",
    "name": "aut",
    "sku": "inventore",
    "product_ids": "1,2",
    "per_page": "10",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/new_product',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'order_by' => 'consequuntur',
            'order_direction' => 'libero',
            'location_custom_field_1' => 'eos',
            'category_id' => 'amet',
            'sub_category_id' => 'vero',
            'location_id' => '1',
            'not_for_sell' => 'nihil',
            'send_lot_detail' => 'quas',
            'name' => 'aut',
            'sku' => 'inventore',
            'product_ids' => '1,2',
            'per_page' => '10',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 2,
            "name": "Levis Men's Slimmy Fit Jeans",
            "business_id": 1,
            "type": "variable",
            "exemption_type_id": null,
            "enable_stock": 1,
            "sku": "AS0002",
            "product_custom_field1": null,
            "product_custom_field2": null,
            "product_custom_field3": null,
            "product_custom_field4": null,
            "woocommerce_media_id": null,
            "product_description": null,
            "is_inactive": 0,
            "repair_model_id": null,
            "not_for_selling": 0,
            "ecom_shipping_class_id": null,
            "ecom_active_in_store": 1,
            "woocommerce_product_id": 627,
            "woocommerce_disable_sync": 0,
            "image_url": "https://bqf.ai/uploads/img/1528727964_levis_jeans.jpg",
            "product_variations": [
                {
                    "id": 2,
                    "variation_template_id": 5,
                    "name": "Waist Size",
                    "product_id": 2,
                    "is_dummy": 0,
                    "variations": [
                        {
                            "id": 2,
                            "name": "28",
                            "product_id": 2,
                            "sub_sku": "AS0002-1",
                            "product_variation_id": 2,
                            "woocommerce_variation_id": 658,
                            "default_purchase_price": "70.0000",
                            "dpp_inc_tax": "77.0000",
                            "default_sell_price": "70.0000",
                            "sell_price_inc_tax": "77.0000",
                            "combo_variations": null,
                            "variation_location_details": [
                                {
                                    "id": 1,
                                    "product_id": 2,
                                    "product_variation_id": 2,
                                    "variation_id": 2,
                                    "location_id": 1,
                                    "qty_available": "71.0000"
                                }
                            ],
                            "media": [],
                            "discounts": []
                        },
                        {
                            "id": 3,
                            "name": "30",
                            "product_id": 2,
                            "sub_sku": "AS0002-2",
                            "product_variation_id": 2,
                            "woocommerce_variation_id": 659,
                            "default_purchase_price": "70.0000",
                            "dpp_inc_tax": "77.0000",
                            "default_sell_price": "70.0000",
                            "sell_price_inc_tax": "77.0000",
                            "combo_variations": null,
                            "variation_location_details": [
                                {
                                    "id": 2,
                                    "product_id": 2,
                                    "product_variation_id": 2,
                                    "variation_id": 3,
                                    "location_id": 1,
                                    "qty_available": "89.0000"
                                }
                            ],
                            "media": [],
                            "discounts": []
                        },
                        {
                            "id": 4,
                            "name": "32",
                            "product_id": 2,
                            "sub_sku": "AS0002-3",
                            "product_variation_id": 2,
                            "woocommerce_variation_id": 660,
                            "default_purchase_price": "70.0000",
                            "dpp_inc_tax": "77.0000",
                            "default_sell_price": "70.0000",
                            "sell_price_inc_tax": "77.0000",
                            "combo_variations": null,
                            "variation_location_details": [
                                {
                                    "id": 3,
                                    "product_id": 2,
                                    "product_variation_id": 2,
                                    "variation_id": 4,
                                    "location_id": 1,
                                    "qty_available": "127.0000"
                                },
                                {
                                    "id": 1371,
                                    "product_id": 2,
                                    "product_variation_id": 2,
                                    "variation_id": 4,
                                    "location_id": 7,
                                    "qty_available": "-1.0000"
                                }
                            ],
                            "media": [],
                            "discounts": []
                        },
                        {
                            "id": 5,
                            "name": "34",
                            "product_id": 2,
                            "sub_sku": "AS0002-4",
                            "product_variation_id": 2,
                            "woocommerce_variation_id": 661,
                            "default_purchase_price": "72.0000",
                            "dpp_inc_tax": "79.2000",
                            "default_sell_price": "72.0000",
                            "sell_price_inc_tax": "79.2000",
                            "combo_variations": null,
                            "variation_location_details": [
                                {
                                    "id": 4,
                                    "product_id": 2,
                                    "product_variation_id": 2,
                                    "variation_id": 5,
                                    "location_id": 1,
                                    "qty_available": "128.0000"
                                }
                            ],
                            "media": [],
                            "discounts": []
                        },
                        {
                            "id": 6,
                            "name": "36",
                            "product_id": 2,
                            "sub_sku": "AS0002-5",
                            "product_variation_id": 2,
                            "woocommerce_variation_id": 662,
                            "default_purchase_price": "72.0000",
                            "dpp_inc_tax": "79.2000",
                            "default_sell_price": "72.0000",
                            "sell_price_inc_tax": "79.2000",
                            "combo_variations": null,
                            "variation_location_details": [
                                {
                                    "id": 5,
                                    "product_id": 2,
                                    "product_variation_id": 2,
                                    "variation_id": 6,
                                    "location_id": 1,
                                    "qty_available": "99.0000"
                                }
                            ],
                            "media": [],
                            "discounts": []
                        }
                    ]
                }
            ],
            "brand": {
                "id": 1,
                "business_id": 1,
                "name": "Levis",
                "description": null,
                "created_by": 1,
                "use_for_repair": 1,
                "deleted_at": null,
                "created_at": "2018-01-03 21:19:47",
                "updated_at": "2018-01-03 21:19:47"
            },
            "unit": {
                "id": 1,
                "business_id": 1,
                "actual_name": "Pieces",
                "short_name": "Pc(s)",
                "allow_decimal": 0,
                "base_unit_id": null,
                "base_unit_multiplier": null
            },
            "category": {
                "id": 1,
                "name": "Men's",
                "business_id": 1,
                "short_code": "sfefef",
                "parent_id": 0,
                "category_type": "product",
                "description": null,
                "slug": null,
                "woocommerce_cat_id": null
            },
            "sub_category": {
                "id": 4,
                "name": "Jeans",
                "business_id": 1,
                "short_code": null,
                "parent_id": 1,
                "category_type": "product",
                "description": null,
                "slug": null,
                "woocommerce_cat_id": null
            },
            "product_tax": {
                "id": 1,
                "business_id": 1,
                "name": "VAT@10%",
                "amount": 10,
                "is_tax_group": 0,
                "for_tax_group": 0,
                "created_by": 1,
                "woocommerce_tax_rate_id": null,
                "deleted_at": null,
                "created_at": "2018-01-04 02:40:07",
                "updated_at": "2018-01-04 02:40:07"
            },
            "product_locations": [
                {
                    "id": 1,
                    "business_id": 1,
                    "name": "Location 1",
                    "custom_field1": "gdgdgd88",
                    "custom_field2": null,
                    "custom_field3": null,
                    "custom_field4": null
                }
            ]
        }
    ],
    "links": {
        "first": "https://bqf.ai/connector/api/new_product?per_page=1&page=1",
        "last": "https://bqf.ai/connector/api/new_product?per_page=1&page=1088",
        "prev": null,
        "next": "https://bqf.ai/connector/api/new_product?per_page=1&page=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1088,
        "path": "https://bqf.ai/connector/api/new_product",
        "per_page": "1",
        "to": 1,
        "total": 1088
    }
}
 

Request   

GET connector/api/new_product

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

order_by   string  optional  

Values: product_name or newest Example: consequuntur

order_direction   string  optional  

Values: asc or desc Example: libero

location_custom_field_1   string  optional  

Custom field 1 of the location Example: eos

category_id   string  optional  

comma separated ids of one or multiple category Example: amet

sub_category_id   string  optional  

comma separated ids of one or multiple sub-category Example: vero

location_id   string  optional  

Example: 1

not_for_sell   string  optional  

(1, 0) Example: nihil

send_lot_detail   string  optional  

Send lot details in each variation location details(1, 0) Example: quas

name   string  optional  

Search term for product name Example: aut

sku   string  optional  

Search term for product sku Example: inventore

product_ids   string  optional  

comma separated ids of products Example: 1,2

per_page   integer  optional  

Total records per page. default: 10, Set -1 for no pagination Example: 10

New List sells

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/new_sell?location_id=1&contact_id=dolorem&payment_status=due%2Cpartial&start_date=2018-06-25&end_date=2018-06-25&user_id=maxime&service_staff_id=architecto&shipping_status=ordered&source=provident&customer_group_id=molestiae&product_name=non&product_sku=iure&product_custom_field_1=ea&location_custom_field_1=alias&location_invoice_scheme_prefix=earum&product_category_id=est&product_sub_category_id=sint&sell_ids=55%2C64&only_subscriptions=recusandae&send_purchase_details=necessitatibus&order_by_date=desc&per_page=10" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/new_sell"
);

const params = {
    "location_id": "1",
    "contact_id": "dolorem",
    "payment_status": "due,partial",
    "start_date": "2018-06-25",
    "end_date": "2018-06-25",
    "user_id": "maxime",
    "service_staff_id": "architecto",
    "shipping_status": "ordered",
    "source": "provident",
    "customer_group_id": "molestiae",
    "product_name": "non",
    "product_sku": "iure",
    "product_custom_field_1": "ea",
    "location_custom_field_1": "alias",
    "location_invoice_scheme_prefix": "earum",
    "product_category_id": "est",
    "product_sub_category_id": "sint",
    "sell_ids": "55,64",
    "only_subscriptions": "recusandae",
    "send_purchase_details": "necessitatibus",
    "order_by_date": "desc",
    "per_page": "10",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/new_sell',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'location_id' => '1',
            'contact_id' => 'dolorem',
            'payment_status' => 'due,partial',
            'start_date' => '2018-06-25',
            'end_date' => '2018-06-25',
            'user_id' => 'maxime',
            'service_staff_id' => 'architecto',
            'shipping_status' => 'ordered',
            'source' => 'provident',
            'customer_group_id' => 'molestiae',
            'product_name' => 'non',
            'product_sku' => 'iure',
            'product_custom_field_1' => 'ea',
            'location_custom_field_1' => 'alias',
            'location_invoice_scheme_prefix' => 'earum',
            'product_category_id' => 'est',
            'product_sub_category_id' => 'sint',
            'sell_ids' => '55,64',
            'only_subscriptions' => 'recusandae',
            'send_purchase_details' => 'necessitatibus',
            'order_by_date' => 'desc',
            'per_page' => '10',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 6,
            "business_id": 1,
            "location_id": 1,
            "res_table_id": null,
            "type": "sell",
            "status": "final",
            "is_quotation": 0,
            "payment_status": "paid",
            "contact_id": 4,
            "customer_group_id": null,
            "invoice_no": "AS0001",
            "ref_no": "",
            "source": null,
            "unique_hash": null,
            "hash_control": null,
            "subscription_no": null,
            "subscription_repeat_on": null,
            "transaction_date": "2018-04-10 13:23:21",
            "total_before_tax": "770.0000",
            "tax_id": null,
            "tax_amount": "0.0000",
            "discount_type": "percentage",
            "discount_amount": "0.0000",
            "rp_redeemed": 0,
            "rp_redeemed_amount": "0.0000",
            "shipping_details": null,
            "shipping_address": null,
            "shipping_status": null,
            "delivered_to": null,
            "additional_notes": null,
            "staff_note": null,
            "round_off_amount": "0.0000",
            "final_total": "770.0000",
            "expense_sub_category_id": null,
            "is_direct_sale": 0,
            "is_suspend": 0,
            "total_amount_recovered": null,
            "crm_is_order_request": 0,
            "mfg_production_cost": "0.0000",
            "mfg_production_cost_type": "percentage",
            "mfg_is_final": 0,
            "is_created_from_api": 0,
            "essentials_duration": "0.00",
            "essentials_duration_unit": null,
            "essentials_amount_per_unit_duration": "0.0000",
            "essentials_allowances": null,
            "essentials_deductions": null,
            "repair_completed_on": null,
            "repair_warranty_id": null,
            "repair_brand_id": null,
            "repair_status_id": null,
            "repair_model_id": null,
            "repair_job_sheet_id": null,
            "repair_defects": null,
            "repair_serial_no": null,
            "repair_checklist": null,
            "repair_security_pwd": null,
            "repair_security_pattern": null,
            "repair_due_date": null,
            "repair_device_id": null,
            "repair_updates_notif": 0,
            "invoice_token": "00f79f7fd292225e8c303a6bf8626d06",
            "pjt_project_id": null,
            "pjt_title": null,
            "woocommerce_order_id": null,
            "selling_price_group_id": null,
            "created_at": "2018-01-06 07:06:11",
            "updated_at": "2021-10-23 11:42:13",
            "location_name": "Location 1",
            "location_custom_field1": "gdgdgd88",
            "location_invoice_scheme_prefix": "AS",
            "table_name": null,
            "table_description": null,
            "contact": "Harry",
            "customer_group_name": "grp 2",
            "sell_lines": [
                {
                    "id": 1,
                    "transaction_id": 6,
                    "product_id": 2,
                    "quantity": 10,
                    "quantity_returned": "0.0000",
                    "unit_price_before_discount": "70.0000",
                    "unit_price": "70.0000",
                    "line_discount_type": null,
                    "line_discount_amount": "0.0000",
                    "unit_price_inc_tax": "77.0000",
                    "item_tax": "7.0000",
                    "tax_id": 1,
                    "discount_id": null,
                    "lot_no_line_id": null,
                    "sell_line_note": null,
                    "woocommerce_line_items_id": null,
                    "children_type": "",
                    "created_at": "2018-01-06 07:06:11",
                    "updated_at": "2018-01-06 07:06:11",
                    "product_name": "Levis Men's Slimmy Fit Jeans",
                    "product_custom_field_1": null,
                    "product_type": "variable",
                    "product_sku": "AS0002",
                    "category": {
                        "id": 1,
                        "name": "Men's",
                        "business_id": 1,
                        "short_code": "sfefef",
                        "parent_id": 0,
                        "created_by": 1,
                        "category_type": "product",
                        "description": null,
                        "slug": null,
                        "woocommerce_cat_id": null
                    },
                    "sub_category": {
                        "id": 4,
                        "name": "Jeans",
                        "business_id": 1,
                        "short_code": null,
                        "parent_id": 1,
                        "created_by": 1,
                        "category_type": "product",
                        "description": null,
                        "slug": null,
                        "woocommerce_cat_id": null
                    },
                    "product_variations": {
                        "id": 3,
                        "name": "30",
                        "product_id": 2,
                        "sub_sku": "AS0002-2",
                        "product_variation_id": 2,
                        "default_purchase_price": "70.0000",
                        "dpp_inc_tax": "77.0000",
                        "default_sell_price": "70.0000",
                        "sell_price_inc_tax": "77.0000"
                    }
                }
            ],
            "payment_lines": [
                {
                    "id": 1,
                    "transaction_id": 6,
                    "business_id": null,
                    "is_return": 0,
                    "amount": "770.0000",
                    "method": "cash",
                    "card_type": "visa",
                    "paid_on": "2018-01-09 17:30:35",
                    "payment_ref_no": null
                }
            ],
            "invoice_url": "https://bqf.ai/invoice/00f79f7fd292225e8c303a6bf8626d06",
            "payment_link": ""
        }
    ],
    "links": {
        "first": "https://bqf.ai/connector/api/new_sell?per_page=1&page=1",
        "last": "https://bqf.ai/connector/api/new_sell?per_page=1&page=213",
        "prev": null,
        "next": "https://bqf.ai/connector/api/new_sell?per_page=1&page=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 213,
        "path": "https://bqf.ai/connector/api/new_sell",
        "per_page": "1",
        "to": 1,
        "total": 213
    }
}
 

Request   

GET connector/api/new_sell

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

location_id   string  optional  

id of the location Example: 1

contact_id   string  optional  

id of the customer Example: dolorem

payment_status   string  optional  

Comma separated values of payment statuses. Available values due, partial, paid, overdue Example: due,partial

start_date   string  optional  

format:Y-m-d Example: 2018-06-25

end_date   string  optional  

format:Y-m-d Example: 2018-06-25

user_id   string  optional  

id of the user who created the sale Example: maxime

service_staff_id   string  optional  

id of the service staff assigned with the sale Example: architecto

shipping_status   string  optional  

Shipping Status of the sale ('ordered', 'packed', 'shipped', 'delivered', 'cancelled') Example: ordered

source   string  optional  

Source of the sale Example: provident

customer_group_id   string  optional  

id of the customer group Example: molestiae

product_name   string  optional  

name of the product Example: non

product_sku   string  optional  

sku of the product or variation Example: iure

product_custom_field_1   string  optional  

custome field 1 of the product Example: ea

location_custom_field_1   string  optional  

custome field 1 of the location Example: alias

location_invoice_scheme_prefix   string  optional  

Invoice scheme prefix of the location Example: earum

product_category_id   string  optional  

category id of the product Example: est

product_sub_category_id   string  optional  

Sub category id of the product Example: sint

sell_ids   string  optional  

comma separated ids of the sells Example: 55,64

only_subscriptions   string  optional  

Filter only subcription invoices (1, 0) Example: recusandae

send_purchase_details   string  optional  

Get purchase details of each sell line (1, 0) Example: necessitatibus

order_by_date   string  optional  

Sort sell list by date ('asc', 'desc') Example: desc

per_page   integer  optional  

Total records per page. default: 10, Set -1 for no pagination Example: 10

New List contact

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/new_contactapi?type=non&customer_group_id=consequatur&custom_field_1=eos&contact_ids=2%2C3&name=hic&biz_name=maxime&mobile_num=2&contact_id=optio&order_by=est&direction=optio&per_page=10" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/new_contactapi"
);

const params = {
    "type": "non",
    "customer_group_id": "consequatur",
    "custom_field_1": "eos",
    "contact_ids": "2,3",
    "name": "hic",
    "biz_name": "maxime",
    "mobile_num": "2",
    "contact_id": "optio",
    "order_by": "est",
    "direction": "optio",
    "per_page": "10",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/new_contactapi',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'type' => 'non',
            'customer_group_id' => 'consequatur',
            'custom_field_1' => 'eos',
            'contact_ids' => '2,3',
            'name' => 'hic',
            'biz_name' => 'maxime',
            'mobile_num' => '2',
            'contact_id' => 'optio',
            'order_by' => 'est',
            'direction' => 'optio',
            'per_page' => '10',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 18,
            "business_id": 1,
            "type": "customer",
            "name": "Mr. Rohit Kumar Agrawalla",
            "prefix": "Mr.",
            "first_name": "Rohit",
            "middle_name": "Kumar",
            "last_name": "Agrawalla",
            "email": null,
            "contact_status": "active",
            "mobile": "8596859647",
            "credit_limit": null,
            "converted_by": null,
            "converted_on": null,
            "balance": "40.0000",
            "total_rp": 0,
            "total_rp_used": 0,
            "total_rp_expired": 0,
            "customer_group_id": 1,
            "crm_source": null,
            "crm_life_stage": null,
            "custom_field1": null,
            "custom_field2": null,
            "custom_field3": null,
            "custom_field4": null,
            "custom_field5": null,
            "custom_field6": null,
            "custom_field7": null,
            "custom_field8": null,
            "custom_field9": null,
            "custom_field10": null,
            "remember_token": null,
            "password": null
        }
    ],
    "links": {
        "first": "https://bqf.ai/connector/api/new_contactapi?customer_group_id=1&page=1",
        "last": "https://bqf.ai/connector/api/new_contactapi?customer_group_id=1&page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "path": "https://bqf.ai/connector/api/new_contactapi",
        "per_page": 10,
        "to": 1,
        "total": 1
    }
}
 

Request   

GET connector/api/new_contactapi

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

type   string   

Type of contact (supplier, customer) Example: non

customer_group_id   string  optional  

id of the customer group Example: consequatur

custom_field_1   string  optional  

Custom field 1 of the contact Example: eos

contact_ids   string  optional  

comma separated ids of contacts Example: 2,3

name   string  optional  

Search term for contact name Example: hic

biz_name   string  optional  

Search term for contact's business name Example: maxime

mobile_num   integer  optional  

Search term for contact's mobile number Example: 2

contact_id   string  optional  

Search term for contact's contact_id. Ex(CO0005) Example: optio

order_by   string  optional  

Column name to sort the result, Column: name, supplier_business_name Example: est

direction   string  optional  

Direction to sort the result, Direction: desc, asc Example: optio

per_page   integer  optional  

Total records per page. default: 10, Set -1 for no pagination Example: 10

Online store (Ecommerce)

Store branches

requires authentication

The branches of the business as the store sees them, limited to the ones the user may work with: which sell online, the default fulfilment branch, and which offer pickup.

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/ecommerce/branches" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/ecommerce/branches"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/ecommerce/branches',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 1,
            "name": "Riyadh",
            "public_name": "Riyadh — Olaya",
            "city": "Riyadh",
            "is_enabled": true,
            "is_default": true,
            "allow_pickup": true
        }
    ]
}
 

Request   

GET connector/api/ecommerce/branches

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

List online orders

requires authentication

Newest first, only the branches the user may see. Filters are optional.

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/ecommerce/orders?status=awaiting_confirmation&payment_status=pending&fulfilment_type=pickup&location_id=1&from=2026-09-01&to=2026-09-30&q=EC-000123&per_page=25&page=1" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/ecommerce/orders"
);

const params = {
    "status": "awaiting_confirmation",
    "payment_status": "pending",
    "fulfilment_type": "pickup",
    "location_id": "1",
    "from": "2026-09-01",
    "to": "2026-09-30",
    "q": "EC-000123",
    "per_page": "25",
    "page": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/ecommerce/orders',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'status' => 'awaiting_confirmation',
            'payment_status' => 'pending',
            'fulfilment_type' => 'pickup',
            'location_id' => '1',
            'from' => '2026-09-01',
            'to' => '2026-09-30',
            'q' => 'EC-000123',
            'per_page' => '25',
            'page' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 12,
            "number": "EC-000012",
            "status": "confirmed",
            "status_label": "مؤكّد",
            "payment_status": "pending",
            "payment_gateway": "cod",
            "fulfilment_type": "delivery",
            "branch": {
                "id": 1,
                "name": "Riyadh"
            },
            "customer": {
                "name": "Sara",
                "phone": "0551234567"
            },
            "total": 165,
            "currency": "SAR",
            "items_count": 2,
            "invoiced": true,
            "placed_at": "2026-09-24 10:15:00"
        }
    ],
    "meta": {
        "current_page": 1,
        "per_page": 25,
        "total": 1,
        "last_page": 1
    }
}
 

Request   

GET connector/api/ecommerce/orders

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

status   string  optional  

One order status (awaiting_confirmation, confirmed, processing, shipped, delivered, completed, cancelled, refunded, on_hold). Example: awaiting_confirmation

payment_status   string  optional  

pending, paid, partially_refunded or refunded. Example: pending

fulfilment_type   string  optional  

delivery or pickup. Example: pickup

location_id   integer  optional  

One branch (must be permitted). Example: 1

from   string  optional  

date Placed on or after (Y-m-d). Example: 2026-09-01

to   string  optional  

date Placed on or before (Y-m-d). Example: 2026-09-30

q   string  optional  

Order number, customer name or phone. Example: EC-000123

per_page   integer  optional  

1..100, default 25. Example: 25

page   integer  optional  

Example: 1

Order details

requires authentication

The order with its lines, branch, customer, latest shipment, and status history.

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/ecommerce/orders/12" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/ecommerce/orders/12"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/ecommerce/orders/12',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": {
        "id": 12,
        "number": "EC-000012",
        "status": "processing",
        "status_label": "قيد التجهيز",
        "fulfilment_type": "pickup",
        "branch": {
            "id": 2,
            "name": "Jeddah",
            "city": "Jeddah",
            "mobile": "0126..."
        },
        "customer": {
            "name": "Sara",
            "phone": "0551234567",
            "email": null,
            "address": ""
        },
        "totals": {
            "subtotal": 150,
            "shipping_fee": 0,
            "total": 150,
            "currency": "SAR"
        },
        "items": [
            {
                "product_id": 3,
                "variation_id": 3,
                "name": "Item",
                "sku": "A1",
                "qty": 2,
                "unit_price": 75,
                "line_total": 150
            }
        ],
        "shipment": null,
        "next_statuses": [
            "shipped",
            "cancelled",
            "refunded",
            "on_hold"
        ],
        "history": [
            {
                "to": "confirmed",
                "at": "2026-09-24 10:20:00",
                "note": "admin confirmed"
            }
        ]
    }
}
 

Request   

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

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 12

Change an order's status

requires authentication

Moves the order along its lifecycle exactly as the back office does (the Core sale is created at the configured stage, stock returns on cancel). Only the transitions the state machine allows from the current status are accepted (422 transition_failed).

Example request:
curl --request POST \
    "https://bqf.ai/connector/api/ecommerce/orders/12/transition" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"to\": \"confirmed\"
}"
const url = new URL(
    "https://bqf.ai/connector/api/ecommerce/orders/12/transition"
);

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

let body = {
    "to": "confirmed"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://bqf.ai/connector/api/ecommerce/orders/12/transition',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'to' => 'confirmed',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": true,
    "data": {
        "id": 12,
        "status": "confirmed",
        "status_label": "مؤكّد",
        "next_statuses": [
            "processing",
            "cancelled",
            "refunded"
        ]
    }
}
 

Request   

POST connector/api/ecommerce/orders/{id}/transition

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

Example: 12

Body Parameters

to   string   

confirmed, processing, shipped, delivered, completed, cancelled, on_hold or awaiting_confirmation. Example: confirmed

Other endpoints · واجهات أخرى

List payment accounts

requires authentication

Open accounts. Without the account.access permission the account number is masked to its last four digits and account_details is null.

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/payment-accounts?include_closed=1" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/payment-accounts"
);

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

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/payment-accounts',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'include_closed' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 1,
            "business_id": 1,
            "name": "Test Account",
            "account_number": "8746888847455",
            "account_type_id": 0,
            "note": null,
            "created_by": 9,
            "is_closed": 0,
            "deleted_at": null,
            "created_at": "2020-06-04 21:34:21",
            "updated_at": "2020-06-04 21:34:21"
        }
    ]
}
 

Request   

GET connector/api/payment-accounts

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

include_closed   integer  optional  

optional 1 to include closed accounts (needs account.access) Example: 1

List payment methods

requires authentication

With the business's own labels for the custom methods.

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/payment-methods?location_id=1" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/payment-methods"
);

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

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/payment-methods',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'location_id' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "cash": "Cash",
    "card": "Card",
    "cheque": "Cheque",
    "bank_transfer": "Bank Transfer",
    "other": "Other",
    "custom_pay_1": "Custom Payment 1",
    "custom_pay_2": "Custom Payment 2",
    "custom_pay_3": "Custom Payment 3"
}
 

Request   

GET connector/api/payment-methods

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

location_id   string  optional  

optional id of a branch: only the methods enabled for it Example: 1

Get business details

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/business-details" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/business-details"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/business-details',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": {
        "id": 1,
        "name": "Awesome Shop",
        "currency_id": 2,
        "start_date": "2018-01-01",
        "tax_number_1": "3412569900",
        "tax_label_1": "GSTIN",
        "tax_number_2": null,
        "tax_label_2": null,
        "default_sales_tax": null,
        "default_profit_percent": 25,
        "owner_id": 1,
        "time_zone": "America/Phoenix",
        "fy_start_month": 1,
        "accounting_method": "fifo",
        "default_sales_discount": "10.00",
        "sell_price_tax": "includes",
        "logo": null,
        "sku_prefix": "AS",
        "enable_product_expiry": 0,
        "expiry_type": "add_expiry",
        "on_product_expiry": "keep_selling",
        "stop_selling_before": 0,
        "enable_tooltip": 1,
        "purchase_in_diff_currency": 0,
        "purchase_currency_id": null,
        "p_exchange_rate": "1.000",
        "transaction_edit_days": 30,
        "stock_expiry_alert_days": 30,
        "keyboard_shortcuts": {
            "pos": {
                "express_checkout": "shift+e",
                "pay_n_ckeckout": "shift+p",
                "draft": "shift+d",
                "cancel": "shift+c",
                "recent_product_quantity": "f2",
                "weighing_scale": null,
                "edit_discount": "shift+i",
                "edit_order_tax": "shift+t",
                "add_payment_row": "shift+r",
                "finalize_payment": "shift+f",
                "add_new_product": "f4"
            }
        },
        "pos_settings": {
            "amount_rounding_method": null,
            "disable_pay_checkout": 0,
            "disable_draft": 0,
            "disable_express_checkout": 0,
            "hide_product_suggestion": 0,
            "hide_recent_trans": 0,
            "disable_discount": 0,
            "disable_order_tax": 0,
            "is_pos_subtotal_editable": 0
        },
        "weighing_scale_setting": {
            "label_prefix": null,
            "product_sku_length": "4",
            "qty_length": "3",
            "qty_length_decimal": "2"
        },
        "manufacturing_settings": null,
        "essentials_settings": null,
        "ecom_settings": null,
        "woocommerce_wh_oc_secret": null,
        "woocommerce_wh_ou_secret": null,
        "woocommerce_wh_od_secret": null,
        "woocommerce_wh_or_secret": null,
        "enable_brand": 1,
        "enable_category": 1,
        "enable_sub_category": 1,
        "enable_price_tax": 1,
        "enable_purchase_status": 1,
        "enable_lot_number": 0,
        "default_unit": null,
        "enable_sub_units": 0,
        "enable_racks": 0,
        "enable_row": 0,
        "enable_position": 0,
        "enable_editing_product_from_purchase": 1,
        "sales_cmsn_agnt": null,
        "item_addition_method": 1,
        "enable_inline_tax": 1,
        "currency_symbol_placement": "before",
        "enabled_modules": [
            "purchases",
            "add_sale",
            "pos_sale",
            "stock_transfers",
            "stock_adjustment",
            "expenses",
            "account",
            "tables",
            "modifiers",
            "service_staff",
            "booking",
            "kitchen",
            "subscription",
            "types_of_service"
        ],
        "date_format": "m/d/Y",
        "time_format": "24",
        "ref_no_prefixes": {
            "purchase": "PO",
            "purchase_return": null,
            "stock_transfer": "ST",
            "stock_adjustment": "SA",
            "sell_return": "CN",
            "expense": "EP",
            "contacts": "CO",
            "purchase_payment": "PP",
            "sell_payment": "SP",
            "expense_payment": null,
            "business_location": "BL",
            "username": null,
            "subscription": null
        },
        "theme_color": null,
        "created_by": null,
        "enable_rp": 0,
        "rp_name": null,
        "amount_for_unit_rp": "1.0000",
        "min_order_total_for_rp": "1.0000",
        "max_rp_per_order": null,
        "redeem_amount_per_unit_rp": "1.0000",
        "min_order_total_for_redeem": "1.0000",
        "min_redeem_point": null,
        "max_redeem_point": null,
        "rp_expiry_period": null,
        "rp_expiry_type": "year",
        "repair_settings": null,
        "email_settings": {
            "mail_driver": "smtp",
            "mail_host": null,
            "mail_port": null,
            "mail_username": null,
            "mail_password": null,
            "mail_encryption": null,
            "mail_from_address": null,
            "mail_from_name": null
        },
        "sms_settings": {
            "url": null,
            "send_to_param_name": "to",
            "msg_param_name": "text",
            "request_method": "post",
            "param_1": null,
            "param_val_1": null,
            "param_2": null,
            "param_val_2": null,
            "param_3": null,
            "param_val_3": null,
            "param_4": null,
            "param_val_4": null,
            "param_5": null,
            "param_val_5": null,
            "param_6": null,
            "param_val_6": null,
            "param_7": null,
            "param_val_7": null,
            "param_8": null,
            "param_val_8": null,
            "param_9": null,
            "param_val_9": null,
            "param_10": null,
            "param_val_10": null
        },
        "custom_labels": {
            "payments": {
                "custom_pay_1": null,
                "custom_pay_2": null,
                "custom_pay_3": null
            },
            "contact": {
                "custom_field_1": null,
                "custom_field_2": null,
                "custom_field_3": null,
                "custom_field_4": null
            },
            "product": {
                "custom_field_1": null,
                "custom_field_2": null,
                "custom_field_3": null,
                "custom_field_4": null
            },
            "location": {
                "custom_field_1": null,
                "custom_field_2": null,
                "custom_field_3": null,
                "custom_field_4": null
            },
            "user": {
                "custom_field_1": null,
                "custom_field_2": null,
                "custom_field_3": null,
                "custom_field_4": null
            },
            "purchase": {
                "custom_field_1": null,
                "custom_field_2": null,
                "custom_field_3": null,
                "custom_field_4": null
            },
            "sell": {
                "custom_field_1": null,
                "custom_field_2": null,
                "custom_field_3": null,
                "custom_field_4": null
            },
            "types_of_service": {
                "custom_field_1": null,
                "custom_field_2": null,
                "custom_field_3": null,
                "custom_field_4": null
            }
        },
        "common_settings": {
            "default_datatable_page_entries": "25"
        },
        "is_active": 1,
        "created_at": "2018-01-04 02:15:19",
        "updated_at": "2020-06-04 22:33:01",
        "locations": [
            {
                "id": 1,
                "business_id": 1,
                "location_id": null,
                "name": "Awesome Shop",
                "landmark": "Linking Street",
                "country": "USA",
                "state": "Arizona",
                "city": "Phoenix",
                "zip_code": "85001",
                "invoice_scheme_id": 1,
                "invoice_layout_id": 1,
                "selling_price_group_id": null,
                "print_receipt_on_invoice": 1,
                "receipt_printer_type": "browser",
                "printer_id": null,
                "mobile": null,
                "alternate_number": null,
                "email": null,
                "website": null,
                "featured_products": [
                    "5",
                    "71"
                ],
                "is_active": 1,
                "default_payment_accounts": {
                    "cash": {
                        "is_enabled": "1",
                        "account": null
                    },
                    "card": {
                        "is_enabled": "1",
                        "account": null
                    },
                    "cheque": {
                        "is_enabled": "1",
                        "account": null
                    },
                    "bank_transfer": {
                        "is_enabled": "1",
                        "account": null
                    },
                    "other": {
                        "is_enabled": "1",
                        "account": null
                    },
                    "custom_pay_1": {
                        "is_enabled": "1",
                        "account": null
                    },
                    "custom_pay_2": {
                        "is_enabled": "1",
                        "account": null
                    },
                    "custom_pay_3": {
                        "is_enabled": "1",
                        "account": null
                    }
                },
                "custom_field1": null,
                "custom_field2": null,
                "custom_field3": null,
                "custom_field4": null,
                "deleted_at": null,
                "created_at": "2018-01-04 02:15:20",
                "updated_at": "2020-06-05 00:56:54"
            }
        ],
        "currency": {
            "id": 2,
            "country": "America",
            "currency": "Dollars",
            "code": "USD",
            "symbol": "$",
            "thousand_separator": ",",
            "decimal_separator": ".",
            "created_at": null,
            "updated_at": null
        },
        "printers": [],
        "currency_precision": 2,
        "quantity_precision": 2
    }
}
 

Request   

GET connector/api/business-details

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Get profit and loss report

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/profit-loss-report?location_id=1&start_date=2018-06-25&end_date=2018-06-25&user_id=1" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/profit-loss-report"
);

const params = {
    "location_id": "1",
    "start_date": "2018-06-25",
    "end_date": "2018-06-25",
    "user_id": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/profit-loss-report',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'location_id' => '1',
            'start_date' => '2018-06-25',
            'end_date' => '2018-06-25',
            'user_id' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": {
        "total_purchase_shipping_charge": 0,
        "total_sell_shipping_charge": 0,
        "total_transfer_shipping_charges": "0.0000",
        "opening_stock": 0,
        "closing_stock": "386859.00000000",
        "total_purchase": 386936,
        "total_purchase_discount": "0.000000000000",
        "total_purchase_return": "0.0000",
        "total_sell": 9764.5,
        "total_sell_discount": "11.550000000000",
        "total_sell_return": "0.0000",
        "total_sell_round_off": "0.0000",
        "total_expense": "0.0000",
        "total_adjustment": "0.0000",
        "total_recovered": "0.0000",
        "total_reward_amount": "0.0000",
        "left_side_module_data": [
            {
                "value": "0.0000",
                "label": "Total Payroll",
                "add_to_net_profit": true
            },
            {
                "value": 0,
                "label": "Total Production Cost",
                "add_to_net_profit": true
            }
        ],
        "right_side_module_data": [],
        "net_profit": 9675.95,
        "gross_profit": -11.55,
        "total_sell_by_subtype": []
    }
}
 

Request   

GET connector/api/profit-loss-report

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

location_id   string  optional  

optional id of the location Example: 1

start_date   string  optional  

optional format:Y-m-d Example: 2018-06-25

end_date   string  optional  

optional format:Y-m-d Example: 2018-06-25

user_id   string  optional  

optional id of the user Example: 1

Aggregated POS home stats (one SQL round-trip, not a full sell list).

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/pos-dashboard-stats" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/pos-dashboard-stats"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/pos-dashboard-stats',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request   

GET connector/api/pos-dashboard-stats

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

requires authentication

Active customers the user may pick, as the web POS customer picker lists them. A customer.view_own user finds only their own customers. A branch-limited user finds another branch's customer only by the full mobile number (to sell to it, send that number as the sale's customer_mobile).

due: what the customer owes (final sales net of payments, ledger discounts and returns, plus the unpaid opening balance). advance_balance: the customer's credit (advance paid). Until 2026-09 'due' carried the advance balance.

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/pos-customer-search?search=55&per_page=20" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/pos-customer-search"
);

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

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/pos-customer-search',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'search' => '55',
            'per_page' => '20',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 12,
            "name": "Walk-In Customer",
            "mobile": "0550000000",
            "customer_no": "CO0001",
            "due": 150.5,
            "advance_balance": 20,
            "invoices": 7,
            "last_sale": "2026-09-01 10:15:00"
        }
    ]
}
 

Get product current stock

requires authentication

Needs the stock_report.view permission.

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/product-stock-report?location_id=1&per_page=15" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/product-stock-report"
);

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

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/product-stock-report',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'location_id' => '1',
            'per_page' => '15',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "total_sold": null,
            "total_transfered": null,
            "total_adjusted": null,
            "stock_price": null,
            "stock": null,
            "sku": "AS0001",
            "product": "Men's Reverse Fleece Crew",
            "type": "single",
            "product_id": 1,
            "unit": "Pc(s)",
            "enable_stock": 1,
            "unit_price": "143.0000",
            "product_variation": "DUMMY",
            "variation_name": "DUMMY",
            "location_name": null,
            "location_id": null,
            "variation_id": 1
        },
        {
            "total_sold": "50.0000",
            "total_transfered": null,
            "total_adjusted": null,
            "stock_price": "3850.00000000",
            "stock": "50.0000",
            "sku": "AS0002-1",
            "product": "Levis Men's Slimmy Fit Jeans",
            "type": "variable",
            "product_id": 2,
            "unit": "Pc(s)",
            "enable_stock": 1,
            "unit_price": "77.0000",
            "product_variation": "Waist Size",
            "variation_name": "28",
            "location_name": "Awesome Shop",
            "location_id": 1,
            "variation_id": 2
        },
        {
            "total_sold": "60.0000",
            "total_transfered": null,
            "total_adjusted": null,
            "stock_price": "6930.00000000",
            "stock": "90.0000",
            "sku": "AS0002-2",
            "product": "Levis Men's Slimmy Fit Jeans",
            "type": "variable",
            "product_id": 2,
            "unit": "Pc(s)",
            "enable_stock": 1,
            "unit_price": "77.0000",
            "product_variation": "Waist Size",
            "variation_name": "30",
            "location_name": "Awesome Shop",
            "location_id": 1,
            "variation_id": 3
        }
    ],
    "links": {
        "first": "https://bqf.ai/connector/api/product-stock-report?page=1",
        "last": "https://bqf.ai/connector/api/product-stock-report?page=22",
        "prev": null,
        "next": "https://bqf.ai/connector/api/product-stock-report?page=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 22,
        "path": "https://bqf.ai/connector/api/product-stock-report",
        "per_page": 3,
        "to": 3,
        "total": 66
    }
}
 

Request   

GET connector/api/product-stock-report

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

location_id   string  optional  

optional id of the location Example: 1

per_page   integer  optional  

optional Total records per page (up to 500). default: 15, -1 for the largest page Example: 15

Get notifications

requires authentication

Newest first.

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/notifications?limit=50&unread_only=1" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/notifications"
);

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

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/notifications',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'limit' => '50',
            'unread_only' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "msg": "Payroll for August/2020 added by Mr. Super Admin. Reference No. 2020/0002",
            "icon_class": "fas fa-money-bill-alt bg-green",
            "link": "https://bqf.ai/hrm/payroll",
            "read_at": null,
            "created_at": "3 hours ago"
        }
    ]
}
 

Request   

GET connector/api/notifications

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

limit   string  optional  

optional Most notifications to return (1-500). default: 500 Example: 50

unread_only   string  optional  

optional 1 for unread notifications only Example: 1

Get location details from coordinates

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/get-location" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"lat\": \"41.40338\",
    \"lon\": \"2.17403\"
}"
const url = new URL(
    "https://bqf.ai/connector/api/get-location"
);

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

let body = {
    "lat": "41.40338",
    "lon": "2.17403"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/get-location',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'lat' => '41.40338',
            'lon' => '2.17403',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "address": "Radhanath Mullick Ln, Tiretta Bazaar, Bow Bazaar, Kolkata, West Bengal, 700 073, India"
}
 

Request   

GET connector/api/get-location

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

lat   decimal   

Lattitude of the location Example: 41.40338

lon   decimal   

Longitude of the location Example: 2.17403

GET connector/api/crm/pipeline

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/crm/pipeline" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/crm/pipeline"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/crm/pipeline',
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request   

GET connector/api/crm/pipeline

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

GET connector/api/crm/segments

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/crm/segments" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/crm/segments"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/crm/segments',
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request   

GET connector/api/crm/segments

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

GET connector/api/crm/segments/{segment}/contacts

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/crm/segments/adipisci/contacts" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/crm/segments/adipisci/contacts"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/crm/segments/adipisci/contacts',
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request   

GET connector/api/crm/segments/{segment}/contacts

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

segment   string   

The segment. Example: adipisci

GET connector/api/crm/contacts/{id}/metrics

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/crm/contacts/magnam/metrics" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/crm/contacts/magnam/metrics"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/crm/contacts/magnam/metrics',
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request   

GET connector/api/crm/contacts/{id}/metrics

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the contact. Example: magnam

GET connector/api/crm/leads-list

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/crm/leads-list" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/crm/leads-list"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/crm/leads-list',
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request   

GET connector/api/crm/leads-list

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

POST connector/api/crm/leads

Example request:
curl --request POST \
    "https://bqf.ai/connector/api/crm/leads" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"first_name\": \"wsqkzqiknzharef\",
    \"last_name\": \"buzsoskhsonwswse\",
    \"prefix\": \"sb\",
    \"business_name\": \"wd\",
    \"mobile\": \"hrrvqw\",
    \"email\": \"sam56@example.org\",
    \"contact_id\": \"ugqt\",
    \"source_id\": 20,
    \"life_stage_id\": 3,
    \"city\": \"vmhxmykauxobkczwnxkoftoe\",
    \"address\": \"ztydbiaugkbdgnulfzfmooo\",
    \"expected_value\": 58,
    \"probability\": 3,
    \"expected_close_date\": \"2026-09-24T21:24:58\",
    \"assigned_user_ids\": [
        4
    ]
}"
const url = new URL(
    "https://bqf.ai/connector/api/crm/leads"
);

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

let body = {
    "first_name": "wsqkzqiknzharef",
    "last_name": "buzsoskhsonwswse",
    "prefix": "sb",
    "business_name": "wd",
    "mobile": "hrrvqw",
    "email": "sam56@example.org",
    "contact_id": "ugqt",
    "source_id": 20,
    "life_stage_id": 3,
    "city": "vmhxmykauxobkczwnxkoftoe",
    "address": "ztydbiaugkbdgnulfzfmooo",
    "expected_value": 58,
    "probability": 3,
    "expected_close_date": "2026-09-24T21:24:58",
    "assigned_user_ids": [
        4
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://bqf.ai/connector/api/crm/leads',
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'first_name' => 'wsqkzqiknzharef',
            'last_name' => 'buzsoskhsonwswse',
            'prefix' => 'sb',
            'business_name' => 'wd',
            'mobile' => 'hrrvqw',
            'email' => 'sam56@example.org',
            'contact_id' => 'ugqt',
            'source_id' => 20,
            'life_stage_id' => 3,
            'city' => 'vmhxmykauxobkczwnxkoftoe',
            'address' => 'ztydbiaugkbdgnulfzfmooo',
            'expected_value' => 58,
            'probability' => 3,
            'expected_close_date' => '2026-09-24T21:24:58',
            'assigned_user_ids' => [
                4,
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request   

POST connector/api/crm/leads

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

first_name   string   

لا يمكن أن يحتوي النص value على أكثر من 255 حرف (أحرف). Example: wsqkzqiknzharef

last_name   string  optional  

لا يمكن أن يحتوي النص value على أكثر من 255 حرف (أحرف). Example: buzsoskhsonwswse

prefix   string  optional  

لا يمكن أن يحتوي النص value على أكثر من 20 حرف (أحرف). Example: sb

business_name   string  optional  

لا يمكن أن يحتوي النص value على أكثر من 255 حرف (أحرف). Example: wd

mobile   string  optional  

لا يمكن أن يحتوي النص value على أكثر من 50 حرف (أحرف). Example: hrrvqw

email   string  optional  

يجب أن يكون الحقل value عنوان بريد إلكتروني صالحًا. لا يمكن أن يحتوي النص value على أكثر من 255 حرف (أحرف). Example: sam56@example.org

contact_id   string  optional  

لا يمكن أن يحتوي النص value على أكثر من 50 حرف (أحرف). Example: ugqt

source_id   integer  optional  

Example: 20

life_stage_id   integer  optional  

Example: 3

city   string  optional  

لا يمكن أن يحتوي النص value على أكثر من 255 حرف (أحرف). Example: vmhxmykauxobkczwnxkoftoe

address   string  optional  

لا يمكن أن يحتوي النص value على أكثر من 500 حرف (أحرف). Example: ztydbiaugkbdgnulfzfmooo

expected_value   number  optional  

يجب أن تكون قيمة value أكبر من أو تساوي 0. Example: 58

probability   integer  optional  

يجب أن تكون قيمة value أكبر من أو تساوي 0. لا يمكن أن تكون قيمة value أكبر من 100. Example: 3

expected_close_date   string  optional  

الحقل value ليس تاريخًا صالحًا. Example: 2026-09-24T21:24:58

assigned_user_ids   integer[]  optional  

GET connector/api/crm/leads/{id}

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/crm/leads/molestiae" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/crm/leads/molestiae"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/crm/leads/molestiae',
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request   

GET connector/api/crm/leads/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the lead. Example: molestiae

PUT connector/api/crm/leads/{id}

Example request:
curl --request PUT \
    "https://bqf.ai/connector/api/crm/leads/quia" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"first_name\": \"meheewfhniiayvbwsusps\",
    \"last_name\": \"yxet\",
    \"business_name\": \"vlwsbyqpolvbos\",
    \"mobile\": \"mepdnvafjjljx\",
    \"email\": \"johnpaul.eichmann@example.com\",
    \"source_id\": 14,
    \"life_stage_id\": 3,
    \"city\": \"mmcrzbcfvqmrpfco\",
    \"expected_value\": 23,
    \"probability\": 15,
    \"expected_close_date\": \"2026-09-24T21:24:58\",
    \"assigned_user_ids\": [
        6
    ]
}"
const url = new URL(
    "https://bqf.ai/connector/api/crm/leads/quia"
);

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

let body = {
    "first_name": "meheewfhniiayvbwsusps",
    "last_name": "yxet",
    "business_name": "vlwsbyqpolvbos",
    "mobile": "mepdnvafjjljx",
    "email": "johnpaul.eichmann@example.com",
    "source_id": 14,
    "life_stage_id": 3,
    "city": "mmcrzbcfvqmrpfco",
    "expected_value": 23,
    "probability": 15,
    "expected_close_date": "2026-09-24T21:24:58",
    "assigned_user_ids": [
        6
    ]
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->put(
    'https://bqf.ai/connector/api/crm/leads/quia',
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'first_name' => 'meheewfhniiayvbwsusps',
            'last_name' => 'yxet',
            'business_name' => 'vlwsbyqpolvbos',
            'mobile' => 'mepdnvafjjljx',
            'email' => 'johnpaul.eichmann@example.com',
            'source_id' => 14,
            'life_stage_id' => 3,
            'city' => 'mmcrzbcfvqmrpfco',
            'expected_value' => 23,
            'probability' => 15,
            'expected_close_date' => '2026-09-24T21:24:58',
            'assigned_user_ids' => [
                6,
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request   

PUT connector/api/crm/leads/{id}

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the lead. Example: quia

Body Parameters

first_name   string  optional  

لا يمكن أن يحتوي النص value على أكثر من 255 حرف (أحرف). Example: meheewfhniiayvbwsusps

last_name   string  optional  

لا يمكن أن يحتوي النص value على أكثر من 255 حرف (أحرف). Example: yxet

business_name   string  optional  

لا يمكن أن يحتوي النص value على أكثر من 255 حرف (أحرف). Example: vlwsbyqpolvbos

mobile   string  optional  

لا يمكن أن يحتوي النص value على أكثر من 50 حرف (أحرف). Example: mepdnvafjjljx

email   string  optional  

يجب أن يكون الحقل value عنوان بريد إلكتروني صالحًا. لا يمكن أن يحتوي النص value على أكثر من 255 حرف (أحرف). Example: johnpaul.eichmann@example.com

source_id   integer  optional  

Example: 14

life_stage_id   integer  optional  

Example: 3

city   string  optional  

لا يمكن أن يحتوي النص value على أكثر من 255 حرف (أحرف). Example: mmcrzbcfvqmrpfco

expected_value   number  optional  

يجب أن تكون قيمة value أكبر من أو تساوي 0. Example: 23

probability   integer  optional  

يجب أن تكون قيمة value أكبر من أو تساوي 0. لا يمكن أن تكون قيمة value أكبر من 100. Example: 15

expected_close_date   string  optional  

الحقل value ليس تاريخًا صالحًا. Example: 2026-09-24T21:24:58

assigned_user_ids   integer[]  optional  

POST connector/api/crm/leads/{id}/convert

Example request:
curl --request POST \
    "https://bqf.ai/connector/api/crm/leads/illum/convert" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/crm/leads/illum/convert"
);

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

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://bqf.ai/connector/api/crm/leads/illum/convert',
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request   

POST connector/api/crm/leads/{id}/convert

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the lead. Example: illum

GET connector/api/crm/webhook-events

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/crm/webhook-events" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/crm/webhook-events"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/crm/webhook-events',
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request   

GET connector/api/crm/webhook-events

Headers

Content-Type      

Example: application/json

Accept      

Example: application/json

Product management

List products

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/product?order_by=beatae&order_direction=earum&brand_id=quia&category_id=quis&sub_category_id=et&location_id=1&selling_price_group=in&send_lot_detail=tempore&name=nobis&sku=quia&per_page=10" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/product"
);

const params = {
    "order_by": "beatae",
    "order_direction": "earum",
    "brand_id": "quia",
    "category_id": "quis",
    "sub_category_id": "et",
    "location_id": "1",
    "selling_price_group": "in",
    "send_lot_detail": "tempore",
    "name": "nobis",
    "sku": "quia",
    "per_page": "10",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/product',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'order_by' => 'beatae',
            'order_direction' => 'earum',
            'brand_id' => 'quia',
            'category_id' => 'quis',
            'sub_category_id' => 'et',
            'location_id' => '1',
            'selling_price_group' => 'in',
            'send_lot_detail' => 'tempore',
            'name' => 'nobis',
            'sku' => 'quia',
            'per_page' => '10',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 1,
            "name": "Men's Reverse Fleece Crew",
            "business_id": 1,
            "type": "single",
            "sub_unit_ids": null,
            "enable_stock": 1,
            "alert_quantity": "5.0000",
            "sku": "AS0001",
            "barcode_type": "C128",
            "expiry_period": null,
            "expiry_period_type": null,
            "enable_sr_no": 0,
            "weight": null,
            "product_custom_field1": null,
            "product_custom_field2": null,
            "product_custom_field3": null,
            "product_custom_field4": null,
            "image": null,
            "woocommerce_media_id": null,
            "product_description": null,
            "created_by": 1,
            "warranty_id": null,
            "is_inactive": 0,
            "repair_model_id": null,
            "not_for_selling": 0,
            "ecom_shipping_class_id": null,
            "ecom_active_in_store": 1,
            "woocommerce_product_id": 356,
            "woocommerce_disable_sync": 0,
            "image_url": "https://bqf.ai/img/default.png",
            "product_variations": [
                {
                    "id": 1,
                    "variation_template_id": null,
                    "name": "DUMMY",
                    "product_id": 1,
                    "is_dummy": 1,
                    "created_at": "2018-01-03 21:29:08",
                    "updated_at": "2018-01-03 21:29:08",
                    "variations": [
                        {
                            "id": 1,
                            "name": "DUMMY",
                            "product_id": 1,
                            "sub_sku": "AS0001",
                            "product_variation_id": 1,
                            "woocommerce_variation_id": null,
                            "variation_value_id": null,
                            "default_purchase_price": "130.0000",
                            "dpp_inc_tax": "143.0000",
                            "profit_percent": "0.0000",
                            "default_sell_price": "130.0000",
                            "sell_price_inc_tax": "143.0000",
                            "created_at": "2018-01-03 21:29:08",
                            "updated_at": "2020-06-09 00:23:22",
                            "deleted_at": null,
                            "combo_variations": null,
                            "variation_location_details": [
                                {
                                    "id": 56,
                                    "product_id": 1,
                                    "product_variation_id": 1,
                                    "variation_id": 1,
                                    "location_id": 1,
                                    "qty_available": "20.0000",
                                    "created_at": "2020-06-08 23:46:40",
                                    "updated_at": "2020-06-08 23:46:40"
                                }
                            ],
                            "media": [
                                {
                                    "id": 1,
                                    "business_id": 1,
                                    "file_name": "1591686466_978227300_nn.jpeg",
                                    "description": null,
                                    "uploaded_by": 9,
                                    "model_type": "App\\Variation",
                                    "woocommerce_media_id": null,
                                    "model_id": 1,
                                    "created_at": "2020-06-09 00:07:46",
                                    "updated_at": "2020-06-09 00:07:46",
                                    "display_name": "nn.jpeg",
                                    "display_url": "https://bqf.ai/uploads/media/1591686466_978227300_nn.jpeg"
                                }
                            ],
                            "discounts": [
                                {
                                    "id": 2,
                                    "name": "FLAT 10%",
                                    "business_id": 1,
                                    "brand_id": null,
                                    "category_id": null,
                                    "location_id": 1,
                                    "priority": 2,
                                    "discount_type": "fixed",
                                    "discount_amount": "5.0000",
                                    "starts_at": "2021-09-01 11:45:00",
                                    "ends_at": "2021-09-30 11:45:00",
                                    "is_active": 1,
                                    "spg": null,
                                    "applicable_in_cg": 1,
                                    "created_at": "2021-09-01 11:46:00",
                                    "updated_at": "2021-09-01 12:12:55",
                                    "formated_starts_at": " 11:45",
                                    "formated_ends_at": " 11:45"
                                }
                            ],
                            "selling_price_group": [
                                {
                                    "id": 2,
                                    "variation_id": 1,
                                    "price_group_id": 1,
                                    "price_inc_tax": "140.0000",
                                    "created_at": "2020-06-09 00:23:31",
                                    "updated_at": "2020-06-09 00:23:31"
                                }
                            ]
                        }
                    ]
                }
            ],
            "brand": {
                "id": 1,
                "business_id": 1,
                "name": "Levis",
                "description": null,
                "created_by": 1,
                "deleted_at": null,
                "created_at": "2018-01-03 21:19:47",
                "updated_at": "2018-01-03 21:19:47"
            },
            "unit": {
                "id": 1,
                "business_id": 1,
                "actual_name": "Pieces",
                "short_name": "Pc(s)",
                "allow_decimal": 0,
                "base_unit_id": null,
                "base_unit_multiplier": null,
                "created_by": 1,
                "deleted_at": null,
                "created_at": "2018-01-03 15:15:20",
                "updated_at": "2018-01-03 15:15:20"
            },
            "category": {
                "id": 1,
                "name": "Men's",
                "business_id": 1,
                "short_code": null,
                "parent_id": 0,
                "created_by": 1,
                "category_type": "product",
                "description": null,
                "slug": null,
                "woocommerce_cat_id": null,
                "deleted_at": null,
                "created_at": "2018-01-03 21:06:34",
                "updated_at": "2018-01-03 21:06:34"
            },
            "sub_category": {
                "id": 5,
                "name": "Shirts",
                "business_id": 1,
                "short_code": null,
                "parent_id": 1,
                "created_by": 1,
                "category_type": "product",
                "description": null,
                "slug": null,
                "woocommerce_cat_id": null,
                "deleted_at": null,
                "created_at": "2018-01-03 21:08:18",
                "updated_at": "2018-01-03 21:08:18"
            },
            "product_tax": {
                "id": 1,
                "business_id": 1,
                "name": "VAT@10%",
                "amount": 10,
                "is_tax_group": 0,
                "created_by": 1,
                "woocommerce_tax_rate_id": null,
                "deleted_at": null,
                "created_at": "2018-01-04 02:40:07",
                "updated_at": "2018-01-04 02:40:07"
            },
            "product_locations": [
                {
                    "id": 1,
                    "business_id": 1,
                    "location_id": null,
                    "name": "Awesome Shop",
                    "landmark": "Linking Street",
                    "country": "USA",
                    "state": "Arizona",
                    "city": "Phoenix",
                    "zip_code": "85001",
                    "invoice_scheme_id": 1,
                    "invoice_layout_id": 1,
                    "selling_price_group_id": null,
                    "print_receipt_on_invoice": 1,
                    "receipt_printer_type": "browser",
                    "printer_id": null,
                    "mobile": null,
                    "alternate_number": null,
                    "email": null,
                    "website": null,
                    "featured_products": [
                        "5",
                        "71"
                    ],
                    "is_active": 1,
                    "default_payment_accounts": "{\"cash\":{\"is_enabled\":\"1\",\"account\":\"1\"},\"card\":{\"is_enabled\":\"1\",\"account\":\"3\"},\"cheque\":{\"is_enabled\":\"1\",\"account\":\"2\"},\"bank_transfer\":{\"is_enabled\":\"1\",\"account\":\"1\"},\"other\":{\"is_enabled\":\"1\",\"account\":\"3\"},\"custom_pay_1\":{\"is_enabled\":\"1\",\"account\":\"1\"},\"custom_pay_2\":{\"is_enabled\":\"1\",\"account\":\"2\"},\"custom_pay_3\":{\"is_enabled\":\"1\",\"account\":\"3\"}}",
                    "custom_field1": null,
                    "custom_field2": null,
                    "custom_field3": null,
                    "custom_field4": null,
                    "deleted_at": null,
                    "created_at": "2018-01-04 02:15:20",
                    "updated_at": "2020-06-09 01:07:05",
                    "pivot": {
                        "product_id": 2,
                        "location_id": 1
                    }
                }
            ]
        }
    ],
    "links": {
        "first": "https://bqf.ai/connector/api/product?page=1",
        "last": "https://bqf.ai/connector/api/product?page=32",
        "prev": null,
        "next": "https://bqf.ai/connector/api/product?page=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "path": "https://bqf.ai/connector/api/product",
        "per_page": 10,
        "to": 10
    }
}
 

Request   

GET connector/api/product

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

order_by   string  optional  

Values: product_name or newest Example: beatae

order_direction   string  optional  

Values: asc or desc Example: earum

brand_id   string  optional  

comma separated ids of one or multiple brands Example: quia

category_id   string  optional  

comma separated ids of one or multiple category Example: quis

sub_category_id   string  optional  

comma separated ids of one or multiple sub-category Example: et

location_id   string  optional  

Example: 1

selling_price_group   string  optional  

(1, 0) Example: in

send_lot_detail   string  optional  

Send lot details in each variation location details(1, 0) Example: tempore

name   string  optional  

Search term for product name Example: nobis

sku   string  optional  

Search term for product sku Example: quia

per_page   integer  optional  

Total records per page. default: 10, Set -1 for no pagination Example: 10

Get the specified product

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/product/quae?selling_price_group=quo&send_lot_detail=quibusdam" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/product/quae"
);

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

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/product/quae',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'selling_price_group' => 'quo',
            'send_lot_detail' => 'quibusdam',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 1,
            "name": "Men's Reverse Fleece Crew",
            "business_id": 1,
            "type": "single",
            "sub_unit_ids": null,
            "enable_stock": 1,
            "alert_quantity": "5.0000",
            "sku": "AS0001",
            "barcode_type": "C128",
            "expiry_period": null,
            "expiry_period_type": null,
            "enable_sr_no": 0,
            "weight": null,
            "product_custom_field1": null,
            "product_custom_field2": null,
            "product_custom_field3": null,
            "product_custom_field4": null,
            "image": null,
            "woocommerce_media_id": null,
            "product_description": null,
            "created_by": 1,
            "warranty_id": null,
            "is_inactive": 0,
            "repair_model_id": null,
            "not_for_selling": 0,
            "ecom_shipping_class_id": null,
            "ecom_active_in_store": 1,
            "woocommerce_product_id": 356,
            "woocommerce_disable_sync": 0,
            "image_url": "https://bqf.ai/img/default.png",
            "product_variations": [
                {
                    "id": 1,
                    "variation_template_id": null,
                    "name": "DUMMY",
                    "product_id": 1,
                    "is_dummy": 1,
                    "created_at": "2018-01-03 21:29:08",
                    "updated_at": "2018-01-03 21:29:08",
                    "variations": [
                        {
                            "id": 1,
                            "name": "DUMMY",
                            "product_id": 1,
                            "sub_sku": "AS0001",
                            "product_variation_id": 1,
                            "woocommerce_variation_id": null,
                            "variation_value_id": null,
                            "default_purchase_price": "130.0000",
                            "dpp_inc_tax": "143.0000",
                            "profit_percent": "0.0000",
                            "default_sell_price": "130.0000",
                            "sell_price_inc_tax": "143.0000",
                            "created_at": "2018-01-03 21:29:08",
                            "updated_at": "2020-06-09 00:23:22",
                            "deleted_at": null,
                            "combo_variations": null,
                            "variation_location_details": [
                                {
                                    "id": 56,
                                    "product_id": 1,
                                    "product_variation_id": 1,
                                    "variation_id": 1,
                                    "location_id": 1,
                                    "qty_available": "20.0000",
                                    "created_at": "2020-06-08 23:46:40",
                                    "updated_at": "2020-06-08 23:46:40"
                                }
                            ],
                            "media": [
                                {
                                    "id": 1,
                                    "business_id": 1,
                                    "file_name": "1591686466_978227300_nn.jpeg",
                                    "description": null,
                                    "uploaded_by": 9,
                                    "model_type": "App\\Variation",
                                    "woocommerce_media_id": null,
                                    "model_id": 1,
                                    "created_at": "2020-06-09 00:07:46",
                                    "updated_at": "2020-06-09 00:07:46",
                                    "display_name": "nn.jpeg",
                                    "display_url": "https://bqf.ai/uploads/media/1591686466_978227300_nn.jpeg"
                                }
                            ],
                            "discounts": [
                                {
                                    "id": 2,
                                    "name": "FLAT 10%",
                                    "business_id": 1,
                                    "brand_id": null,
                                    "category_id": null,
                                    "location_id": 1,
                                    "priority": 2,
                                    "discount_type": "fixed",
                                    "discount_amount": "5.0000",
                                    "starts_at": "2021-09-01 11:45:00",
                                    "ends_at": "2021-09-30 11:45:00",
                                    "is_active": 1,
                                    "spg": null,
                                    "applicable_in_cg": 1,
                                    "created_at": "2021-09-01 11:46:00",
                                    "updated_at": "2021-09-01 12:12:55",
                                    "formated_starts_at": " 11:45",
                                    "formated_ends_at": " 11:45"
                                }
                            ],
                            "selling_price_group": [
                                {
                                    "id": 2,
                                    "variation_id": 1,
                                    "price_group_id": 1,
                                    "price_inc_tax": "140.0000",
                                    "created_at": "2020-06-09 00:23:31",
                                    "updated_at": "2020-06-09 00:23:31"
                                }
                            ]
                        }
                    ]
                }
            ],
            "brand": {
                "id": 1,
                "business_id": 1,
                "name": "Levis",
                "description": null,
                "created_by": 1,
                "deleted_at": null,
                "created_at": "2018-01-03 21:19:47",
                "updated_at": "2018-01-03 21:19:47"
            },
            "unit": {
                "id": 1,
                "business_id": 1,
                "actual_name": "Pieces",
                "short_name": "Pc(s)",
                "allow_decimal": 0,
                "base_unit_id": null,
                "base_unit_multiplier": null,
                "created_by": 1,
                "deleted_at": null,
                "created_at": "2018-01-03 15:15:20",
                "updated_at": "2018-01-03 15:15:20"
            },
            "category": {
                "id": 1,
                "name": "Men's",
                "business_id": 1,
                "short_code": null,
                "parent_id": 0,
                "created_by": 1,
                "category_type": "product",
                "description": null,
                "slug": null,
                "woocommerce_cat_id": null,
                "deleted_at": null,
                "created_at": "2018-01-03 21:06:34",
                "updated_at": "2018-01-03 21:06:34"
            },
            "sub_category": {
                "id": 5,
                "name": "Shirts",
                "business_id": 1,
                "short_code": null,
                "parent_id": 1,
                "created_by": 1,
                "category_type": "product",
                "description": null,
                "slug": null,
                "woocommerce_cat_id": null,
                "deleted_at": null,
                "created_at": "2018-01-03 21:08:18",
                "updated_at": "2018-01-03 21:08:18"
            },
            "product_tax": {
                "id": 1,
                "business_id": 1,
                "name": "VAT@10%",
                "amount": 10,
                "is_tax_group": 0,
                "created_by": 1,
                "woocommerce_tax_rate_id": null,
                "deleted_at": null,
                "created_at": "2018-01-04 02:40:07",
                "updated_at": "2018-01-04 02:40:07"
            },
            "product_locations": [
                {
                    "id": 1,
                    "business_id": 1,
                    "location_id": null,
                    "name": "Awesome Shop",
                    "landmark": "Linking Street",
                    "country": "USA",
                    "state": "Arizona",
                    "city": "Phoenix",
                    "zip_code": "85001",
                    "invoice_scheme_id": 1,
                    "invoice_layout_id": 1,
                    "selling_price_group_id": null,
                    "print_receipt_on_invoice": 1,
                    "receipt_printer_type": "browser",
                    "printer_id": null,
                    "mobile": null,
                    "alternate_number": null,
                    "email": null,
                    "website": null,
                    "featured_products": [
                        "5",
                        "71"
                    ],
                    "is_active": 1,
                    "default_payment_accounts": "{\"cash\":{\"is_enabled\":\"1\",\"account\":\"1\"},\"card\":{\"is_enabled\":\"1\",\"account\":\"3\"},\"cheque\":{\"is_enabled\":\"1\",\"account\":\"2\"},\"bank_transfer\":{\"is_enabled\":\"1\",\"account\":\"1\"},\"other\":{\"is_enabled\":\"1\",\"account\":\"3\"},\"custom_pay_1\":{\"is_enabled\":\"1\",\"account\":\"1\"},\"custom_pay_2\":{\"is_enabled\":\"1\",\"account\":\"2\"},\"custom_pay_3\":{\"is_enabled\":\"1\",\"account\":\"3\"}}",
                    "custom_field1": null,
                    "custom_field2": null,
                    "custom_field3": null,
                    "custom_field4": null,
                    "deleted_at": null,
                    "created_at": "2018-01-04 02:15:20",
                    "updated_at": "2020-06-09 01:07:05",
                    "pivot": {
                        "product_id": 2,
                        "location_id": 1
                    }
                }
            ]
        }
    ]
}
 

Request   

GET connector/api/product/{id}

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the product. Example: quae

product   string   

comma separated ids of products Example: 1

Query Parameters

selling_price_group   string  optional  

(1, 0) Example: quo

send_lot_detail   string  optional  

Send lot details in each variation location details(1, 0) Example: quibusdam

List Selling Price Group

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/selling-price-group" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/selling-price-group"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/selling-price-group',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 1,
            "name": "Retail",
            "description": null,
            "business_id": 1,
            "is_active": 1,
            "deleted_at": null,
            "created_at": "2020-10-21 04:30:06",
            "updated_at": "2020-11-16 18:23:15"
        },
        {
            "id": 2,
            "name": "Wholesale",
            "description": null,
            "business_id": 1,
            "is_active": 1,
            "deleted_at": null,
            "created_at": "2020-10-21 04:30:21",
            "updated_at": "2020-11-16 18:23:00"
        }
    ]
}
 

Request   

GET connector/api/selling-price-group

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

List Variations

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/variation/2?product_id=porro&location_id=1&brand_id=nostrum&category_id=provident&sub_category_id=voluptates&not_for_selling=id&name=est&sku=voluptatem&per_page=10" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/variation/2"
);

const params = {
    "product_id": "porro",
    "location_id": "1",
    "brand_id": "nostrum",
    "category_id": "provident",
    "sub_category_id": "voluptates",
    "not_for_selling": "id",
    "name": "est",
    "sku": "voluptatem",
    "per_page": "10",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/variation/2',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'product_id' => 'porro',
            'location_id' => '1',
            'brand_id' => 'nostrum',
            'category_id' => 'provident',
            'sub_category_id' => 'voluptates',
            'not_for_selling' => 'id',
            'name' => 'est',
            'sku' => 'voluptatem',
            'per_page' => '10',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "variation_id": 1,
            "variation_name": "",
            "sub_sku": "AS0001",
            "product_id": 1,
            "product_name": "Men's Reverse Fleece Crew",
            "sku": "AS0001",
            "type": "single",
            "business_id": 1,
            "barcode_type": "C128",
            "expiry_period": null,
            "expiry_period_type": null,
            "enable_sr_no": 0,
            "weight": null,
            "product_custom_field1": null,
            "product_custom_field2": null,
            "product_custom_field3": null,
            "product_custom_field4": null,
            "product_image": "1528728059_fleece_crew.jpg",
            "product_description": null,
            "warranty_id": null,
            "brand_id": 1,
            "brand_name": "Levis",
            "unit_id": 1,
            "enable_stock": 1,
            "not_for_selling": 0,
            "unit_name": "Pc(s)",
            "unit_allow_decimal": 0,
            "category_id": 1,
            "category": "Men's",
            "sub_category_id": 5,
            "sub_category": "Shirts",
            "tax_id": 1,
            "tax_type": "exclusive",
            "tax_name": "VAT@10%",
            "tax_amount": 10,
            "product_variation_id": 1,
            "default_purchase_price": "130.0000",
            "dpp_inc_tax": "143.0000",
            "profit_percent": "0.0000",
            "default_sell_price": "130.0000",
            "sell_price_inc_tax": "143.0000",
            "product_variation_name": "",
            "variation_location_details": [],
            "media": [],
            "selling_price_group": [],
            "product_image_url": "https://bqf.ai/uploads/img/1528728059_fleece_crew.jpg",
            "product_locations": [
                {
                    "id": 1,
                    "business_id": 1,
                    "location_id": null,
                    "name": "Awesome Shop",
                    "landmark": "Linking Street",
                    "country": "USA",
                    "state": "Arizona",
                    "city": "Phoenix",
                    "zip_code": "85001",
                    "invoice_scheme_id": 1,
                    "invoice_layout_id": 1,
                    "selling_price_group_id": null,
                    "print_receipt_on_invoice": 1,
                    "receipt_printer_type": "browser",
                    "printer_id": null,
                    "mobile": null,
                    "alternate_number": null,
                    "email": null,
                    "website": null,
                    "featured_products": null,
                    "is_active": 1,
                    "default_payment_accounts": "",
                    "custom_field1": null,
                    "custom_field2": null,
                    "custom_field3": null,
                    "custom_field4": null,
                    "deleted_at": null,
                    "created_at": "2018-01-04 02:15:20",
                    "updated_at": "2019-12-11 04:53:39",
                    "pivot": {
                        "product_id": 1,
                        "location_id": 1
                    }
                }
            ]
        },
        {
            "variation_id": 2,
            "variation_name": "28",
            "sub_sku": "AS0002-1",
            "product_id": 2,
            "product_name": "Levis Men's Slimmy Fit Jeans",
            "sku": "AS0002",
            "type": "variable",
            "business_id": 1,
            "barcode_type": "C128",
            "expiry_period": null,
            "expiry_period_type": null,
            "enable_sr_no": 0,
            "weight": null,
            "product_custom_field1": null,
            "product_custom_field2": null,
            "product_custom_field3": null,
            "product_custom_field4": null,
            "product_image": "1528727964_levis_jeans.jpg",
            "product_description": null,
            "warranty_id": null,
            "brand_id": 1,
            "brand_name": "Levis",
            "unit_id": 1,
            "enable_stock": 1,
            "not_for_selling": 0,
            "unit_name": "Pc(s)",
            "unit_allow_decimal": 0,
            "category_id": 1,
            "category": "Men's",
            "sub_category_id": 4,
            "sub_category": "Jeans",
            "tax_id": 1,
            "tax_type": "exclusive",
            "tax_name": "VAT@10%",
            "tax_amount": 10,
            "product_variation_id": 2,
            "default_purchase_price": "70.0000",
            "dpp_inc_tax": "77.0000",
            "profit_percent": "0.0000",
            "default_sell_price": "70.0000",
            "sell_price_inc_tax": "77.0000",
            "product_variation_name": "Waist Size",
            "variation_location_details": [
                {
                    "id": 1,
                    "product_id": 2,
                    "product_variation_id": 2,
                    "variation_id": 2,
                    "location_id": 1,
                    "qty_available": "50.0000",
                    "created_at": "2018-01-06 06:57:11",
                    "updated_at": "2020-08-04 04:11:27"
                }
            ],
            "media": [
                {
                    "id": 1,
                    "business_id": 1,
                    "file_name": "1596701997_743693452_test.jpg",
                    "description": null,
                    "uploaded_by": 9,
                    "model_type": "App\\Variation",
                    "woocommerce_media_id": null,
                    "model_id": 2,
                    "created_at": "2020-08-06 13:49:57",
                    "updated_at": "2020-08-06 13:49:57",
                    "display_name": "test.jpg",
                    "display_url": "https://bqf.ai/uploads/media/1596701997_743693452_test.jpg"
                }
            ],
            "selling_price_group": [],
            "product_image_url": "https://bqf.ai/uploads/img/1528727964_levis_jeans.jpg",
            "product_locations": [
                {
                    "id": 1,
                    "business_id": 1,
                    "location_id": null,
                    "name": "Awesome Shop",
                    "landmark": "Linking Street",
                    "country": "USA",
                    "state": "Arizona",
                    "city": "Phoenix",
                    "zip_code": "85001",
                    "invoice_scheme_id": 1,
                    "invoice_layout_id": 1,
                    "selling_price_group_id": null,
                    "print_receipt_on_invoice": 1,
                    "receipt_printer_type": "browser",
                    "printer_id": null,
                    "mobile": null,
                    "alternate_number": null,
                    "email": null,
                    "website": null,
                    "featured_products": null,
                    "is_active": 1,
                    "default_payment_accounts": "",
                    "custom_field1": null,
                    "custom_field2": null,
                    "custom_field3": null,
                    "custom_field4": null,
                    "deleted_at": null,
                    "created_at": "2018-01-04 02:15:20",
                    "updated_at": "2019-12-11 04:53:39",
                    "pivot": {
                        "product_id": 2,
                        "location_id": 1
                    }
                }
            ],
            "discounts": [
                {
                    "id": 2,
                    "name": "FLAT 10%",
                    "business_id": 1,
                    "brand_id": null,
                    "category_id": null,
                    "location_id": 1,
                    "priority": 2,
                    "discount_type": "fixed",
                    "discount_amount": "5.0000",
                    "starts_at": "2021-09-01 11:45:00",
                    "ends_at": "2021-09-30 11:45:00",
                    "is_active": 1,
                    "spg": null,
                    "applicable_in_cg": 1,
                    "created_at": "2021-09-01 11:46:00",
                    "updated_at": "2021-09-01 12:12:55",
                    "formated_starts_at": " 11:45",
                    "formated_ends_at": " 11:45"
                }
            ]
        }
    ],
    "links": {
        "first": "https://bqf.ai/connector/api/variation?page=1",
        "last": null,
        "prev": null,
        "next": "https://bqf.ai/connector/api/variation?page=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "path": "https://bqf.ai/connector/api/variation",
        "per_page": "2",
        "to": 2
    }
}
 

Request   

GET connector/api/variation/{id?}

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string  optional  

comma separated ids of variations Example: 2

Query Parameters

product_id   string  optional  

Filter by comma separated products ids Example: porro

location_id   string  optional  

Example: 1

brand_id   string  optional  

Example: nostrum

category_id   string  optional  

Example: provident

sub_category_id   string  optional  

Example: voluptates

not_for_selling   string  optional  

Values: 0 or 1 Example: id

name   string  optional  

Search term for product name Example: est

sku   string  optional  

Search term for product sku Example: voluptatem

per_page   integer  optional  

Total records per page. default: 10, Set -1 for no pagination Example: 10

Sales management

List sells

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/sell?location_id=1&contact_id=architecto&status=final&payment_status=due%2Cpartial&start_date=2018-06-25&end_date=2018-06-25&user_id=quo&service_staff_id=quo&shipping_status=ordered&source=sit&only_subscriptions=ut&send_purchase_details=ut&order_by_date=desc&per_page=10" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/sell"
);

const params = {
    "location_id": "1",
    "contact_id": "architecto",
    "status": "final",
    "payment_status": "due,partial",
    "start_date": "2018-06-25",
    "end_date": "2018-06-25",
    "user_id": "quo",
    "service_staff_id": "quo",
    "shipping_status": "ordered",
    "source": "sit",
    "only_subscriptions": "ut",
    "send_purchase_details": "ut",
    "order_by_date": "desc",
    "per_page": "10",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/sell',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'location_id' => '1',
            'contact_id' => 'architecto',
            'status' => 'final',
            'payment_status' => 'due,partial',
            'start_date' => '2018-06-25',
            'end_date' => '2018-06-25',
            'user_id' => 'quo',
            'service_staff_id' => 'quo',
            'shipping_status' => 'ordered',
            'source' => 'sit',
            'only_subscriptions' => 'ut',
            'send_purchase_details' => 'ut',
            'order_by_date' => 'desc',
            'per_page' => '10',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 6,
            "business_id": 1,
            "location_id": 1,
            "res_table_id": null,
            "res_waiter_id": null,
            "res_order_status": null,
            "type": "sell",
            "sub_type": null,
            "status": "final",
            "is_quotation": 0,
            "payment_status": "paid",
            "adjustment_type": null,
            "contact_id": 4,
            "customer_group_id": null,
            "invoice_no": "AS0001",
            "ref_no": "",
            "source": null,
            "subscription_no": null,
            "subscription_repeat_on": null,
            "transaction_date": "2018-04-10 13:23:21",
            "total_before_tax": "770.0000",
            "tax_id": null,
            "tax_amount": "0.0000",
            "discount_type": "percentage",
            "discount_amount": "0.0000",
            "rp_redeemed": 0,
            "rp_redeemed_amount": "0.0000",
            "shipping_details": null,
            "shipping_address": null,
            "shipping_status": null,
            "delivered_to": null,
            "shipping_charges": "0.0000",
            "additional_notes": null,
            "staff_note": null,
            "round_off_amount": "0.0000",
            "final_total": "770.0000",
            "expense_category_id": null,
            "expense_for": null,
            "commission_agent": null,
            "document": null,
            "is_direct_sale": 0,
            "is_suspend": 0,
            "exchange_rate": "1.000",
            "total_amount_recovered": null,
            "transfer_parent_id": null,
            "return_parent_id": null,
            "opening_stock_product_id": null,
            "created_by": 1,
            "import_batch": null,
            "import_time": null,
            "types_of_service_id": null,
            "packing_charge": null,
            "packing_charge_type": null,
            "service_custom_field_1": null,
            "service_custom_field_2": null,
            "service_custom_field_3": null,
            "service_custom_field_4": null,
            "mfg_parent_production_purchase_id": null,
            "mfg_wasted_units": null,
            "mfg_production_cost": "0.0000",
            "mfg_is_final": 0,
            "is_created_from_api": 0,
            "essentials_duration": "0.00",
            "essentials_duration_unit": null,
            "essentials_amount_per_unit_duration": "0.0000",
            "essentials_allowances": null,
            "essentials_deductions": null,
            "rp_earned": 0,
            "repair_completed_on": null,
            "repair_warranty_id": null,
            "repair_brand_id": null,
            "repair_status_id": null,
            "repair_model_id": null,
            "repair_defects": null,
            "repair_serial_no": null,
            "repair_updates_email": 0,
            "repair_updates_sms": 0,
            "repair_checklist": null,
            "repair_security_pwd": null,
            "repair_security_pattern": null,
            "repair_due_date": null,
            "repair_device_id": null,
            "order_addresses": null,
            "is_recurring": 0,
            "recur_interval": null,
            "recur_interval_type": null,
            "recur_repetitions": null,
            "recur_stopped_on": null,
            "recur_parent_id": null,
            "invoice_token": null,
            "pay_term_number": null,
            "pay_term_type": null,
            "pjt_project_id": null,
            "pjt_title": null,
            "woocommerce_order_id": null,
            "selling_price_group_id": null,
            "created_at": "2018-01-06 07:06:11",
            "updated_at": "2018-01-06 07:06:11",
            "sell_lines": [
                {
                    "id": 1,
                    "transaction_id": 6,
                    "product_id": 2,
                    "variation_id": 3,
                    "quantity": 10,
                    "mfg_waste_percent": "0.0000",
                    "quantity_returned": "0.0000",
                    "unit_price_before_discount": "70.0000",
                    "unit_price": "70.0000",
                    "line_discount_type": null,
                    "line_discount_amount": "0.0000",
                    "unit_price_inc_tax": "77.0000",
                    "item_tax": "7.0000",
                    "tax_id": 1,
                    "discount_id": null,
                    "lot_no_line_id": null,
                    "sell_line_note": null,
                    "res_service_staff_id": null,
                    "res_line_order_status": null,
                    "woocommerce_line_items_id": null,
                    "parent_sell_line_id": null,
                    "children_type": "",
                    "sub_unit_id": null,
                    "created_at": "2018-01-06 07:06:11",
                    "updated_at": "2018-01-06 07:06:11"
                }
            ],
            "payment_lines": [
                {
                    "id": 1,
                    "transaction_id": 6,
                    "business_id": null,
                    "is_return": 0,
                    "amount": "770.0000",
                    "method": "cash",
                    "transaction_no": null,
                    "card_transaction_number": null,
                    "card_number": null,
                    "card_type": "visa",
                    "card_holder_name": null,
                    "card_month": null,
                    "card_year": null,
                    "cheque_number": null,
                    "bank_account_number": null,
                    "paid_on": "2018-01-09 17:30:35",
                    "created_by": 1,
                    "payment_for": null,
                    "parent_id": null,
                    "note": null,
                    "document": null,
                    "payment_ref_no": null,
                    "account_id": null,
                    "created_at": "2018-01-06 01:36:11",
                    "updated_at": "2018-01-06 01:36:11"
                }
            ],
            "invoice_url": "https://bqf.ai/invoice/6dfd77eb80f4976b456128e7f1311c9f",
            "payment_link": "https://bqf.ai/pay/6dfd77eb80f4976b456128e7f1311c9f"
        }
    ],
    "links": {
        "first": "https://bqf.ai/connector/api/sell?page=1",
        "last": "https://bqf.ai/connector/api/sell?page=6",
        "prev": null,
        "next": "https://bqf.ai/connector/api/sell?page=2"
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "path": "https://bqf.ai/connector/api/sell",
        "per_page": 10,
        "to": 10
    }
}
 

Request   

GET connector/api/sell

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

location_id   string  optional  

id of the location Example: 1

contact_id   string  optional  

id of the customer Example: architecto

status   string  optional  

Sell status. Available values final, draft, quotation, proforma Example: final

payment_status   string  optional  

Comma separated values of payment statuses. Available values due, partial, paid, overdue Example: due,partial

start_date   string  optional  

format:Y-m-d Example: 2018-06-25

end_date   string  optional  

format:Y-m-d Example: 2018-06-25

user_id   string  optional  

id of the user who created the sale Example: quo

service_staff_id   string  optional  

id of the service staff assigned with the sale Example: quo

shipping_status   string  optional  

Shipping Status of the sale ('ordered', 'packed', 'shipped', 'delivered', 'cancelled') Example: ordered

source   string  optional  

Source of the sale Example: sit

only_subscriptions   string  optional  

Filter only subcription invoices (1, 0) Example: ut

send_purchase_details   string  optional  

Get purchase details of each sell line (1, 0) Example: ut

order_by_date   string  optional  

Sort sell list by date ('asc', 'desc') Example: desc

per_page   integer  optional  

Total records per page. default: 10, Set -1 for no pagination Example: 10

Create sell

requires authentication

Example request:
curl --request POST \
    "https://bqf.ai/connector/api/sell" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
const url = new URL(
    "https://bqf.ai/connector/api/sell"
);

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

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://bqf.ai/connector/api/sell',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 6,
            "business_id": 1,
            "location_id": 1,
            "res_table_id": null,
            "res_waiter_id": null,
            "res_order_status": null,
            "type": "sell",
            "sub_type": null,
            "status": "final",
            "is_quotation": 0,
            "payment_status": "paid",
            "adjustment_type": null,
            "contact_id": 4,
            "customer_group_id": null,
            "invoice_no": "AS0001",
            "ref_no": "",
            "source": null,
            "subscription_no": null,
            "subscription_repeat_on": null,
            "transaction_date": "2018-04-10 13:23:21",
            "total_before_tax": "770.0000",
            "tax_id": null,
            "tax_amount": "0.0000",
            "discount_type": "percentage",
            "discount_amount": "0.0000",
            "rp_redeemed": 0,
            "rp_redeemed_amount": "0.0000",
            "shipping_details": null,
            "shipping_address": null,
            "shipping_status": null,
            "delivered_to": null,
            "shipping_charges": "0.0000",
            "additional_notes": null,
            "staff_note": null,
            "round_off_amount": "0.0000",
            "final_total": "770.0000",
            "expense_category_id": null,
            "expense_for": null,
            "commission_agent": null,
            "document": null,
            "is_direct_sale": 0,
            "is_suspend": 0,
            "exchange_rate": "1.000",
            "total_amount_recovered": null,
            "transfer_parent_id": null,
            "return_parent_id": null,
            "opening_stock_product_id": null,
            "created_by": 1,
            "import_batch": null,
            "import_time": null,
            "types_of_service_id": null,
            "packing_charge": null,
            "packing_charge_type": null,
            "service_custom_field_1": null,
            "service_custom_field_2": null,
            "service_custom_field_3": null,
            "service_custom_field_4": null,
            "mfg_parent_production_purchase_id": null,
            "mfg_wasted_units": null,
            "mfg_production_cost": "0.0000",
            "mfg_is_final": 0,
            "is_created_from_api": 0,
            "essentials_duration": "0.00",
            "essentials_duration_unit": null,
            "essentials_amount_per_unit_duration": "0.0000",
            "essentials_allowances": null,
            "essentials_deductions": null,
            "rp_earned": 0,
            "repair_completed_on": null,
            "repair_warranty_id": null,
            "repair_brand_id": null,
            "repair_status_id": null,
            "repair_model_id": null,
            "repair_defects": null,
            "repair_serial_no": null,
            "repair_updates_email": 0,
            "repair_updates_sms": 0,
            "repair_checklist": null,
            "repair_security_pwd": null,
            "repair_security_pattern": null,
            "repair_due_date": null,
            "repair_device_id": null,
            "order_addresses": null,
            "is_recurring": 0,
            "recur_interval": null,
            "recur_interval_type": null,
            "recur_repetitions": null,
            "recur_stopped_on": null,
            "recur_parent_id": null,
            "invoice_token": null,
            "pay_term_number": null,
            "pay_term_type": null,
            "pjt_project_id": null,
            "pjt_title": null,
            "woocommerce_order_id": null,
            "selling_price_group_id": null,
            "created_at": "2018-01-06 07:06:11",
            "updated_at": "2018-01-06 07:06:11",
            "invoice_url": "https://bqf.ai/invoice/6dfd77eb80f4976b456128e7f1311c9f",
            "payment_link": "https://bqf.ai/pay/6dfd77eb80f4976b456128e7f1311c9f",
            "sell_lines": [
                {
                    "id": 1,
                    "transaction_id": 6,
                    "product_id": 2,
                    "variation_id": 3,
                    "quantity": 10,
                    "mfg_waste_percent": "0.0000",
                    "quantity_returned": "0.0000",
                    "unit_price_before_discount": "70.0000",
                    "unit_price": "70.0000",
                    "line_discount_type": null,
                    "line_discount_amount": "0.0000",
                    "unit_price_inc_tax": "77.0000",
                    "item_tax": "7.0000",
                    "tax_id": 1,
                    "discount_id": null,
                    "lot_no_line_id": null,
                    "sell_line_note": null,
                    "res_service_staff_id": null,
                    "res_line_order_status": null,
                    "woocommerce_line_items_id": null,
                    "parent_sell_line_id": null,
                    "children_type": "",
                    "sub_unit_id": null,
                    "created_at": "2018-01-06 07:06:11",
                    "updated_at": "2018-01-06 07:06:11"
                }
            ],
            "payment_lines": [
                {
                    "id": 1,
                    "transaction_id": 6,
                    "business_id": null,
                    "is_return": 0,
                    "amount": "770.0000",
                    "method": "cash",
                    "transaction_no": null,
                    "card_transaction_number": null,
                    "card_number": null,
                    "card_type": "visa",
                    "card_holder_name": null,
                    "card_month": null,
                    "card_year": null,
                    "cheque_number": null,
                    "bank_account_number": null,
                    "paid_on": "2018-01-09 17:30:35",
                    "created_by": 1,
                    "payment_for": null,
                    "parent_id": null,
                    "note": null,
                    "document": null,
                    "payment_ref_no": null,
                    "account_id": null,
                    "created_at": "2018-01-06 01:36:11",
                    "updated_at": "2018-01-06 01:36:11"
                }
            ]
        }
    ]
}
 

Request   

POST connector/api/sell

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

sells   object  optional  
*   object  optional  
location_id   integer   

id of the business location Example: 1

contact_id   integer   

id of the customer: one the user may see (their branches and, with customer.view_own only, their own customers) or the walk-in customer; otherwise 404 unless customer_mobile proves it Example: 10

customer_mobile   string  optional  

the customer's full mobile number (9+ digits; only digits are compared, a leading + is fine). Needed only to serve a returning customer of another branch, found by pos-customer-search with the full number; the sale then links the customer to this branch Example: 966501234567

transaction_date   string  optional  

transaction date format:Y-m-d H:i:s (Y/m/d is read too), Example: 2020-07-22 15:48:29

invoice_no   string  optional  

Invoice number (a number is taken as text) Example: magni

source   string  optional  

Source of the invoice Example: api, phone, woocommerce

status   string  optional  

sale status (final, draft, quotation, proforma) Example: final

invoice_scheme_id   integer  optional  

invoice numbering scheme of the business Example: 9

sub_status   string  optional  

sale sub status ("quotation" for quotation and "proforma" for proforma invoice) Example: null

is_quotation   boolean  optional  

Is sell quotation (0, 1), If 1 status should be draft Example: true

tax_rate_id   integer  optional  

id of the tax rate applicable to the sale Example: 14

discount_amount   number  optional  

discount amount applicable to the sale Example: 10

discount_type   string  optional  

type of the discount amount (fixed, percentage) Example: fixed

sale_note   string  optional  

Example: veniam

staff_note   string  optional  

Example: et

commission_agent   integer  optional  

commission agent id Example: 13

shipping_details   string  optional  

shipping details Example: Express Delivery

shipping_address   string  optional  

shipping address Example: inventore

shipping_status   string  optional  

('ordered', 'packed', 'shipped', 'delivered', 'cancelled') Example: ordered

delivered_to   string  optional  

Name of the person recieved the consignment Example: 'Mr robin'

shipping_charges   number  optional  

shipping amount Example: 10

packing_charge   number  optional  

packing charge Example: 10

exchange_rate   number  optional  

exchange rate for the currency used (0 or empty: 1) Example: 1

selling_price_group_id   integer  optional  

id of the selling price group Example: 10

pay_term_number   integer  optional  

pay term value Example: 3

pay_term_type   string  optional  

type of the pay term value ('days', 'months') Example: months

is_suspend   boolean  optional  

Is suspended sale (0, 1, true, false); a parked sale is checked against the credit limit when it is finalised or paid, not when parked Example: false

is_recurring   integer  optional  

whether the invoice is recurring (0, 1) Example: 0

recur_interval   integer  optional  

value of the interval invoice will be regenerated Example: 13

recur_interval_type   string  optional  

type of the recur interval ('days', 'months', 'years') Example: months

subscription_repeat_on   integer  optional  

day of the month on which invoice will be generated if recur interval type is months (1-30) Example: 15

subscription_no   string  optional  

subscription number Example: numquam

recur_repetitions   integer  optional  

total number of invoices to be generated Example: 16

rp_redeemed   integer  optional  

reward points redeemed Example: 14

rp_redeemed_amount   number  optional  

reward point redeemed amount after conversion Example: 13.5

types_of_service_id   integer  optional  

types of service id Example: 13

service_custom_field_1   string  optional  

types of service custom field 1 Example: aut

service_custom_field_2   string  optional  

types of service custom field 2 Example: tempore

service_custom_field_3   string  optional  

types of service custom field 3 Example: voluptatem

service_custom_field_4   string  optional  

types of service custom field 4 Example: qui

service_custom_field_5   string  optional  

types of service custom field 5 Example: dolorum

service_custom_field_6   string  optional  

types of service custom field 6 Example: est

round_off_amount   number  optional  

round off amount on total payable (added to final_total) Example: 8339027.9239346

table_id   integer  optional  

id of the table Example: 11

service_staff_id   integer  optional  

id of the service staff assigned to the sale Example: 13

change_return   number  optional  

Excess paid amount Example: 0

products   string[]   

array of the products for the sale

*   object  optional  
product_id   integer   

product id Example: 17

variation_id   integer   

variation id Example: 58

quantity   number   

quantity Example: 1

unit_price   number  optional  

unit selling price, before the line tax. Omitted: the variation's price; for a product with a tax, its price before tax with that tax added, and a line discount comes off the price before tax (as on the web) Example: 437.5

tax_rate_id   integer  optional  

tax rate id applicable on the product Example: 0

discount_amount   number  optional  

discount amount applicable on the product Example: 0

discount_type   string  optional  

type of discount amount ('fixed', 'percentage') Example: percentage

sub_unit_id   integer  optional  

sub unit id Example: 10

note   string  optional  

note for the product Example: harum

payments   string[]  optional  

payment lines for the sale

*   object  optional  
amount   number   

amount of the payment Example: 453.13

method   string  optional  

payment methods ('cash', 'card', 'cheque', 'bank_transfer', 'other', 'custom_pay_1', 'custom_pay_2', 'custom_pay_3') Example: cash

account_id   integer  optional  

account id Example: 17

chart_of_account_id   integer  optional  

bank ledger account (needed for card, bank transfer and cheque when Accounting is on) Example: 19

card_number Last four digits only.   string  optional  

Example: sapiente

card_holder_name   string  optional  

Example: officia

card_transaction_number   string  optional  

Example: voluptas

card_type   string  optional  

Example: et

card_month   string  optional  

Example: autem

card_year   string  optional  

Example: optio

transaction_no_1   string  optional  

Example: quo

transaction_no_2   string  optional  

Example: accusantium

transaction_no_3   string  optional  

Example: et

bank_account_number   string  optional  

Example: incidunt

note   string  optional  

payment note Example: occaecati

cheque_number   string  optional  

Example: doloribus

Get the specified sell

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/sell/similique?send_purchase_details=consectetur" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/sell/similique"
);

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

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/sell/similique',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'send_purchase_details' => 'consectetur',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 55,
            "business_id": 1,
            "location_id": 1,
            "res_table_id": 5,
            "res_waiter_id": null,
            "res_order_status": null,
            "type": "sell",
            "sub_type": null,
            "status": "final",
            "is_quotation": 0,
            "payment_status": "paid",
            "adjustment_type": null,
            "contact_id": 1,
            "customer_group_id": null,
            "invoice_no": "AS0007",
            "ref_no": "",
            "source": null,
            "subscription_no": null,
            "subscription_repeat_on": null,
            "transaction_date": "2020-06-04 23:29:36",
            "total_before_tax": "437.5000",
            "tax_id": 1,
            "tax_amount": "39.3750",
            "discount_type": "percentage",
            "discount_amount": "10.0000",
            "rp_redeemed": 0,
            "rp_redeemed_amount": "0.0000",
            "shipping_details": "Express Delivery",
            "shipping_address": null,
            "shipping_status": "ordered",
            "delivered_to": "Mr Robin",
            "shipping_charges": "10.0000",
            "additional_notes": null,
            "staff_note": null,
            "round_off_amount": "0.0000",
            "final_total": "453.1300",
            "expense_category_id": null,
            "expense_for": null,
            "commission_agent": null,
            "document": null,
            "is_direct_sale": 0,
            "is_suspend": 0,
            "exchange_rate": "1.000",
            "total_amount_recovered": null,
            "transfer_parent_id": null,
            "return_parent_id": null,
            "opening_stock_product_id": null,
            "created_by": 9,
            "import_batch": null,
            "import_time": null,
            "types_of_service_id": 1,
            "packing_charge": "10.0000",
            "packing_charge_type": "fixed",
            "service_custom_field_1": null,
            "service_custom_field_2": null,
            "service_custom_field_3": null,
            "service_custom_field_4": null,
            "mfg_parent_production_purchase_id": null,
            "mfg_wasted_units": null,
            "mfg_production_cost": "0.0000",
            "mfg_is_final": 0,
            "is_created_from_api": 0,
            "essentials_duration": "0.00",
            "essentials_duration_unit": null,
            "essentials_amount_per_unit_duration": "0.0000",
            "essentials_allowances": null,
            "essentials_deductions": null,
            "rp_earned": 0,
            "repair_completed_on": null,
            "repair_warranty_id": null,
            "repair_brand_id": null,
            "repair_status_id": null,
            "repair_model_id": null,
            "repair_defects": null,
            "repair_serial_no": null,
            "repair_updates_email": 0,
            "repair_updates_sms": 0,
            "repair_checklist": null,
            "repair_security_pwd": null,
            "repair_security_pattern": null,
            "repair_due_date": null,
            "repair_device_id": null,
            "order_addresses": null,
            "is_recurring": 0,
            "recur_interval": null,
            "recur_interval_type": "days",
            "recur_repetitions": 0,
            "recur_stopped_on": null,
            "recur_parent_id": null,
            "invoice_token": null,
            "pay_term_number": null,
            "pay_term_type": null,
            "pjt_project_id": null,
            "pjt_title": null,
            "woocommerce_order_id": null,
            "selling_price_group_id": 0,
            "created_at": "2020-06-04 23:29:36",
            "updated_at": "2020-06-04 23:29:36",
            "sell_lines": [
                {
                    "id": 38,
                    "transaction_id": 55,
                    "product_id": 17,
                    "variation_id": 58,
                    "quantity": 1,
                    "mfg_waste_percent": "0.0000",
                    "quantity_returned": "0.0000",
                    "unit_price_before_discount": "437.5000",
                    "unit_price": "437.5000",
                    "line_discount_type": "fixed",
                    "line_discount_amount": "0.0000",
                    "unit_price_inc_tax": "437.5000",
                    "item_tax": "0.0000",
                    "tax_id": null,
                    "discount_id": null,
                    "lot_no_line_id": null,
                    "sell_line_note": "",
                    "res_service_staff_id": null,
                    "res_line_order_status": null,
                    "woocommerce_line_items_id": null,
                    "parent_sell_line_id": null,
                    "children_type": "",
                    "sub_unit_id": null,
                    "created_at": "2020-06-04 23:29:36",
                    "updated_at": "2020-06-04 23:29:36"
                }
            ],
            "payment_lines": [
                {
                    "id": 37,
                    "transaction_id": 55,
                    "business_id": 1,
                    "is_return": 0,
                    "amount": "453.1300",
                    "method": "cash",
                    "transaction_no": null,
                    "card_transaction_number": null,
                    "card_number": null,
                    "card_type": "credit",
                    "card_holder_name": null,
                    "card_month": null,
                    "card_year": null,
                    "cheque_number": null,
                    "bank_account_number": null,
                    "paid_on": "2020-06-04 23:29:36",
                    "created_by": 9,
                    "payment_for": 1,
                    "parent_id": null,
                    "note": null,
                    "document": null,
                    "payment_ref_no": "SP2020/0002",
                    "account_id": null,
                    "created_at": "2020-06-04 23:29:36",
                    "updated_at": "2020-06-04 23:29:36"
                }
            ],
            "invoice_url": "https://bqf.ai/invoice/6dfd77eb80f4976b456128e7f1311c9f",
            "payment_link": "https://bqf.ai/pay/6dfd77eb80f4976b456128e7f1311c9f"
        }
    ]
}
 

Request   

GET connector/api/sell/{id}

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the sell. Example: similique

sell   string   

comma separated ids of the sells Example: 55

Query Parameters

send_purchase_details   string  optional  

Get purchase details of each sell line (1, 0) Example: consectetur

Update sell

requires authentication

Example request:
curl --request PUT \
    "https://bqf.ai/connector/api/sell/ea" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"contact_id\": 18,
    \"customer_mobile\": \"odio\",
    \"transaction_date\": \"2020-5-7 15:20:22\",
    \"status\": \"final\",
    \"sub_status\": \"null\",
    \"is_quotation\": true,
    \"tax_rate_id\": 16,
    \"discount_amount\": 10,
    \"discount_type\": \"fixed\",
    \"sale_note\": \"rerum\",
    \"source\": \"inventore\",
    \"staff_note\": \"ut\",
    \"is_suspend\": false,
    \"commission_agent\": 17,
    \"shipping_details\": \"Express Delivery\",
    \"shipping_address\": \"illo\",
    \"shipping_status\": \"ordered\",
    \"delivered_to\": \"Mr Robin\",
    \"shipping_charges\": 10,
    \"packing_charge\": 10,
    \"exchange_rate\": 1,
    \"selling_price_group_id\": 2,
    \"pay_term_number\": 14,
    \"pay_term_type\": \"months\",
    \"is_recurring\": 0,
    \"recur_interval\": 15,
    \"recur_interval_type\": \"days\",
    \"subscription_repeat_on\": 7,
    \"subscription_no\": \"autem\",
    \"recur_repetitions\": 11,
    \"rp_redeemed\": 9,
    \"rp_redeemed_amount\": 13.5,
    \"types_of_service_id\": 15,
    \"service_custom_field_1\": \"cumque\",
    \"service_custom_field_2\": \"explicabo\",
    \"service_custom_field_3\": \"occaecati\",
    \"service_custom_field_4\": \"corrupti\",
    \"service_custom_field_5\": \"voluptatem\",
    \"service_custom_field_6\": \"molestiae\",
    \"round_off_amount\": 10811027.1,
    \"table_id\": 8,
    \"service_staff_id\": 9,
    \"change_return\": 0,
    \"change_return_id\": 3,
    \"products\": [
        \"rerum\"
    ],
    \"payments\": [
        \"sunt\"
    ]
}"
const url = new URL(
    "https://bqf.ai/connector/api/sell/ea"
);

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

let body = {
    "contact_id": 18,
    "customer_mobile": "odio",
    "transaction_date": "2020-5-7 15:20:22",
    "status": "final",
    "sub_status": "null",
    "is_quotation": true,
    "tax_rate_id": 16,
    "discount_amount": 10,
    "discount_type": "fixed",
    "sale_note": "rerum",
    "source": "inventore",
    "staff_note": "ut",
    "is_suspend": false,
    "commission_agent": 17,
    "shipping_details": "Express Delivery",
    "shipping_address": "illo",
    "shipping_status": "ordered",
    "delivered_to": "Mr Robin",
    "shipping_charges": 10,
    "packing_charge": 10,
    "exchange_rate": 1,
    "selling_price_group_id": 2,
    "pay_term_number": 14,
    "pay_term_type": "months",
    "is_recurring": 0,
    "recur_interval": 15,
    "recur_interval_type": "days",
    "subscription_repeat_on": 7,
    "subscription_no": "autem",
    "recur_repetitions": 11,
    "rp_redeemed": 9,
    "rp_redeemed_amount": 13.5,
    "types_of_service_id": 15,
    "service_custom_field_1": "cumque",
    "service_custom_field_2": "explicabo",
    "service_custom_field_3": "occaecati",
    "service_custom_field_4": "corrupti",
    "service_custom_field_5": "voluptatem",
    "service_custom_field_6": "molestiae",
    "round_off_amount": 10811027.1,
    "table_id": 8,
    "service_staff_id": 9,
    "change_return": 0,
    "change_return_id": 3,
    "products": [
        "rerum"
    ],
    "payments": [
        "sunt"
    ]
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->put(
    'https://bqf.ai/connector/api/sell/ea',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'contact_id' => 18,
            'customer_mobile' => 'odio',
            'transaction_date' => '2020-5-7 15:20:22',
            'status' => 'final',
            'sub_status' => 'null',
            'is_quotation' => true,
            'tax_rate_id' => 16,
            'discount_amount' => 10.0,
            'discount_type' => 'fixed',
            'sale_note' => 'rerum',
            'source' => 'inventore',
            'staff_note' => 'ut',
            'is_suspend' => false,
            'commission_agent' => 17,
            'shipping_details' => 'Express Delivery',
            'shipping_address' => 'illo',
            'shipping_status' => 'ordered',
            'delivered_to' => 'Mr Robin',
            'shipping_charges' => 10.0,
            'packing_charge' => 10.0,
            'exchange_rate' => 1.0,
            'selling_price_group_id' => 2,
            'pay_term_number' => 14,
            'pay_term_type' => 'months',
            'is_recurring' => 0,
            'recur_interval' => 15,
            'recur_interval_type' => 'days',
            'subscription_repeat_on' => 7,
            'subscription_no' => 'autem',
            'recur_repetitions' => 11,
            'rp_redeemed' => 9,
            'rp_redeemed_amount' => 13.5,
            'types_of_service_id' => 15,
            'service_custom_field_1' => 'cumque',
            'service_custom_field_2' => 'explicabo',
            'service_custom_field_3' => 'occaecati',
            'service_custom_field_4' => 'corrupti',
            'service_custom_field_5' => 'voluptatem',
            'service_custom_field_6' => 'molestiae',
            'round_off_amount' => 10811027.1,
            'table_id' => 8,
            'service_staff_id' => 9,
            'change_return' => 0.0,
            'change_return_id' => 3,
            'products' => [
                'rerum',
            ],
            'payments' => [
                'sunt',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "id": 91,
    "business_id": 1,
    "location_id": 1,
    "res_table_id": null,
    "res_waiter_id": null,
    "res_order_status": null,
    "type": "sell",
    "sub_type": null,
    "status": "final",
    "is_quotation": 0,
    "payment_status": "paid",
    "adjustment_type": null,
    "contact_id": 1,
    "customer_group_id": 1,
    "invoice_no": "AS0020",
    "ref_no": "",
    "source": null,
    "subscription_no": null,
    "subscription_repeat_on": null,
    "transaction_date": "25-09-2020 15:22",
    "total_before_tax": 962.5,
    "tax_id": null,
    "tax_amount": 0,
    "discount_type": "fixed",
    "discount_amount": "19.5000",
    "rp_redeemed": 0,
    "rp_redeemed_amount": "0.0000",
    "shipping_details": null,
    "shipping_address": null,
    "shipping_status": null,
    "delivered_to": null,
    "shipping_charges": "0.0000",
    "additional_notes": null,
    "staff_note": null,
    "round_off_amount": "0.0000",
    "final_total": 943,
    "expense_category_id": null,
    "expense_for": null,
    "commission_agent": null,
    "document": null,
    "is_direct_sale": 0,
    "is_suspend": 0,
    "exchange_rate": "1.000",
    "total_amount_recovered": null,
    "transfer_parent_id": null,
    "return_parent_id": null,
    "opening_stock_product_id": null,
    "created_by": 9,
    "import_batch": null,
    "import_time": null,
    "types_of_service_id": null,
    "packing_charge": "0.0000",
    "packing_charge_type": null,
    "service_custom_field_1": null,
    "service_custom_field_2": null,
    "service_custom_field_3": null,
    "service_custom_field_4": null,
    "mfg_parent_production_purchase_id": null,
    "mfg_wasted_units": null,
    "mfg_production_cost": "0.0000",
    "mfg_production_cost_type": "percentage",
    "mfg_is_final": 0,
    "is_created_from_api": 0,
    "essentials_duration": "0.00",
    "essentials_duration_unit": null,
    "essentials_amount_per_unit_duration": "0.0000",
    "essentials_allowances": null,
    "essentials_deductions": null,
    "rp_earned": 0,
    "repair_completed_on": null,
    "repair_warranty_id": null,
    "repair_brand_id": null,
    "repair_status_id": null,
    "repair_model_id": null,
    "repair_job_sheet_id": null,
    "repair_defects": null,
    "repair_serial_no": null,
    "repair_checklist": null,
    "repair_security_pwd": null,
    "repair_security_pattern": null,
    "repair_due_date": null,
    "repair_device_id": null,
    "repair_updates_notif": 0,
    "order_addresses": null,
    "is_recurring": 0,
    "recur_interval": 1,
    "recur_interval_type": "days",
    "recur_repetitions": 0,
    "recur_stopped_on": null,
    "recur_parent_id": null,
    "invoice_token": null,
    "pay_term_number": null,
    "pay_term_type": null,
    "pjt_project_id": null,
    "pjt_title": null,
    "woocommerce_order_id": null,
    "selling_price_group_id": 0,
    "created_at": "2020-09-23 20:16:19",
    "updated_at": "2020-09-25 17:57:08",
    "payment_lines": [
        {
            "id": 55,
            "transaction_id": 91,
            "business_id": 1,
            "is_return": 0,
            "amount": "461.7500",
            "method": "cash",
            "transaction_no": null,
            "card_transaction_number": null,
            "card_number": null,
            "card_type": "credit",
            "card_holder_name": null,
            "card_month": null,
            "card_year": null,
            "cheque_number": null,
            "bank_account_number": null,
            "paid_on": "2020-09-23 20:16:19",
            "created_by": 9,
            "is_advance": 0,
            "payment_for": 1,
            "parent_id": null,
            "note": null,
            "document": null,
            "payment_ref_no": "SP2020/0018",
            "account_id": null,
            "created_at": "2020-09-23 20:16:19",
            "updated_at": "2020-09-23 20:16:19"
        }
    ],
    "invoice_url": "https://bqf.ai/invoice/6dfd77eb80f4976b456128e7f1311c9f",
    "payment_link": "https://bqf.ai/pay/6dfd77eb80f4976b456128e7f1311c9f"
}
 

Request   

PUT connector/api/sell/{id}

PATCH connector/api/sell/{id}

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the sell. Example: ea

sell   string   

id of sell to update Example: 6

Body Parameters

contact_id   integer  optional  

id of the customer (a new customer follows the rules of store, customer_mobile included) Example: 18

customer_mobile   string  optional  

the new customer's full mobile number, as on store Example: odio

transaction_date   string  optional  

transaction date format:Y-m-d H:i:s, Example: 2020-5-7 15:20:22

status   string  optional  

sale status (final, draft, quotation, proforma); final clears is_quotation and sub_status Example: final

sub_status   string  optional  

sale sub status ("quotation" for quotation and "proforma" for proforma invoice) Example: null

is_quotation   boolean  optional  

Is sell quotation (0, 1), If 1 status should be draft Example: true

tax_rate_id   integer  optional  

id of the tax rate applicable to the sale Example: 16

discount_amount   number  optional  

discount amount applicable to the sale Example: 10

discount_type   string  optional  

type of the discount amount (fixed, percentage) Example: fixed

sale_note   string  optional  

Example: rerum

source   string  optional  

Source of the invoice Example: inventore

staff_note   string  optional  

Example: ut

is_suspend   boolean  optional  

Is suspended sale (0, 1) Example: false

commission_agent   integer  optional  

commission agent id Example: 17

shipping_details   string  optional  

shipping details Example: Express Delivery

shipping_address   string  optional  

shipping address Example: illo

shipping_status   string  optional  

('ordered', 'packed', 'shipped', 'delivered', 'cancelled') Example: ordered

delivered_to   string  optional  

Name of the person recieved the consignment Example: Mr Robin

shipping_charges   number  optional  

shipping amount Example: 10

packing_charge   number  optional  

packing charge Example: 10

exchange_rate   number  optional  

exchange rate for the currency used (0 or empty: 1) Example: 1

selling_price_group_id   integer  optional  

id of the selling price group Example: 2

pay_term_number   integer  optional  

pay term value Example: 14

pay_term_type   string  optional  

type of the pay term value ('days', 'months') Example: months

is_recurring   integer  optional  

whether the invoice is recurring (0, 1) Example: 0

recur_interval   integer  optional  

value of the interval invoice will be regenerated Example: 15

recur_interval_type   string  optional  

type of the recur interval ('days', 'months', 'years') Example: days

subscription_repeat_on   integer  optional  

day of the month on which invoice will be generated if recur interval type is months (1-30) Example: 7

subscription_no   string  optional  

subscription number Example: autem

recur_repetitions   integer  optional  

total number of invoices to be generated Example: 11

rp_redeemed   integer  optional  

reward points redeemed Example: 9

rp_redeemed_amount   number  optional  

reward point redeemed amount after conversion Example: 13.5

types_of_service_id   integer  optional  

types of service id Example: 15

service_custom_field_1   string  optional  

types of service custom field 1 Example: cumque

service_custom_field_2   string  optional  

types of service custom field 2 Example: explicabo

service_custom_field_3   string  optional  

types of service custom field 3 Example: occaecati

service_custom_field_4   string  optional  

types of service custom field 4 Example: corrupti

service_custom_field_5   string  optional  

types of service custom field 5 Example: voluptatem

service_custom_field_6   string  optional  

types of service custom field 6 Example: molestiae

round_off_amount   number  optional  

round off amount on total payable (added to final_total) Example: 10811027.1

table_id   integer  optional  

id of the table Example: 8

service_staff_id   integer  optional  

id of the service staff assigned to the sale Example: 9

change_return   number  optional  

Excess paid amount Example: 0

change_return_id   integer  optional  

id of the change return payment if exists Example: 3

products   string[]   

array of the products for the sale

*   object  optional  
sell_line_id   integer  optional  

sell line id for existing item only Example: 12

product_id   integer  optional  

product id Example: 17

variation_id   integer  optional  

variation id Example: 58

quantity   number  optional  

quantity Example: 1

unit_price   number  optional  

unit selling price, before the line tax (omitted: the line's own, or for a new line as on create) Example: 437.5

tax_rate_id   integer  optional  

tax rate id applicable on the product Example: 2

discount_amount   number  optional  

discount amount applicable on the product Example: 0

discount_type   string  optional  

type of discount amount ('fixed', 'percentage') Example: percentage

sub_unit_id   integer  optional  

sub unit id Example: 2

note   string  optional  

note for the product Example: quis

payments   string[]  optional  

payment lines for the sale. A request with only payments (and change_return / change_return_id) changes the payments and payment status and nothing else

*   object  optional  
payment_id   integer  optional  

payment id for existing payment line Example: 7

amount   number  optional  

amount of the payment Example: 453.13

method   string  optional  

payment methods ('cash', 'card', 'cheque', 'bank_transfer', 'other', 'custom_pay_1', 'custom_pay_2', 'custom_pay_3') Example: cash

account_id   integer  optional  

account id Example: 19

chart_of_account_id   integer  optional  

bank ledger account (card, bank transfer, cheque when Accounting is on) Example: 6

card_number Last four digits only.   string  optional  

Example: temporibus

card_holder_name   string  optional  

Example: qui

card_transaction_number   string  optional  

Example: ut

card_type   string  optional  

Example: eos

card_month   string  optional  

Example: sunt

card_year   string  optional  

Example: soluta

transaction_no_1   string  optional  

Example: maiores

transaction_no_2   string  optional  

Example: unde

transaction_no_3   string  optional  

Example: et

note   string  optional  

payment note Example: consequatur

cheque_number   string  optional  

Example: temporibus

bank_account_number   string  optional  

Example: temporibus

Delete Sell

requires authentication

Example request:
curl --request DELETE \
    "https://bqf.ai/connector/api/sell/provident" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/sell/provident"
);

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

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->delete(
    'https://bqf.ai/connector/api/sell/provident',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request   

DELETE connector/api/sell/{id}

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the sell. Example: provident

sell   string   

id of the sell to be deleted Example: dolorem

Add Sell Return

requires authentication

Example request:
curl --request POST \
    "https://bqf.ai/connector/api/sell-return" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"transaction_id\": 13,
    \"transaction_date\": \"2020-5-7 15:20:22\",
    \"invoice_no\": \"possimus\",
    \"discount_type\": \"fixed\",
    \"discount_amount\": 10,
    \"tax_id\": 8,
    \"return_settlement\": \"perferendis\",
    \"products\": [
        \"et\"
    ]
}"
const url = new URL(
    "https://bqf.ai/connector/api/sell-return"
);

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

let body = {
    "transaction_id": 13,
    "transaction_date": "2020-5-7 15:20:22",
    "invoice_no": "possimus",
    "discount_type": "fixed",
    "discount_amount": 10,
    "tax_id": 8,
    "return_settlement": "perferendis",
    "products": [
        "et"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://bqf.ai/connector/api/sell-return',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'transaction_id' => 13,
            'transaction_date' => '2020-5-7 15:20:22',
            'invoice_no' => 'possimus',
            'discount_type' => 'fixed',
            'discount_amount' => 10.0,
            'tax_id' => 8,
            'return_settlement' => 'perferendis',
            'products' => [
                'et',
            ],
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "id": 159,
    "business_id": 1,
    "location_id": 1,
    "res_table_id": null,
    "res_waiter_id": null,
    "res_order_status": null,
    "type": "sell_return",
    "sub_type": null,
    "status": "final",
    "is_quotation": 0,
    "payment_status": "paid",
    "adjustment_type": null,
    "contact_id": 1,
    "customer_group_id": null,
    "invoice_no": "CN2020/0005",
    "ref_no": null,
    "subscription_no": null,
    "subscription_repeat_on": null,
    "transaction_date": "2020-11-17 00:00:00",
    "total_before_tax": 3,
    "tax_id": null,
    "tax_amount": 0,
    "discount_type": "percentage",
    "discount_amount": 12,
    "rp_redeemed": 0,
    "rp_redeemed_amount": "0.0000",
    "shipping_details": null,
    "shipping_address": null,
    "shipping_status": null,
    "delivered_to": null,
    "shipping_charges": "0.0000",
    "additional_notes": null,
    "staff_note": null,
    "round_off_amount": "0.0000",
    "final_total": 2.64,
    "expense_category_id": null,
    "expense_for": null,
    "commission_agent": null,
    "document": null,
    "is_direct_sale": 0,
    "is_suspend": 0,
    "exchange_rate": "1.000",
    "total_amount_recovered": null,
    "transfer_parent_id": null,
    "return_parent_id": 157,
    "opening_stock_product_id": null,
    "created_by": 9,
    "import_batch": null,
    "import_time": null,
    "types_of_service_id": null,
    "packing_charge": null,
    "packing_charge_type": null,
    "service_custom_field_1": null,
    "service_custom_field_2": null,
    "service_custom_field_3": null,
    "service_custom_field_4": null,
    "mfg_parent_production_purchase_id": null,
    "mfg_wasted_units": null,
    "mfg_production_cost": "0.0000",
    "mfg_production_cost_type": "percentage",
    "mfg_is_final": 0,
    "is_created_from_api": 0,
    "essentials_duration": "0.00",
    "essentials_duration_unit": null,
    "essentials_amount_per_unit_duration": "0.0000",
    "essentials_allowances": null,
    "essentials_deductions": null,
    "rp_earned": 0,
    "repair_completed_on": null,
    "repair_warranty_id": null,
    "repair_brand_id": null,
    "repair_status_id": null,
    "repair_model_id": null,
    "repair_job_sheet_id": null,
    "repair_defects": null,
    "repair_serial_no": null,
    "repair_checklist": null,
    "repair_security_pwd": null,
    "repair_security_pattern": null,
    "repair_due_date": null,
    "repair_device_id": null,
    "repair_updates_notif": 0,
    "order_addresses": null,
    "is_recurring": 0,
    "recur_interval": null,
    "recur_interval_type": null,
    "recur_repetitions": null,
    "recur_stopped_on": null,
    "recur_parent_id": null,
    "invoice_token": null,
    "pay_term_number": null,
    "pay_term_type": null,
    "pjt_project_id": null,
    "pjt_title": null,
    "woocommerce_order_id": null,
    "selling_price_group_id": null,
    "created_at": "2020-11-17 12:05:11",
    "updated_at": "2020-11-17 13:22:09"
}
 

Request   

POST connector/api/sell-return

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

transaction_id   integer   

Id of the sell Example: 13

transaction_date   string  optional  

transaction date format:Y-m-d H:i:s, Example: 2020-5-7 15:20:22

invoice_no   string  optional  

Invoice number of the return Example: possimus

discount_type   string  optional  

type of the discount amount (fixed, percentage) Example: fixed

discount_amount   number  optional  

discount on the return; omitted: the sale's discount, a fixed one in the share of the sale being returned Example: 10

tax_id   integer  optional  

Example: 8

return_settlement   string  optional  

how the refund is settled (cash, store_credit) Example: perferendis

products   string[]   

array of the products for the sale

sell_line_id   integer   

Example: 17

quantity   number   

يجب أن تكون قيمة value أكبر من أو تساوي 0. Example: 35

unit_price_inc_tax   number  optional  

يجب أن تكون قيمة value أكبر من أو تساوي 0. Example: 5

*   object  optional  
sell_line_id   integer   

sell line id Example: 5

quantity   number   

quantity to be returned from the sell line Example: 1

unit_price_inc_tax   number  optional  

unit price refunded, at most what it was sold for (omitted: the sold price). After a lower refund, a later call must send every returned line Example: 437.5

List Sell Return

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/list-sell-return" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/list-sell-return"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/list-sell-return',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 159,
            "business_id": 1,
            "location_id": 1,
            "res_table_id": null,
            "res_waiter_id": null,
            "res_order_status": null,
            "type": "sell_return",
            "sub_type": null,
            "status": "final",
            "is_quotation": 0,
            "payment_status": "partial",
            "adjustment_type": null,
            "contact_id": 1,
            "customer_group_id": null,
            "invoice_no": "CN2020/0005",
            "ref_no": null,
            "subscription_no": null,
            "subscription_repeat_on": null,
            "transaction_date": "2020-11-17 00:00:00",
            "total_before_tax": "3.0000",
            "tax_id": null,
            "tax_amount": "0.0000",
            "discount_type": "percentage",
            "discount_amount": "12.0000",
            "rp_redeemed": 0,
            "rp_redeemed_amount": "0.0000",
            "shipping_details": null,
            "shipping_address": null,
            "shipping_status": null,
            "delivered_to": null,
            "shipping_charges": "0.0000",
            "additional_notes": null,
            "staff_note": null,
            "round_off_amount": "0.0000",
            "final_total": "2.6400",
            "expense_category_id": null,
            "expense_for": null,
            "commission_agent": null,
            "document": null,
            "is_direct_sale": 0,
            "is_suspend": 0,
            "exchange_rate": "1.000",
            "total_amount_recovered": null,
            "transfer_parent_id": null,
            "return_parent_id": 157,
            "opening_stock_product_id": null,
            "created_by": 9,
            "import_batch": null,
            "import_time": null,
            "types_of_service_id": null,
            "packing_charge": null,
            "packing_charge_type": null,
            "service_custom_field_1": null,
            "service_custom_field_2": null,
            "service_custom_field_3": null,
            "service_custom_field_4": null,
            "mfg_parent_production_purchase_id": null,
            "mfg_wasted_units": null,
            "mfg_production_cost": "0.0000",
            "mfg_production_cost_type": "percentage",
            "mfg_is_final": 0,
            "is_created_from_api": 0,
            "essentials_duration": "0.00",
            "essentials_duration_unit": null,
            "essentials_amount_per_unit_duration": "0.0000",
            "essentials_allowances": null,
            "essentials_deductions": null,
            "rp_earned": 0,
            "repair_completed_on": null,
            "repair_warranty_id": null,
            "repair_brand_id": null,
            "repair_status_id": null,
            "repair_model_id": null,
            "repair_job_sheet_id": null,
            "repair_defects": null,
            "repair_serial_no": null,
            "repair_checklist": null,
            "repair_security_pwd": null,
            "repair_security_pattern": null,
            "repair_due_date": null,
            "repair_device_id": null,
            "repair_updates_notif": 0,
            "order_addresses": null,
            "is_recurring": 0,
            "recur_interval": null,
            "recur_interval_type": null,
            "recur_repetitions": null,
            "recur_stopped_on": null,
            "recur_parent_id": null,
            "invoice_token": null,
            "pay_term_number": null,
            "pay_term_type": null,
            "pjt_project_id": null,
            "pjt_title": null,
            "woocommerce_order_id": null,
            "selling_price_group_id": null,
            "created_at": "2020-11-17 12:05:11",
            "updated_at": "2020-11-17 13:22:09",
            "payment_lines": [
                {
                    "id": 126,
                    "transaction_id": 159,
                    "business_id": 1,
                    "is_return": 0,
                    "amount": "1.8000",
                    "method": "cash",
                    "transaction_no": null,
                    "card_transaction_number": null,
                    "card_number": null,
                    "card_type": "credit",
                    "card_holder_name": null,
                    "card_month": null,
                    "card_year": null,
                    "cheque_number": null,
                    "bank_account_number": null,
                    "paid_on": "2020-11-17 12:05:00",
                    "created_by": 9,
                    "is_advance": 0,
                    "payment_for": 1,
                    "parent_id": null,
                    "note": null,
                    "document": null,
                    "payment_ref_no": "SP2020/0078",
                    "account_id": null,
                    "created_at": "2020-11-17 12:05:58",
                    "updated_at": "2020-11-17 12:05:58"
                }
            ],
            "return_parent_sell": {
                "id": 157,
                "business_id": 1,
                "location_id": 1,
                "res_table_id": null,
                "res_waiter_id": null,
                "res_order_status": null,
                "type": "sell",
                "sub_type": null,
                "status": "final",
                "is_quotation": 0,
                "payment_status": "paid",
                "adjustment_type": null,
                "contact_id": 1,
                "customer_group_id": null,
                "invoice_no": "AS0073",
                "ref_no": "",
                "subscription_no": null,
                "subscription_repeat_on": null,
                "transaction_date": "2020-11-13 12:42:17",
                "total_before_tax": "6.2500",
                "tax_id": null,
                "tax_amount": "0.0000",
                "discount_type": "percentage",
                "discount_amount": "10.0000",
                "rp_redeemed": 0,
                "rp_redeemed_amount": "0.0000",
                "shipping_details": null,
                "shipping_address": null,
                "shipping_status": null,
                "delivered_to": null,
                "shipping_charges": "0.0000",
                "additional_notes": null,
                "staff_note": null,
                "round_off_amount": "0.0000",
                "final_total": "5.6300",
                "expense_category_id": null,
                "expense_for": null,
                "commission_agent": null,
                "document": null,
                "is_direct_sale": 0,
                "is_suspend": 0,
                "exchange_rate": "1.000",
                "total_amount_recovered": null,
                "transfer_parent_id": null,
                "return_parent_id": null,
                "opening_stock_product_id": null,
                "created_by": 9,
                "import_batch": null,
                "import_time": null,
                "types_of_service_id": null,
                "packing_charge": "0.0000",
                "packing_charge_type": null,
                "service_custom_field_1": null,
                "service_custom_field_2": null,
                "service_custom_field_3": null,
                "service_custom_field_4": null,
                "mfg_parent_production_purchase_id": null,
                "mfg_wasted_units": null,
                "mfg_production_cost": "0.0000",
                "mfg_production_cost_type": "percentage",
                "mfg_is_final": 0,
                "is_created_from_api": 0,
                "essentials_duration": "0.00",
                "essentials_duration_unit": null,
                "essentials_amount_per_unit_duration": "0.0000",
                "essentials_allowances": null,
                "essentials_deductions": null,
                "rp_earned": 0,
                "repair_completed_on": null,
                "repair_warranty_id": null,
                "repair_brand_id": null,
                "repair_status_id": null,
                "repair_model_id": null,
                "repair_job_sheet_id": null,
                "repair_defects": null,
                "repair_serial_no": null,
                "repair_checklist": null,
                "repair_security_pwd": null,
                "repair_security_pattern": null,
                "repair_due_date": null,
                "repair_device_id": null,
                "repair_updates_notif": 0,
                "order_addresses": null,
                "is_recurring": 0,
                "recur_interval": 1,
                "recur_interval_type": "days",
                "recur_repetitions": 0,
                "recur_stopped_on": null,
                "recur_parent_id": null,
                "invoice_token": null,
                "pay_term_number": null,
                "pay_term_type": null,
                "pjt_project_id": null,
                "pjt_title": null,
                "woocommerce_order_id": null,
                "selling_price_group_id": 0,
                "created_at": "2020-11-13 12:42:17",
                "updated_at": "2020-11-13 12:42:18",
                "sell_lines": [
                    {
                        "id": 139,
                        "transaction_id": 157,
                        "product_id": 157,
                        "variation_id": 205,
                        "quantity": 5,
                        "mfg_waste_percent": "0.0000",
                        "quantity_returned": "3.0000",
                        "unit_price_before_discount": "1.2500",
                        "unit_price": "1.2500",
                        "line_discount_type": "fixed",
                        "line_discount_amount": "0.0000",
                        "unit_price_inc_tax": "1.2500",
                        "item_tax": "0.0000",
                        "tax_id": null,
                        "discount_id": null,
                        "lot_no_line_id": null,
                        "sell_line_note": "",
                        "res_service_staff_id": null,
                        "res_line_order_status": null,
                        "woocommerce_line_items_id": null,
                        "parent_sell_line_id": null,
                        "children_type": "",
                        "sub_unit_id": null,
                        "created_at": "2020-11-13 12:42:17",
                        "updated_at": "2020-11-17 13:22:09"
                    }
                ]
            }
        }
    ],
    "links": {
        "first": "https://bqf.ai/connector/api/list-sell-return?sell_id=157&page=1",
        "last": null,
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "path": "https://bqf.ai/connector/api/list-sell-return",
        "per_page": 10,
        "to": 1
    }
}
 

Request   

GET connector/api/list-sell-return

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

sell_id   string  optional  

Id of the sell for which return is added Example: ullam

Update shipping status

requires authentication

Example request:
curl --request POST \
    "https://bqf.ai/connector/api/update-shipping-status" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"id\": 11,
    \"shipping_status\": \"ordered\",
    \"delivered_to\": \"quidem\"
}"
const url = new URL(
    "https://bqf.ai/connector/api/update-shipping-status"
);

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

let body = {
    "id": 11,
    "shipping_status": "ordered",
    "delivered_to": "quidem"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://bqf.ai/connector/api/update-shipping-status',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'id' => 11,
            'shipping_status' => 'ordered',
            'delivered_to' => 'quidem',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Request   

POST connector/api/update-shipping-status

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

id   integer   

id of the sale Example: 11

shipping_status   string  optional  

('ordered', 'packed', 'shipped', 'delivered', 'cancelled') Example: ordered

delivered_to   string  optional  

Name of the consignee Example: quidem

Superadmin

If SaaS installed get active subscription details, else return the enabled modules details in package_details

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/active-subscription" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/active-subscription"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/active-subscription',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": {
        "id": 1,
        "business_id": 1,
        "package_id": 3,
        "start_date": "2020-09-05 00:00:00",
        "trial_end_date": "2020-09-15",
        "end_date": "2020-10-05 00:00:00",
        "package_price": "599.9900",
        "package_details": {
            "location_count": 0,
            "user_count": 0,
            "product_count": 0,
            "invoice_count": 0,
            "name": "Unlimited",
            "woocommerce_module": 1,
            "essentials_module": 1
        },
        "created_id": 1,
        "paid_via": "stripe",
        "payment_transaction_id": "ch_1CuLdQAhokBpT93LVZNg2At6",
        "status": "approved",
        "deleted_at": null,
        "created_at": "2018-08-01 07:49:09",
        "updated_at": "2018-08-01 07:49:09",
        "locations_created": 1,
        "users_created": 6,
        "products_created": 2,
        "invoices_created": 1
    }
}
 

Request   

GET connector/api/active-subscription

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Get Superadmin Package List

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/packages" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/packages"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/packages',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 1,
            "name": "Starter - Free",
            "description": "Give it a test drive...",
            "location_count": 0,
            "user_count": 0,
            "product_count": 0,
            "bookings": 0,
            "kitchen": 0,
            "order_screen": 0,
            "tables": 0,
            "invoice_count": 0,
            "interval": "months",
            "interval_count": 1,
            "trial_days": 10,
            "price": "0.0000",
            "custom_permissions": {
                "assetmanagement_module": "1",
                "connector_module": "1",
                "crm_module": "1",
                "essentials_module": "1",
                "manufacturing_module": "1",
                "productcatalogue_module": "1",
                "project_module": "1",
                "repair_module": "1",
                "woocommerce_module": "1"
            },
            "created_by": 1,
            "sort_order": 0,
            "is_active": 1,
            "is_private": 0,
            "is_one_time": 0,
            "enable_custom_link": 0,
            "custom_link": "",
            "custom_link_text": "",
            "deleted_at": null,
            "created_at": "2020-10-09 16:38:02",
            "updated_at": "2020-11-11 12:19:17"
        },
        {
            "id": 2,
            "name": "Regular",
            "description": "For Small Shops",
            "location_count": 0,
            "user_count": 0,
            "product_count": 0,
            "bookings": 0,
            "kitchen": 0,
            "order_screen": 0,
            "tables": 0,
            "invoice_count": 0,
            "interval": "months",
            "interval_count": 1,
            "trial_days": 10,
            "price": "199.9900",
            "custom_permissions": {
                "repair_module": "1"
            },
            "created_by": 1,
            "sort_order": 1,
            "is_active": 1,
            "is_private": 0,
            "is_one_time": 0,
            "enable_custom_link": 0,
            "custom_link": null,
            "custom_link_text": null,
            "deleted_at": null,
            "created_at": "2020-10-09 16:38:02",
            "updated_at": "2020-10-09 16:38:02"
        },
        {
            "id": 3,
            "name": "Unlimited",
            "description": "For Large Business",
            "location_count": 0,
            "user_count": 0,
            "product_count": 0,
            "bookings": 0,
            "kitchen": 0,
            "order_screen": 0,
            "tables": 0,
            "invoice_count": 0,
            "interval": "months",
            "interval_count": 1,
            "trial_days": 10,
            "price": "599.9900",
            "custom_permissions": {
                "assetmanagement_module": "1",
                "connector_module": "1",
                "crm_module": "1",
                "essentials_module": "1",
                "manufacturing_module": "1",
                "productcatalogue_module": "1",
                "project_module": "1",
                "repair_module": "1",
                "woocommerce_module": "1"
            },
            "created_by": 1,
            "sort_order": 1,
            "is_active": 1,
            "is_private": 0,
            "is_one_time": 0,
            "enable_custom_link": 0,
            "custom_link": "",
            "custom_link_text": "",
            "deleted_at": null,
            "created_at": "2020-10-09 16:38:02",
            "updated_at": "2020-11-02 12:09:19"
        }
    ]
}
 

Request   

GET connector/api/packages

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Table management

List tables

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/table?location_id=1" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/table"
);

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

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/table',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'location_id' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 5,
            "business_id": 1,
            "location_id": 1,
            "name": "Table 1",
            "description": null,
            "created_by": 9,
            "deleted_at": null,
            "created_at": "2020-06-04 22:36:37",
            "updated_at": "2020-06-04 22:36:37"
        }
    ]
}
 

Request   

GET connector/api/table

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

location_id   integer  optional  

id of the location Example: 1

Show the specified table

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/table/odio" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/table/odio"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/table/odio',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 5,
            "business_id": 1,
            "location_id": 1,
            "name": "Table 1",
            "description": null,
            "created_by": 9,
            "deleted_at": null,
            "created_at": "2020-06-04 22:36:37",
            "updated_at": "2020-06-04 22:36:37"
        }
    ]
}
 

Request   

GET connector/api/table/{id}

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the table. Example: odio

table   string   

comma separated ids of required tables Example: 5

Tax management

List taxes

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/tax" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/tax"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/tax',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 1,
            "business_id": 1,
            "name": "VAT@10%",
            "amount": 10,
            "is_tax_group": 0,
            "created_by": 1,
            "woocommerce_tax_rate_id": null,
            "deleted_at": null,
            "created_at": "2018-01-04 02:40:07",
            "updated_at": "2018-01-04 02:40:07"
        },
        {
            "id": 2,
            "business_id": 1,
            "name": "CGST@10%",
            "amount": 10,
            "is_tax_group": 0,
            "created_by": 1,
            "woocommerce_tax_rate_id": null,
            "deleted_at": null,
            "created_at": "2018-01-04 02:40:55",
            "updated_at": "2018-01-04 02:40:55"
        },
        {
            "id": 3,
            "business_id": 1,
            "name": "SGST@8%",
            "amount": 8,
            "is_tax_group": 0,
            "created_by": 1,
            "woocommerce_tax_rate_id": null,
            "deleted_at": null,
            "created_at": "2018-01-04 02:41:13",
            "updated_at": "2018-01-04 02:41:13"
        },
        {
            "id": 4,
            "business_id": 1,
            "name": "GST@18%",
            "amount": 18,
            "is_tax_group": 1,
            "created_by": 1,
            "woocommerce_tax_rate_id": null,
            "deleted_at": null,
            "created_at": "2018-01-04 02:42:19",
            "updated_at": "2018-01-04 02:42:19"
        }
    ]
}
 

Request   

GET connector/api/tax

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Get the specified tax

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/tax/vel" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/tax/vel"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/tax/vel',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 1,
            "business_id": 1,
            "name": "VAT@10%",
            "amount": 10,
            "is_tax_group": 0,
            "created_by": 1,
            "woocommerce_tax_rate_id": null,
            "deleted_at": null,
            "created_at": "2018-01-04 02:40:07",
            "updated_at": "2018-01-04 02:40:07"
        }
    ]
}
 

Request   

GET connector/api/tax/{id}

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the tax. Example: vel

tax   string   

comma separated ids of required taxes Example: 1

Taxonomy management

List taxonomy

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/taxonomy?type=nisi" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/taxonomy"
);

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

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/taxonomy',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'type' => 'nisi',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 1,
            "name": "Men's",
            "business_id": 1,
            "short_code": null,
            "parent_id": 0,
            "created_by": 1,
            "category_type": "product",
            "description": null,
            "slug": null,
            "woocommerce_cat_id": null,
            "deleted_at": null,
            "created_at": "2018-01-03 21:06:34",
            "updated_at": "2018-01-03 21:06:34",
            "sub_categories": [
                {
                    "id": 4,
                    "name": "Jeans",
                    "business_id": 1,
                    "short_code": null,
                    "parent_id": 1,
                    "created_by": 1,
                    "category_type": "product",
                    "description": null,
                    "slug": null,
                    "woocommerce_cat_id": null,
                    "deleted_at": null,
                    "created_at": "2018-01-03 21:07:34",
                    "updated_at": "2018-01-03 21:07:34"
                },
                {
                    "id": 5,
                    "name": "Shirts",
                    "business_id": 1,
                    "short_code": null,
                    "parent_id": 1,
                    "created_by": 1,
                    "category_type": "product",
                    "description": null,
                    "slug": null,
                    "woocommerce_cat_id": null,
                    "deleted_at": null,
                    "created_at": "2018-01-03 21:08:18",
                    "updated_at": "2018-01-03 21:08:18"
                }
            ]
        },
        {
            "id": 21,
            "name": "Food & Grocery",
            "business_id": 1,
            "short_code": null,
            "parent_id": 0,
            "created_by": 1,
            "category_type": "product",
            "description": null,
            "slug": null,
            "woocommerce_cat_id": null,
            "deleted_at": null,
            "created_at": "2018-01-06 05:31:35",
            "updated_at": "2018-01-06 05:31:35",
            "sub_categories": []
        }
    ]
}
 

Request   

GET connector/api/taxonomy

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

type   string  optional  

Type of taxonomy (product, device, hrm_department) Example: nisi

Get the specified taxonomy

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/taxonomy/molestiae" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/taxonomy/molestiae"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/taxonomy/molestiae',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 1,
            "name": "Men's",
            "business_id": 1,
            "short_code": null,
            "parent_id": 0,
            "created_by": 1,
            "category_type": "product",
            "description": null,
            "slug": null,
            "woocommerce_cat_id": null,
            "deleted_at": null,
            "created_at": "2018-01-03 21:06:34",
            "updated_at": "2018-01-03 21:06:34",
            "sub_categories": [
                {
                    "id": 4,
                    "name": "Jeans",
                    "business_id": 1,
                    "short_code": null,
                    "parent_id": 1,
                    "created_by": 1,
                    "category_type": "product",
                    "description": null,
                    "slug": null,
                    "woocommerce_cat_id": null,
                    "deleted_at": null,
                    "created_at": "2018-01-03 21:07:34",
                    "updated_at": "2018-01-03 21:07:34"
                },
                {
                    "id": 5,
                    "name": "Shirts",
                    "business_id": 1,
                    "short_code": null,
                    "parent_id": 1,
                    "created_by": 1,
                    "category_type": "product",
                    "description": null,
                    "slug": null,
                    "woocommerce_cat_id": null,
                    "deleted_at": null,
                    "created_at": "2018-01-03 21:08:18",
                    "updated_at": "2018-01-03 21:08:18"
                }
            ]
        }
    ]
}
 

Request   

GET connector/api/taxonomy/{id}

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the taxonomy. Example: molestiae

taxonomy   string   

comma separated ids of product categories Example: 1

Types of service management

List types of service

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/types-of-service" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/types-of-service"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/types-of-service',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 1,
            "name": "Home Delivery",
            "description": null,
            "business_id": 1,
            "location_price_group": {
                "1": "0"
            },
            "packing_charge": "10.0000",
            "packing_charge_type": "fixed",
            "enable_custom_fields": 0,
            "created_at": "2020-06-04 22:41:13",
            "updated_at": "2020-06-04 22:41:13"
        }
    ]
}
 

Request   

GET connector/api/types-of-service

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Get the specified types of service

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/types-of-service/illum" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/types-of-service/illum"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/types-of-service/illum',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 1,
            "name": "Home Delivery",
            "description": null,
            "business_id": 1,
            "location_price_group": {
                "1": "0"
            },
            "packing_charge": "10.0000",
            "packing_charge_type": "fixed",
            "enable_custom_fields": 0,
            "created_at": "2020-06-04 22:41:13",
            "updated_at": "2020-06-04 22:41:13"
        }
    ]
}
 

Request   

GET connector/api/types-of-service/{id}

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the types of service. Example: illum

types_of_service   string   

comma separated ids of required types of services Example: 1

Unit management

List units

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/unit" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/unit"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/unit',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 1,
            "business_id": 1,
            "actual_name": "Pieces",
            "short_name": "Pc(s)",
            "allow_decimal": 0,
            "base_unit_id": null,
            "base_unit_multiplier": null,
            "created_by": 1,
            "deleted_at": null,
            "created_at": "2018-01-03 15:15:20",
            "updated_at": "2018-01-03 15:15:20",
            "base_unit": null
        },
        {
            "id": 2,
            "business_id": 1,
            "actual_name": "Packets",
            "short_name": "packets",
            "allow_decimal": 0,
            "base_unit_id": null,
            "base_unit_multiplier": null,
            "created_by": 1,
            "deleted_at": null,
            "created_at": "2018-01-06 01:07:01",
            "updated_at": "2018-01-06 01:08:36",
            "base_unit": null
        },
        {
            "id": 15,
            "business_id": 1,
            "actual_name": "Dozen",
            "short_name": "dz",
            "allow_decimal": 0,
            "base_unit_id": 1,
            "base_unit_multiplier": "12.0000",
            "created_by": 9,
            "deleted_at": null,
            "created_at": "2020-07-20 13:11:09",
            "updated_at": "2020-07-20 13:11:09",
            "base_unit": {
                "id": 1,
                "business_id": 1,
                "actual_name": "Pieces",
                "short_name": "Pc(s)",
                "allow_decimal": 0,
                "base_unit_id": null,
                "base_unit_multiplier": null,
                "created_by": 1,
                "deleted_at": null,
                "created_at": "2018-01-03 15:15:20",
                "updated_at": "2018-01-03 15:15:20"
            }
        }
    ]
}
 

Request   

GET connector/api/unit

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Get the specified unit

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/unit/illo" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/unit/illo"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/unit/illo',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 1,
            "business_id": 1,
            "actual_name": "Pieces",
            "short_name": "Pc(s)",
            "allow_decimal": 0,
            "base_unit_id": null,
            "base_unit_multiplier": null,
            "created_by": 1,
            "deleted_at": null,
            "created_at": "2018-01-03 15:15:20",
            "updated_at": "2018-01-03 15:15:20",
            "base_unit": null
        }
    ]
}
 

Request   

GET connector/api/unit/{id}

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   string   

The ID of the unit. Example: illo

unit   string   

comma separated ids of the units Example: 1

User management

Get the loggedin user details.

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/user/loggedin" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/user/loggedin"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/user/loggedin',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": {
        "id": 1,
        "user_type": "user",
        "surname": "Mr",
        "first_name": "Admin",
        "last_name": null,
        "username": "admin",
        "email": "admin@example.com",
        "language": "en",
        "contact_no": null,
        "address": null,
        "business_id": 1,
        "max_sales_discount_percent": null,
        "allow_login": 1,
        "essentials_department_id": null,
        "essentials_designation_id": null,
        "status": "active",
        "crm_contact_id": null,
        "is_cmmsn_agnt": 0,
        "cmmsn_percent": "0.00",
        "selected_contacts": 0,
        "dob": null,
        "gender": null,
        "marital_status": null,
        "blood_group": null,
        "contact_number": null,
        "fb_link": null,
        "twitter_link": null,
        "social_media_1": null,
        "social_media_2": null,
        "permanent_address": null,
        "current_address": null,
        "guardian_name": null,
        "custom_field_1": null,
        "custom_field_2": null,
        "custom_field_3": null,
        "custom_field_4": null,
        "bank_details": null,
        "id_proof_name": null,
        "id_proof_number": null,
        "deleted_at": null,
        "created_at": "2018-01-04 02:15:19",
        "updated_at": "2018-01-04 02:15:19"
    }
}
 

Request   

GET connector/api/user/loggedin

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Register User

requires authentication

Example request:
curl --request POST \
    "https://bqf.ai/connector/api/user-registration" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"surname\": \"sunt\",
    \"first_name\": \"quidem\",
    \"last_name\": \"aut\",
    \"email\": \"ewilliamson@example.net\",
    \"is_active\": \"sit\",
    \"user_type\": \"aliquid\",
    \"crm_contact_id\": 12,
    \"allow_login\": false,
    \"username\": \"ullam\",
    \"password\": \"po~Aj[ZM%,yh\",
    \"role\": 7,
    \"access_all_locations\": true,
    \"location_permissions\": [
        \"et\"
    ],
    \"cmmsn_percent\": \"itaque\",
    \"max_sales_discount_percent\": \"pariatur\",
    \"selected_contacts\": true,
    \"selected_contact_ids\": [
        \"facilis\"
    ],
    \"dob\": \"omnis\",
    \"gender\": \"voluptatem\",
    \"marital_status\": \"tempore\",
    \"blood_group\": \"placeat\",
    \"contact_number\": \"dolores\",
    \"alt_number\": \"nulla\",
    \"family_number\": \"tempora\",
    \"fb_link\": \"quo\",
    \"twitter_link\": \"voluptatem\",
    \"social_media_1\": \"quibusdam\",
    \"social_media_2\": \"molestiae\",
    \"custom_field_1\": \"reprehenderit\",
    \"custom_field_2\": \"et\",
    \"custom_field_3\": \"nihil\",
    \"custom_field_4\": \"sequi\",
    \"guardian_name\": \"cum\",
    \"id_proof_name\": \"et\",
    \"id_proof_number\": \"necessitatibus\",
    \"permanent_address\": \"molestiae\",
    \"current_address\": \"reprehenderit\"
}"
const url = new URL(
    "https://bqf.ai/connector/api/user-registration"
);

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

let body = {
    "surname": "sunt",
    "first_name": "quidem",
    "last_name": "aut",
    "email": "ewilliamson@example.net",
    "is_active": "sit",
    "user_type": "aliquid",
    "crm_contact_id": 12,
    "allow_login": false,
    "username": "ullam",
    "password": "po~Aj[ZM%,yh",
    "role": 7,
    "access_all_locations": true,
    "location_permissions": [
        "et"
    ],
    "cmmsn_percent": "itaque",
    "max_sales_discount_percent": "pariatur",
    "selected_contacts": true,
    "selected_contact_ids": [
        "facilis"
    ],
    "dob": "omnis",
    "gender": "voluptatem",
    "marital_status": "tempore",
    "blood_group": "placeat",
    "contact_number": "dolores",
    "alt_number": "nulla",
    "family_number": "tempora",
    "fb_link": "quo",
    "twitter_link": "voluptatem",
    "social_media_1": "quibusdam",
    "social_media_2": "molestiae",
    "custom_field_1": "reprehenderit",
    "custom_field_2": "et",
    "custom_field_3": "nihil",
    "custom_field_4": "sequi",
    "guardian_name": "cum",
    "id_proof_name": "et",
    "id_proof_number": "necessitatibus",
    "permanent_address": "molestiae",
    "current_address": "reprehenderit"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://bqf.ai/connector/api/user-registration',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'surname' => 'sunt',
            'first_name' => 'quidem',
            'last_name' => 'aut',
            'email' => 'ewilliamson@example.net',
            'is_active' => 'sit',
            'user_type' => 'aliquid',
            'crm_contact_id' => 12,
            'allow_login' => false,
            'username' => 'ullam',
            'password' => 'po~Aj[ZM%,yh',
            'role' => 7,
            'access_all_locations' => true,
            'location_permissions' => [
                'et',
            ],
            'cmmsn_percent' => 'itaque',
            'max_sales_discount_percent' => 'pariatur',
            'selected_contacts' => true,
            'selected_contact_ids' => [
                'facilis',
            ],
            'dob' => 'omnis',
            'gender' => 'voluptatem',
            'marital_status' => 'tempore',
            'blood_group' => 'placeat',
            'contact_number' => 'dolores',
            'alt_number' => 'nulla',
            'family_number' => 'tempora',
            'fb_link' => 'quo',
            'twitter_link' => 'voluptatem',
            'social_media_1' => 'quibusdam',
            'social_media_2' => 'molestiae',
            'custom_field_1' => 'reprehenderit',
            'custom_field_2' => 'et',
            'custom_field_3' => 'nihil',
            'custom_field_4' => 'sequi',
            'guardian_name' => 'cum',
            'id_proof_name' => 'et',
            'id_proof_number' => 'necessitatibus',
            'permanent_address' => 'molestiae',
            'current_address' => 'reprehenderit',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": 1,
    "msg": "User added successfully",
    "user": {
        "surname": "Mr",
        "first_name": "Test",
        "last_name": "kumar",
        "email": "test@example.com",
        "user_type": "user_customer",
        "crm_contact_id": "2",
        "allow_login": 1,
        "username": "0017",
        "cmmsn_percent": "25",
        "max_sales_discount_percent": "52",
        "dob": "1997-10-12",
        "gender": "male",
        "marital_status": "unmarried",
        "blood_group": "0+",
        "contact_number": "4578451245",
        "alt_number": "7474747474",
        "family_number": "7474147414",
        "fb_link": "fb.com/username",
        "twitter_link": "twitter.com/username",
        "social_media_1": "test",
        "social_media_2": "test",
        "custom_field_1": "test",
        "custom_field_2": "test",
        "custom_field_3": "test",
        "custom_field_4": "test",
        "guardian_name": "test",
        "id_proof_name": "uid",
        "id_proof_number": "747845120124",
        "permanent_address": "test permanent adrress",
        "current_address": "test current address",
        "bank_details": "{\"account_holder_name\":\"test\",\"account_number\":\"test\",\"bank_name\":\"test\",\"bank_code\":\"test\",\"branch\":\"test\",\"tax_payer_id\":\"test\"}",
        "selected_contacts": "1",
        "status": "active",
        "business_id": 1,
        "updated_at": "2021-08-12 18:03:58",
        "created_at": "2021-08-12 18:03:58",
        "id": 140
    }
}
 

Request   

POST connector/api/user-registration

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

surname   string  optional  

prefix like Mr, Mrs,Dr Example: sunt

first_name   string   

Example: quidem

last_name   string  optional  

Example: aut

email   string   

Example: ewilliamson@example.net

is_active   string   

'active', 'inactive', 'terminated' Example: sit

user_type   string   

'user_customer' for contact/customer login & 'user' for general user Example: aliquid

crm_contact_id   integer  optional  

if user_type is 'user_customer' then required Example: 12

allow_login   boolean  optional  

1 to allow login & 0 to disable login Example: false

username   string  optional  

minimum 5 characters Example: ullam

password   string  optional  

minimum 5 characters (as the web user form) & required if 'allow_login' is 1 Example: po~Aj[ZM%,yh

role   integer  optional  

id of role to be assigned to user & required if user_type is 'user' Example: 7

access_all_locations   boolean  optional  

1 if user has access all location else 0 & required if user_type is 'user' Example: true

location_permissions   string[]  optional  

array of location ids to be assigned to user & required if user_type is 'user' and 'access_all_locations' is 0

cmmsn_percent   decimal  optional  

Example: itaque

max_sales_discount_percent   decimal  optional  

Example: pariatur

selected_contacts   boolean  optional  

1 or 0 Example: true

selected_contact_ids   string[]  optional  

array of contact ids & required if 'selected_contacts' is 1

dob   date  optional  

dob of user in "Y-m-d" format Ex: 1997-10-29 Example: omnis

gender   string  optional  

if user is 'male', 'female', 'others' Example: voluptatem

marital_status   string  optional  

if user is 'married', 'unmarried', 'divorced' Example: tempore

blood_group   string  optional  

Example: placeat

contact_number   string  optional  

Example: dolores

alt_number   string  optional  

Example: nulla

family_number   string  optional  

Example: tempora

fb_link   string  optional  

Example: quo

twitter_link   string  optional  

Example: voluptatem

social_media_1   string  optional  

Example: quibusdam

social_media_2   string  optional  

Example: molestiae

custom_field_1   string  optional  

Example: reprehenderit

custom_field_2   string  optional  

Example: et

custom_field_3   string  optional  

Example: nihil

custom_field_4   string  optional  

Example: sequi

guardian_name   string  optional  

Example: cum

id_proof_name   string  optional  

ID proof of user like Adhar No. Example: et

id_proof_number   string  optional  

Id Number like adhar number Example: necessitatibus

permanent_address   string  optional  

Example: molestiae

current_address   string  optional  

Example: reprehenderit

bank_details   object  optional  
*   object  optional  
account_holder_name   string  optional  

Example: aperiam

account_number   string  optional  

Example: consequatur

bank_name   string  optional  

Example: officiis

bank_code   string  optional  

Example: nesciunt

branch   string  optional  

Example: nulla

tax_payer_id   string  optional  

Example: possimus

List users

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/user?service_staff=&per_page=50" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/user"
);

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

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/user',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'service_staff' => '0',
            'per_page' => '50',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 1,
            "user_type": "user",
            "surname": "Mr",
            "first_name": "Admin",
            "last_name": null,
            "username": "admin",
            "email": "admin@example.com",
            "language": "en",
            "contact_no": null,
            "address": null,
            "business_id": 1,
            "max_sales_discount_percent": null,
            "allow_login": 1,
            "essentials_department_id": null,
            "essentials_designation_id": null,
            "status": "active",
            "crm_contact_id": null,
            "is_cmmsn_agnt": 0,
            "cmmsn_percent": "0.00",
            "selected_contacts": 0,
            "dob": null,
            "gender": null,
            "marital_status": null,
            "blood_group": null,
            "contact_number": null,
            "fb_link": null,
            "twitter_link": null,
            "social_media_1": null,
            "social_media_2": null,
            "permanent_address": null,
            "current_address": null,
            "guardian_name": null,
            "custom_field_1": null,
            "custom_field_2": null,
            "custom_field_3": null,
            "custom_field_4": null,
            "bank_details": null,
            "id_proof_name": null,
            "id_proof_number": null,
            "deleted_at": null,
            "created_at": "2018-01-04 02:15:19",
            "updated_at": "2018-01-04 02:15:19"
        }
    ]
}
 

Request   

GET connector/api/user

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Query Parameters

service_staff   boolean  optional  

Filter service staffs from users list (0, 1) Example: false

per_page   integer  optional  

Optional paging (up to 500 per page); without it, or with -1, the whole list Example: 50

Get the specified user

requires authentication

Example request:
curl --request GET \
    --get "https://bqf.ai/connector/api/user/1" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://bqf.ai/connector/api/user/1"
);

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

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->get(
    'https://bqf.ai/connector/api/user/1',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "data": [
        {
            "id": 1,
            "user_type": "user",
            "surname": "Mr",
            "first_name": "Admin",
            "last_name": null,
            "username": "admin",
            "email": "admin@example.com",
            "language": "en",
            "contact_no": null,
            "address": null,
            "business_id": 1,
            "max_sales_discount_percent": null,
            "allow_login": 1,
            "essentials_department_id": null,
            "essentials_designation_id": null,
            "status": "active",
            "crm_contact_id": null,
            "is_cmmsn_agnt": 0,
            "cmmsn_percent": "0.00",
            "selected_contacts": 0,
            "dob": null,
            "gender": null,
            "marital_status": null,
            "blood_group": null,
            "contact_number": null,
            "fb_link": null,
            "twitter_link": null,
            "social_media_1": null,
            "social_media_2": null,
            "permanent_address": null,
            "current_address": null,
            "guardian_name": null,
            "custom_field_1": null,
            "custom_field_2": null,
            "custom_field_3": null,
            "custom_field_4": null,
            "bank_details": null,
            "id_proof_name": null,
            "id_proof_number": null,
            "deleted_at": null,
            "created_at": "2018-01-04 02:15:19",
            "updated_at": "2018-01-04 02:15:19"
        }
    ]
}
 

Request   

GET connector/api/user/{id}

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

URL Parameters

id   integer   

The ID of the user. Example: 1

user   string   

comma separated ids of the required users Example: 1

Update user password.

requires authentication

Example request:
curl --request POST \
    "https://bqf.ai/connector/api/update-password" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"current_password\": \"similique\",
    \"new_password\": \"numquam\"
}"
const url = new URL(
    "https://bqf.ai/connector/api/update-password"
);

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

let body = {
    "current_password": "similique",
    "new_password": "numquam"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://bqf.ai/connector/api/update-password',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'current_password' => 'similique',
            'new_password' => 'numquam',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": 1,
    "msg": "Password updated successfully"
}
 

Request   

POST connector/api/update-password

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

current_password   string   

Current password of the user Example: similique

new_password   string   

New password of the user, at least 5 characters Example: numquam

Recover forgotten password.

requires authentication

Example request:
curl --request POST \
    "https://bqf.ai/connector/api/forget-password" \
    --header "Authorization: Bearer {access_token}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"wmueller@example.org\"
}"
const url = new URL(
    "https://bqf.ai/connector/api/forget-password"
);

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

let body = {
    "email": "wmueller@example.org"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$response = $client->post(
    'https://bqf.ai/connector/api/forget-password',
    [
        'headers' => [
            'Authorization' => 'Bearer {access_token}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'email' => 'wmueller@example.org',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));

Example response (200):


{
    "success": 1,
    "msg": "New password sent to user@example.com successfully"
}
 

Request   

POST connector/api/forget-password

Headers

Authorization      

Example: Bearer {access_token}

Content-Type      

Example: application/json

Accept      

Example: application/json

Body Parameters

email   string   

Users email id Example: wmueller@example.org