Giới thiệu
Chào mừng bạn đến với tài liệu API của NextX! Tài liệu này cung cấp thông tin chi tiết về cách tương tác với API của NextX. Hãy vui lòng liên hệ với chúng tôi ngay nếu bạn cần hỗ trợ hoặc muốn đăng ký dịch vụ.
Hãy liên lạc với chúng tôi tại support@nextx.ai để được hỗ trợ thêm.
NextX API
Dưới đây là các API chức năng hệ thống của NextX mà bạn có thể tích hợp vào hệ thống của mình.
Token (Xác thực)
Để lấy mã token, hãy sử dụng đoạn code sau:
require 'net/http'
require 'uri'
require 'json'
uri = URI.parse("https://open-api.nextx.vn/api/auth/token")
request = Net::HTTP::Post.new(uri, 'Content-Type' => 'application/json')
request.body = JSON.dump({
"grant_type" => "client_credentials",
"client_id" => "your_client_id",
"client_secret" => "your_client_secret",
"scope" => "public.api"
})
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|
http.request(request)
end
puts response.body
import requests
url = "https://open-api.nextx.vn/api/auth/token"
payload = {
"grant_type": "client_credentials",
"client_id": "your_client_id",
"client_secret": "your_client_secret",
"scope": "public.api"
}
headers = {'Content-Type': 'application/json'}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
curl -X POST "https://open-api.nextx.vn/api/auth/token" \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"grant_type": "client_credentials",
"client_id": "your_client_id",
"client_secret": "your_client_secret",
"scope": "public.api"
}'
const fetch = require('node-fetch');
const url = "https://open-api.nextx.vn/api/auth/token";
const body = {
"grant_type": "client_credentials",
"client_id": "your_client_id",
"client_secret": "your_client_secret",
"scope": "public.api"
};
fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(body)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
Hãy đảm bảo thay thế your_client_id và your_client_secret bằng thông tin xác thực khách hàng thực tế của bạn.
NextX API sử dụng khóa API để cho phép truy cập vào API. Bạn có thể đăng ký một khóa API mới của NextX tại cổng thông tin dành cho nhà phát triển của chúng tôi.
NextX yêu cầu khóa API phải được bao gồm trong tất cả các yêu cầu API gửi đến máy chủ trong phần tiêu đề có dạng như sau:
Authorization: Bearer your_api_key_here
Lệnh trên trả về JSON có cấu trúc như sau:
[
"meta": {
"message": "Incorrect credentials",
"status_code": 1
},
"data": []
]
Điểm đầu cuối này truy xuất một mã truy cập để xác thực các yêu cầu API.
HTTP Request
GET https://open-api.nextx.vn/api/auth/token
Tham số (Biến)
Tên biến | Kiểu dữ liệu | Mô tả |
---|---|---|
grant_type | string | Loại quyền truy cập đang được yêu cầu. Đối với luồng thông tin xác thực khách hàng, sử dụng "client_credentials". |
client_secret | string | mã bí mật |
scope | string | Phạm vi của yêu cầu truy cập. Ví dụ: "public.api". |
Ví dụ về nội dung yêu cầu
Dưới đây là một Ví dụ về nội dung yêu cầu.
[
{"grant_type": "client_credentials",
"client_id": "8abe635c7de9896dca3a586309adfe8968e1",
"client_secret": "D69D0112C0CC5B1EE185A43D04F3DBD",
"scope": "public.api"
}
]
Phản hồi
Phản hồi sẽ chứa mã truy cập và các thông tin liên quan khác.
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON với mã truy cập.
Nếu thông tin xác thực không chính xác, máy chủ sẽ trả về phản hồi JSON với thông báo lỗi.
Lệnh trên trả về JSON có cấu trúc như sau:
[
"meta": {
"message": "Incorrect credentials",
"status_code": 1
},
"data": []
}
]
Thiết lập
Để xem thiết lập cài đặt chung, ta sử dụng đoạn code sau
import requests
url = "https://api-nextcrm.nextcrm.vn/api/setting/pos-setting"
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.get(url, headers=headers)
print(response.json())
curl -X 'GET' \
'https://api-nextcrm.nextcrm.vn/api/setting/pos-setting' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = 'https://api-nextcrm.nextcrm.vn/api/setting/pos-setting';
const options = {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Lệnh trên trả về JSON có cấu trúc như sau:
[
{
"id": 1,
"allow_sell_when_out_stock": 0,
"allow_edit_price": 1,
"allow_edit_discount": 1,
"require_approved_status_purchase": 1,
"use_voucher": 0,
"allow_return_invoice_has_voucher": 0,
"allow_apply_voucher_with_point_promotion": 0,
"tenant_id": 1,
"use_batch_expire": 1,
"on_product_expiry": "keep_selling",
"stop_selling_before": 6,
"accounting_method": "fifo",
"discount_before_tax": 0,
"expense_before_tax": 1,
"customer_default_id": null,
"customer_group_id": null,
"enable_editing_product_from_purchase": 1,
"store_default": null,
"price_round_of_number": 2,
"quality_round_of_number": 2,
"required_price_book_on_transaction": 1,
"stock_transfer_by_purchase_price": 1,
"used_multi_store": 1,
"is_warning_customer_debt": 1,
"is_sale_over_credit_limit": 1,
"credit_limit": "0.0000",
"pay_term_number": 15,
"pay_term_type": "days",
"warning_customer_debt_type": 1,
"is_multi_tax": 1,
"is_manager_customer_by_branch": 0,
"is_manager_supplier_by_branch": 0,
"use_price_book": 0,
"allow_manufacturing_product": 1,
"enable_product_warranty": 1,
"warranty_remind_out_of_date": 1,
"warranty_remind_out_of_date_before_days": 0,
"warranty_remind_repeat_date": 1,
"warranty_remind_repeat_date_before_day": 0,
"warranty_remind_returning": 0,
"warranty_remind_returning_before_days": 0,
"warranty_default_delivery_date_after_days": 22,
"not_allow_modify_transaction_date": 0,
"customer_allow_duplicate_mobile": 0
}
]
Điểm đầu cuối này trả về trang thiết lập chung.
HTTP Request
GET https://api-nextcrm.nextcrm.vn/api/setting/pos-setting
Phản hồi
Phản hồi sẽ chứa thông tin thiết lập và thông tin liên quan khác.
Nếu mã truy cập đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết mã truy cập đã hết hạn.
Lệnh trên trả về JSON có cấu trúc như sau:
[
{
"meta": {
"message": "Token expried",
"status_code": 401
},
"data": []
}
]
Danh mục
Danh sách các chi nhánh
dùng Api này để lấy danh sách các chi nhánh
import requests
url = "https://open-api.nextx.vn/api/branch/branch"
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.get(url, headers=headers)
print(response.json())
curl -X 'GET' \
'https://open-api.nextx.vn/api/branch/branch' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/branch/branch';
const options = {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Lệnh trên trả về JSON có cấu trúc như sau:
json [ { "id": 0, "name": "string", "code": "string", "tel": "string", "avatar": "string", "address": "string", "Mô tả": "string" } ]
Điểm đầu cuối này trả về 1 danh sách các chi nhánh
HTTP Request
GET https://open-api.nextx.vn/api/branch/branch
Phản hồi
Nếu phản hồi thành công, sẽ trả về mã JSON về dnah sách các chi nhánh. Nếu mã truy cập đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết mã truy cập đã hết hạn.
Lệnh trên trả về JSON có cấu trúc như sau:
[
{
"meta": {
"message": "Token expried",
"status_code": 401
},
"data": []
}
]
Danh sách các kho
Để lấy danh sách tất các kho, dùng code sau:
import requests
url = "https://open-api.nextx.vn/api/branch/store"
params = {
'branch_id': 'your_branch_id'
}
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.get(url, headers=headers, params=params)
print(response.json())
curl -X 'GET' \
'https://open-api.nextx.vn/api/branch/store' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token' \
-G --data-urlencode 'branch_id=your_branch_id'
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/branch/store';
const options = {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Lệnh trên trả về JSON có cấu trúc như sau:
[
{
"id": 0,
"name": "string",
"code": "string",
"tel": "string",
"fax": "string",
"avatar": "string",
"address": "string",
"Mô tả": "string"
}
]
Điểm đầu cuối này trả về kết quả là danh sách các kho
HTTP Request
GET https://open-api.nextx.vn/api/branch/store
Tham số (Biến)
Tên biến | Mô tả |
---|---|
branch_id | ID của chi nhánh |
Phản hồi
Nếu yêu cầu được gửi thành công, hệ thống sẽ trả lại một phản hồi JSON gồm một danh sách các kho.
Nếu mã truy cập đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết mã truy cập đã hết hạn.
[
{
"meta": {
"message": "Token expried",
"status_code": 401
},
"data": []
}
]
Danh sách các danh mục sản phẩm
để lấy các danh mục sản phẩm, sử dụng đoạn code sau:
import requests
url = "https://open-api.nextx.vn/api/cate/category-list/product_category"
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
params = {
'search[parent_id]': 0 # Optional: Replace with desired parent ID or remove if not needed
}
response = requests.get(url, headers=headers, params=params)
print(response.json())
curl -X 'GET' \
'https://open-api.nextx.vn/api/cate/category-list/product_category' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = 'https://api-docs.nextx.vn/api/cate/category-list/product_category';
const params = new URLSearchParams({
'search[parent_id]': 0 // Optional: Replace with desired parent ID or remove if not needed
});
const options = {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(`${url}?${params}`, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cho phép lấy danh sách danh mục sản phẩm. Có thể lọc thông qua parent ID
Phản hồi sẽ bao gồm chi tiết như là ID của danh mục, tên, parent ID, URL hình ảnh, mô tả và các danh mục con nếu có
HTTP Request
GET https://open-api.nextx.vn/api/cate/category-list/product_category
Tham số (Biến)
Tên biến | Kiểu dữ liệu | Mô tả |
---|---|---|
parent_id | integer | ID của danh mục cha |
Phản hồi
Nếu yêu cầu được phản hồi thành công, hệ thống sẽ trả về một đoạn mã JSON với danh sách các kho.
Example Response
[
{
"id": 0,
"name": "string",
"parent_id": 0,
"picture": "string",
"Mô tả": "string",
"child": [
{
"id": 0,
"name": "string",
"parent_id": 0,
"picture": "string",
"Mô tả": "string"
}
]
}
]
Nếu mã truy cập đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết mã truy cập đã hết hạn.
[
{
"meta": {
"message": "Token expried",
"status_code": 401
},
"data": []
}
]
Chi tiết danh mục sản phẩm
Để lấy chi tiết danh mục sản phẩm, dùng đoạn code sau:
curl -X 'GET' \
'https://open-api.nextx.vn/api/cate/category/{id}' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
import requests
url = "https://open-api.nextx.vn/api/cate/category/{id}"
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.get(url, headers=headers)
print(response.json())
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/cate/category/{id}';
const options = {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cho phép truy cập vào chi tiết của một danh mục sản phẩm
Lệnh trên trả về JSON có cấu trúc như sau:
[
{
"id": 0,
"name": "string",
"parent_id": 0,
"picture": "string",
"Mô tả": "string",
"childs": [
{
"id": 0,
"name": "string",
"parent_id": 0,
"picture": "string",
"Mô tả": "string"
}
]
HTTP Request
GET https://open-api.nextx.vn/api/cate/category/{id}
Tham số (Biến)
Tên biến | Kiểu dữ liệu | Mô tả |
---|---|---|
id | integer | ID của danh mục sản phẩm |
Phản hồi
Nếu yêu cầu được đáp ứng, hệ thống trả về một đoạn mã JSON với chi tiết của một danh mục sản phẩm. Nếu mã truy cập đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết mã truy cập đã hết hạn.
Lệnh trên trả về JSON có cấu trúc như sau:
[
{
"meta": {
"message": "Token expried",
"status_code": 401
},
"data": []
}
]
Chỉnh sửa danh mục sản phẩm
Để chỉnh sửa một danh mục sản phẩm, dùng đoạn code sau:
curl -X 'PUT' \
'https://open-api.nextx.vn/api/cate/category/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer your_access_token' \
-d '{
"name": "string",
"parent_id": 0,
"Mô tả": "string"
}'
import requests
url = "https://open-api.nextx.vn/api/cate/category/{id}"
payload = {
"name": "string",
"parent_id": 0,
"Mô tả": "string"
}
headers = {
'Accept': 'application/json',
'Content-Type': 'application/json'
}
response = requests.put(url, json=payload, headers=headers)
print(response.json())
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/cate/category/{id}';
const payload = {
name: "string",
parent_id: 0,
Mô tả: "string"
};
const options = {
method: 'PUT',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify(payload)
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Lệnh trên trả về JSON có cấu trúc như sau:
[
{
"status_code": 0,
"message": "string"
}
]
Điểm đầu cuối này cho phép cập nhật thông tin chi tiết của một danh mục sản phẩm
HTTP Request
PUT https://open-api.nextx.vn/api/cate/category/{id}
Tham số (Biến)
Tham số đường dẫn
Biến | Kiểu dữ liệu | Mô tả |
---|---|---|
id | integer | ID của danh mục |
Tham số thân
Biến | Kiểu dữ liệu | Mô tả |
---|---|---|
name | string | tên danh mục |
parent_id | integer | Parent ID |
description | string | Mô tả của danh mục |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON xác nhận việc cập nhật.
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Trả về JSON được cấu trúc như sau:
json [ { "meta": { "message": "Token expried", "status_code": 401 }, "data": [] } ]
Nếu yêu cầu không được xác thực, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo chỉ rõ 'Chưa xác thực.'
Trả về JSON được cấu trúc như sau:
json [ { "message": "Unauthenticated." } ]
Thêm Danh mục Sản phẩm mới
Thêm mới một danh sách sản phẩm
Để tạo mới 1 danh sách sản phẩm, sử dụng đoạn code sau:
import requests
import json
url = "https://open-api.nextx.vn/api/cate/category"
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
data = {
"name": "New Category",
"parent_id": 0,
"category_type": "product_category",
"Mô tả": "This is a new category"
}
response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json())
curl -X 'POST' \
'https://open-api.nextx.vn/api/cate/category' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer your_access_token' \
-d '{
"name": "New Category",
"parent_id": 0,
"category_type": "product_category",
"Mô tả": "This is a new category"
}'
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/cate/category';
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
},
body: JSON.stringify({
name: "New Category",
parent_id: 0,
category_type : "product_category",
Mô tả: "This is a new category"
})
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Đầu cuối này tạo một danh mục sản phẩm mới. Phản hồi bao gồm chi tiết của danh mục vừa được tạo, bao gồm cả các danh mục con nếu có.
HTTP Request
POST https://open-api.nextx.vn/api/cate/category
Yêu cầu
Ví dụ của Yêu cầu gửi đi:
{
"name": "string",
"parent_id": 0,
"picture": "string",
"Mô tả": "string"
}
Tham số (Biến)
Biến | Kiểu dữ liệu | Mô tả |
---|---|---|
name | string | Tên của danh mục sản phẩm |
parent_id | integer | Parent ID |
picture | string | URL hoặc đường dẫn đến hình ảnh |
description | string | mô tả cụ thể của danh mục |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON xác nhận việc cập nhật.
Trả về JSON được cấu trúc như sau:
[
{
"id": 0,
"name": "string",
"parent_id": 0,
"picture": "string",
"Mô tả": "string",
"childs": [
{
"id": 0,
"name": "string",
"parent_id": 0,
"picture": "string",
"Mô tả": "string"
}
]
}
]
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Trả về JSON được cấu trúc như sau:
[
{
"meta": {
"message": "Token expried",
"status_code": 401
},
"data": []
}
]
Lấy danh sách nguồi khách
Để lấy danh sách các nguồn khách, hãy sử dụng đoạn code sau:
import requests
url = "https://open-api.nextx.vn/api/cate/resources"
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.get(url, headers=headers)
print(response.json())
curl -X 'GET' \
'https://open-api.nextx.vn/api/cate/resources' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/cate/resources';
const options = {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cho biết danh sách của các nguồn khách. Mỗi nguồn có tên và ID riêng.
HTTP Request
GET https://open-api.nextx.vn/api/cate/resources
Tham số (Biến)
Không yêu cầu tham số.
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON danh sách các nguồn khách.
Trả về JSON được cấu trúc như sau:
[
{
"id": 0,
"name": "string"
}
]
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Trả về JSON được cấu trúc như sau:
[
{
"meta": {
"message": "Token expired",
"status_code": 401
},
"data": []
}
]
Nhân Viên
Lấy danh sách nhân viên
Để lấy danh sách nhân viên của một chi nhánh, sử dụng đoạn code sau:
import requests
url = "https://open-api.nextx.vn/api/cate/employee"
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
params = {
'branch_id': 1 # Optional: Replace with desired branch ID or remove if not needed
}
response = requests.get(url, headers=headers, params=params)
print(response.json())
curl -X 'GET' \
'https://open-api.nextx.vn/api/cate/employee?branch_id=1' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/cate/employee';
const params = new URLSearchParams({
'branch_id': 1 // Optional: Replace with desired branch ID or remove if not needed
});
const options = {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(`${url}?${params}`, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cho thấy một danh sách nhân viên của một chi nhánh cụ thể
HTTP Request
GET https://open-api.nextx.vn/api/cate/employee
Tham số (Biến)
Biến | Kiểu dữ liệu | Mô tả |
---|---|---|
branch_id | integer | ID của chi nhánh |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON xác nhận việc cập nhật.
Trả về JSON được cấu trúc như sau:
[
{
"id": 0,
"code": "string",
"first_name": "string",
"last_name": "string",
"avatar": "string"
}
]
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Trả về JSON được cấu trúc như sau:
[
{
"meta": {
"message": "Token expired",
"status_code": 401
},
"data": []
}
]
Lấy danh sách nhân viên Sales
Để xem danh sách nhân viên Sales, hãy sử dụng đoạn code sau:
import requests
url = "https://open-api.nextx.vn/api/cate/users"
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.get(url, headers=headers)
print(response.json())
curl -X 'POST' \
'https://open-api.nextx.vn/api/cate/users' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer your_access_token' \
}'
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/cate/users';
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
},
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
Điểm đầu cuối này cho thấy một danh sách các nhân viên Sales.
HTTP Request
POST https://open-api.nextx.vn/api/cate/users
Tham số (Biến)
Không cần sử dụng biến
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON danh sách các nhân viên Sales.
Trả về JSON được cấu trúc như sau:
[
{
"id": 0,
"name": "string",
"firstname": "string",
"lastname": "string"
}
]
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Trả về JSON được cấu trúc như sau:
[
{
"meta": {
"message": "Token expired",
"status_code": 401
},
"data": []
}
]
Sản phẩm
Lấy danh sách sản phẩm
Để lấy danh sách sản phẩm, sử dụng đoạn code sau:
import requests
url = "https://open-api.nextx.vn/api/product/product"
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
params = {
'page': 0,
'pageLimit': 15,
'branch_id': 1, # Required
'store_id': 1,
'Kiểu dữ liệu[]': ['single', 'variable'],
'strSearch': 'product_name'
}
response = requests.get(url, headers=headers, params=params)
print(response.json())
curl -X 'GET' \
'https://open-api.nextx.vn/api/product/product?page=0&pageLimit=15&branch_id=1&store_id=1&Kiểu dữ liệu[]=single&Kiểu dữ liệu[]=variable&strSearch=product_name' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/product/product';
const params = new URLSearchParams({
page: 0,
pageLimit: 15,
branch_id: 1, // Required
store_id: 1,
'Kiểu dữ liệu[]': ['single', 'variable'],
strSearch: 'product_name'
});
const options = {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(`${url}?${params}`, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cho kết quả là danh sách các sản phẩm.
HTTP Request
GET https://open-api.nextx.vn/api/product/product?page=0&pageLimit=15&branch_id=1
Tham số (Biến)
Biến | Kiểu dữ liệu | Mô tả |
---|---|---|
pageLimit | integer | Số lượng item trên 1 trang. |
branch_id | integer | (bắt buộc) ID của chi nhánh |
store_id | integer | ID của cửa hàng |
Kiểu dữ liệu[] | array[string] | ác loại sản phẩm: single (sản phẩm thường), variable (sản phẩm có các biến thể), modifier (sản phẩm đi kèm), combo (sản phẩm kết hợp). |
strSearch | string | Từ khóa tìm kiếm |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON danh sách các nguồn khách.
Trả về JSON được cấu trúc như sau:
[
{
"id": 0,
"product_id": 0,
"variations_id": 0,
"product_fullname": "string",
"product_code": "string",
"barcode": "string",
"product_image": "string",
"qty_available": 0,
"unit": "string",
"selling_price": 0,
"brand_name": "string",
"category_name": "string",
"specification": "string",
"product_type": "string",
"weight": 0,
"length": "string",
"width": "string",
"height": "string",
"product_variation": {
"product_id": 0,
"variations_id": 0,
"unit_id": 0,
"price": 0
}
}
]
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Trả về JSON được cấu trúc như sau:
[
{
"meta": {
"message": "Token expired",
"status_code": 401
},
"data": []
}
]
Thêm Sản phẩm mới
Tạo một sản phẩm
Để thêm mới một sản phẩm, sử dụng đoạn code sau:
import requests
import json
url = "https://open-api.nextx.vn/api/product/product"
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
data = {
"name": "string",
"code": "",
"sku": "",
"brand_id": null,
"branch_id": 0,
"category_id": 0,
"media": [
{
"url": "string"
}
],
"purchase_price": 0,
"sell_price": 0,
"weight": 0,
"height": 0,
"width": 0,
"length": 0,
"qty_begin_stock": 0,
"begin_purchase_price": 0,
"specification": "",
"unit": {
"unit_base": {
"name": "string",
"is_direct_sell": "true"
},
"sub_unit": [
{
"name": "string",
"f_Convert": 1,
"price": 0,
"is_direct_sell": "true"
}
]
},
"Mô tả": "",
"product_custom_field1": "",
"product_custom_field2": "",
"composition_variation": [
{
"product_id": 0,
"variations_id": 0,
"quantity": 0,
"unit_id": 0,
"price": 0
}
]
}
response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json())
curl -X 'POST' \
'https://open-api.nextx.vn/api/product/product' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"name": "string",
"code": "",
"sku": "",
"brand_id": null,
"branch_id": 0,
"category_id": 0,
"media": [
{
"url": "string"
}
],
"purchase_price": 0,
"sell_price": 0,
"weight": 0,
"height": 0,
"width": 0,
"length": 0,
"qty_begin_stock": 0,
"begin_purchase_price": 0,
"specification": "",
"unit": {
"unit_base": {
"name": "string",
"is_direct_sell": "true"
},
"sub_unit": [
{
"name": "string",
"f_Convert": 1,
"price": 0,
"is_direct_sell": "true"
}
]
},
"Mô tả": "",
"product_custom_field1": "",
"product_custom_field2": "",
"composition_variation": [
{
"product_id": 0,
"variations_id": 0,
"quantity": 0,
"unit_id": 0,
"price": 0
}
]
}'
const fetch = require('node-fetch');
const url = 'https://api-docs.nextx.vn/api/product/product';
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
},
body: JSON.stringify({
name: "string",
code: "",
sku: "",
brand_id: null,
branch_id: 0,
category_id: 0,
media: [
{
url: "string"
}
],
purchase_price: 0,
sell_price: 0,
weight: 0,
height: 0,
width: 0,
length: 0,
qty_begin_stock: 0,
begin_purchase_price: 0,
specification: "",
unit: {
unit_base: {
name: "string",
is_direct_sell: "true"
},
sub_unit: [
{
name: "string",
f_Convert: 1,
price: 0,
is_direct_sell: "true"
}
]
},
Mô tả: "",
product_custom_field1: "",
product_custom_field2: "",
composition_variation: [
{
product_id: 0,
variations_id: 0,
quantity: 0,
unit_id: 0,
price: 0
}
]
})
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Đầu cuối này tạo một sản phẩm mới. Phản hồi bao gồm các chi tiết của sản phẩm vừa được tạo.
HTTP Request
POST https://api-docs.nextx.vn/api/product/product
Tham số (biến)
Tham số | Kiểu dữ liệu | Mô tả |
---|---|---|
name | string | Tên đầy đủ của sản phẩm |
code | string | Mã sản phẩm. Hệ thống sẽ tự động tạo mã nếu trường này để trống |
sku | string | Đơn vị lưu kho. Hệ thống sẽ tự động tạo mã nếu trường này để trống |
brand_id | integer | ID thương hiệu (tùy chọn) |
category_id | integer | ID danh mục chính |
category_ids | array | Các ID danh mục bổ sung |
unit_id | integer | ID đơn vị chính |
units | array | Các đơn vị bổ sung |
type | string | Loại sản phẩm |
purchase_price | number | Giá mua |
sell_price | number | Giá bán |
weight | number | Trọng lượng sản phẩm |
height | number | Chiều cao sản phẩm |
width | number | Chiều rộng sản phẩm |
length | number | Chiều dài sản phẩm |
qty_begin_stock | number | Số lượng hàng tồn kho ban đầu |
qty_warning_stock | number | Ngưỡng cảnh báo hàng tồn kho |
specification | string | Thông số kỹ thuật của sản phẩm |
description | string | Mô tả sản phẩm |
product_custom_field1 | string | Mẫu ghi chú (hóa đơn, đơn hàng) |
product_custom_field2 | string | Ghi chú nhập (cài đặt đầu vào, nhập hàng) |
composition_variation | array | Biến thể của sản phẩm |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON sau khi đã thêm một sản phẩm mới.
Trả về JSON được cấu trúc như sau:
{
"name": "string",
"code": "string",
"sku": "string",
"brand_id": null,
"category_id": 0,
"category_ids": [],
"unit_id": 0,
"units": [
{
"id": "string"
}
],
"Kiểu dữ liệu": "string",
"purchase_price": 0,
"sell_price": 0,
"weight": 0,
"height": 0,
"width": 0,
"length": 0,
"qty_begin_stock": 0,
"qty_warning_stock": 0
}
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Trả về JSON được cấu trúc như sau:
[
{
"meta": {
"message": "Token expired",
"status_code": 401
},
"data": []
}
]
Lấy chi tiết Sản phẩm
Để xem chi tiết một sản phẩm dựa trên Id của nó, ta dùng đoạn code sau:
import requests
url = "https://open-api.nextx.vn/api/product/product-detail"
params = {
'variation_id': 1,
'branch_id': 1,
'store_id': 1
}
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.get(url, headers=headers, params=params)
print(response.json())
curl -X 'GET' \
'https://open-api.nextx.vn/api/product/product-detail?variation_id=1&branch_id=1&store_id=1' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = 'https:/open-api.nextx.vn/api/product/product-detail?variation_id=1&branch_id=1&store_id=1';
const options = {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Đầu cuối này truy xuất chi tiết của một sản phẩm cụ thể bằng ID của nó.
HTTP Request
GET https://open-api.nextx.vn/api/product/product-detail?variation_id={}&branch_id={}&store_id={}
Tham số (Biên)
Tham số | Kiểu dữ liệu | Mô tả |
---|---|---|
variation_id | integer | ID của biến thể |
branch_id | integer | ID của chi nhánh |
store_id | integer | ID của kho |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON sau khi đã thêm một sản phẩm mới.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"id": 0,
"product_id": 0,
"variations.id": 0,
"product_name": "string",
"product_actual_name": "string",
"product_code": "string",
"product_sku": "string",
"product_image": "string",
"qty_available": 0,
"default_purchase_price": 0,
"default_sell_price": 0,
"product_type": "string",
"specification": "string",
"height": "string",
"width": "string",
"length": "string",
"weight": "string",
"computations": {
"product_id": 0,
"variations.id": 0,
"unit_id": 0,
"price": 0
}
],
"unit_id": "string",
"unit": "string",
"units": [
{
"id": 0,
"name": 0,
"is_base_unit": 0,
"multiplier": 0,
"price": 0
}
]
}
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"meta": {
"message": "Token expired",
"status_code": 401
},
"data": []
}
Cập nhật thông tin Sản phẩm
Để cập nhật thông tin Sản phẩm, sử dụng đoạn code sau:
import requests
url = "https://open-api.nextx.vn/api/product/product/1"
data = {
"name": "string",
"code": "",
"sku": "",
"brand_id": null,
"branch_id": 0,
"category_id": 0,
"media": [
{
"url": "string"
}
],
"purchase_price": 0,
"sell_price": 0,
"weight": 0,
"height": 0,
"width": 0,
"length": 0,
"qty_begin_stock": 0,
"begin_purchase_price": 0,
"specification": "",
"Mô tả": "",
"product_custom_field1": "",
"product_custom_field2": "",
"composition_variation": [
{
"product_id": 0,
"variations_id": 0,
"quantity": 0,
"unit_id": 0,
"price": 0
}
]
}
headers = {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.put(url, headers=headers, json=data)
print(response.json())
curl -X 'PUT' \
'https://open-api.nextx.vn/api/product/product/1' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"name": "string",
"code": "",
"sku": "",
"brand_id": null,
"branch_id": 0,
"category_id": 0,
"media": [
{
"url": "string"
}
],
"purchase_price": 0,
"sell_price": 0,
"weight": 0,
"height": 0,
"width": 0,
"length": 0,
"qty_begin_stock": 0,
"begin_purchase_price": 0,
"specification": "",
"Mô tả": "",
"product_custom_field1": "",
"product_custom_field2": "",
"composition_variation": [
{
"product_id": 0,
"variations_id": 0,
"quantity": 0,
"unit_id": 0,
"price": 0
}
]
}'
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/product/product/1';
const options = {
method: 'PUT',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'Authorization': 'Bearer your_access_token'
},
body: JSON.stringify({
name: "string",
code: "",
sku: "",
brand_id: null,
branch_id: 0,
category_id: 0,
media: [
{
url: "string"
}
],
purchase_price: 0,
sell_price: 0,
weight: 0,
height: 0,
width: 0,
length: 0,
qty_begin_stock: 0,
begin_purchase_price: 0,
specification: "",
Mô tả: "",
product_custom_field1: "",
product_custom_field2: "",
composition_variation: [
{
product_id: 0,
variations_id: 0,
quantity: 0,
unit_id: 0,
price: 0
}
]
})
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Đầu cuối này cập nhật chi tiết của một sản phẩm cụ thể. Hãy đảm bảo thay thế tất cả thông tin của sản phẩm cần cập nhật bằng thông tin của bạn.
HTTP Request
PUT https://open-api.nextx.vn/api/product/product/{id}
Tham số (Biến)
Tham số Đường đi (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
id | integer | ID của sản phẩm |
Tham số yêu cầu (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
name | string | Tên đầy đủ của sản phẩm |
code | string | Mã sản phẩm. Hệ thống sẽ tự động tạo mã nếu trường này để trống |
sku | string | Đơn vị lưu kho. Hệ thống sẽ tự động tạo mã nếu trường này để trống |
brand_id | integer | ID thương hiệu (tùy chọn) |
category_id | integer | ID danh mục chính |
category_ids | array | Các ID danh mục bổ sung |
unit_id | integer | ID đơn vị chính |
units | array | Các đơn vị bổ sung |
type | string | Loại sản phẩm |
purchase_price | number | Giá mua |
sell_price | number | Giá bán |
weight | number | Trọng lượng sản phẩm |
height | number | Chiều cao sản phẩm |
width | number | Chiều rộng sản phẩm |
length | number | Chiều dài sản phẩm |
qty_begin_stock | number | Số lượng hàng tồn kho ban đầu |
qty_warning_stock | number | Ngưỡng cảnh báo hàng tồn kho |
specification | string | Thông số kỹ thuật của sản phẩm |
description | string | Mô tả sản phẩm |
product_custom_field1 | string | Mẫu ghi chú (hóa đơn, đơn hàng) |
product_custom_field2 | string | Ghi chú nhập (cài đặt đầu vào, nhập hàng) |
composition_variation | array | Biến thể của sản phẩm |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON cập nhật thông tin sản phẩm.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 0,
"message": "string"
}
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"name": "string",
"code": "",
"sku": "",
"brand_id": null,
"branch_id": 0,
"category_id": 0,
"media": [
{
"url": "string"
}
],
"purchase_price": 0,
"sell_price": 0,
"weight": 0,
"height": 0,
"width": "",
"length": "",
"qty_begin_stock": 0,
"begin_purchase_price": 0,
"specification": "",
"Mô tả": "",
"product_custom_field1": "",
"product_custom_field2": "",
"composition_variation": [
{
"product_id": 0,
"variations_id": 0,
"quantity": 0,
"unit_id": 0,
"price": 0
}
]
}
Liên hệ (LEAD)
Lấy danh sách Lead
Để lấy danh sách tất cả các Lead, sử dụng đoạn code sau:
import requests
url = "https://open-api.nextx.vn/api/contact/contact"
params = {
"page": 0,
"pageLimit": 0,
"branch_id": 0,
"category_id": 0,
"sttsearch": " ",
"from_date": " ",
"to_date": " "
}
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.get(url, headers=headers, params=params)
print(response.json())
curl -X 'GET' \
'https://open-api.nextx.vn/api/contact/contact?page=0&pageLimit=15&branch_id=1&category_id=2&sttsearch=search_term&from_date=2022-01-01&to_date=2022-12-31' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/contact/contact';
const params = new URLSearchParams({
page: 0,
pageLimit: 0,
branch_id: 0,
category_id: 0,
sttsearch: ' ',
from_date: ' ',
to_date: ' '
});
const options = {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(`${url}?${params}`, options)a
Đầu cuối này truy xuất danh sách các khách hàng tiềm năng. Hãy đảm bảo thay thế tất cả thông tin của danh sách khách hàng tiềm năng bằng thông tin của bạn.
HTTP Request
GET https://open-api.nextx.vn/api/contact/contact
Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
page | integer | Số trang của danh sách (Bắt đầu từ 0) |
pageLimit | integer | Số lượng mục trên mỗi trang, mặc định 15 mục, tối đa 100 mục (mặc định: 15) |
branch_id | integer | ID chi nhánh |
category_id | integer | ID danh mục chính |
sttsearch | string | Tìm kiếm cho tên, mã, hoặc số điện thoại của khách hàng tiềm năng |
from_date | string | Bộ lọc từ ngày bắt đầu nhận khách hàng tiềm năng, định dạng Năm-Tháng-Ngày |
units | string | Bộ lọc đến ngày kết thúc nhận khách hàng tiềm năng, định dạng Năm-Tháng-Ngày |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON danh sách Lead.
Lệnh trên trả về JSON được cấu trúc như sau:
[
{
"id": 0,
"categories": [
{
"id": 0,
"name": "string",
"parent_id": 0,
"picture": "string",
"Mô tả": "string",
"childs": [
{
"id": 0,
"name": "string",
"parent_id": 0,
"picture": "string",
"Mô tả": "string"
}
]
}
],
"employee": {
"id": 0,
"code": "string",
"first_name": "string",
"last_name": "string",
"avatar": "string"
},
"branch": {
"id": 0,
"name": "string",
"code": "string",
"tel": "string",
"fax": "string",
"avatar": "string",
"address": "string",
"Mô tả": "string"
},
"resources": [
{
"id": 0,
"name": "string"
}
],
"name": "",
"mobile": "",
"email": "",
"website": "",
"address": "",
"status": "",
"date_assigned": "2024-08-03",
"code": "",
"birthday": "2024-08-03",
"sex": "male",
"Mô tả": "",
"avatar": "",
"account_name": "",
"account_address": "",
"account_no": ""
}
]
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"meta": {
"message": "Token expired",
"status_code": 401
},
"data": []
}
Thêm Lead mới
Để thêm một Lead mới, sử dụng đoạn code sau
import requests
import json
url = "https://open-api.nextx.vn/api/contact/contact"
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
data = {
"employee_id": null,
"branch_id": null,
"resources": [
{
"id": 0,
"name": "string"
}
],
"name": "",
"mobile": "",
"email": "",
"website": "",
"address": "",
"status": "",
"date_assigned": "2024-08-03",
"code": "",
"birthday": "2024-08-03",
"sex": "male",
"Mô tả": "",
"avatar": "",
"account_name": "",
"account_address": "",
"account_no": ""
}
response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json())
curl -X 'POST' \
'https://open-api.nextx.vn/api/contact/contact' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"employee_id": null,
"branch_id": null,
"resources": [
{
"id": 0,
"name": "string"
}
],
"name": "",
"mobile": "",
"email": "",
"website": "",
"address": "",
"status": "",
"date_assigned": "2024-08-13",
"code": "",
"birthday": "2024-08-13",
"sex": "male",
"Mô tả": "",
"avatar": "",
"account_name": "",
"account_address": "",
"account_no": ""
}'
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/contact/contact';
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
},
body: JSON.stringify({
employee_id: null,
branch_id: null,
resources: [
{
id: 0,
name: " "
}
],
name: "",
mobile: "",
email: "",
website: "",
address: "",
status: "",
date_assigned: "2024-08-03",
code: "",
birthday: "2024-08-03",
sex: "male",
Mô tả: "",
avatar: "",
account_name: "",
account_address: "",
account_no: ""
})
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Đầu cuối này tạo một liên hệ khách hàng tiềm năng mới.
HTTP Request
POST https://open-api.nextx.vn/api/contact/contact
Tham số (Biến)
Body Request Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
employee_id | integer | ID của nhân viên |
branch_id | integer | ID chi nhánh |
resources | array | Nguồn Lead |
name | string | Tên Lead |
mobile | number | Số điện thoại di động |
string | ||
website | string | website |
address | string | Địa chỉ của lead |
status | string | trạng thái |
date_assigned | string | ngày được chỉ định Lead |
code | integer | Mã code của Lead |
birthday | string | Ngày sinh của Lead |
sex | string | Giới tính |
description | string | Ghi chú và mô tả của Lead |
avatar | string | URL hoặc đường dẫn đến hình đại diện của Lead |
account_name | string | Tên tài khoản |
account_address | string | Địa chỉ tài khoản |
account_no | integer | Số tài khoản |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON Danh sách lead.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"employee_id": null,
"branch_id": null,
"resources": [
{
"id": 0,
"name": "string"
}
],
"name": "",
"mobile": "",
"email": "",
"website": "",
"address": "",
"status": "",
"date_assigned": "2024-08-03",
"code": "",
"birthday": "2024-08-03",
"sex": "male",
"Mô tả": "",
"avatar": "",
"account_name": "",
"account_address": "",
"account_no": ""
}
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"meta": {
"message": "Token expired",
"status_code": 401
},
"data": []
}
Lấy thông tin chi tiết Lead
Để lấy thông tin chi tiết của Lead, ta sử dụng đoạn code sau:
import requests
url = "https://open-api.nextx.vn/api/contact/contact/1" # Replace 1 with the actual lead ID
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.get(url, headers=headers)
print(response.json())
curl -X 'GET' \
'https://open-api.nextx.vn/api/contact/contact/1' \ # Replace 1 with the actual lead ID
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/contact/contact/1'; // Replace 1 with the actual lead ID
const options = {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Đầu cuối này truy xuất thông tin chi tiết về một khách hàng tiềm năng cụ thể, bao gồm các liên hệ liên quan và nhân viên được chỉ định.
HTTP Request
GET https://open-api.nextx.vn/api/contact/contact/{id}
Tham số đường dẫn (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
id | integer | ID của Lead (bắt buộc) |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON danh sách lead.
Ví dụ phản hồi:
{
"id": 0,
"contact_id": [
{
"id": 0,
"name": "string",
"parent_id": 0,
"Mô tả": "string",
"childs": [
{
"id": 0,
"name": "string",
"parent_id": 0,
"picture": "string",
"Mô tả": "string"
}
]
}
],
"employee": {
"id": 0,
"code": "string",
"first_name": "string",
"last_name": "string",
"email": "string",
"phone": "string"
}
}
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"meta": {
"message": "Token expired",
"status_code": 401
},
"data": []
}
Cập nhật thông tin chi tiết Lead
Để cập nhậ thông tin của Lead, ta sử dụng đoạn code sau:
import requests
import json
url = "https://api-docs.nextx.vn/api/contact/contact/1" # Replace 1 with the actual lead ID
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
data = {
"employee_id": null,
"branch_id": null,
"resources": [
{
"id": 0,
"name": "string"
}
],
"name": "",
"mobile": "",
"email": "",
"website": "",
"address": "",
"status": "",
"date_assigned": "2024-08-13",
"code": "",
"birthday": "2024-08-13",
"sex": "male",
"Mô tả": "",
"avatar": "",
"account_name": "",
"account_address": "",
"account_no": ""
}
response = requests.put(url, headers=headers, data=json.dumps(data))
print(response.json())
curl -X 'PUT' \
'https://open-api.nextx.vn/api/contact/contact/1' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"employee_id": null,
"branch_id": null,
"resources": [
{
"id": 0,
"name": "string"
}
],
"name": "",
"mobile": "",
"email": "",
"website": "",
"address": "",
"status": "",
"date_assigned": "2024-08-13",
"code": "",
"birthday": "2024-08-13",
"sex": "male",
"Mô tả": "",
"avatar": "",
"account_name": "",
"account_address": "",
"account_no": ""
}'
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/contact/contact/1'; // Replace 1 with the actual lead ID
const options = {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
},
body: JSON.stringify({
employee_id: null,
branch_id: null,
resources: [
{
id: 0,
name: "string"
}
],
name: '',
mobile: '',
email: '',
website: '',
address: '',
status: '',
date_assigned: '2024-08-13',
code: '',
birthday: '2024-08-13',
sex: 'male',
Mô tả: '',
avatar: '',
account_name: '',
account_address: '',
account_no: ''
})
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này dùng để cập nhật thông tin của một Lead
HTTP Request
PUT https://open-api.nextx.vn/api/contact/contact/{id}
Path Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
id | integer | ID của Lead cần update (bắt buộc) |
Yêu cầu
Yêu cầu mẫu:
{
"employee_id": null,
"branch_id": null,
"name": {
"full": "string",
"first": "string",
"last": "string"
},
"code": "string",
"email": "string",
"mobile": "string",
"phone": "string",
"status": "string",
"date_assigned": "2024-08-03",
"date_next": "2024-08-03",
"birthday": "2024-08-03",
"sex": "string",
"Mô tả": "string",
"avatar": "string",
"account_type": "string",
"account_name": "string",
"account_no": "string"
}
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON danh sách Lead. Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"meta": {
"message": "Token expired",
"status_code": 401
},
"data": []
}
Khách hàng (Khách hàng hoặc Nhà cung cấp)
Lấy danh sách Khách hàng
Để lấy danh sách khách hàng, sử dụng đoạn code sau:
import requests
url = "https://open-api.nextx.vn/api/customer/customer"
params = {
"page": 0,
"pageLimit": 0,
"branch_id": 0,
"category_id": 0,
"sttsearch": " ",
"from_date": " ",
"to_date": " "
}
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.get(url, headers=headers, params=params)
print(response.json())
curl -X 'GET' \
'https://open-api.nextx.vn/api/customer/customer"
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/customer/customer";
const params = new URLSearchParams({
page: 0,
pageLimit: 0,
branch_id: 0,
category_id: 0,
sttsearch: ' ',
from_date: ' ',
to_date: ' '
});
const options = {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(`${url}?${params}`, options)a
Đầu cuối này truy xuất danh sách các khách hàng tiềm năng. Hãy đảm bảo thay thế tất cả thông tin của danh sách khách hàng tiềm năng bằng thông tin của bạn.
HTTP Request
GET https://open-api.nextx.vn/api/customer/customer
Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
page | integer | Thứ tự trang (bắt đầu từ 0) |
pageLimit | integer | Số lượng mục trên mỗi trang, mặc định 15 mục, tối đa 100 mục (mặc định: 15) |
branch_id | integer | ID chi nhánh |
category_id | integer | ID danh mục chính |
sttsearch | string | Thuật ngữ tìm kiếm cho tên, mã, hoặc số điện thoại của khách hàng tiềm năng |
from_date | string | Bộ lọc từ ngày bắt đầu nhận khách hàng tiềm năng, định dạng Năm-Tháng-Ngày |
units | string | Bộ lọc đến ngày kết thúc nhận khách hàng tiềm năng, định dạng Năm-Tháng-Ngày |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON Danh sách khách hàng.
Lệnh trên trả về JSON được cấu trúc như sau:
[
[
{
"id": 0,
"name": "string",
"code": "string",
"mobile": "string",
"gender": "string",
"birthday": "2024-08-03",
"address": "string",
"Mô tả": "string",
"day_over_due": 0,
"opening_balance": 0,
"credit_limit": 0,
"resources": [
{
"id": 0,
"name": "string"
}
],
"account_name": "",
"account_address": "",
"account_no": ""
}
]
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"meta": {
"message": "Token expired",
"status_code": 401
},
"data": []
}
Thêm Khách hàng/ NCC mới
Để thêm mới khách hàng hoặc nhà cung cấp, hãy sử dụng đoạn code sau:
import requests
url = "https://open-api.nextx.vn/api/customer/customer"
payload = {
"avatar": "",
"contact_id": "",
"name": "string",
"mobile": "",
"email": "",
"address": "",
"tax_number": "",
"Kiểu dữ liệu": "customer",
"customer_group_id": None,
"birthday": "2024-08-06",
"gender": 0,
"opening_balance": 0,
"credit_limit": 0,
"per_turn_debt": None,
"branch_id": None,
"resources": [
{
"id": 0,
"name": "string"
}
],
"account_name": "",
"account_address": "",
"account_no": ""
}
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token',
'Content-Type': 'application/json'
}
response = requests.post(url, headers=headers, json=payload)
print(response.json())
curl -X 'POST' \
'https://open-api.nextx.vn/api/customer/customer' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token' \
-H 'Content-Type: application/json' \
-d '{
"avatar": "",
"contact_id": "",
"name": "string",
"mobile": "",
"email": "",
"address": "",
"tax_number": "",
"Kiểu dữ liệu": "customer",
"customer_group_id": null,
"birthday": "2024-08-06",
"gender": 0,
"opening_balance": 0,
"credit_limit": 0,
"per_turn_debt": null,
"branch_id": null,
"resources": [
{
"id": 0,
"name": "string"
}
],
"account_name": "",
"account_address": "",
"account_no": ""
}'
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/customer/customer';
const payload = {
avatar: "",
contact_id: "",
name: "string",
mobile: "",
email: "",
address: "",
tax_number: "",
Kiểu dữ liệu: "customer",
customer_group_id: null,
birthday: "2024-08-06",
gender: 0,
opening_balance: 0,
credit_limit: 0,
per_turn_debt: null,
branch_id: null,
resources: [
{
id: 0,
name: "string"
}
],
account_name: "",
account_address: "",
account_no: ""
};
const options = {
method: 'POST',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token',
'Content-Type': 'application/json'
},
body: JSON.stringify(payload)
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này dùng để thêm mới một khách hàng/ Nhà cung cấp
HTTP Request
POST https://open-api.nextx.vn/api/customer/customer
Tham số (Biến)
Request Body Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
avatar | string | URL hình đại diện của khách hàng |
contact_id | string | ID liên hệ của khách hàng |
name | string | Tên của khách hàng |
mobile | string | Số điện thoại di động của khách hàng |
string | Địa chỉ email của khách hàng | |
address | string | Địa chỉ của khách hàng |
tax_number | string | Số thuế của khách hàng |
type | string | Kiểu dữ liệu, có thể là "customer" hoặc "supplier" |
customer_group_id | integer | ID của nhóm khách hàng (tùy chọn) |
birthday | string | Ngày sinh của khách hàng, định dạng Năm-Tháng-Ngày |
gender | integer | Giới tính của khách hàng |
opening_balance | integer | Số dư mở đầu của khách hàng |
credit_limit | integer | Hạn mức tín dụng của khách hàng |
per_turn_debt | integer | Nợ từng kỳ của khách hàng (tùy chọn) |
branch_id | integer | ID chi nhánh liên quan đến khách hàng |
resources | array | Danh sách tài nguyên liên quan đến khách hàng |
account_name | string | Tên tài khoản của khách hàng |
account_address | string | Địa chỉ tài khoản của khách hàng |
account_no | string | Số tài khoản của khách hàng |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON về thêm mới một khách hàng
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 0,
"message": "string"
}
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"meta": {
"message": "Token expired",
"status_code": 401
},
"data": []
}
Lấy thông tin chi tiết khách hàng
Để lấy thông tin chi tiết khách hàng/ nhà cung cấp, sử dụng đoạn code sau:
import requests
url = "https://open-api.nextx.vn/api/customer/customer/{id}"
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.get(url, headers=headers)
print(response.json())
curl -X 'GET' \
'https://open-apinextx.vn/api/customer/customer/{id}' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/customer/customer/{id}';
const options = {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này sẽ truy xuất đến thông tin chi tiết của một khách hàng và nhà cung cấp.
HTTP Request
GET https://open-api.nextx.vn/api/customer/customer/{id}
Tham số (Biến)
Path Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
id | integer | ID của khách hàng hoặc nhà cung cấp |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON kết quả sau khi cập nhật.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"id": 0,
"employers": {
"id": 0,
"code": "string",
"first_name": "string",
"last_name": "string",
"avatar": "string"
},
"avatar": "",
"contact_id": 0,
"name": "string",
"code": "string",
"first_name": "string",
"last_name": "string",
"mobile": "string",
"address": "string",
"Mô tả": "",
"fax_number": "",
"Kiểu dữ liệu": "customer",
"customer_group_id": null,
"birthday": "2024-08-06",
"gender": 0,
"opening_balance": 0,
"credit_limit": 0,
"pay_term_number": null,
"pay_term": "",
"branch_id": null,
"resources": [
{
"id": 0,
"name": "string"
}
]
}
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"meta": {
"message": "Token expired",
"status_code": 401
},
"data": []
}
Cập nhật thông tin khách hàng
Để cập nhật thông tin khách hàng và nhà cung cấp, hãy sử dụng đoạn mã sau:
import requests
import json
url = "https:/open-api.nextx.vn/api/customer/customer/1" # Replace 1 with the actual customer ID
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
data = {
"avatar": "",
"contact_id": "",
"name": "string",
"mobile": "",
"email": "",
"address": "",
"tax_number": "",
"Kiểu dữ liệu": "customer",
"customer_group_id": None,
"birthday": "2024-08-06",
"gender": 0,
"opening_balance": 0,
"credit_limit": 0,
"per_turn_debt": None,
"branch_id": None,
"resources": [
{
"id": 0,
"name": "string"
}
],
"account_name": "",
"account_address": "",
"account_no": ""
}
response = requests.put(url, headers=headers, data=json.dumps(data))
print(response.json())
curl -X 'PUT' \
'https://open-api.nextx.vn/api/customer/customer/1' \ # Replace 1 with the actual customer ID
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer your_access_token' \
-d '{
"avatar": "",
"contact_id": "",
"name": "string",
"mobile": "",
"email": "",
"address": "",
"tax_number": "",
"Kiểu dữ liệu": "customer",
"customer_group_id": null,
"birthday": "2024-08-06",
"gender": 0,
"opening_balance": 0,
"credit_limit": 0,
"per_turn_debt": null,
"branch_id": null,
"resources": [
{
"id": 0,
"name": "string"
}
],
"account_name": "",
"account_address": "",
"account_no": ""
}'
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/customer/customer/1'; // Replace 1 with the actual customer ID
const options = {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
},
body: JSON.stringify({
avatar: "",
contact_id: "",
name: "string",
mobile: "",
email: "",
address: "",
tax_number: "",
Kiểu dữ liệu: "customer",
customer_group_id: null,
birthday: "2024-08-06",
gender: 0,
opening_balance: 0,
credit_limit: 0,
per_turn_debt: null,
branch_id: null,
resources: [
{
id: 0,
name: "string"
}
],
account_name: "",
account_address: "",
account_no: ""
})
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này sẽ cho phép thay đổi thông tin chi tiết của khách hàng và nhà cung cấp.
HTTP Request
PUT https://open-api.nextx.vn/api/customer/customer/{id}
Path Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
id | integer | ID của khách hàng / NCC (bắt buộc) |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON kết quả sau khi cập nhật.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"avatar": "",
"contact_id": "",
"name": "string",
"mobile": "",
"email": "",
"address": "",
"Mô tả": "",
"tax_number": "",
"Kiểu dữ liệu": "customer",
"customer_group_id": null,
"employee_id": null,
"birthday": "2024-08-06",
"gender": "1",
"opening_balance": 0,
"credit_limit": 0,
"pay_term_number": null,
"branch_id": null,
"resources": [
{
"id": 0,
"name": "string"
}
],
"account_name": "",
"account_address": "",
"account_no": ""
}
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"meta": {
"message": "Token expired",
"status_code": 401
},
"data": []
}
Đơn đặt hàng
Lấy danh sách đơn đặt
Để lấy danh sách đơn đặt, dùng đoạn code sau:
import requests
url = "https://open-api.nextx.vn/api/purchase/purchase"
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
params = {
'page': 0,
'pageLimit': 15,
'branch_id': 1, # Required
'store_id': 1,
'Kiểu dữ liệu[]': ['single', 'variable'],
'strSearch': 'product_name'
}
response = requests.get(url, headers=headers, params=params)
print(response.json())
curl -X 'GET' \
'https://https://open-api.nextx.vn/api/purchase/purchase'
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/purchase/purchase';
const params = new URLSearchParams({
page: 0,
pageLimit: 15,
branch_id: 1, // Required
store_id: 1,
'Kiểu dữ liệu[]': ['single', 'variable'],
strSearch: 'product_name'
});
const options = {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(`${url}?${params}`, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối trên cho ra một danh sách các đơn đặt hàng
HTTP Request
GET /https://open-api.nextx.vn/api/purchase/purchase
Query Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
page | integer | Trang của danh sách (Bắt đầu từ 0) |
pageLimit | integer | Số lượng mục trên mỗi trang, mặc định 15 mục, tối đa 100 mục (mặc định: 15) |
branch_id | integer | ID của chi nhánh (bắt buộc) |
store_id | integer | ID của kho |
Kiểu dữ liệu[] | array[string] | loại sản phẩm: single (sản phẩm thường- đơn), variable (sản phẩm có các biến thể), modifier (add-on product), combo (sản phẩm đi theo combo) |
strSearch | string | Thuật ngữ tìm kiếm cho tên, mã code, hoặc SKU |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON with với danh sách các đơn đặt hàng.
Phản hồi mẫu:
[
{
"id": 0,
"transaction_date": "2024-08-06",
"invoice_no": "string",
"customer_id": 0,
"customer_name": "string",
"customer_mobile": "string",
"customer_address": "string",
"customer_description": "string",
"payment_status": "string",
"final_total": "string",
"tax_amount": "string",
"discount_amount": "string",
"discount_type": "string",
"total_before_tax": "string",
"shipping_status": "ordered",
"additional_notes": "string",
"staff_note": "string",
"added_by": {
"id": 0,
"name": "string",
"firstname": "string",
"lastname": "string"
},
"total_paid": "string",
"branch_name": "string",
"total_items": 0,
"approved_status": "string"
}
]
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"meta": {
"message": "Token expired",
"status_code": 401
},
"data": []
}
Thêm mới đơn đặt hàng
Để thêm mới đơn đặt hàng, sử dụng đoạn code sau:
import requests
url = "https://open-api.nextx.vn/api/purchase/purchase"
headers = {
"Authorization": "Bearer YOUR_TOKEN",
"Content-Type": "application/json"
}
data = {
"invoice_no": "",
"transaction_date": "2024-08-13",
"customer_id": 0,
"branch_id": 0,
"store_id": 0,
"discount_type": "fixed",
"discount_amount": 0,
"total_before_tax": 0,
"tax_amount": 0,
"final_total": 0,
"shipping_status": "ordered",
"approved_status": false,
"additional_notes": "",
"staff_note": "",
"products": [
{
"id_sort": 0,
"product_id": 0,
"variation_id": 0,
"unit_price": 0,
"unit_id": 0,
"f_convert": 1,
"f_convert1": 1,
"f_convert2": 1,
"f_convert3": 1,
"tax_id": null,
"item_tax": 0,
"quantity": 0,
"sell_line_note": "",
"line_discount_type": "fixed",
"line_discount_amount": 0
}
],
"payment": [
{
"note": "",
"payment_type": "in_come",
"method": "cash",
"amount": 0,
"account_id": null
}
]
}
response = requests.post(url, headers=headers, json=data)
curl -X 'POST' \
'https://open-api.nextx.vn/api/purchase/purchase' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"invoice_no": "",
"transaction_date": "2024-08-13",
"customer_id": 0,
"branch_id": 0,
"store_id": 0,
"discount_type": "fixed",
"discount_amount": 0,
"total_before_tax": 0,
"tax_amount": 0,
"final_total": 0,
"shipping_status": "ordered",
"approved_status": false,
"additional_notes": "",
"staff_note": "",
"products": [
{
"id_sort": 0,
"product_id": 0,
"variation_id": 0,
"unit_price": 0,
"unit_id": 0,
"f_convert": 1,
"f_convert1": 1,
"f_convert2": 1,
"f_convert3": 1,
"tax_id": null,
"item_tax": 0,
"quantity": 0,
"sell_line_note": "",
"line_discount_type": "fixed",
"line_discount_amount": 0
}
],
"payment": [
{
"note": "",
"payment_type": "in_come",
"method": "cash",
"amount": 0,
"account_id": null
}
]
}'
const axios = require('axios');
const url = 'https://open-api.nextx.vn/api/purchase/purchase';
const headers = {
'Authorization': 'Bearer YOUR_TOKEN',
'Content-Type': 'application/json'
};
const data = {
invoice_no: "",
transaction_date: "2024-08-13",
customer_id: 0,
branch_id: 0,
store_id: 0,
discount_type: "fixed",
discount_amount: 0,
total_before_tax: 0,
tax_amount: 0,
final_total: 0,
shipping_status: "ordered",
approved_status: false,
additional_notes: "",
staff_note: "",
products: [
{
id_sort: 0,
product_id: 0,
variation_id: 0,
unit_price: 0,
unit_id: 0,
f_convert: 1,
f_convert1: 1,
f_convert2: 1,
f_convert3: 1,
tax_id": null,
item_tax: 0,
quantity: 0,
sell_line_note: "",
line_discount_type: "fixed",
line_discount_amount: 0
}
],
payment: [
{
note: "",
payment_type: "in_come",
method: "cash",
amount: 0,
account_id: null
}
]
};
axios.post(url, data, { headers })
.then(response => {
console.log('Purchase order created successfully!');
})
.catch(error => {
console.error('Error:', error.response.data);
});
Điểm đầu cuối này cho phép thêm mới một đơn đặt hàng.
HTTP Request
POST https://open-api.nextx.vn/api/purchase/purchase
Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
transaction_date | string | ngày giao dịch |
customer_id | integer | ID khách hàng |
store_id | integer | ID của kho |
payment_method | string | Phương thức thanh toán |
discount_amount | number | Giá trị giảm giá |
final_total | number | Tổng hóa đơn |
is_paid | boolean | Trạng thái thanh toán (true/false) |
products | array | Danh sách sản phẩm trong hóa đơn |
products[].id | integer | ID sản phẩm |
products[].sort | integer | Loại sản phẩm |
products[].unit_price | number | Giá tiền sản phẩm |
products[].qty | number | Số lượng sản phẩm |
products[].total_price | number | Tổng tiền của sản phẩm |
products[].discount | number | Giảm giá cho sản phẩm |
products[].comment | string | Ghi chú cho sản phẩm |
### Phản hồi Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON .
Phản hồi mẫu:
{
"message": "Purchase order created successfully",
"data": {
"invoice_no": "",
"transaction_date": "2024-08-07",
"customer_id": 0,
"branch_id": 0,
"store_id": 0,
"discount_type": "fixed",
"discount_amount": 0,
"total_before_tax": 0,
"tax_amount": 0,
"final_total": 0,
"shipping_status": "ordered",
"approved_status": false,
"additional_notes": "",
"staff_note": "",
"products": [
{
"id_sort": 0,
"product_id": 0,
"variation_id": 0,
"unit_price": 0,
"unit_id": 0,
"f_convert": 1,
"f_convert1": 1,
"f_convert2": 1,
"f_convert3": 1,
"tax_id": null,
"item_tax": 0,
"quantity": 0,
"sell_line_note": "",
"line_discount_type": "fixed",
"line_discount_amount": 0
}
],
"payment": [
{
"note": "",
"payment_type": "in_come",
"method": "cash",
"amount": 0,
"account_id": null
}
]
}
]
}
}
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"meta": {
"message": "Token has expired",
"status_code": 401
},
"data": []
}
Cập nhận trạng thái giao hàng
Để cập nhận trạng thái giao hàng, sử dụng đoạn code sau:
import requests
import json
url = "https://open-api.nextx.vn/api/purchase/update-shipping/{id}"
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token',
'Content-Type': 'application/json'
}
payload = {
"comment": "string",
"shipping_status": "ordered"
}
response = requests.put(url, headers=headers, data=json.dumps(payload))
print(response.json())
curl -X 'PUT' \
'https://open-api.nextx.vn/api/purchase/update-shipping/{id}' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token' \
-H 'Content-Type: application/json' \
-d '{
"comment": "string",
"shipping_status": "ordered"
}'
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/purchase/update-shipping/{id}';
const options = {
method: 'PUT',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"comment": "string",
"shipping_status": "ordered"
})
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối trên cho phép cập nhật trạng thái giao hàng của đơn đặt hàng
HTTP Request
PUT https://open-api.nextx.vn/api/purchase/update-shipping/{id}
Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
id | integer | ID đơn hàng |
body | object | Yêu cầu đầu vào bao gồm trạng thái giao hàng và ghi chú |
comment | string | Bình luận về đơn đặt hàng |
shipping_status | string | Trạng thái giao hàng mới |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON với một thông điệp trạng thái.
Lệnh trên trả về JSON được cấu trúc như sau:
Example Value
Model
{
"comment": "string",
"shipping_status": "ordered"
}
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"meta": {
"message": "Token expired",
"status_code": 401
},
"data": []
}
Đơn bán hàng
Lấy danh sách đơn bán hàng
Để lấy danh sách đơn bán hàng, sử dụng đoạn code sau:
import requests
url = "https://open-api.nextx.vn/api/sell/sell"
params = {
"page": 0,
"pageLimit": 0,
"branch_id": 0,
"category_id": 0,
"sttsearch": " ",
"from_date": " ",
"to_date": " "
}
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.get(url, headers=headers, params=params)
print(response.json())
curl -X 'GET' \
'https://open-api.nextx.vn/api/sell/sell'
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/sell/sell';
const params = new URLSearchParams({
page: 0,
pageLimit: 0,
branch_id: 0,
category_id: 0,
sttsearch: ' ',
from_date: ' ',
to_date: ' '
});
const options = {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(`${url}?${params}`, options)a
Điểm đầu cuối trên cho kết quả là danh sách các đơn bán hàng,
HTTP Request
GET https://open-api.nextx.vn/api/sell/sell
Query Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
page | integer | Số trang của danh sách (Bắt đầu từ 0) |
pageLimit | integer | Số lượng mục trên mỗi trang, mặc định 15 mục, tối đa 100 mục (mặc định: 15) |
branch_id | integer | ID của chi nhánh (bắt buộc) |
customer_id | integer | ID của khách hàng |
strSearch | string | Thuật ngữ tìm kiếm cho tên, mã code, hoặc SKU |
from_date | string | Filter from transaction start date, format Năm-Tháng-Ngày |
to_date | string | Filter from transaction end date, format Năm-Tháng-Ngày |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON với danh sách các đơn bán hàng.
Lệnh trên cho kết quả JSON như sau:
[
{
"id": 0,
"transaction_date": "2024-08-07",
"invoice_no": "string",
"customer_id": 0,
"customer_code": "string",
"customer_name": "string",
"customer_mobile": "string",
"customer_address": "string",
"customer_description": "string",
"payment_status": "due",
"final_total": "string",
"tax_amount": "string",
"total_before_tax": "string",
"total_discount": "string",
"total_surcharge": "string",
"shipping_status": "ordered",
"additional_notes": "string",
"staff_note": "string",
"added_by": "string",
"total_paid": 0,
"branch_name": "string",
"status": "final",
"purchase_invoice_no": "string"
}
]
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"meta": {
"message": "Token expired",
"status_code": 401
},
"data": []
}
Thêm mới đơn bán hàng
Để thêm mới một đơn bán hàng, dùng đoạn code sau:
import requests
url = "https://open-api.nextx.vn/api/sell/sell"
payload = {
"transaction_date": "2024-08-08",
"store_id": null,
"customer_id": null,
"price_book_id": null,
"discount_type": "fixed",
"discount_amount": 0,
"total_before_tax": 0,
"tax_amount": 0,
"final_total": 0,
"additional_notes": "",
"staff_note": "",
"user_id": 0,
"products": [
{
"id_sort": 0,
"product_id": 0,
"variation_id": 0,
"unit_price": 0,
"unit_id": 0,
"f_convert": 1,
"f_convert1": 1,
"f_convert2": 1,
"f_convert3": 1,
"tax_id": null,
"item_tax": 0,
"quantity": 0,
"sell_line_note": "",
"line_discount_type": "fixed",
"line_discount_amount": 0
}
],
"payment": [
{
"note": "",
"payment_type": "in_come",
"method": "cash",
"amount": 0,
"account_id": null
}
],
"surcharges": 0,
"invoice_no": "",
"branch_id": null
}
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token',
'Content-Type': 'application/json'
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
curl -X 'POST' \
'https://open-api.nextx.vn/api/sell/sell' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"transaction_date": "2024-08-13",
"store_id": null,
"customer_id": null,
"price_book_id": null,
"discount_type": "fixed",
"discount_amount": 0,
"total_before_tax": 0,
"tax_amount": 0,
"final_total": 0,
"additional_notes": "",
"staff_note": "",
"user_id": 0,
"products": [
{
"id_sort": 0,
"product_id": 0,
"variation_id": 0,
"unit_price": 0,
"unit_id": 0,
"f_convert": 1,
"f_convert1": 1,
"f_convert2": 1,
"f_convert3": 1,
"tax_id": null,
"item_tax": 0,
"quantity": 0,
"sell_line_note": "",
"line_discount_type": "fixed",
"line_discount_amount": 0
}
],
"payment": [
{
"note": "",
"payment_type": "in_come",
"method": "cash",
"amount": 0,
"account_id": null
}
],
"surcharges": 0,
"invoice_no": "",
"branch_id": null
}'
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/sell/sell';
const options = {
method: 'POST',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token',
'Content-Type': 'application/json'
},
body: JSON.stringify({
transaction_date: "2024-08-08",
store_id: null,
customer_id: null,
price_book_id: null,
discount_type: "fixed",
discount_amount: 0,
total_before_tax: 0,
tax_amount: 0,
final_total: 0,
additional_notes: "",
staff_note: "",
user_id: 0,
products: [
{
id_sort: 0,
product_id: 0,
variation_id: 0,
unit_price: 0,
unit_id: 0,
f_convert: 1,
f_convert1: 1,
f_convert2: 1,
f_convert3: 1,
tax_id: null,
item_tax: 0,
quantity: 0,
sell_line_note: "",
line_discount_type: "fixed",
line_discount_amount: 0
}
],
payment: [
{
note: "",
payment_type: "in_come",
method: "cash",
amount: 0,
account_id: null
}
],
surcharges: 0,
invoice_no: "",
branch_id: null
})
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Đầu cuối này cho phép bạn tạo một đơn hàng bán mới với các Tham số (Biến) chi tiết, bao gồm thông tin về sản phẩm, thanh toán và các chi tiết khác.
HTTP Request
POST https://open-api.nextx.vn/api/sell/sell
Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
transaction_date | string | Ngày giao dịch (YYYY-MM-DD) |
customer_id | integer | ID của khách hàng |
store_id | integer | ID của cửa hàng |
price_book_id | integer | ID của bảng giá |
discount_type | string | Kiểu dữ liệu của chiết khấu (..., cố định). |
discount_amount | integer | Số tiền chiết khấu |
total_before_tax | integer | Tổng số tiền trước thuế |
tax_amount | integer | Số tiền thuế |
final_total | integer | Tổng cộng sau thuế |
additional_notes | string | Bất kỳ ghi chú bổ sung nào |
staff_note | string | Ghi chú từ nhân viên |
user_id | integer | ID của người dùng |
products | array | Danh sách sản phẩm trong đơn hàng bán |
payment | array | Chi tiết thanh toán cho đơn hàng bán |
surcharges | integer | Chi tiết thanh toán cho đơn hàng bán |
invoice_no | string Số hóa đơn | |
branch_id | integer | ID của chi nhánh |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON với danh sách mới có đơn hàng vừa thêm.
{
"status_code": 200,
"message": "Sale order created successfully"
}
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
Lấy chi tiết đơn bán hàng
Để lấy thông tin chi tiết của đơn bán hàng, sử dụng đoạn code sau:
import requests
url = "https://open-api.nextx.vn/api/sell/sell/{id}"
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.get(url, headers=headers)
print(response.json())
curl -X 'GET' \
'https://open-api.nextx.vn/api/sell/sell/{id}' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/sell/sell/{id}';
const options = {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cho thấy thông tin chi tiết của một đơn bán hàng.
HTTP Request
GET https://open-api.nextx.vn/api/sell/sell/{id}
Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
id | integer | ID of the sale order |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSONvới thông tin chi tiết đơn bán hàng.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"id": 0,
"transaction_date": "2024-08-08",
"invoice_no": "string",
"discount_type": "string",
"discount_amount": "string",
"total_before_tax": "string",
"tax_amount": "string",
"final_total": "string",
"staff_note": "string",
"additional_notes": "string",
"store_id": 0,
"price_book_id": 0,
"branch_id": 0,
"shipping_charges": "string",
"shipping_status": "string",
"customer_id": 0,
"payment": [
{
"note": "string",
"payment_type": "in_come",
"method": "cash",
"amount": 0,
"account_id": null
}
],
"products": [
{
"id_sort": 0,
"product_id": 0,
"variation_id": 0,
"unit_price": 0,
"unit_id": 0,
"f_convert": 1,
"f_convert1": 1,
"f_convert2": 1,
"f_convert3": 1,
"tax_id": null,
"item_tax": 0,
"quantity": 0,
"sell_line_note": "",
"line_discount_type": "fixed",
"line_discount_amount": 0
}
],
"invoice_no": "",
"branch_id": null,
"tax": {
"id": 0,
"name": "string",
"rate": "string",
"address": "string",
"Mô tả": "string"
}
}
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
Copy code
{
"meta": {
"message": "Token expired",
"status_code": 401
},
"data": []
}
Đơn trả hàng
lấy danh sách đơn trả hàng
Để lấy danh sách các đơn trả hàng, dùng đoạn code sau:
import requests
url = "https://open-api.nextx.vn/api/sell-return/sell-return"
params = {
"page": 0,
"pageLimit": 0,
"customer_id": 0,
"category_id": 0,
"sttsearch": " ",
"from_date": " ",
"to_date": " "
}
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.get(url, headers=headers, params=params)
print(response.json())
curl -X 'GET' \
'https://open-api.nextx.vn/api/sell-return/sell-return"
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/sell-return/sell-return";
const params = new URLSearchParams({
page: 0,
pageLimit: 0,
customer_id: 0,
category_id: 0,
sttsearch: ' ',
from_date: ' ',
to_date: ' '
});
const options = {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(`${url}?${params}`, options)a
Retrieves list of sell returns.
HTTP Request
GET /https://open-api.nextx.vn/api/sell-return/sell-return
Query Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
page | integer | Số trang của danh sách (Bắt đầu từ 0) |
pageLimit | integer | Số lượng mục trên mỗi trang, mặc định 15 mục, tối đa 100 mục (mặc định: 15) |
customer_id | integer | ID của khách hàng |
strSearch | string | Thuật ngữ tìm kiếm cho tên, mã code, hoặc SKU |
from_date | string | Filter from transaction start date, format Năm-Tháng-Ngày |
to_date | string | Filter from transaction end date, format Năm-Tháng-Ngày |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON với danh sách đơn trả hàng.
Lệnh trên cho kết quả JSON như sau:
[
{
"id": 0,
"transaction_date": "2024-08-08",
"invoice_no": "string",
"customer_id": 0,
"customer_code": "string",
"customer_name": "string",
"customer_mobile": "string",
"payment_status": "due",
"final_total": "string",
"amount_paid": "string",
"additional_notes": "string",
"staff_note": "string",
"added_by": "string",
"branch_name": "string",
"sell_invoice_no": "string",
"sell_id": 0
}
]
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"meta": {
"message": "Token expired",
"status_code": 401
},
"data": []
}
Thêm mới đơn trả hàng
Để thêm mới một đơn trả hàng, sử dụng đoạn code sau:
curl -X 'POST' \
'https://open-api.nextx.vn/api/sell-return/sell-return' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token' \
-H 'Content-Type: application/json' \
-d '{
"transaction_date": "2024-08-08",
"store_id": null,
"customer_id": null,
"discount_type": "fixed",
"discount_amount": 0,
"total_before_tax": 0,
"tax_amount": 0,
"final_total": 0,
"additional_notes": "",
"staff_note": "",
"user_id": 0,
"products": [
{
"id_sort": 0,
"product_id": 0,
"variation_id": 0,
"unit_price": 0,
"unit_id": 0,
"f_convert": 1,
"tax_id": null,
"item_tax": 0,
"quantity": 0,
"sell_line_note": "",
"line_discount_type": "fixed",
"line_discount_amount": 0
}
],
"payment": [
{
"note": "",
"payment_type": "in_come",
"method": "cash",
"amount": 0,
"account_id": null
}
],
"return_charges": 0
}'
import requests
import json
url = "https://open-api.nextx.vn/api/sell-return/sell-return"
payload = {
"transaction_date": "2024-08-08",
"store_id": None,
"customer_id": None,
"discount_type": "fixed",
"discount_amount": 0,
"total_before_tax": 0,
"tax_amount": 0,
"final_total": 0,
"additional_notes": "",
"staff_note": "",
"user_id": 0,
"products": [
{
"id_sort": 0,
"product_id": 0,
"variation_id": 0,
"unit_price": 0,
"unit_id": 0,
"f_convert": 1,
"tax_id": None,
"item_tax": 0,
"quantity": 0,
"sell_line_note": "",
"line_discount_type": "fixed",
"line_discount_amount": 0
}
],
"payment": [
{
"note": "",
"payment_type": "in_come",
"method": "cash",
"amount": 0,
"account_id": None
}
],
"return_charges": 0
}
headers = {
'accept': 'application/json',
'Authorization': 'Bearer your_access_token',
'Content-Type': 'application/json'
}
response = requests.post(url, headers=headers, data=json.dumps(payload))
print(response.json())
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/sell-return/sell-return';
const data = {
transaction_date: "2024-08-08",
store_id: null,
customer_id: null,
discount_type: "fixed",
discount_amount: 0,
total_before_tax: 0,
tax_amount: 0,
final_total: 0,
additional_notes: "",
staff_note: "",
user_id: 0,
products: [
{
id_sort: 0,
product_id: 0,
variation_id: 0,
unit_price: 0,
unit_id: 0,
f_convert: 1,
tax_id: null,
item_tax: 0,
quantity: 0,
sell_line_note: "",
line_discount_type: "fixed",
line_discount_amount: 0
}
],
payment: [
{
note: "",
payment_type: "in_come",
method: "cash",
amount: 0,
account_id: null
}
],
return_charges: 0
};
const options = {
method: 'POST',
headers: {
'accept': 'application/json',
'Authorization': 'Bearer your_access_token',
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cho phép thêm mới một đơn trả hàng.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"transaction_id": null,
"transaction_date": "2024-08-08",
"store_id": null,
"customer_id": null,
"discount_type": "fixed",
"discount_amount": 0,
"total_before_tax": 0,
"tax_amount": 0,
"final_total": 0,
"additional_notes": "",
"staff_note": "",
"user_id": 0,
"return_charges": 0,
"products": [
{
"id_sort": 0,
"product_id": 0,
"variation_id": 0,
"unit_price": 0,
"unit_id": 0,
"f_convert": 1,
"tax_id": null,
"item_tax": 0,
"quantity": 0,
"sell_line_note": "",
"line_discount_type": "fixed",
"line_discount_amount": 0,
"sell_line_id": 0
}
],
"payment": [
{
"note": "",
"payment_type": "in_come",
"method": "cash",
"amount": 0,
"account_id": null
}
],
"invoice_no": "",
"branch_id": null
}
HTTP Request
POST https://open-api.nextx.vn/api/sell-return/sell-return
Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
transaction_date | string | Ngày giao dịch |
store_id | integer | ID của kho hàng |
customer_id | integer | ID của khách hàng |
discount_type | string | Loại chiết khấu |
discount_amount | integer | Giá trị chiết khấu |
total_before_tax | integer | Tổng tiền trước thuế |
tax_amount | integer | Giá trị thuế |
final_total | integer | Tổng tiền hóa đơn |
additional_notes | string | Ghi chú bổ sung |
staff_note | string | Chi chú từ người phụ trách |
user_id | integer | ID của người dùng |
products | array | Danh sách sản phẩm trong đơn trả hàng |
payment | array | Chi tiết thanh toán |
return_charges | integer | Tiền thừa trả hàng |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON thành công hay không. Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
Lấy chi tiết đơn trả hàng
Để xem thông tin chi tiết đơn trả hàng, sử dụng đoạn code sau:
import requests
url = "https://open-api.nextx.vn/api/ell-return/ell-return/1" # Replace 1 with the actual return order ID
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.get(url, headers=headers)
print(response.json())
curl -X 'GET' \
'hhttps://open-api.nextx.vn/api/ell-return/ell-return/1' \ # Replace 1 with the actual return order ID
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/ell-return/ell-return/1'; // Replace 1 with the actual return order ID
const options = {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Truy xuất chi tiết của một đơn hàng trả hàng cụ thể. Đầu cuối này truy xuất chi tiết của một đơn hàng trả hàng cụ thể, bao gồm thông tin khách hàng, tổng số đơn hàng và các mục hàng.
HTTP Request
GET https://open-api.nextx.vn/api/ell-return/ell-return/{id}
Path Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
id | string | ID đơn trả hàng (bắt buộc) |
Phản hồi
Lệnh trên cho kết quả JSON như sau:
{
"id": 0,
"return_parent_id": 0,
"transaction_date": "2024-08-08",
"invoice_no": "string",
"discount_type": "string",
"discount_amount": "string",
"total_before_tax": "string",
"tax_amount": "string",
"final_total": "string",
"staff_note": "string",
"payment_status": "string",
"customer_id": 0,
"price_book_id": 0,
"branch_id": 0,
"store_id": 0,
"return_charges": "string",
"additional_notes": "string",
"total_paid": "string",
"location": {
"id": 0,
"name": "string",
"code": "string",
"tel": "string",
"fax": "string",
"avatar": "string",
"address": "string",
"Mô tả": "string"
},
"customer": {
"id": 0,
"name": "string",
"code": "string",
"mobile": "string",
"gender": "string",
"birthday": "2024-08-08",
"address": "string",
"account_address": "",
"account_no": ""
},
"created_by": {
"id": 0,
"name": "string",
"firstname": "string",
"lastname": "string"
},
"payment_lines": [
{
"id": 0,
"amount": 0,
"method": "string",
"transaction_no": "string",
"paid_on": "2024-08-08",
"note": "string"
}
],
"store": {
"id": 0,
"name": "string",
"code": "string",
"tel": "string",
"fax": "string",
"avatar": "string",
"address": "string",
"Mô tả": "string"
},
"sell_lines": [
{
"id": 0,
"product_id": 0,
"variation_id": 0,
"product_name": "string",
"product_code": "string",
"sub_sku": "string",
"product_image": "string",
"product_purchase_price": 0,
"product_sell_price": 0,
"unit_id": 0,
"unit": "string",
"quantity": 0,
"sell_line_note": "string",
"line_discount_type": "string",
"line_discount_amount": "string",
"units": [
{
"id": 0,
"name": 0,
"is_base_unit": 0,
"multiplier": 0,
"price": 0
}
],
"item_tax": 0,
"unit_price": 0
}
]
}
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON thành công hay không. Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
Cập nhật đơn trả hàng
Để chỉnh sửa thông tin đơn trả hàng, sử dụng đoạn code sau:
import requests
import json
url = "https:.../sell-return/1" # Replace 1 with the actual return order ID
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
data = {
"transaction_date": "2024-08-13",
"customer_id": null,
"discount_type": "fixed",
"discount_amount": 0,
"total_before_tax": 0,
"tax_amount": 0,
"final_total": 0,
"additional_notes": "",
"staff_note": "",
"user_id": 0,
"return_charges": 0,
"products": [
{
"id_sort": 0,
"product_id": 0,
"variation_id": 0,
"unit_price": 0,
"unit_id": 0,
"f_convert": 1,
"tax_id": null,
"item_tax": 0,
"quantity": 0,
"sell_line_note": "",
"line_discount_type": "fixed",
"line_discount_amount": 0,
"sell_line_id": 0
}
],
"payment": [
{
"note": "",
"payment_type": "in_come",
"method": "cash",
"amount": 0,
"account_id": null
}
]
}
response = requests.put(url, headers=headers, data=json.dumps(data))
print(response.json())
curl -X 'PUT' \
'https://open-api.nextx.vn/api/sell-return/sell-return/1' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"transaction_date": "2024-08-13",
"customer_id": null,
"discount_type": "fixed",
"discount_amount": 0,
"total_before_tax": 0,
"tax_amount": 0,
"final_total": 0,
"additional_notes": "",
"staff_note": "",
"user_id": 0,
"return_charges": 0,
"products": [
{
"id_sort": 0,
"product_id": 0,
"variation_id": 0,
"unit_price": 0,
"unit_id": 0,
"f_convert": 1,
"tax_id": null,
"item_tax": 0,
"quantity": 0,
"sell_line_note": "",
"line_discount_type": "fixed",
"line_discount_amount": 0,
"sell_line_id": 0
}
],
"payment": [
{
"note": "",
"payment_type": "in_come",
"method": "cash",
"amount": 0,
"account_id": null
}
]
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/sell-return/sell-return/1'; // Replace 1 with the actual return order ID
const options = {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
},
body: JSON.stringify({
transaction_date: "2024-08-13",
customer_id: null,
discount_type: "fixed",
discount_amount: 0,
total_before_tax: 0,
tax_amount: 0,
final_total: 0,
additional_notes: "",
staff_note: "",
user_id: 0,
return_charges: 0,
products: [
{
id_sort: 0,
product_id: 0,
variation_id: 0,
unit_price: 0,
unit_id: 0,
f_convert: 1,
tax_id: null,
item_tax: 0,
quantity: 0,
sell_line_note: "",
line_discount_type: "fixed",
line_discount_amount: 0,
sell_line_id: 0
}
],
payment: [
{
note: "",
payment_type: "in_come",
method: "cash",
amount: 0,
account_id: null
}
]
})
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cung cấp truy xuất để chỉnh sửa đơn trả hàng.
HTTP Request
PUT 'https://open-api.nextx.vn/api/sell-return/sell-return/{id}
Path Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
id | string | ID đơn trả hàng cần cập nhật (bắt buộc) |
Phản hồi
Têu cầu mẫu:
{
"transaction_date": "2024-08-08",
"customer_id": null,
"discount_type": "fixed",
"discount_amount": 0,
"total_before_tax": 0,
"tax_amount": 0,
"final_total": 0,
"additional_notes": "",
"staff_note": "",
"user_id": 0,
"return_charges": 0,
"products": [
{
"id_sort": 0,
"product_id": 0,
"variation_id": 0,
"unit_price": 0,
"unit_id": 0,
"f_convert": 1,
"tax_id": null,
"item_tax": 0,
"quantity": 0,
"sell_line_note": "",
"line_discount_type": "fixed",
"line_discount_amount": 0,
"sell_line_id": 0
}
],
"payment": [
{
"note": "",
"payment_type": "in_come",
"method": "cash",
"amount": 0,
"account_id": null
}
]
}
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON thành công hay không Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
Các API về tiện ích
Gửi Zalo Zns
Để gửi tin nhắn Zalo Zns, sử dụng đoạn code sau:
import requests
url = "https://open-api.nextx.vn/api/common/send-zns-message"
payload = {
"phone": "string",
"template_id": "string",
"tracking_id": "string",
"template_data": {}
}
headers = {
'Accept': 'application/json',
'Content-Type': 'application/json'
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
curl -X 'POST' \
'https://open-api.nextx.vn/api/common/send-zns-message' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"phone": "string",
"template_id": "string",
"tracking_id": "string",
"template_data": {}
}'
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/common/send-zns-message';
const payload = {
"phone": "string",
"template_id":
API này gửi một tin nhắn Zalo ZNS (Zalo Notification Service) đến một số điện thoại được chỉ định.
HTTP Request
POST https://open-api.nextx.vn/api/common/send-zns-message
Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
phone | string | Số điện thoại người nhận |
template_id | string | ID của mẫu tin Zalo ZNS |
tracking_id | string | ID duy nhất để theo dõi trạng thái giao hàng của tin nhắn. |
template_data | object | Dữ liệu để điền vào các trường mẫu ZNS. |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON thành công hay không
Lệnh trên trả về JSON được cấu trúc như sau:
(body)
Example Value
Model
{
"phone": "string",
"template_id": "string",
"tracking_id": "string",
"template_data": {}
}
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
Gửi dữ liệu đăng ký từ Webform
Để gửi dữ liệu đăng ký từ Webform, sử dụng đoạn code sau:
import requests
url = "https://open-api.nextx.vn/api/common/send-webform-v2"
payload = {
"name": "string",
"sex": "string",
"mobile": "string",
"email": "string",
"website": "string",
"address": "string",
"Mô tả": "string",
"body": "string",
"url": "string"
}
headers = {
'Accept': 'application/json',
'Content-Type': 'application/json',
'X-Client-Key': 'your_client_key'
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
curl -X 'POST' \
'https://open-api.nextx.vn/api/common/send-webform-v2' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H 'X-Client-Key: your_client_key' \
-d '{
"name": "string",
"sex": "string",
"mobile": "string",
"email": "string",
"website": "string",
"address": "string",
"Mô tả": "string",
"body": "string",
"url": "string"
}'
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/common/send-webform-v2';
const payload = {
"name": "string",
"sex": "string",
"mobile": "string",
"email": "string",
"website": "string",
"address": "string",
"Mô tả": "string",
"body": "string",
"url": "string"
};
const headers = {
'Accept': 'application/json',
'Content-Type': 'application/json',
'X-Client-Key': 'your_client_key'
};
fetch(url, {
method: 'POST',
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cho phép gửi dữ liệu đăng ký từ Webform.
HTTP Request
POST https://open-api.nextx.vn/api/common/send-webform-v2
Tham số (Biến)
Header Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
X_Client_Key | string | Khóa đặc biệt của Webform |
Body Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
name | string | tên người dùng |
sex | string | giới tính |
mobile | string | số điện thoại |
website | string | website URL |
string | địa chỉ Email | |
address | string | địa chỉ của người dùng |
description | string | Mô tả hoặc ghi chú |
body | string | nội dung chính của thông điệp |
url | string | URL liên kết với dữ liệu của biểu mẫu web. |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON có thành công hay không.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 0,
"message": "string"
}
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
Lấy danh sách các trường của Webform
Để lấy danh sách các trường của Webform, sử dụng đoạn code sau
import requests
url = "https://open-api.nextx.vn/api/common/webform-fields"
headers = {
'X-Client-Key': 'your_client_key',
'Accept': 'application/json'
}
response = requests.get(url, headers=headers)
print(response.json())
curl -X 'GET' \
'https://open-api.nextx.vn/api/common/webform-fields' \
-H 'X-Client-Key: your_client_key' \
-H 'accept: application/json'
const fetch = require('node-fetch');
const url = 'https://open-api.nextx.vn/api/common/webform-fields';
const options = {
method: 'GET',
headers: {
'X-Client-Key': 'your_client_key',
'Accept': 'application/json'
}
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Đầu cuối này truy xuất danh sách các trường từ biểu mẫu web. Các trường bao gồm tên trường và các chi tiết liên quan.
HTTP Request
GET https://open-api.nextx.vn/api/common/webform-fields
Tham số (Biến)
Header Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
X_Client_Key | string | Khóa đặc biệt của webform |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON với các trường dữ liệu của webform.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 0,
"message": "string"
}
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
Marketing
Marketing trong NextX có khả năng quản lý các công cụ Marketing bao gồm các chiến dịch, các hình thức marketing tự động thông qua automation, các chiến dịch SMS, quản lý marketing qua SMS, Facebook,Webform,... Dưới đây là cụ thể một số API được sử dụng cho các chức năng trên
Automation (Marketing tự động)
Xem danh sách Automation
Để xem danh sách các chiến lược marketing tự động Automation, sử dụng đoạn code sau:
import requires
url = "https://api-nextcrm.nextcrm.vn/api/automation/automation?page=1&pageLimit=15&strSearch="
header = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.get(url, headers=headers)
print(response.json())
curl -X 'GET' \
'https://api-nextcrm.nextcrm.vn/api/automation/automation?page=1&pageLimit=15&strSearch=' \ # thay thế bằng số trang và số item muốn có trên một trang
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = 'https://api-nextcrm.nextcrm.vn/api/automation/automation?page=1&pageLimit=15&strSearch=' # thay thế bằng số trang và số item muốn có trên một trang
const options = {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cho phép truy xuất danh sách các automation.
HTTPS Request
GET 'https://api-nextcrm.nextcrm.vn/api/automation/automation?page=1&pageLimit=15&strSearch='
Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
page | integer | Số trang |
pageLimit | integer | Số lượng item trên một trang |
strSreach | string | Bộ lọc tìm kiếm |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON với các danh sách các automation
Lệnh trên trả về JSON được cấu trúc như sau:
{
{
"id": 310,
"title": "c\u1eadp nh\u1eadt zalo oa",
"type": "in",
"frequency": "daily",
"is_active": 1,
"scheduler": {
"run_at": null,
"run_before_day": null
},
"category": "action",
"filter": [],
"description": "",
"component_id": 18,
"component": {
"id": 18,
"name": "Chia s\u1ebb kh\u00e1ch h\u00e0ng",
"description": "",
"order": 0,
"type": "in",
"filters": [],
"details": null,
"table": "transactions",
"action": null,
"category": "action",
"scheduler": {
"frequency_type": "F",
"frequency_interval": "0",
"run_at": "",
"run_before_day": 0
},
"queue_name": "",
"code": "Auto_013",
"enable": 1
},
"tasks": [
{
"id": 1530,
"filter": null,
"details": {
"recipient_type": "employee",
"recipient_id": 33575,
"subject": null,
"message": "<p>ch\u00fang t\u00f4i v\u1eeba c\u1eadp nh\u1eadt zalo oa, qu\u00fd kh\u00e1ch c\u1ea7n li\u00ean h\u1ec7 nh\u1eafn tin qua zalo oa, ch\u00fang t\u00f4i s\u1ebd g\u1eedi link qua tin nh\u1eafn zalo c\u1ee7a b\u1ea1n<\/p> {{cus_name}}",
"send_type": 0,
"template_id": null,
"url_zns_template": null,
"params": {
"param_01": "",
"param_02": "",
"param_03": "",
"param_04": "",
"param_05": "",
"param_06": "",
"param_07": "",
"param_08": "",
"param_09": "",
"param_10": ""
}
},
"order": 0,
"parent_id": null,
"component_id": 18,
"automation_id": 310,
"type": "send_zalo",
"scheduler": {
"frequency_type": "O",
"frequency_interval": null,
"run_at": "2023-12-12 16:28:41",
"run_before_day": 1,
"limited_day": 1,
"is_frequency": 1,
"run_after_type": "M"
},
"config": null
}
]
},
}
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
Xem chi tiết thông tin Automation
Để xem chi tiết thông tin của 1 chiến lược automation, sử dụng đoạn code sau:
import requires
url = "https://api-nextcrm.nextcrm.vn/api/automation/automation/310"
header = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.get(url, headers=headers)
print(response.json())
curl -X 'GET' \
'https://api-nextcrm.nextcrm.vn/api/automation/automation/{id}' \ # thay thế bằng id automation muốn xem
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = 'https://api-nextcrm.nextcrm.vn/api/automation/automation/{id}' # thay thế bằng id automation muốn xem
const options = {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cho phép truy xuất danh sách các automation.
HTTPS Request
GET
https://api-nextcrm.nextcrm.vn/api/automation/automation/{id}
Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
id | integer | ID của Automation |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON với thông tin được update.
Lệnh trên trả về JSON được cấu trúc như sau:
"id": 310,
"title": "c\u1eadp nh\u1eadt zalo oa",
"type": "in",
"frequency": "daily",
"tenant_id": 1596,
"is_active": 1,
"scheduler": {
"run_at": null,
"run_before_day": null
},
"category": "action",
"filter": [],
"description": "",
"component_id": 18,
"component": {
"id": 18,
"name": "Chia s\u1ebb kh\u00e1ch h\u00e0ng",
"description": "",
"order": 0,
"type": "in",
"filters": [],
"details": null,
"table": "transactions",
"action": null,
"category": "action",
"scheduler": {
"frequency_type": "F",
"frequency_interval": "0",
"run_at": "",
"run_before_day": 0
},
"queue_name": "",
"code": "Auto_013",
"enable": 1
},
"tasks": [
{
"id": 1530,
"filter": null,
"details": {
"recipient_type": "employee",
"recipient_id": 33575,
"subject": null,
"message": "<p>ch\u00fang t\u00f4i v\u1eeba c\u1eadp nh\u1eadt zalo oa, qu\u00fd kh\u00e1ch c\u1ea7n li\u00ean h\u1ec7 nh\u1eafn tin qua zalo oa, ch\u00fang t\u00f4i s\u1ebd g\u1eedi link qua tin nh\u1eafn zalo c\u1ee7a b\u1ea1n<\/p> {{cus_name}}",
"send_type": 0,
"template_id": null,
"url_zns_template": null,
"params": {
"param_01": "",
"param_02": "",
"param_03": "",
"param_04": "",
"param_05": "",
"param_06": "",
"param_07": "",
"param_08": "",
"param_09": "",
"param_10": ""
}
},
"order": 0,
"parent_id": null,
"component_id": 18,
"automation_id": 310,
"type": "send_zalo",
"scheduler": {
"frequency_type": "O",
"frequency_interval": null,
"run_at": "2023-12-12 16:28:41",
"run_before_day": 1,
"limited_day": 1,
"is_frequency": 1,
"run_after_type": "M"
},
"config": null
}
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
Tạo mới Automation
Để tạo các chiến lược marketing tự động, ta cài đặt automation bằng đoạn code sau:
curl -X 'POST' \
'https://api-nextcrm.nextcrm.vn/api/automation/automation' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token' \
-H 'Content-Type: application/json' \
-d '{
"automation": {
"title": "Automatic Response Email",
"type": "in",
"frequency": "daily",
"is_active": true,
"description": "",
"component_id": 13,
"filter": [],
"scheduler": {
"run_at": "2024-09-19T11:06:03",
"run_before_day": 1,
"frequency_interval": null,
"frequency_type": "O"
},
"tasks": [
{
"type": "send_email",
"details": {
"recipient_type": "contact",
"recipient_id": null,
"subject": "Thank you for using our service",
"message": "<p>Thank you for using our service</p>",
"params": {
"param_01": "",
"param_02": "",
"param_03": "",
"param_04": "",
"param_05": "",
"param_06": "",
"param_07": ""
}
}
}
]
},
"query_parameters": {
"branch_id": 1,
"from_date": "2024-07-01",
"to_date": "2024-09-30"
},
"responses": {
"successful": {
"json_structure": {
"key": "TotalIncome",
"Name": "Total Income",
"Value": 988233161.02
}
},
"error": {
"json_structure": {
"meta": {
"message": "Token expired",
"status_code": 401
},
"data": []
}
}
}
}
import requests
import json
url = "https://api-nextcrm.nextcrm.vn/api/automation/automation"
payload = {
"automation": {
"title": "Automatic Response Email",
"type": "in",
"frequency": "daily",
"is_active": true,
"description": "",
"component_id": 13,
"filter": [],
"scheduler": {
"run_at": "2024-09-19T11:06:03",
"run_before_day": 1,
"frequency_interval": null,
"frequency_type": "O"
},
"tasks": [
{
"type": "send_email",
"details": {
"recipient_type": "contact",
"recipient_id": null,
"subject": "Thank you for using our service",
"message": "<p>Thank you for using our service</p>",
"params": {
"param_01": "",
"param_02": "",
"param_03": "",
"param_04": "",
"param_05": "",
"param_06": "",
"param_07": ""
}
}
}
]
},
"query_parameters": {
"branch_id": 1,
"from_date": "2024-07-01",
"to_date": "2024-09-30"
},
"responses": {
"successful": {
"json_structure": {
"key": "TotalIncome",
"Name": "Total Income",
"Value": 988233161.02
}
},
"error": {
"json_structure": {
"meta": {
"message": "Token expired",
"status_code": 401
},
"data": []
}
}
}
}
headers = {
'accept': 'application/json',
'Authorization': 'Bearer your_access_token',
'Content-Type': 'application/json'
}
response = requests.post(url, headers=headers, data=json.dumps(payload))
print(response.json())
const fetch = require('node-fetch');
const url = 'https://api-nextcrm.nextcrm.vn/api/automation/automation';
const data = {
"automation": {
"title": "Automatic Response Email",
"type": "in",
"frequency": "daily",
"is_active": true,
"description": "",
"component_id": 13,
"filter": [],
"scheduler": {
"run_at": "2024-09-19T11:06:03",
"run_before_day": 1,
"frequency_interval": null,
"frequency_type": "O"
},
"tasks": [
{
"type": "send_email",
"details": {
"recipient_type": "contact",
"recipient_id": null,
"subject": "Thank you for using our service",
"message": "<p>Thank you for using our service</p>",
"params": {
"param_01": "",
"param_02": "",
"param_03": "",
"param_04": "",
"param_05": "",
"param_06": "",
"param_07": ""
}
}
}
]
},
"query_parameters": {
"branch_id": 1,
"from_date": "2024-07-01",
"to_date": "2024-09-30"
},
"responses": {
"successful": {
"json_structure": {
"key": "TotalIncome",
"Name": "Total Income",
"Value": 988233161.02
}
},
"error": {
"json_structure": {
"meta": {
"message": "Token expired",
"status_code": 401
},
"data": []
}
}
}
}
;
const options = {
method: 'POST',
headers: {
'accept': 'application/json',
'Authorization': 'Bearer your_access_token',
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cho phép thêm mới một automation.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"transaction_id": null,
"transaction_date": "2024-08-08",
"store_id": null,
"customer_id": null,
"discount_type": "fixed",
"discount_amount": 0,
"total_before_tax": 0,
"tax_amount": 0,
"final_total": 0,
"additional_notes": "",
"staff_note": "",
"user_id": 0,
"return_charges": 0,
"products": [
{
"id_sort": 0,
"product_id": 0,
"variation_id": 0,
"unit_price": 0,
"unit_id": 0,
"f_convert": 1,
"tax_id": null,
"item_tax": 0,
"quantity": 0,
"sell_line_note": "",
"line_discount_type": "fixed",
"line_discount_amount": 0,
"sell_line_id": 0
}
],
"payment": [
{
"note": "",
"payment_type": "in_come",
"method": "cash",
"amount": 0,
"account_id": null
}
],
"invoice_no": "",
"branch_id": null
}
Điểm đầu cuối này cho phép tạo mới một automation
HTTP Request
POST https://api-nextcrm.nextcrm.vn/api/automation/automation
Tham số
Tên dữ liệu | Kiểu dữ liệu | Mô tả |
---|---|---|
title | string | Tiêu đề của tự động hóa |
type | string | Loại tự động hóa (ví dụ: "in" cho đầu vào) |
frequency | string | Tần suất thực hiện (ví dụ: "daily") |
is_active | boolean | Trạng thái kích hoạt (true hoặc false) |
description | string | Mô tả của tự động hóa |
category | string | Danh mục của tự động hóa (ví dụ: "action") |
component_id | integer | ID của thành phần |
filter | array | Mảng các bộ lọc (nếu có) |
scheduler | object | Thông tin lập lịch |
tasks | array | Mảng các nhiệm vụ thực hiện |
recipient_type | string | Loại người nhận (ví dụ: "contact") |
recipient_id | integer or null | ID người nhận (nếu có) |
subject | string | Tiêu đề email hoặc thông điệp |
message | string | Nội dung tin nhắn hoặc email |
params | object | Đối tượng chứa các tham số |
frequency_type | string | Loại tần suất (ví dụ: "O" cho một lần) |
frequency_interval | integer or null | Khoảng thời gian giữa các lần thực hiện |
run_at | string | Thời gian thực hiện |
run_before_day | integer | Số ngày trước khi thực hiện |
is_frequency | integer | Tần suất thực hiện (1 cho có tần suất) |
limited_day | integer | Ngày giới hạn thực hiện |
run_after_type | string | Loại thời gian thực hiện sau |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON với thông tin được update.
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
Cập nhật thông tin Automation
Để chỉnh sửa thông tin Automation, sử dụng đoạn code sau:
import requests
import json
url = "https://api-nextcrm.nextcrm.vn/api/automation/automation/{id}"
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
data = {
"automation": {
"title": "Automatic Response Email",
"type": "in",
"frequency": "daily",
"is_active": true,
"description": "",
"component_id": 13,
"filter": [],
"scheduler": {
"run_at": "2024-09-19T11:06:03",
"run_before_day": 1,
"frequency_interval": null,
"frequency_type": "O"
},
"tasks": [
{
"type": "send_email",
"details": {
"recipient_type": "contact",
"recipient_id": null,
"subject": "Thank you for using our service",
"message": "<p>Thank you for using our service</p>",
"params": {
"param_01": "",
"param_02": "",
"param_03": "",
"param_04": "",
"param_05": "",
"param_06": "",
"param_07": ""
}
}
}
]
},
"query_parameters": {
"branch_id": 1,
"from_date": "2024-07-01",
"to_date": "2024-09-30"
},
"responses": {
"successful": {
"json_structure": {
"key": "TotalIncome",
"Name": "Total Income",
"Value": 988233161.02
}
},
"error": {
"json_structure": {
"meta": {
"message": "Token expired",
"status_code": 401
},
"data": []
}
}
}
}
response = requests.put(url, headers=headers, data=json.dumps(data))
print(response.json())
curl -X 'PUT' \
'https://api-nextcrm.nextcrm.vn/api/automation/automation/{id}' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d ' "automation": {
"title": "Automatic Response Email",
"type": "in",
"frequency": "daily",
"is_active": true,
"description": "",
"component_id": 13,
"filter": [],
"scheduler": {
"run_at": "2024-09-19T11:06:03",
"run_before_day": 1,
"frequency_interval": null,
"frequency_type": "O"
},
"tasks": [
{
"type": "send_email",
"details": {
"recipient_type": "contact",
"recipient_id": null,
"subject": "Thank you for using our service",
"message": "<p>Thank you for using our service</p>",
"params": {
"param_01": "",
"param_02": "",
"param_03": "",
"param_04": "",
"param_05": "",
"param_06": "",
"param_07": ""
}
}
}
]
},
"query_parameters": {
"branch_id": 1,
"from_date": "2024-07-01",
"to_date": "2024-09-30"
},
"responses": {
"successful": {
"json_structure": {
"key": "TotalIncome",
"Name": "Total Income",
"Value": 988233161.02
}
},
"error": {
"json_structure": {
"meta": {
"message": "Token expired",
"status_code": 401
},
"data": []
}
}
}
}
const fetch = require('node-fetch');
const url = 'https://api-nextcrm.nextcrm.vn/api/automation/automation/{id}';
const options = {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
},
body: JSON.stringify({
"automation": {
"title": "Automatic Response Email",
"type": "in",
"frequency": "daily",
"is_active": true,
"description": "",
"component_id": 13,
"filter": [],
"scheduler": {
"run_at": "2024-09-19T11:06:03",
"run_before_day": 1,
"frequency_interval": null,
"frequency_type": "O"
},
"tasks": [
{
"type": "send_email",
"details": {
"recipient_type": "contact",
"recipient_id": null,
"subject": "Thank you for using our service",
"message": "<p>Thank you for using our service</p>",
"params": {
"param_01": "",
"param_02": "",
"param_03": "",
"param_04": "",
"param_05": "",
"param_06": "",
"param_07": ""
}
}
}
]
},
"query_parameters": {
"branch_id": 1,
"from_date": "2024-07-01",
"to_date": "2024-09-30"
},
"responses": {
"successful": {
"json_structure": {
"key": "TotalIncome",
"Name": "Total Income",
"Value": 988233161.02
}
},
"error": {
"json_structure": {
"meta": {
"message": "Token expired",
"status_code": 401
},
"data": []
}
}
}
})
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cung cấp truy xuất để chỉnh sửa thông tin automation.
HTTP Request
PUT 'https://api-nextcrm.nextcrm.vn/api/automation/automation/{id}
Path Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
id | string | ID automation (bắt buộc) |
Phản hồi
Têu cầu mẫu:
{
"title": "Tr\u1ea3 l\u1eddi tin nh\u1eafn t\u1ef1 \u0111\u1ed9ng",
"type": "in",
"frequency": "daily",
"is_active": true,
"description": "",
"component_id": 13,
"category": "action",
"filter": [],
"scheduler": {
"run_at": null,
"run_before_day": null,
"frequency_interval": null,
"frequency_type": null
},
"tenant_id": 1596,
"id": 376
}
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON thành công hay không Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
Chiến dịch
Xem Chiến dịch
Để xem danh sách các chiến dịch, dùng đoạn code sau:
import requires
url = "https://api-nextcrm.nextcrm.vn/api/crm/campaign?page=1&pageLimit=15&strSearch=&from_date=2024-09-01&to_date=2024-09-30"
header = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.get(url, headers=headers)
print(response.json())
curl -X 'GET' \
'https://api-nextcrm.nextcrm.vn/api/crm/campaign?page=1&pageLimit=15&strSearch=&from_date=2024-09-01&to_date=2024-09-30' \ # thay thế bằng số trang và số item muốn có trên một trang
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = 'https://api-nextcrm.nextcrm.vn/api/crm/campaign?page=1&pageLimit=15&strSearch=&from_date=2024-09-01&to_date=2024-09-30' # thay thế bằng số trang và số item muốn có trên một trang
const options = {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cho phép truy xuất danh sách các chiến dịch.
HTTPS Request
GET https://api-nextcrm.nextcrm.vn/api/crm/campaign
Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
page | integer | Số trang |
pageLimit | integer | Số lượng item trên một trang |
strSreach | string | Bộ lọc tìm kiếm |
from_date | string | thời gian bắt đầu lọc |
to_date | string | thời gian kết thúc lọc |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON với các chiến dịch đang thực hiện.
Lệnh trên trả về JSON được cấu trúc như sau:
{
{
"id": 732,
"name": "Ch\u0103m s\u00f3c KH",
"start_date": "2024-09-19",
"end_date": "2024-09-22",
"budget": "0.00",
"actual_cost": null,
"objective": "",
"description": "",
"status": "37250",
"campaign_status": {
"name": "\u0110ang di\u1ec5n ra",
"id": 37250
},
"type": {
"name": "Telesales",
"id": 107
},
"impression": null,
"expected_cost": null,
"expected_revenue": null,
"assigned_to": 7025,
"user": {
"name": "admin3",
"email": "",
"firstname": "",
"lastname": "admin",
"picture": null
},
"assigned": {
"name": "admin3",
"email": "",
"firstname": "",
"lastname": "admin",
"picture": null
},
"user_id": 7025,
"stage": [
{
"id": 4018,
"name": "Th\u00f4ng tin kh\u00e1ch",
"value": "Th\u00f4ng tin kh\u00e1ch",
"campaign_id": 732,
"order": 1,
"parent_id": null,
"stage_type_id": 1,
"stage_type_name": "Th\u00f4ng tin kh\u00e1ch"
},
}
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
Xem chi tiết thông tin Chiến dịch
Để xem chi tiết thông tin của 1 chiến dịch, sử dụng đoạn code sau:
import requires
url = "https://api-nextcrm.nextcrm.vn/api/crm/campaign/{id}"
header = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.get(url, headers=headers)
print(response.json())
curl -X 'GET' \
'https://api-nextcrm.nextcrm.vn/api/crm/campaign/{id}' \ # thay thế bằng id chiến dịch muốn xem
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = 'https://api-nextcrm.nextcrm.vn/api/crm/campaign/{id}' # thay thế bằng id chiến dịch muốn xem
const options = {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cho phép truy xuất danh sách các chiến dịch.
HTTPS Request
GET https://api-nextcrm.nextcrm.vn/api/crm/campaign/{id}
Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
id | integer | ID của chiến dịch |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON với thông tin được update.
Lệnh trên trả về JSON được cấu trúc như sau:
"id": 732,
"name": "Ch\u0103m s\u00f3c KH",
"start_date": "2024-09-19",
"end_date": "2024-09-22",
"budget": "0.00",
"actual_cost": null,
"objective": "",
"description": "",
"status": "37250",
"campaign_status": {
"name": "\u0110ang di\u1ec5n ra",
"id": 37250
},
"type": {
"name": "Telesales",
"id": 107
},
"impression": null,
"expected_cost": null,
"expected_revenue": null,
"assigned_to": 7025,
"user": {
"name": "admin3",
"email": "",
"firstname": "",
"lastname": "admin",
"picture": null
},
"assigned": {
"name": "admin3",
"email": "",
"firstname": "",
"lastname": "admin",
"picture": null
},
"user_id": 7025,
"stage": [
{
"id": 4018,
"name": "Th\u00f4ng tin kh\u00e1ch",
"value": "Th\u00f4ng tin kh\u00e1ch",
"campaign_id": 732,
"order": 1,
"parent_id": null,
"stage_type_id": 1,
"stage_type_name": "Th\u00f4ng tin kh\u00e1ch"
},
}
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
Tạo mới Chiến dịch
Để tạo các chiến lược marketing tự động, ta cài đặt chiến dịch bằng đoạn code sau:
curl -X 'POST' \
'https://api-nextcrm.nextcrm.vn/api/automation/automation' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token' \
-H 'Content-Type: application/json' \
-d '{
{
"allow_duplicate_opportunity": 0,
"assigned_to": 4761,
"branch_id": 2518,
"budget": "0",
"campaign_failed_id": null,
"campaign_success_id": null,
"campaign_type": "107",
"code": "CP000035",
"contacts": [],
"correlatives": [
{
"id": 4761,
"rate": 1
}
],
"description": "",
"divide_opportunity_auto": 1,
"end_date": "2024-09-26",
"failed_campaign_id": null,
"hide_opportunity_info": 1,
"name": "Chiến dịch test",
"objective": "",
"stages": [
{
"name": "Thông tin khách",
"value": "Thông tin khách",
"order": 1,
"stage_type_id": 1
},
{
"name": "Thực hiện chiến dịch",
"value": "Thực hiện chiến dịch",
"order": 2,
"stage_type_id": 2
}
],
"start_date": "2024-09-19",
"status": "37250",
"success_campaign_id": null
}
'
import requests
import json
url = "https://api-nextcrm.nextcrm.vn/api/automation/automation"
payload = {
"allow_duplicate_opportunity": 0,
"assigned_to": 4761,
"branch_id": 2518,
"budget": "0",
"campaign_failed_id": null,
"campaign_success_id": null,
"campaign_type": "107",
"code": "CP000035",
"contacts": [],
"correlatives": [
{
"id": 4761,
"rate": 1
}
],
"description": "",
"divide_opportunity_auto": 1,
"end_date": "2024-09-26",
"failed_campaign_id": null,
"hide_opportunity_info": 1,
"name": "Chiến dịch test",
"objective": "",
"stages": [
{
"name": "Thông tin khách",
"value": "Thông tin khách",
"order": 1,
"stage_type_id": 1
},
{
"name": "Thực hiện chiến dịch",
"value": "Thực hiện chiến dịch",
"order": 2,
"stage_type_id": 2
}
],
"start_date": "2024-09-19",
"status": "37250",
"success_campaign_id": null
}
headers = {
'accept': 'application/json',
'Authorization': 'Bearer your_access_token',
'Content-Type': 'application/json'
}
response = requests.post(url, headers=headers, data=json.dumps(payload))
print(response.json())
const fetch = require('node-fetch');
const url = 'https://api-nextcrm.nextcrm.vn/api/automation/automation';
const data = {
"allow_duplicate_opportunity": 0,
"assigned_to": 4761,
"branch_id": 2518,
"budget": "0",
"campaign_failed_id": null,
"campaign_success_id": null,
"campaign_type": "107",
"code": "CP000035",
"contacts": [],
"correlatives": [
{
"id": 4761,
"rate": 1
}
],
"description": "",
"divide_opportunity_auto": 1,
"end_date": "2024-09-26",
"failed_campaign_id": null,
"hide_opportunity_info": 1,
"name": "Chiến dịch test",
"objective": "",
"stages": [
{
"name": "Thông tin khách",
"value": "Thông tin khách",
"order": 1,
"stage_type_id": 1
},
{
"name": "Thực hiện chiến dịch",
"value": "Thực hiện chiến dịch",
"order": 2,
"stage_type_id": 2
}
],
"start_date": "2024-09-19",
"status": "37250",
"success_campaign_id": null
}
;
const options = {
method: 'POST',
headers: {
'accept': 'application/json',
'Authorization': 'Bearer your_access_token',
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cho phép thêm mới một chiến dịch.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"id": 733,
"name": "Chi\u1ebfn d\u1ecbch test",
"start_date": "2024-09-19",
"end_date": "2024-09-26",
"budget": "0",
"actual_cost": null,
"objective": "",
"description": "",
"status": "37250",
"campaign_status": {
"name": "\u0110ang di\u1ec5n ra",
"id": 37250
},
"type": {
"name": "Telesales",
"id": 107
},
"impression": null,
"expected_cost": null,
"expected_revenue": null,
"assigned_to": 4761,
"user": {
"name": "admin",
"email": "vietphat.vpic@gmail.com",
"firstname": "",
"lastname": "demo",
"picture": null
},
"assigned": {
"name": "admin",
"email": "vietphat.vpic@gmail.com",
"firstname": "",
"lastname": "demo",
"picture": null
},
"user_id": 4761,
"stage": [
{
"id": 4024,
"name": "Th\u00f4ng tin kh\u00e1ch",
"value": "Th\u00f4ng tin kh\u00e1ch",
"campaign_id": 733,
"order": 1,
"parent_id": null,
"stage_type_id": 1,
"stage_type_name": "Th\u00f4ng tin kh\u00e1ch"
},
}
Điểm đầu cuối này cho phép tạo mới một automation
HTTP Request
POST https://api-nextcrm.nextcrm.vn/api/automation/automation
Tham số
| Tên biến | Kiểu biến | Mô tả | |---------------------------|---------------|---------------------------------------------------------| | allow_duplicate_opportunity| Integer | Cho phép tạo chiến dịch trùng lặp (0: không, 1: có) | | assigned_to | Integer | ID của người được chỉ định | | branch_id | Integer | ID của chi nhánh | | budget | String | Ngân sách cho chiến dịch | | campaign_failed_id | Null/Integer | ID của chiến dịch thất bại (nếu có) | | campaign_success_id | Null/Integer | ID của chiến dịch thành công (nếu có) | | campaign_type | String | Loại chiến dịch | | code | String | Mã chiến dịch | | contacts | Array | Danh sách liên hệ của chiến dịch | | correlatives | Array | Danh sách các liên hệ liên quan với ID và tỷ lệ | | description | String | Mô tả chiến dịch | | divide_opportunity_auto | Integer | Tự động chia chiến dịch SMS (0: không, 1: có) | | end_date | String (Date) | Ngày kết thúc chiến dịch | | failed_campaign_id | Null/Integer | ID của chiến dịch thất bại (nếu có) | | hide_opportunity_info | Integer | Ẩn thông tin chiến dịch SMS (0: không, 1: có) | | name | String | Tên chiến dịch | | objective | String | Mục tiêu của chiến dịch | | stages | Array | Các giai đoạn trong chiến dịch với tên, giá trị, và thứ tự| | start_date | String (Date) | Ngày bắt đầu chiến dịch | | status | String | Trạng thái của chiến dịch | | success_campaign_id | Null/Integer | ID của chiến dịch thành công (nếu có) |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON với thông tin được update.
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
Cập nhật thông tin chiến dịch
Để chỉnh sửa thông tin chiến dịch, sử dụng đoạn code sau:
import requests
import json
url = "https://api-nextcrm.nextcrm.vn/api/crm/campaign/{id}"
headers = {
"allow_duplicate_opportunity": 0,
"assigned_to": 4761,
"branch_id": 2518,
"budget": "0",
"campaign_failed_id": null,
"campaign_success_id": null,
"campaign_type": "107",
"code": "CP000035",
"contacts": [],
"correlatives": [
{
"id": 4761,
"rate": 1
}
],
"description": "",
"divide_opportunity_auto": 1,
"end_date": "2024-09-26",
"failed_campaign_id": null,
"hide_opportunity_info": 1,
"name": "Chiến dịch test",
"objective": "",
"stages": [
{
"name": "Thông tin khách",
"value": "Thông tin khách",
"order": 1,
"stage_type_id": 1
},
{
"name": "Thực hiện chiến dịch",
"value": "Thực hiện chiến dịch",
"order": 2,
"stage_type_id": 2
}
],
"start_date": "2024-09-19",
"status": "37250",
"success_campaign_id": null
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
curl -X 'POST' \
'https://api-nextcrm.nextcrm.vn/api/crm/campaign/{id}' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token' \
-H 'Content-Type: application/json' \
-d '{
{
"allow_duplicate_opportunity": 0,
"assigned_to": 4761,
"branch_id": 2518,
"budget": "0",
"campaign_failed_id": null,
"campaign_success_id": null,
"campaign_type": "107",
"code": "CP000035",
"contacts": [],
"correlatives": [
{
"id": 4761,
"rate": 1
}
],
"description": "",
"divide_opportunity_auto": 1,
"end_date": "2024-09-26",
"failed_campaign_id": null,
"hide_opportunity_info": 1,
"name": "Chiến dịch test",
"objective": "",
"stages": [
{
"name": "Thông tin khách",
"value": "Thông tin khách",
"order": 1,
"stage_type_id": 1
},
{
"name": "Thực hiện chiến dịch",
"value": "Thực hiện chiến dịch",
"order": 2,
"stage_type_id": 2
}
],
"start_date": "2024-09-19",
"status": "37250",
"success_campaign_id": null
}
'
const fetch = require('node-fetch');
const url = 'https://api-nextcrm.nextcrm.vn/api/crm/campaign/{id}';
const options = {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
},
body: JSON.stringify({
"allow_duplicate_opportunity": 0,
"assigned_to": 4761,
"branch_id": 2518,
"budget": "0",
"campaign_failed_id": null,
"campaign_success_id": null,
"campaign_type": "107",
"code": "CP000035",
"contacts": [],
"correlatives": [
{
"id": 4761,
"rate": 1
}
],
"description": "",
"divide_opportunity_auto": 1,
"end_date": "2024-09-26",
"failed_campaign_id": null,
"hide_opportunity_info": 1,
"name": "Chiến dịch test",
"objective": "",
"stages": [
{
"name": "Thông tin khách",
"value": "Thông tin khách",
"order": 1,
"stage_type_id": 1
},
{
"name": "Thực hiện chiến dịch",
"value": "Thực hiện chiến dịch",
"order": 2,
"stage_type_id": 2
}
],
"start_date": "2024-09-19",
"status": "37250",
"success_campaign_id": null
})
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cung cấp truy xuất để chỉnh sửa thông tin chiến dịch.
HTTP Request
PUT 'https://api-nextcrm.nextcrm.vn/api/crm/campaign/{id}
Path Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
id | string | ID chiến dịch (bắt buộc) |
Phản hồi
Têu cầu mẫu:
{
"id": 733,
"name": "Chi\u1ebfn d\u1ecbch test",
"start_date": "2024-09-19",
"end_date": "2024-09-26",
"budget": "0",
"actual_cost": null,
"objective": "",
"description": "",
"status": "37250",
"campaign_status": {
"name": "\u0110ang di\u1ec5n ra",
"id": 37250
},
"type": {
"name": "Telesales",
"id": 107
},
"impression": null,
"expected_cost": null,
"expected_revenue": null,
"assigned_to": 4761,
"user": {
"name": "admin",
"email": "vietphat.vpic@gmail.com",
"firstname": "",
"lastname": "demo",
"picture": null
},
"assigned": {
"name": "admin",
"email": "vietphat.vpic@gmail.com",
"firstname": "",
"lastname": "demo",
"picture": null
},
"user_id": 4761,
"stage": [
{
"id": 4024,
"name": "Th\u00f4ng tin kh\u00e1ch",
"value": "Th\u00f4ng tin kh\u00e1ch",
"campaign_id": 733,
"order": 1,
"parent_id": null,
"stage_type_id": 1,
"stage_type_name": "Th\u00f4ng tin kh\u00e1ch"
},
}
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON thành công hay không Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
Cơ hội
Xem danh sách cơ hội
Để xem danh sách các cơ hội, dùng đoạn code sau:
import requires
url = "https://api-nextcrm.nextcrm.vn/api/crm/opportunity?page=1&pageLimit=15&strSearch=&from_date=2024-09-01&to_date=2024-09-30&from_date_result=&to_date_result="
header = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.get(url, headers=headers)
print(response.json())
curl -X 'GET' \
'https://api-nextcrm.nextcrm.vn/api/crm/opportunity?page=1&pageLimit=15&strSearch=&from_date=2024-09-01&to_date=2024-09-30&from_date_result=&to_date_result=' \ # thay thế bằng số trang và số item muốn có trên một trang
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = 'https://api-nextcrm.nextcrm.vn/api/crm/opportunity?page=1&pageLimit=15&strSearch=&from_date=2024-09-01&to_date=2024-09-30&from_date_result=&to_date_result=' # thay thế bằng số trang và số item muốn có trên một trang
const options = {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cho phép truy xuất danh sách các cơ hội.
HTTPS Request
GET https://api-nextcrm.nextcrm.vn/api/crm/opportunity
Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
page | integer | Số trang |
pageLimit | integer | Số lượng item trên một trang |
strSreach | string | Bộ lọc tìm kiếm |
from_date | string | thời gian bắt đầu lọc |
to_date | string | thời gian kết thúc lọc |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON với các cơ hội đang thực hiện.
Lệnh trên trả về JSON được cấu trúc như sau:
{
{
"id": 113134,
"name": "tessxt",
"opportunity_amount": "0.00",
"sales_stage": "4018",
"probability": 0,
"description": "",
"expected_close_date": "2024-09-22",
"type": null,
"lead_source": null,
"campaign_id": 732,
"assigned_to": 5149,
"user": {
"name": "admin3",
"email": "",
"firstname": "",
"lastname": "admin",
"picture": null
},
"assigned": {
"name": "ducdx",
"email": "",
"firstname": "Duong Xuan",
"lastname": "Duc",
"picture": null
},
"lead_source_description": null,
"contact_id": 718136,
"user_id": 7025,
"status": null,
"reason_failed": null,
"model_name": "App\\Models\\Crm\\Opportunity",
"campaign": {
"id": 732,
"name": "Ch\u0103m s\u00f3c KH",
"start_date": "2024-09-19",
"end_date": "2024-09-22",
"allow_duplicate_opportunity": 0,
"divide_opportunity_auto": null,
"hide_opportunity_info": 0,
"success_campaign_id": null,
"failed_campaign_id": null
},
"source": null,
"stage": {
"id": 4018,
"name": "Th\u00f4ng tin kh\u00e1ch",
"stage_type_id": 1,
"order": 1
},
"result_id": null,
"action_id": 11065,
"next_action_id": null,
"prev_action_id": null,
"perform_after_day": 0,
"perform_after_hour": 0,
"perform_after_minute": 0,
"action": {
"id": 11065,
"name": "TH-G\u1ecdi l\u1ea7n 1",
"order": 17,
"is_default": 1,
"is_active": 1,
"next_action_id": null,
"perform_after_day": 0,
"perform_after_hour": 0,
"perform_after_minute": 30,
"description": "G\u1ecdi sau khi ti\u1ebfp nh\u1eadn th\u00f4ng tin",
"results": [
{
"id": 12951,
"order": 3,
"name": "G\u1ecdi l\u1ea1i sau",
"action_id": null,
"status": "in_process",
"description": "",
"is_active": 1,
"tenant_id": 1596,
"stage_type_id": 1,
"pivot": {
"action_id": 11065,
"result_id": 12951,
"next_action_id": 10079,
"order": 1,
"perform_after_day": 0,
"perform_after_hour": 0,
"perform_after_minute": 30
}
}
]
},
"next_action": null,
"prev_action": null,
"action_result": null,
"contact": {
"id": 718136,
"name": "tessxt",
"email": "",
"code": "KH24000004",
"mobile": "0963419120",
"address": "",
"resources": [
{
"id": 26,
"name": "Facebook"
}
],
"categories": [
{
"id": 37741,
"name": "Kh\u00e1ch ti\u1ec1m n\u0103ng"
}
],
"relationships": []
},
"resource_contact": [
{
"id": 26,
"name": "Facebook"
}
],
"category_contact": [
{
"id": 37741,
"name": "Kh\u00e1ch ti\u1ec1m n\u0103ng"
}
],
"relationships_contact": [],
"contact_name": "tessxt",
"contact_mobile": "0963419120",
"contact_email": "",
"contact_address": "",
"created_at": "2024-09-19 13:38:39",
"updated_at": "2024-09-19 13:38:39",
"time_updated_result": "2024-09-19 13:38:39",
"tags": [],
"activity_log": null,
"total_money": "0.0000",
"time_update_status": null,
"last_comment": null,
"campaign_stage": [
{
"id": 4018,
"name": "Th\u00f4ng tin kh\u00e1ch",
"stage_type_id": 1,
"order": 1
},
{
"id": 4019,
"name": "Ph\u00e2n t\u00edch nhu c\u1ea7u",
"stage_type_id": 2,
"order": 2
},
{
"id": 4020,
"name": "B\u00e1o gi\u00e1",
"stage_type_id": 3,
"order": 3
},
{
"id": 4021,
"name": "\u0110\u00e0m ph\u00e1n",
"stage_type_id": 4,
"order": 4
},
{
"id": 4022,
"name": "Th\u00e0nh c\u00f4ng",
"stage_type_id": 5,
"order": 5
},
{
"id": 4023,
"name": "Th\u1ea5t b\u1ea1i",
"stage_type_id": 6,
"order": 6
}
]
}
},
}
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
Xem chi tiết thông tin Cơ hội
Để xem chi tiết thông tin của 1 cơ hội, sử dụng đoạn code sau:
import requires
url = "https://api-nextcrm.nextcrm.vn/api/crm/opportunity/{id}"
header = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.get(url, headers=headers)
print(response.json())
curl -X 'GET' \
'https://api-nextcrm.nextcrm.vn/api/crm/opportunity/{id}' \ # thay thế bằng id cơ hội muốn xem
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = 'https://api-nextcrm.nextcrm.vn/api/crm/opportunity/{id}' # thay thế bằng id cơ hội muốn xem
const options = {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cho phép truy xuất danh sách các cơ hội.
HTTPS Request
GET https://api-nextcrm.nextcrm.vn/api/crm/opportunity/{id}
Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
id | integer | ID của cơ hội |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON với thông tin được update.
Lệnh trên trả về JSON được cấu trúc như sau:
{ "id": 113134,
"name": "tessxt",
"opportunity_amount": "0.00",
"sales_stage": "4018",
"probability": 0,
"description": "",
"expected_close_date": "2024-09-22",
"type": null,
"lead_source": null,
"campaign_id": 732,
"assigned_to": 5149,
"user": {
"name": "admin3",
"email": "",
"firstname": "",
"lastname": "admin",
"picture": null
},
"assigned": {
"name": "ducdx",
"email": "",
"firstname": "Duong Xuan",
"lastname": "Duc",
"picture": null
},
"lead_source_description": null,
"contact_id": 718136,
"user_id": 7025,
"status": null,
"reason_failed": null,
"model_name": "App\\Models\\Crm\\Opportunity",
"campaign": {
"id": 732,
"name": "Ch\u0103m s\u00f3c KH",
"start_date": "2024-09-19",
"end_date": "2024-09-22",
"allow_duplicate_opportunity": 0,
"divide_opportunity_auto": null,
"hide_opportunity_info": 0,
"success_campaign_id": null,
"failed_campaign_id": null
},
"source": null,
"stage": {
"id": 4018,
"name": "Th\u00f4ng tin kh\u00e1ch",
"stage_type_id": 1,
"order": 1
},
"result_id": null,
"action_id": 11065,
"next_action_id": null,
"prev_action_id": null,
"perform_after_day": 0,
"perform_after_hour": 0,
"perform_after_minute": 0,
"action": {
"id": 11065,
"name": "TH-G\u1ecdi l\u1ea7n 1",
"order": 17,
"is_default": 1,
"is_active": 1,
"next_action_id": null,
"perform_after_day": 0,
"perform_after_hour": 0,
"perform_after_minute": 30,
"description": "G\u1ecdi sau khi ti\u1ebfp nh\u1eadn th\u00f4ng tin",
"results": [
{
"id": 12951,
"order": 3,
"name": "G\u1ecdi l\u1ea1i sau",
"action_id": null,
"status": "in_process",
"description": "",
"is_active": 1,
"tenant_id": 1596,
"stage_type_id": 1,
"pivot": {
"action_id": 11065,
"result_id": 12951,
"next_action_id": 10079,
"order": 1,
"perform_after_day": 0,
"perform_after_hour": 0,
"perform_after_minute": 30
}
}
]
},
"next_action": null,
"prev_action": null,
"action_result": null,
"contact": {
"id": 718136,
"name": "tessxt",
"email": "",
"code": "KH24000004",
"mobile": "0963419120",
"address": "",
"resources": [
{
"id": 26,
"name": "Facebook"
}
],
"categories": [
{
"id": 37741,
"name": "Kh\u00e1ch ti\u1ec1m n\u0103ng"
}
],
"relationships": []
},
"resource_contact": [
{
"id": 26,
"name": "Facebook"
}
],
"category_contact": [
{
"id": 37741,
"name": "Kh\u00e1ch ti\u1ec1m n\u0103ng"
}
],
"relationships_contact": [],
"contact_name": "tessxt",
"contact_mobile": "0963419120",
"contact_email": "",
"contact_address": "",
"created_at": "2024-09-19 13:38:39",
"updated_at": "2024-09-19 13:38:39",
"time_updated_result": "2024-09-19 13:38:39",
"tags": [],
"activity_log": null,
"total_money": "0.0000",
"time_update_status": null,
"last_comment": null,
"campaign_stage": [
{
"id": 4018,
"name": "Th\u00f4ng tin kh\u00e1ch",
"stage_type_id": 1,
"order": 1
},
{
"id": 4019,
"name": "Ph\u00e2n t\u00edch nhu c\u1ea7u",
"stage_type_id": 2,
"order": 2
},
{
"id": 4020,
"name": "B\u00e1o gi\u00e1",
"stage_type_id": 3,
"order": 3
},
{
"id": 4021,
"name": "\u0110\u00e0m ph\u00e1n",
"stage_type_id": 4,
"order": 4
},
{
"id": 4022,
"name": "Th\u00e0nh c\u00f4ng",
"stage_type_id": 5,
"order": 5
},
{
"id": 4023,
"name": "Th\u1ea5t b\u1ea1i",
"stage_type_id": 6,
"order": 6
}
]
}
}
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
Tạo mới Cơ hội
Để tạo các cơ hội, ta dùng đoạn code sau:
curl -X 'POST' \
'https://api-nextcrm.nextcrm.vn/api/crm/opportunity_create' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token' \
-H 'Content-Type: application/json' \
-d '{
"contact": {
"user_id": 4761,
"name": "abc",
"mobile": "",
"email": "",
"address": "",
"sales_stage": null,
"code": "KH24000338",
"avatar": "",
"birthday": null,
"branch_id": 2518,
"categories": [],
"contact_id": null,
"description": "",
"details": "",
"employee_id": null,
"facebook_zalo": "",
"relationships": [],
"resources": [],
"sex": "male",
"title": "",
"website": ""
},
"opportunity": {
"name": "abc",
"description": "",
"probability": 0,
"opportunity_amount": 0,
"assigned_to": 4761,
"campaign_id": 733,
"expected_close_date": "2024-09-19",
"lead_source": 41098,
"lead_source_description": "",
"sales_stage": 4024
}
}
'
import requests
import json
url = "https://api-nextcrm.nextcrm.vn/api/crm/opportunity_create"
payload = {
"contact": {
"user_id": 4761,
"name": "abc",
"mobile": "",
"email": "",
"address": "",
"sales_stage": null,
"code": "KH24000338",
"avatar": "",
"birthday": null,
"branch_id": 2518,
"categories": [],
"contact_id": null,
"description": "",
"details": "",
"employee_id": null,
"facebook_zalo": "",
"relationships": [],
"resources": [],
"sex": "male",
"title": "",
"website": ""
},
"opportunity": {
"name": "abc",
"description": "",
"probability": 0,
"opportunity_amount": 0,
"assigned_to": 4761,
"campaign_id": 733,
"expected_close_date": "2024-09-19",
"lead_source": 41098,
"lead_source_description": "",
"sales_stage": 4024
}
}
headers = {
'accept': 'application/json',
'Authorization': 'Bearer your_access_token',
'Content-Type': 'application/json'
}
response = requests.post(url, headers=headers, data=json.dumps(payload))
print(response.json())
const fetch = require('node-fetch');
const url = 'https://api-nextcrm.nextcrm.vn/api/crm/opportunity_create';
const data = {
"contact": {
"user_id": 4761,
"name": "abc",
"mobile": "",
"email": "",
"address": "",
"sales_stage": null,
"code": "KH24000338",
"avatar": "",
"birthday": null,
"branch_id": 2518,
"categories": [],
"contact_id": null,
"description": "",
"details": "",
"employee_id": null,
"facebook_zalo": "",
"relationships": [],
"resources": [],
"sex": "male",
"title": "",
"website": ""
},
"opportunity": {
"name": "abc",
"description": "",
"probability": 0,
"opportunity_amount": 0,
"assigned_to": 4761,
"campaign_id": 733,
"expected_close_date": "2024-09-19",
"lead_source": 41098,
"lead_source_description": "",
"sales_stage": 4024
}
}
;
const options = {
method: 'POST',
headers: {
'accept': 'application/json',
'Authorization': 'Bearer your_access_token',
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cho phép thêm mới một cơ hội.
Lệnh trên trả về JSON được cấu trúc như sau:
{
meta: {status_code: 0, message: "Successfully"}, data: null
}
Điểm đầu cuối này cho phép tạo mới cơ hội
HTTP Request
POST https://api-nextcrm.nextcrm.vn/api/crm/opportunity_create
Tham số
// | Tên biến | Kiểu biến | Mô tả | // |---------------------------|-----------------|----------------------------------------------------------| // | contact | Object | Thông tin liên hệ (user_id, tên, số điện thoại, email, mã)| // | address | String | Địa chỉ liên hệ | // | avatar | String | Hình đại diện | // | birthday | Null/String | Ngày sinh của liên hệ | // | branch_id | Integer | ID của chi nhánh | // | categories | Array | Danh mục liên hệ | // | code | String | Mã khách hàng | // | contact_id | Null/Integer | ID của liên hệ | // | description | String | Mô tả về liên hệ | // | details | String | Chi tiết liên hệ | // | email | String | Email liên hệ | // | employee_id | Null/Integer | ID nhân viên liên hệ | // | facebook_zalo | String | Thông tin tài khoản Facebook/Zalo của liên hệ | // | mobile | String | Số điện thoại liên hệ | // | name | String | Tên của liên hệ | // | relationships | Array | Mối quan hệ của liên hệ | // | resources | Array | Nguồn liên hệ | // | sales_stage | Null/Integer | Giai đoạn bán hàng của liên hệ | // | sex | String | Giới tính của liên hệ | // | title | String | Chức vụ của liên hệ | // | user_id | Integer | ID người dùng liên hệ | // | website | String | Website liên hệ | // | opportunity | Object | Thông tin cơ hội (tên, mô tả, xác suất, giá trị) | // | assigned_to | Integer | ID người được giao cơ hội | // | campaign_id | Integer | ID chiến dịch liên quan | // | description | String | Mô tả về cơ hội | // | expected_close_date | String (Date) | Ngày dự kiến hoàn thành cơ hội | // | lead_source | Integer | Nguồn khách hàng tiềm năng | // | lead_source_description | String | Mô tả về nguồn khách hàng tiềm năng | // | name | String | Tên của cơ hội | // | opportunity_amount | Integer | Giá trị cơ hội | // | probability | Integer | Xác suất thành công của cơ hội | // | sales_stage | Integer | Giai đoạn bán hàng của cơ hội |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON với thông tin được update.
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
Cập nhật thông tin cơ hội
Để chỉnh sửa thông tin cơ hội, sử dụng đoạn code sau:
import requests
import json
url = "https://api-nextcrm.nextcrm.vn/api/crm/opportunity/{id}"
headers = {
"assigned_to": 4761,
"campaign_id": 733,
"contact_id": 837208,
"description": "",
"expected_close_date": "2024-09-19",
"lead_source": "41098",
"lead_source_description": "",
"name": "xyz",
"opportunity_amount": "0.00",
"probability": 0,
"sales_stage": 4024
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
curl -X 'POST' \
'https://api-nextcrm.nextcrm.vn/api/crm/opportunity/{id}' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token' \
-H 'Content-Type: application/json' \
-d '{
"assigned_to": 4761,
"campaign_id": 733,
"contact_id": 837208,
"description": "",
"expected_close_date": "2024-09-19",
"lead_source": "41098",
"lead_source_description": "",
"name": "xyz",
"opportunity_amount": "0.00",
"probability": 0,
"sales_stage": 4024
}
'
const fetch = require('node-fetch');
const url = 'https://api-nextcrm.nextcrm.vn/api/crm/opportunity/{id}';
const options = {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
},
body: JSON.stringify({
"assigned_to": 4761,
"campaign_id": 733,
"contact_id": 837208,
"description": "",
"expected_close_date": "2024-09-19",
"lead_source": "41098",
"lead_source_description": "",
"name": "xyz",
"opportunity_amount": "0.00",
"probability": 0,
"sales_stage": 4024
})
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cung cấp truy xuất để chỉnh sửa thông tin cơ hội.
HTTP Request
PUT https://api-nextcrm.nextcrm.vn/api/crm/opportunity/{id}
Path Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
id | string | ID cơ hội (bắt buộc) |
Phản hồi
Têu cầu mẫu:
"id": 113135,
"name": "xyz",
"opportunity_amount": "0.00",
"sales_stage": 4024,
"probability": 0,
"description": "",
"expected_close_date": "2024-09-19",
"type": null,
"lead_source": "41098",
"campaign_id": 733,
"assigned_to": 4761,
"user": null,
"assigned": {
"name": "admin",
"email": "vietphat.vpic@gmail.com",
"firstname": "",
"lastname": "demo",
"picture": null
},
"lead_source_description": "",
"contact_id": 837208,
"user_id": null,
"status": null,
"reason_failed": null,
"model_name": "App\\Models\\Crm\\Opportunity",
"campaign": {
"id": 733,
"name": "Chi\u1ebfn d\u1ecbch test",
"start_date": "2024-09-19",
"end_date": "2024-09-26",
"allow_duplicate_opportunity": 0,
"divide_opportunity_auto": 1,
"hide_opportunity_info": 1,
"success_campaign_id": null,
"failed_campaign_id": null
},
"source": {
"id": 41098,
"name": "Facebook"
},
"stage": {
"id": 4024,
"name": "Th\u00f4ng tin kh\u00e1ch",
"stage_type_id": 1,
"order": 1
},
"result_id": null,
"action_id": 11065,
"next_action_id": null,
"prev_action_id": null,
"perform_after_day": 0,
"perform_after_hour": 0,
"perform_after_minute": 0,
"action": {
"id": 11065,
"name": "TH-G\u1ecdi l\u1ea7n 1",
"order": 17,
"is_default": 1,
"is_active": 1,
"next_action_id": null,
"perform_after_day": 0,
"perform_after_hour": 0,
"perform_after_minute": 30,
"description": "G\u1ecdi sau khi ti\u1ebfp nh\u1eadn th\u00f4ng tin",
"results": [
{
"id": 12951,
"order": 3,
"name": "G\u1ecdi l\u1ea1i sau",
"action_id": null,
"status": "in_process",
"description": "",
"is_active": 1,
"tenant_id": 1596,
"stage_type_id": 1,
"pivot": {
"action_id": 11065,
"result_id": 12951,
"next_action_id": 10079,
"order": 1,
"perform_after_day": 0,
"perform_after_hour": 0,
"perform_after_minute": 30
}
}
]
},
"next_action": null,
"prev_action": null,
"action_result": null,
"contact": {
"id": 837208,
"name": "abc",
"email": "",
"code": "KH24000338",
"mobile": "",
"address": "",
"resources": [],
"categories": [],
"relationships": []
},
"resource_contact": [],
"category_contact": [],
"relationships_contact": [],
"contact_name": null,
"contact_mobile": null,
"contact_email": null,
"contact_address": null,
"created_at": "2024-09-19 15:31:39",
"updated_at": "2024-09-19 15:38:16",
"time_updated_result": "2024-09-19 15:31:39",
"tags": [],
"activity_log": null,
"total_money": "0.0000",
"time_update_status": null,
"last_comment": null,
"campaign_stage": [
{
"id": 4024,
"name": "Th\u00f4ng tin kh\u00e1ch",
"stage_type_id": 1,
"order": 1
},
{
"id": 4025,
"name": "Ph\u00e2n t\u00edch nhu c\u1ea7u",
"stage_type_id": 2,
"order": 2
},
{
"id": 4026,
"name": "B\u00e1o gi\u00e1",
"stage_type_id": 3,
"order": 3
},
{
"id": 4027,
"name": "\u0110\u00e0m ph\u00e1n",
"stage_type_id": 4,
"order": 4
},
{
"id": 4028,
"name": "Th\u00e0nh c\u00f4ng",
"stage_type_id": 5,
"order": 5
},
{
"id": 4029,
"name": "Th\u1ea5t b\u1ea1i",
"stage_type_id": 6,
"order": 6
}
]
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON thành công hay không Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
SMS Marketing
Xem các chiến dịch Marketing qua tin nhắn SMS
Để xem danh sách các chiến dịch SMS, sử dụng đoạn code sau:
import requires
url = "https://api-nextcrm.nextcrm.vn/api/sms/campaigns"
header = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.get(url, headers=headers)
print(response.json())
curl -X 'GET' \
'https://api-nextcrm.nextcrm.vn/api/sms/campaigns' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = https://api-nextcrm.nextcrm.vn/api/sms/campaigns'
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cho phép truy xuất danh sách các Chiến dịch SMS.
HTTPS Request
https://api-nextcrm.nextcrm.vn/api/sms/campaigns
Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
page | integer | Số trang |
pageLimit | integer | Số lượng item trên một trang |
strSreach | string | Bộ lọc tìm kiếm |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON với thông tin được update.
Lệnh trên trả về JSON được cấu trúc như sau:
{ "id": 155,
"name": "Chi\u1ebfn d\u1ecbch test 23.9",
"description": "",
"sms_content": "Test SMS Marketing campaign ",
"send_object_type": null,
"send_all_contact": 1,
"send_now": 1,
"send_time": null,
"template_id": null,
"type": "sms",
"params": {
"param_01": "",
"param_02": "",
"param_03": "",
"param_04": "",
"param_05": "",
"param_06": "",
"param_07": "",
"param_08": "",
"param_09": "",
"param_10": ""
},
"created_by": 21,
"user": {
"name": "admin",
"email": "lelinhbk@gmail.com",
"firstname": "H\u1ea3o",
"lastname": "nguy\u00ean",
"picture": null
},
"customers": [],
"customer_groups": [],
"sms_others": [],
"campaigns": [],
"total_sms": null,
"total_send": null,
"total_not_send": 0,
"total_success": null,
"total_fail": null,
"status": "Ch\u01b0a g\u1eedi",
"time_run": "2024-09-23T07:37:19.000000Z"
}
}
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
Xem chi tiết thông tin Chiến dịch SMS
Để xem chi tiết thông tin của 1 chiến dịch SMS, sử dụng đoạn code sau:
import requires
url = "https://api-nextcrm.nextcrm.vn/api/sms/campaigns/{id}"
header = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.get(url, headers=headers)
print(response.json())
curl -X 'GET' \
'https://api-nextcrm.nextcrm.vn/api/sms/campaigns/{id}' \ # thay thế bằng id chiến dịch SMS muốn xem
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = 'https://api-nextcrm.nextcrm.vn/api/sms/campaigns/{id}' # thay thế bằng id chiến dịch SMS muốn xem
const options = {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cho phép truy xuất thông tin chi tiết của 1 chiến dịch SMS.
HTTPS Request
GET https://api-nextcrm.nextcrm.vn/api/sms/campaigns/{id}
Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
id | integer | ID của chiến dịch SMS |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON với thông tin được update.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"id": 155,
"name": "Chi\u1ebfn d\u1ecbch test 23.9",
"description": "",
"sms_content": "Test SMS Marketing campaign ",
"send_object_type": null,
"send_all_contact": 1,
"send_now": 1,
"send_time": null,
"template_id": null,
"type": "sms",
"params": {
"param_01": "",
"param_02": "",
"param_03": "",
"param_04": "",
"param_05": "",
"param_06": "",
"param_07": "",
"param_08": "",
"param_09": "",
"param_10": ""
},
"created_by": 21,
"user": {
"name": "admin",
"email": "lelinhbk@gmail.com",
"firstname": "H\u1ea3o",
"lastname": "nguy\u00ean",
"picture": null
},
"customers": [],
"customer_groups": [],
"sms_others": [],
"campaigns": [],
"total_sms": null,
"total_send": null,
"total_not_send": 0,
"total_success": null,
"total_fail": null,
"status": "Ch\u01b0a g\u1eedi",
"time_run": "2024-09-23T07:37:19.000000Z"
}
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
Tạo mới Chiến dịch SMS
Để tạo các chiến dịch SMS, ta dùng đoạn code sau:
curl -X 'POST' \
'https://api-nextcrm.nextcrm.vn/api/sms/campaigns' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token' \
-H 'Content-Type: application/json' \
-d '{
"campaigns": [],
"created_by": 21,
"customer_groups": [],
"customers": [],
"description": "",
"id": 155,
"name": "Chiến dịch test 23.9",
"params": {
"param_01": "",
"param_02": "",
"param_03": "",
"param_04": "",
"param_05": "",
"param_06": "",
"param_07": ""
},
"send_all_contact": 1,
"send_now": 1,
"send_object_type": null,
"send_time": null,
"sms_content": "Test SMS Marketing campaign",
"sms_others": [],
"status": "Chưa gửi",
"template_id": null,
"time_run": "2024-09-23T07:37:19.000000Z",
"total_fail": null,
"total_not_send": 0,
"total_send": null,
"total_sms": null,
"total_success": null,
"type": "sms",
"user": {
"name": "admin",
"email": "lelinhbk@gmail.com",
"firstname": "Hảo",
"lastname": "nguyên",
"picture": null
}
}
'
import requests
import json
url = "https://api-nextcrm.nextcrm.vn/api/sms/campaigns"
payload = {
"campaigns": [],
"created_by": 21,
"customer_groups": [],
"customers": [],
"description": "",
"id": 155,
"name": "Chiến dịch test 23.9",
"params": {
"param_01": "",
"param_02": "",
"param_03": "",
"param_04": "",
"param_05": "",
"param_06": "",
"param_07": ""
},
"send_all_contact": 1,
"send_now": 1,
"send_object_type": null,
"send_time": null,
"sms_content": "Test SMS Marketing campaign",
"sms_others": [],
"status": "Chưa gửi",
"template_id": null,
"time_run": "2024-09-23T07:37:19.000000Z",
"total_fail": null,
"total_not_send": 0,
"total_send": null,
"total_sms": null,
"total_success": null,
"type": "sms",
"user": {
"name": "admin",
"email": "lelinhbk@gmail.com",
"firstname": "Hảo",
"lastname": "nguyên",
"picture": null
}
}
headers = {
'accept': 'application/json',
'Authorization': 'Bearer your_access_token',
'Content-Type': 'application/json'
}
response = requests.post(url, headers=headers, data=json.dumps(payload))
print(response.json())
const fetch = require('node-fetch');
const url = 'https://api-nextcrm.nextcrm.vn/api/sms/campaigns';
const data = {
"campaigns": [],
"created_by": 21,
"customer_groups": [],
"customers": [],
"description": "",
"id": 155,
"name": "Chiến dịch test 23.9",
"params": {
"param_01": "",
"param_02": "",
"param_03": "",
"param_04": "",
"param_05": "",
"param_06": "",
"param_07": ""
},
"send_all_contact": 1,
"send_now": 1,
"send_object_type": null,
"send_time": null,
"sms_content": "Test SMS Marketing campaign",
"sms_others": [],
"status": "Chưa gửi",
"template_id": null,
"time_run": "2024-09-23T07:37:19.000000Z",
"total_fail": null,
"total_not_send": 0,
"total_send": null,
"total_sms": null,
"total_success": null,
"type": "sms",
"user": {
"name": "admin",
"email": "lelinhbk@gmail.com",
"firstname": "Hảo",
"lastname": "nguyên",
"picture": null
}
}
;
const options = {
method: 'POST',
headers: {
'accept': 'application/json',
'Authorization': 'Bearer your_access_token',
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cho phép thêm mới một Chiến dịch SMS.
Lệnh trên trả về JSON được cấu trúc như sau:
{
meta: {status_code: 0,
message: "Successfully"}, data: null
}
Điểm đầu cuối này cho phép tạo mới chiến dịch SMS.
HTTP Request
POST https://api-nextcrm.nextcrm.vn/api/sms/campaigns
Tham số
// | Tên biến | Kiểu biến | Mô tả | // |---------------------------|-----------------|----------------------------------------------------------| // | campaigns | Array | Danh sách các chiến dịch liên quan. | // | created_by | Integer | ID của người tạo chiến dịch. | // | customer_groups | Array | Danh sách nhóm khách hàng. | // | customers | Array | Danh sách khách hàng. | // | description | String | Mô tả chiến dịch. | // | id | Integer | ID của chiến dịch. | // | name | String | Tên của chiến dịch. | // | params | Object | Các tham số cấu hình của chiến dịch. | // | send_all_contact | Integer | Giá trị cho biết gửi đến tất cả liên hệ (1 là có). | // | send_now | Integer | Giá trị cho biết gửi ngay lập tức (1 là có). | // | send_object_type | Null | Loại đối tượng để gửi (hiện tại là null). | // | send_time | Null | Thời gian gửi dự kiến (hiện tại là null). | // | sms_content | String | Nội dung tin nhắn SMS. | // | sms_others | Array | Danh sách các SMS khác liên quan. | // | status | String | Trạng thái của chiến dịch (Chưa gửi, Đã gửi, v.v.). | // | template_id | Null | ID của mẫu tin nhắn (hiện tại là null). | // | time_run | String (DateTime)| Thời gian chạy chiến dịch. | // | total_fail | Null | Tổng số lượt gửi thất bại (hiện tại là null). | // | total_not_send | Integer | Tổng số tin chưa gửi. | // | total_send | Null | Tổng số tin đã gửi (hiện tại là null). | // | total_sms | Null | Tổng số SMS liên quan (hiện tại là null). | // | total_success | Null | Tổng số lượt gửi thành công (hiện tại là null). | // | type | String | Loại chiến dịch (sms hoặc loại khác). | // | user | Object | Thông tin người dùng tạo chiến dịch. | // | user.name | String | Tên người dùng (admin). | // | user.email | String | Email người dùng. | // | user.firstname | String | Tên đầu của người dùng. | // | user.lastname | String | Họ của người dùng. | // | user.picture | Null | Ảnh đại diện của người dùng (hiện tại là null). |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON với thông tin được update.
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
Cập nhật thông tin chiến dịch SMS
Để chỉnh sửa thông tin chiến dịch SMS, sử dụng đoạn code sau:
import requests
import json
url = "https://api-nextcrm.nextcrm.vn/api/sms/campaigns/{id}"
headers = {
"campaigns": [],
"created_by": 21,
"customer_groups": [],
"customers": [],
"description": "",
"id": 155,
"name": "Chiến dịch test 23.9",
"params": {
"param_01": "",
"param_02": "",
"param_03": "",
"param_04": "",
"param_05": "",
"param_06": "",
"param_07": ""
},
"send_all_contact": 1,
"send_now": 1,
"send_object_type": null,
"send_time": null,
"sms_content": "Test SMS Marketing campaign",
"sms_others": [],
"status": "Chưa gửi",
"template_id": null,
"time_run": "2024-09-23T07:37:19.000000Z",
"total_fail": null,
"total_not_send": 0,
"total_send": null,
"total_sms": null,
"total_success": null,
"type": "sms",
"user": {
"name": "admin",
"email": "lelinhbk@gmail.com",
"firstname": "Hảo",
"lastname": "nguyên",
"picture": null
}
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
curl -X 'POST' \
'https://api-nextcrm.nextcrm.vn/api/sms/campaigns/{id}' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token' \
-H 'Content-Type: application/json' \
-d '{
"campaigns": [],
"created_by": 21,
"customer_groups": [],
"customers": [],
"description": "",
"id": 155,
"name": "Chiến dịch test 23.9",
"params": {
"param_01": "",
"param_02": "",
"param_03": "",
"param_04": "",
"param_05": "",
"param_06": "",
"param_07": ""
},
"send_all_contact": 1,
"send_now": 1,
"send_object_type": null,
"send_time": null,
"sms_content": "Test SMS Marketing campaign",
"sms_others": [],
"status": "Chưa gửi",
"template_id": null,
"time_run": "2024-09-23T07:37:19.000000Z",
"total_fail": null,
"total_not_send": 0,
"total_send": null,
"total_sms": null,
"total_success": null,
"type": "sms",
"user": {
"name": "admin",
"email": "lelinhbk@gmail.com",
"firstname": "Hảo",
"lastname": "nguyên",
"picture": null
}
}
'
const fetch = require('node-fetch');
const url = 'https://api-nextcrm.nextcrm.vn/api/sms/campaigns/{id}';
const options = {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
},
body: JSON.stringify({
"campaigns": [],
"created_by": 21,
"customer_groups": [],
"customers": [],
"description": "",
"id": 155,
"name": "Chiến dịch test 23.9",
"params": {
"param_01": "",
"param_02": "",
"param_03": "",
"param_04": "",
"param_05": "",
"param_06": "",
"param_07": ""
},
"send_all_contact": 1,
"send_now": 1,
"send_object_type": null,
"send_time": null,
"sms_content": "Test SMS Marketing campaign",
"sms_others": [],
"status": "Chưa gửi",
"template_id": null,
"time_run": "2024-09-23T07:37:19.000000Z",
"total_fail": null,
"total_not_send": 0,
"total_send": null,
"total_sms": null,
"total_success": null,
"type": "sms",
"user": {
"name": "admin",
"email": "lelinhbk@gmail.com",
"firstname": "Hảo",
"lastname": "nguyên",
"picture": null
}
})
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cung cấp truy xuất để chỉnh sửa thông tin chiến dịch SMS.
HTTP Request
PUT https://api-nextcrm.nextcrm.vn/api/sms/campaigns/{id}
Path Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
id | string | ID chiến dịch SMS (bắt buộc) |
Phản hồi
Têu cầu mẫu:
{ "id": 155,
"name": "Chi\u1ebfn d\u1ecbch test 23.9",
"description": "",
"sms_content": "Test SMS Marketing campaign ",
"send_object_type": null,
"send_all_contact": 1,
"send_now": 1,
"send_time": null,
"template_id": null,
"type": "sms",
"params": {
"param_01": "",
"param_02": "",
"param_03": "",
"param_04": "",
"param_05": "",
"param_06": "",
"param_07": "",
"param_08": "",
"param_09": "",
"param_10": ""
},
"created_by": 21,
"user": {
"name": "admin",
"email": "lelinhbk@gmail.com",
"firstname": "H\u1ea3o",
"lastname": "nguy\u00ean",
"picture": null
},
"customers": [],
"customer_groups": [],
"sms_others": [],
"campaigns": [],
"total_sms": null,
"total_send": null,
"total_not_send": 0,
"total_success": null,
"total_fail": null,
"status": "Ch\u01b0a g\u1eedi",
"time_run": "2024-09-23T07:37:19.000000Z"
}
}
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON thành công hay không Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
Xem lịch sử tin nhắn SMS đã gửi
Để xem danh sách các tin nhắn SMS đã gửi, sử dụng đoạn code sau:
import requires
url = "https://api-nextcrm.nextcrm.vn/api/sms/history"
header = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.get(url, headers=headers)
print(response.json())
curl -X 'GET' \
'https://api-nextcrm.nextcrm.vn/api/sms/history' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = https://api-nextcrm.nextcrm.vn/api/sms/history'
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cho phép truy xuất danh sách lịch sử các tin nhắn SMS đã gửi.
HTTPS Request
https://api-nextcrm.nextcrm.vn/api/sms/history
Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
page | integer | Số trang |
pageLimit | integer | Số lượng item trên một trang |
strSreach | string | Bộ lọc tìm kiếm |
fromDate | string | Ngày bắt đầu lọc |
toDate | string | Ngày kết thúc lọc |
search[sms_type] | string | Lọc kiểu tin nhắn |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON với thông tin được update.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"id": 144019,
"sms_id": null,
"content": "Test SMS Marketing campaign ",
"phone": "0123123123",
"status": 0,
"message": "TokenNotValid: IDX10000: The parameter 'token' cannot be a 'null' or an empty object.\r\nParameter name: token",
"date_send": "2024-09-23 14:37:22",
"sms_type": "sms",
"causer_type": "App\\Models\\Customer\\Customer",
"causer_id": 9,
"causer": {
"id": 9,
"type": "supplier",
"supplier_business_name": "nghia test lan 2",
"name": "nghia test lan 2",
"email": null,
"contact_id": "nghia_test_lan_2",
"tax_number": null,
"city": null,
"state": null,
"country": null,
"landmark": null,
"mobile": "0123123123",
"landline": null,
"alternate_number": null,
"pay_term_number": null,
"pay_term_type": "days",
"created_by": null,
"is_default": 0,
"credit_limit": null,
"customer_group_id": null,
"custom_field1": null,
"custom_field2": null,
"custom_field3": null,
"custom_field4": null,
"total_rp": 0,
"total_rp_used": 0,
"total_rp_expired": 0,
"tenant_id": 1,
"address": null,
"description": null,
"avatar": null,
"lead_id": null,
"employee_id": null,
"subject_type": "",
"subject_id": null,
"ecommerce_refer_id": null,
"province_id": null,
"district_id": null,
"ward_id": null,
"date_assigned": null,
"gender": null,
"birthday": null,
"branch_id": null,
"is_active": 1,
"user_zalo_id": null,
"password": null,
"current_due": "2888317.4332",
"total_credit": "3195486.4286",
"total_debit": "331612.9954",
"user_id": null,
"is_blocked": 0,
"is_sample_data": 0,
"refer_tenant_id": null,
"lat": null,
"lng": null,
"referral_code": null,
"account_name": null,
"account_address": null,
"account_no": null,
"ecommerce": null,
"type_id": null,
"channel_id": null,
"region_id": null,
"parent_id": null
},
"causer_name": "0123123123"
}
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
Email Marketing
Xem các chiến dịch Marketing qua tin nhắn Email
Để xem danh sách các chiến dịch Email, sử dụng đoạn code sau:
import requires
url = "https://api-nextcrm.nextcrm.vn/api/email/campaigns"
header = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.get(url, headers=headers)
print(response.json())
curl -X 'GET' \
'https://api-nextcrm.nextcrm.vn/api/email/campaigns' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = 'https://api-nextcrm.nextcrm.vn/api/email/campaigns'
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cho phép truy xuất danh sách các Chiến dịch Email.
HTTPS Request
GET https://api-nextcrm.nextcrm.vn/api/email/campaigns
Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
page | integer | Số trang |
pageLimit | integer | Số lượng item trên một trang |
strSreach | string | Bộ lọc tìm kiếm |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON với thông tin được update.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"id": 106,
"name": "Test g\u1eedi emailXXXXXXXXX",
"description": "",
"from_name": "NextX",
"mail_from": "noreply.nextcrm@gmail.com",
"mail_subject": "XXXXXXH\u01b0\u1edbng d\u1eabn s\u1eed d\u1ee5ng ph\u1ea7n m\u1ec1m NextCrmXXXXXXXX",
"mail_content": "<p> <strong>{{contact_name}} th\u00e2n m\u1ebfn,<\/strong><\/p><p>C\u1ea3m \u01a1n \u0111\u00e3 quan t\u00e2m \u0111\u1ebfn ph\u1ea7m m\u1ec1m qu\u1ea3n l\u00fd v\u00e0 ch\u0103m s\u00f3c kh\u00e1ch h\u00e0ng c\u1ee7a NEXTCRM. M\u1eddi b\u1ea1n xem th\u00eam h\u01b0\u1edbng d\u1eabn s\u1eed d\u1ee5ng ph\u1ea7n m\u1ec1m \u0111\u1ec3 c\u00f3 nh\u1eefng tr\u1ea3i nghi\u1ec7m t\u1ed1t h\u01a1n v\u00e0 c\u00f3 th\u00eam nh\u1eefng \u00fd t\u01b0\u1edfng m\u1edbi \u1ee9ng d\u1ee5ng v\u00e0o gi\u1ea3i b\u00e0i to\u00e1n doanh nghi\u1ec7p \u0111ang g\u1eb7p ph\u1ea3i:<\/p><p><span style=\"color: rgb(34, 34, 34); font-family: Roboto, RobotoDraft, Helvetica, Arial, sans-serif; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: -webkit-left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; font-size: 14px;\">*H\u01b0\u1edbng d\u1eabn s\u1eed d\u1ee5ng ph\u1ea7n m\u1ec1m:<\/span><span> <\/span><a href=\"https:\/\/support.nextcrm.vn\/\" target=\"_blank\" title=\"H\u01b0\u1edbng d\u1eabn x\u1eed d\u1ee5ng\"><span style=\"font-size: 14px;\">[H\u01b0\u1edbng d\u1eabn]<\/span><\/a><\/p><p><span style=\"color: rgb(34, 34, 34); font-family: Roboto, RobotoDraft, Helvetica, Arial, sans-serif; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: -webkit-left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; font-size: 14px;\">Ch\u00fac b\u1ea1n m\u1ed9t ng\u00e0y t\u1ed1t l\u00e0nh!<\/span><br style=\"color: rgb(34, 34, 34); font-family: Roboto, RobotoDraft, Helvetica, Arial, sans-serif; font-size: small; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: -webkit-left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;\">NEXT<span class=\"il\">CRM<\/span><\/p>",
"send_object_type": null,
"file_attach": null,
"send_all_contact": 0,
"is_mail_system": 1,
"send_now": 1,
"is_track_mail": 1,
"send_time": null,
"template_id": null,
"created_by": 21,
"user": {
"name": "admin",
"email": "lelinhbk@gmail.com",
"firstname": "H\u1ea3o",
"lastname": "nguy\u00ean",
"picture": null
},
"customers": [
{
"id": 222216,
"type": "customer",
"supplier_business_name": "",
"name": "Le Van Linh",
"email": "lelinhbk@gmail.com",
"contact_id": "24000390",
"tax_number": "",
"city": "",
"state": "",
"country": null,
"landmark": "",
"mobile": "",
"landline": "",
"alternate_number": "",
"pay_term_number": 0,
"pay_term_type": "days",
"created_by": null,
"is_default": 0,
"credit_limit": "0.0000",
"customer_group_id": 1,
"custom_field1": "",
"custom_field2": "",
"custom_field3": "",
"custom_field4": "",
"total_rp": 0,
"total_rp_used": 0,
"total_rp_expired": 0,
"tenant_id": 1,
"address": "",
"description": "Ngu\u1ed3n t\u1eeb chat facebook: NextX Gym Master",
"avatar": "https:\/\/img.nextcrm.vn\/nextcrm\/nextcrm\/1721532870998\/avatar.jpg",
"lead_id": 790271,
"employee_id": 36430,
"subject_type": "App\\Models\\Contact\\Contact",
"subject_id": 790271,
"ecommerce_refer_id": null,
"province_id": null,
"district_id": null,
"ward_id": null,
"date_assigned": "2024-08-05",
"gender": null,
"birthday": null,
"branch_id": 1,
"is_active": 1,
"user_zalo_id": null,
"password": null,
"current_due": "0.0000",
"total_credit": "0.0000",
"total_debit": "0.0000",
"user_id": null,
"is_blocked": 0,
"is_sample_data": 0,
"refer_tenant_id": null,
"lat": 21.018533767745573,
"lng": 105.78038547188044,
"referral_code": null,
"account_name": "",
"account_address": "",
"account_no": "",
"ecommerce": null,
"type_id": null,
"channel_id": null,
"region_id": null,
"parent_id": null,
"pivot": {
"email_id": 106,
"customer_id": 222216
}
}
],
"customer_groups": [],
"email_others": [
{
"id": 1,
"email_id": 106,
"mobile": "0977999888",
"name": "Nguy\u1ec5n H\u1eefu T\u00f9ng",
"email": "abc@gmail.com",
"sex": "Nam",
"birthday": "2020-04-14",
"address": "H\u00e0 N\u1ed9i",
"message": "K\u00ednh ch\u00e0o qu\u00fd kh\u00e1ch",
"param_01": "param_01",
"param_02": "param_02",
"param_03": "param_03",
"param_04": "param_04",
"param_05": "param_05"
}
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
Xem chi tiết thông tin Chiến dịch Email
Để xem chi tiết thông tin của 1 chiến dịch Email, sử dụng đoạn code sau:
import requires
url = "https://api-nextcrm.nextcrm.vn/api/email/campaigns/{id}"
header = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.get(url, headers=headers)
print(response.json())
curl -X 'GET' \
'https://api-nextcrm.nextcrm.vn/api/email/campaigns/{id}' \ # thay thế bằng id chiến dịch Email muốn xem
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = 'https://api-nextcrm.nextcrm.vn/api/email/campaigns/{id}' # thay thế bằng id chiến dịch Email muốn xem
const options = {
method: 'GET',
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cho phép truy xuất thông tin chi tiết của 1 chiến dịch Email.
HTTPS Request
GET https://api-nextcrm.nextcrm.vn/api/email/campaigns/{id}
Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
id | integer | ID của chiến dịch Email |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON với thông tin được update.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"id": 106,
"name": "Test g\u1eedi emailXXXXXXXXX",
"description": "",
"from_name": "NextX",
"mail_from": "noreply.nextcrm@gmail.com",
"mail_subject": "XXXXXXH\u01b0\u1edbng d\u1eabn s\u1eed d\u1ee5ng ph\u1ea7n m\u1ec1m NextCrmXXXXXXXX",
"mail_content": "<p> <strong>{{contact_name}} th\u00e2n m\u1ebfn,<\/strong><\/p><p>C\u1ea3m \u01a1n \u0111\u00e3 quan t\u00e2m \u0111\u1ebfn ph\u1ea7m m\u1ec1m qu\u1ea3n l\u00fd v\u00e0 ch\u0103m s\u00f3c kh\u00e1ch h\u00e0ng c\u1ee7a NEXTCRM. M\u1eddi b\u1ea1n xem th\u00eam h\u01b0\u1edbng d\u1eabn s\u1eed d\u1ee5ng ph\u1ea7n m\u1ec1m \u0111\u1ec3 c\u00f3 nh\u1eefng tr\u1ea3i nghi\u1ec7m t\u1ed1t h\u01a1n v\u00e0 c\u00f3 th\u00eam nh\u1eefng \u00fd t\u01b0\u1edfng m\u1edbi \u1ee9ng d\u1ee5ng v\u00e0o gi\u1ea3i b\u00e0i to\u00e1n doanh nghi\u1ec7p \u0111ang g\u1eb7p ph\u1ea3i:<\/p><p><span style=\"color: rgb(34, 34, 34); font-family: Roboto, RobotoDraft, Helvetica, Arial, sans-serif; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: -webkit-left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; font-size: 14px;\">*H\u01b0\u1edbng d\u1eabn s\u1eed d\u1ee5ng ph\u1ea7n m\u1ec1m:<\/span><span> <\/span><a href=\"https:\/\/support.nextcrm.vn\/\" target=\"_blank\" title=\"H\u01b0\u1edbng d\u1eabn x\u1eed d\u1ee5ng\"><span style=\"font-size: 14px;\">[H\u01b0\u1edbng d\u1eabn]<\/span><\/a><\/p><p><span style=\"color: rgb(34, 34, 34); font-family: Roboto, RobotoDraft, Helvetica, Arial, sans-serif; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: -webkit-left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; font-size: 14px;\">Ch\u00fac b\u1ea1n m\u1ed9t ng\u00e0y t\u1ed1t l\u00e0nh!<\/span><br style=\"color: rgb(34, 34, 34); font-family: Roboto, RobotoDraft, Helvetica, Arial, sans-serif; font-size: small; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: -webkit-left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;\">NEXT<span class=\"il\">CRM<\/span><\/p>",
"send_object_type": null,
"file_attach": null,
"send_all_contact": 0,
"is_mail_system": 1,
"send_now": 1,
"is_track_mail": 1,
"send_time": null,
"template_id": null,
"created_by": 21,
"user": {
"name": "admin",
"email": "lelinhbk@gmail.com",
"firstname": "H\u1ea3o",
"lastname": "nguy\u00ean",
"picture": null
},
"customers": [
{
"id": 222216,
"type": "customer",
"supplier_business_name": "",
"name": "Le Van Linh",
"email": "lelinhbk@gmail.com",
"contact_id": "24000390",
"tax_number": "",
"city": "",
"state": "",
"country": null,
"landmark": "",
"mobile": "",
"landline": "",
"alternate_number": "",
"pay_term_number": 0,
"pay_term_type": "days",
"created_by": null,
"is_default": 0,
"credit_limit": "0.0000",
"customer_group_id": 1,
"custom_field1": "",
"custom_field2": "",
"custom_field3": "",
"custom_field4": "",
"total_rp": 0,
"total_rp_used": 0,
"total_rp_expired": 0,
"tenant_id": 1,
"address": "",
"description": "Ngu\u1ed3n t\u1eeb chat facebook: NextX Gym Master",
"avatar": "https:\/\/img.nextcrm.vn\/nextcrm\/nextcrm\/1721532870998\/avatar.jpg",
"lead_id": 790271,
"employee_id": 36430,
"subject_type": "App\\Models\\Contact\\Contact",
"subject_id": 790271,
"ecommerce_refer_id": null,
"province_id": null,
"district_id": null,
"ward_id": null,
"date_assigned": "2024-08-05",
"gender": null,
"birthday": null,
"branch_id": 1,
"is_active": 1,
"user_zalo_id": null,
"password": null,
"current_due": "0.0000",
"total_credit": "0.0000",
"total_debit": "0.0000",
"user_id": null,
"is_blocked": 0,
"is_sample_data": 0,
"refer_tenant_id": null,
"lat": 21.018533767745573,
"lng": 105.78038547188044,
"referral_code": null,
"account_name": "",
"account_address": "",
"account_no": "",
"ecommerce": null,
"type_id": null,
"channel_id": null,
"region_id": null,
"parent_id": null,
"pivot": {
"email_id": 106,
"customer_id": 222216
}
}
],
"customer_groups": [],
"email_others": [
{
"id": 1,
"email_id": 106,
"mobile": "0977999888",
"name": "Nguy\u1ec5n H\u1eefu T\u00f9ng",
"email": "abc@gmail.com",
"sex": "Nam",
"birthday": "2020-04-14",
"address": "H\u00e0 N\u1ed9i",
"message": "K\u00ednh ch\u00e0o qu\u00fd kh\u00e1ch",
"param_01": "param_01",
"param_02": "param_02",
"param_03": "param_03",
"param_04": "param_04",
"param_05": "param_05"
},
{
"id": 2,
"email_id": 106,
"mobile": "0977999888",
"name": "Nguy\u1ec5n H\u1eefu T\u00f9ng",
"email": "abc@gmail.com",
"sex": "Nam",
"birthday": "2020-04-14",
"address": "H\u00e0 N\u1ed9i",
"message": "K\u00ednh ch\u00e0o qu\u00fd kh\u00e1ch",
"param_01": "param_01",
"param_02": "param_02",
"param_03": "param_03",
"param_04": "param_04",
"param_05": "param_05"
},
{
"id": 3,
"email_id": 106,
"mobile": "0977999888",
"name": "Nguy\u1ec5n H\u1eefu T\u00f9ng",
"email": "abc@gmail.com",
"sex": "Nam",
"birthday": "2020-04-14",
"address": "H\u00e0 N\u1ed9i",
"message": "K\u00ednh ch\u00e0o qu\u00fd kh\u00e1ch",
"param_01": "param_01",
"param_02": "param_02",
"param_03": "param_03",
"param_04": "param_04",
"param_05": "param_05"
}
],
"params": {
"param_01": "",
"param_02": "",
"param_03": "",
"param_04": "",
"param_05": "",
"param_06": "",
"param_07": "",
"param_08": "",
"param_09": "",
"param_10": ""
},
"campaigns": [],
"total_emails": null,
"total_send": null,
"total_not_send": 0,
"total_read": null,
"total_not_read": null,
"total_success": null,
"total_fail": null,
"status": "\u0110\u00e3 g\u1eedi",
"time_run": "2024-08-07T10:06:11.000000Z"
}
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
Tạo mới Chiến dịch Email
Để tạo các chiến dịch Email, ta dùng đoạn code sau:
curl -X 'POST' \
'https://api-nextcrm.nextcrm.vn/api/email/campaigns' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token' \
-H 'Content-Type: application/json' \
-d '{
"campaigns": [708],
"customer_groups": ["26"],
"customers": [],
"description": "",
"email_others": [],
"from_name": "DemoX",
"is_mail_system": 1,
"is_track_mail": 0,
"mail_content": "<p>Marketing tự động</p>",
"mail_from": "noreply.nextcrm@gmail.com",
"mail_subject": "Test chiến dịch Email",
"name": "Email campaign",
"params": {
"param_01": "",
"param_02": "",
"param_03": "",
"param_04": "",
"param_05": "",
"param_06": "",
"param_07": ""
},
"send_all_contact": 0,
"send_now": 1,
"send_time": null
}
'
import requests
import json
url = "https://api-nextcrm.nextcrm.vn/api/email/campaigns"
payload = {
"campaigns": [708],
"customer_groups": ["26"],
"customers": [],
"description": "",
"email_others": [],
"from_name": "DemoX",
"is_mail_system": 1,
"is_track_mail": 0,
"mail_content": "<p>Marketing tự động</p>",
"mail_from": "noreply.nextcrm@gmail.com",
"mail_subject": "Test chiến dịch Email",
"name": "Email campaign",
"params": {
"param_01": "",
"param_02": "",
"param_03": "",
"param_04": "",
"param_05": "",
"param_06": "",
"param_07": ""
},
"send_all_contact": 0,
"send_now": 1,
"send_time": null
}
headers = {
'accept': 'application/json',
'Authorization': 'Bearer your_access_token',
'Content-Type': 'application/json'
}
response = requests.post(url, headers=headers, data=json.dumps(payload))
print(response.json())
const fetch = require('node-fetch');
const url = 'https://api-nextcrm.nextcrm.vn/api/email/campaigns';
const data = {
"campaigns": [708],
"customer_groups": ["26"],
"customers": [],
"description": "",
"email_others": [],
"from_name": "DemoX",
"is_mail_system": 1,
"is_track_mail": 0,
"mail_content": "<p>Marketing tự động</p>",
"mail_from": "noreply.nextcrm@gmail.com",
"mail_subject": "Test chiến dịch Email",
"name": "Email campaign",
"params": {
"param_01": "",
"param_02": "",
"param_03": "",
"param_04": "",
"param_05": "",
"param_06": "",
"param_07": ""
},
"send_all_contact": 0,
"send_now": 1,
"send_time": null
}
;
const options = {
method: 'POST',
headers: {
'accept': 'application/json',
'Authorization': 'Bearer your_access_token',
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cho phép thêm mới một Chiến dịch Email.
Lệnh trên trả về JSON được cấu trúc như sau:
{
meta: {status_code: 0,
message: "Successfully"}, data: null
}
Điểm đầu cuối này cho phép tạo mới chiến dịch Email.
HTTP Request
POST https://api-nextcrm.nextcrm.vn/api/email/campaigns
Tham số
// | Tên biến | Kiểu biến | Mô tả | // |---------------------------|-----------------|----------------------------------------------------------| // | campaigns | Array | Danh sách ID của các chiến dịch liên quan. | // | customer_groups | Array | Danh sách ID của các nhóm khách hàng liên quan. | // | customers | Array | Danh sách khách hàng. | // | description | String | Mô tả về chiến dịch. | // | email_others | Array | Danh sách các email khác liên quan đến chiến dịch. | // | from_name | String | Tên người gửi của chiến dịch email. | // | is_mail_system | Integer | Cho biết có sử dụng hệ thống mail (1 là có). | // | is_track_mail | Integer | Cho biết có theo dõi email hay không (0 là không). | // | mail_content | String | Nội dung của email trong chiến dịch. | // | mail_from | String | Địa chỉ email người gửi. | // | mail_subject | String | Tiêu đề email của chiến dịch. | // | name | String | Tên của chiến dịch email. | // | params | Object | Các tham số cấu hình của chiến dịch. | // | send_all_contact | Integer | Giá trị cho biết có gửi đến tất cả liên hệ hay không. | // | send_now | Integer | Giá trị cho biết gửi ngay lập tức hay không (1 là có). | // | send_time | Null | Thời gian gửi dự kiến (hiện tại là null). |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON với thông tin được update.
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
Cập nhật thông tin chiến dịch Email
Để chỉnh sửa thông tin chiến dịch Email, sử dụng đoạn code sau:
import requests
import json
url = "https://api-nextcrm.nextcrm.vn/api/sms/campaigns/{id}"
headers = {
{
"campaigns": [708],
"customer_groups": ["26"],
"customers": [],
"description": "",
"email_others": [],
"from_name": "DemoX",
"is_mail_system": 1,
"is_track_mail": 0,
"mail_content": "<p>Marketing tự động</p>",
"mail_from": "noreply.nextcrm@gmail.com",
"mail_subject": "Test chiến dịch Email",
"name": "Email campaign",
"params": {
"param_01": "",
"param_02": "",
"param_03": "",
"param_04": "",
"param_05": "",
"param_06": "",
"param_07": ""
},
"send_all_contact": 0,
"send_now": 1,
"send_time": null
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
curl -X 'POST' \
'https://api-nextcrm.nextcrm.vn/api/sms/campaigns/{id}' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token' \
-H 'Content-Type: application/json' \
-d '{
"campaigns": [708],
"customer_groups": ["26"],
"customers": [],
"description": "",
"email_others": [],
"from_name": "DemoX",
"is_mail_system": 1,
"is_track_mail": 0,
"mail_content": "<p>Marketing tự động</p>",
"mail_from": "noreply.nextcrm@gmail.com",
"mail_subject": "Test chiến dịch Email",
"name": "Email campaign",
"params": {
"param_01": "",
"param_02": "",
"param_03": "",
"param_04": "",
"param_05": "",
"param_06": "",
"param_07": ""
},
"send_all_contact": 0,
"send_now": 1,
"send_time": null
}
'
const fetch = require('node-fetch');
const url = 'https://api-nextcrm.nextcrm.vn/api/sms/campaigns/{id}';
const options = {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
},
body: JSON.stringify({
"campaigns": [708],
"customer_groups": ["26"],
"customers": [],
"description": "",
"email_others": [],
"from_name": "DemoX",
"is_mail_system": 1,
"is_track_mail": 0,
"mail_content": "<p>Marketing tự động</p>",
"mail_from": "noreply.nextcrm@gmail.com",
"mail_subject": "Test chiến dịch Email",
"name": "Email campaign",
"params": {
"param_01": "",
"param_02": "",
"param_03": "",
"param_04": "",
"param_05": "",
"param_06": "",
"param_07": ""
},
"send_all_contact": 0,
"send_now": 1,
"send_time": null
}
)
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cung cấp truy xuất để chỉnh sửa thông tin chiến dịch Email.
HTTP Request
PUT https://api-nextcrm.nextcrm.vn/api/email/campaigns/{id}
Path Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
id | string | ID chiến dịch Email (bắt buộc) |
Phản hồi
Têu cầu mẫu:
{ {
"id": 115,
"name": "Email campaign",
"description": "",
"from_name": "DemoX",
"mail_from": "noreply.nextcrm@gmail.com",
"mail_subject": "Test chi\u1ebfn d\u1ecbch Email",
"mail_content": "<p>Marketing t\u1ef1 \u0111\u1ed9ng<\/p>",
"send_object_type": null,
"file_attach": null,
"send_all_contact": 0,
"is_mail_system": 1,
"send_now": 1,
"is_track_mail": 0,
"send_time": null,
"template_id": null,
"created_by": 21,
"user": {
"name": "admin",
"email": "lelinhbk@gmail.com",
"firstname": "H\u1ea3o",
"lastname": "nguy\u00ean",
"picture": null
},
"customers": [],
"customer_groups": [
{
"id": 26,
"name": "Kh\u00e1ch h\u00e0ng c\u01a1 b\u1ea3n",
"amount": 0,
"description": "\u0110\u00e3 m\u1edf t\u00e0i kho\u1ea3n t\u1ea1i MB",
"is_sample_data": 0,
"pivot": {
"email_id": 115,
"customer_group_id": 26
}
}
],
"email_others": [],
"params": {
"param_01": "",
"param_02": "",
"param_03": "",
"param_04": "",
"param_05": "",
"param_06": "",
"param_07": "",
"param_08": "",
"param_09": "",
"param_10": ""
},
"campaigns": [
{
"id": 708,
"name": "Tuyen test",
"start_date": "2024-05-10",
"end_date": "2024-05-10",
"budget": "0.00",
"actual_cost": null,
"objective": "",
"description": "",
"status": "108",
"type": null,
"impression": null,
"expected_cost": null,
"expected_revenue": null,
"assigned_to": 21,
"tenant_id": 1,
"user_id": 21,
"code": "CP000143",
"allow_duplicate_opportunity": 0,
"divide_opportunity_auto": null,
"hide_opportunity_info": 0,
"success_campaign_id": null,
"failed_campaign_id": null,
"time_wait_register": null,
"campaign_type": 107,
"branch_id": 1,
"pivot": {
"email_id": 115,
"campaign_id": 708
}
}
],
"total_emails": null,
"total_send": null,
"total_not_send": 0,
"total_read": null,
"total_not_read": null,
"total_success": null,
"total_fail": null,
"status": "\u0110\u00e3 g\u1eedi",
"time_run": "2024-09-23T08:39:49.000000Z"
}
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON thành công hay không Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
Xem lịch sử tin nhắn Email đã gửi
Để xem danh sách các tin nhắn Email đã gửi, sử dụng đoạn code sau:
import requires
url = "https://api-nextcrm.nextcrm.vn/api/email/history"
header = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.get(url, headers=headers)
print(response.json())
curl -X 'GET' \
'https://api-nextcrm.nextcrm.vn/api/email/history' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = 'https://api-nextcrm.nextcrm.vn/api/email/history'
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cho phép truy xuất danh sách lịch sử các tin nhắn Email đã gửi.
HTTPS Request
GET https://api-nextcrm.nextcrm.vn/api/email/history
Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
page | integer | Số trang |
pageLimit | integer | Số lượng item trên một trang |
campaign_name | string | Tên chiến dịch |
mail_from | string | Người gửi mail |
mail_to | string | Người nhận mail |
from_date | string | Ngày bắt đầu lọc |
to_date | string | Ngày kết thúc lọc |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON với thông tin được update.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"id": 115,
"subject": "Test chi\u1ebfn d\u1ecbch Email",
"body": "<p>Marketing t\u1ef1 \u0111\u1ed9ng<\/p>",
"email": "9999999999999999999@gmai.com",
"status": 1,
"date_send": "2024-09-23 15:39:52",
"causer_type": "App\\Models\\Contact\\Contact",
"causer_id": 713436,
"error_message": "G\u1eedi th\u00e0nh c\u00f4ng",
"email_id": 115,
"email_from": "noreply.nextcrm@gmail.com",
"is_read": 0,
"time_read": null,
"causer": {
"id": 713436,
"name": "aaaaaaaaaaaaaa",
"phone": null,
"mobile": "0977999555",
"email": "9999999999999999999@gmai.com",
"default": null,
"website": null,
"details": null,
"address": null,
"street": null,
"city": null,
"state": null,
"country": null,
"zip": null,
"lat": null,
"lng": null,
"status": null,
"slug": null,
"user_id": null,
"user_type": null,
"upload_folder": null,
"tenant_id": 1,
"deleted_at": null,
"created_at": "2024-01-20 10:16:32",
"updated_at": "2024-07-31 16:51:05",
"title": null,
"sales_stage": null,
"code": "24000057",
"birthday": null,
"sex": "male",
"contact_tel": null,
"contact_name": null,
"contact_description": null,
"contact_email": null,
"contact_position": null,
"facebook_zalo": null,
"employee_id": null,
"branch_id": 21,
"user_zalo_id": null,
"avatar": null,
"description": "aaaaaa",
"member_id": null,
"source": "landing_page",
"page_id": null,
"psid": null,
"utm_id": null,
"utm_source": null,
"utm_medium": null,
"utm_campaign": null,
"utm_term": null,
"utm_content": null,
"utm_ref_code": null,
"utm_seller_code": null,
"province_id": 1,
"district_id": null,
"ward_id": null,
"date_assigned": null,
"refer_tenant_id": null,
"is_sample_data": 0,
"created_by": null,
"updated_by": null,
"tax_number": null,
"account_name": null,
"account_address": null,
"account_no": null,
"pipeline_note": null,
"pipeline_id": 8,
"constraint_code": null
}
}
Nếu token đã hết hạn hoặc không hợp lệ, máy chủ sẽ trả về mã trạng thái 401 kèm theo thông báo cho biết token đã hết hạn.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"status_code": 401,
"message": "Token expired"
}
Lấy thống kê chiến dịch Email
Để xem thống kê các chiến dịch Email, sử dụng đoạn code sau:
import requires
url = "https://api-nextcrm.nextcrm.vn/api/email/statistic"
header = {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
response = requests.get(url, headers=headers)
print(response.json())
curl -X 'GET' \
'https://api-nextcrm.nextcrm.vn/api/email/statistic' \
-H 'accept: application/json' \
-H 'Authorization: Bearer your_access_token'
const fetch = require('node-fetch');
const url = 'https://api-nextcrm.nextcrm.vn/api/email/statistic'
headers: {
'Accept': 'application/json',
'Authorization': 'Bearer your_access_token'
}
};
fetch(url, options)
.then(response => response.json())
.then(data => console.log(data));
Điểm đầu cuối này cho phép truy xuất danh sách các Chiến dịch Email.
HTTPS Request
GET https://api-nextcrm.nextcrm.vn/api/email/statistic
Tham số (Biến)
Tham số (Biến) | Kiểu dữ liệu | Mô tả |
---|---|---|
page | integer | Số trang |
pageLimit | integer | Số lượng item trên một trang |
strSreach | string | Bộ lọc tìm kiếm |
from_date | string | Lọc từ ngày |
to_date | string | Lọc đến ngày |
Phản hồi
Nếu yêu cầu thành công, máy chủ sẽ trả về phản hồi JSON với thông tin được update.
Lệnh trên trả về JSON được cấu trúc như sau:
{
"id": 115,
"name": "Email campaign",
"description": "",
"from_name": "DemoX",
"mail_from": "noreply.nextcrm@gmail.com",
"mail_subject": "Test chi\u1ebfn d\u1ecbch Email",
"mail_content": "<p>Marketing t\u1ef1 \u0111\u1ed9ng<\/p>",
"send_object_type": null,
"file_attach": null,
"send_all_contact": 0,
"is_mail_system": 1,
"send_now": 1,
"is_track_mail": 0,
"send_time": null,
"template_id": null,
"created_by": 21,
"user": {
"name": "admin",
"email": "lelinhbk@gmail.com",
"firstname": "H\u1ea3o",
"lastname": "nguy\u00ean",
"picture": null
},
"customers": [],
"customer_groups": [
{
"id": 26,
"name": "Kh\u00e1ch h\u00e0ng c\u01a1 b\u1ea3n",
"amount": 0,
"description": "\u0110\u00e3 m\u1edf t\u00e0i kho\u1ea3n t\u1ea1i MB",
"is_sample_data": 0,
"pivot": {
"email_id": 115,
"customer_group_id": 26
}
}
],
"email_others": [],
"params": {
"param_01": "",
"param_02": "",
"param_03": "",
"param_04": "",
"param_05": "",
"param_06": "",
"param_07": "",
"param_08": "",
"param_09": "",
"param_10": ""
},
"campaigns": [
{
"id": 708,
"name": "Tuyen test",
"start_date": "2024-05-10",
"end_date": "2024-05-10",
"budget": "0.00",
"actual_cost": null,
"objective": "",
"description": "",
"status": "108",
"type": null,
"impression": null,
"expected_cost": null,
"expected_revenue": null,
"assigned_to": 21,
"tenant_id": 1,
"user_id": 21,
"code": "CP000143",
"allow_duplicate_opportunity": 0,
"divide_opportunity_auto": null,
"hide_opportunity_info": 0,
"success_campaign_id": null,
"failed_campaign_id": null,
"time_wait_register": null,
"campaign_type": 107,
"branch_id": 1,
"pivot": {
"email_id": 115,
"campaign_id": 708
}
}
],
"total_emails": null,
"total_send": null,
"total_not_send": 0,
"total_read": null,
"total_not_read": null,
"total_success": null,
"total_fail": null,
"status": "\u0110\u00e3 g\u1eedi"