NAV
shell ruby python javascript

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,
   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",
     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"
      }
    ]
  },
   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: "",
   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",
   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
email string email
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',
   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
email 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": []  
}  
## Lấy chi tiết đơn đặt hàng > Để xem thông tin chi tiết đơn đặt, sử dụng đoạn code sau: ```shell curl -X 'GET' \ 'https://open-api.nextx.vn/api/purchase/purchase-by-code/{code}' \ -H 'accept: application/json' \ -H 'Authorization: Bearer your_access_token' ``` ```python import requests url = "https://open-api.nextx.vn/api/purchase/purchase-by-code/{code}" headers = { 'Accept': 'application/json', 'Authorization': 'Bearer your_access_token' } response = requests.get(url, headers=headers) print(response.json()) ``` ``` javascript Copy code const fetch = require('node-fetch'); const url = 'https://open-api.nextx.vn/api/purchase/purchase-by-code/{code}'; 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 trên truy xuất đơn thông tin chi tiết đơn đặt hàng ### HTTP Request `GET https://open-api.nextx.vn/api/purchase/purchase-by-code/{code}` ### Tham số (Biến) Tham số (Biến) | Kiểu dữ liệu | Mô tả --------- | ---- | ----------- code | string | Mã đặt 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 . > Lệnh trên trả về JSON được cấu trúc như sau: ```json { "id": 0, "transaction_date": "2024-08-07", "invoice_no": "string", "discount_type": "string", "discount_amount": "string", "total_before_tax": "string", "tax_amount": "string", "final_total": "string", "shipping_status": "ordered", "approved_status": "string", "additional_notes": "string", "customer": { "id": 0, "name": "string", "code": "string", "mobile": "string", "gender": "string", "birthday": "2024-08-07", "address": "string", "account_address": "", "account_no": "" }, "created_by": { "id": 0, "name": "string", "firstname": "string", "lastname": "string" }, "branch": { "id": 0, "name": "string", "code": "string", "tel": "string", "fax": "string", "avatar": "string", "address": "string", "Mô tả": "string" }, "products": [ { "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 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: ```json { "meta": { "message": "Token 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
email 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  số item muốn  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

GEThttps://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  số item muốn  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  số item muốn  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  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>&nbsp;<\/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>&nbsp;<\/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"