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ụ.

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": []
}
]

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

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 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 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": []
  }
]

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": []
  }
]

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 đơntrả 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éo 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"
}

Errors

The NextX API uses the following error codes:

Error Code Meaning
400 Bad Request -- Your request is invalid.
401 Token is expired or invalid.