GET /apiv2/pricing
Điểm cuối định giá tổng hợp trả về toàn bộ giá dịch vụ trong một phản hồi duy nhất với các khoảng thời gian động.
Giá có thể thay đổi trong quá trình thực hiện
Mức giá được trả về bởi điểm cuối này có thể thay đổi trong khi đơn hàng đang được xử lý. Nhà cung cấp energy có thể từ chối yêu cầu ủy quyền, trong trường hợp đó Netts sẽ tự động chuyển hướng đơn hàng đến nhà cung cấp khả dụng tiếp theo. Netts cam kết không chỉ cung cấp mức giá cạnh tranh nhất mà còn đảm bảo nguồn cung cấp energy đáng tin cậy — do đó đơn hàng có thể được thực hiện với mức giá cao hơn mức giá đã báo ban đầu. Điều này chỉ áp dụng cho các đơn hàng từ 300.000 đơn vị energy trở lên.
Khuyến nghị
Đây là điểm cuối định giá được khuyến nghị. Nó thay thế cho điểm cuối cũ /apiv2/prices sắp ngừng hoạt động.
URL điểm cuối
GET https://netts.io/apiv2/pricingTiêu đề yêu cầu
| Tiêu đề | Bắt buộc | Mô tả | Giá trị |
|---|---|---|---|
| X-API-KEY | Có | Khóa API của bạn | string |
| X-Real-IP | Có | Địa chỉ IP từ danh sách trắng | Địa chỉ IP |
| X-Format | Không | Định dạng phản hồi (mặc định: JSON đầy đủ) | now, compact, short, short1h, count |
Tham số truy vấn
| Tham số | Loại | Mặc định | Mô tả |
|---|---|---|---|
| services | string | all | Bộ lọc danh sách dịch vụ cần bao gồm, phân tách bằng dấu phẩy |
Dịch vụ khả dụng
| Dịch vụ | Mô tả |
|---|---|
energy_1h | Giá ủy quyền energy 1 giờ |
energy_5m | Giá ủy quyền energy 5 phút |
host | Tỷ giá ủy quyền Host energy |
aml | Giá kiểm tra địa chỉ AML |
bandwidth | Giá thuê Bandwidth — tùy chọn (opt-in): chỉ được trả về khi được yêu cầu rõ ràng qua ?services=bandwidth (không nằm trong phản hồi mặc định) |
Yêu cầu mẫu
cURL — Phản hồi đầy đủ
curl -X GET https://netts.io/apiv2/pricing \
-H "X-API-KEY: your_api_key" \
-H "X-Real-IP: your_whitelisted_ip"cURL — Lọc theo dịch vụ
# Only energy 1h prices
curl -X GET "https://netts.io/apiv2/pricing?services=energy_1h" \
-H "X-API-KEY: your_api_key" \
-H "X-Real-IP: your_whitelisted_ip"
# Energy 1h + AML
curl -X GET "https://netts.io/apiv2/pricing?services=energy_1h,aml" \
-H "X-API-KEY: your_api_key" \
-H "X-Real-IP: your_whitelisted_ip"
# Host prices only
curl -X GET "https://netts.io/apiv2/pricing?services=host" \
-H "X-API-KEY: your_api_key" \
-H "X-Real-IP: your_whitelisted_ip"
# Bandwidth rental prices (opt-in — must be requested explicitly)
curl -X GET "https://netts.io/apiv2/pricing?services=bandwidth" \
-H "X-API-KEY: your_api_key" \
-H "X-Real-IP: your_whitelisted_ip"Python
import requests
url = "https://netts.io/apiv2/pricing"
headers = {
"X-API-KEY": "your_api_key",
"X-Real-IP": "your_whitelisted_ip"
}
response = requests.get(url, headers=headers)
data = response.json()
if data.get("success"):
print(f"API version: {data['version']}")
print(f"TRX/USD rate: {data['data']['trx_rate_usd']}")
services = data["data"]["services"]
for svc_name, svc_data in services.items():
pricing_type = svc_data.get("pricing_type")
print(f"\n--- {svc_name} ({pricing_type}) ---")
if pricing_type == "periodic":
for period in svc_data["periods"]:
marker = " <-- current" if period["is_current"] else ""
print(f" {period['label']}: {period['price']} {svc_data['unit']}{marker}")
elif pricing_type == "flat_rates":
for rate, price in svc_data["rates"].items():
print(f" {rate}: {price} {svc_data['unit']}")
elif pricing_type == "provider_based":
for name, info in svc_data["providers"].items():
status = "available" if info["available"] else "unavailable"
print(f" {name}: {info['price']} {svc_data['unit']} - {status}")Python — Lọc dịch vụ
params = {"services": "energy_1h,aml"}
response = requests.get(url, headers=headers, params=params)Cấu trúc phản hồi
Các trường cấp cao nhất
| Trường | Loại | Mô tả |
|---|---|---|
| success | boolean | true đối với các yêu cầu thành công |
| version | string | Phiên bản API (ví dụ: "2.1") |
| timestamp | string | Thời gian máy chủ theo chuẩn ISO 8601 UTC |
| data | object | Dữ liệu phản hồi |
Các trường dữ liệu
| Trường | Loại | Mô tả |
|---|---|---|
| data.trx_rate_usd | number | Tỷ giá hối đoái TRX/USD hiện tại |
| data.units_meta | object | Thông tin quy đổi đơn vị có thể đọc bằng máy |
| data.services | object | Bản đồ các dịch vụ được yêu cầu kèm dữ liệu định giá |
Thông tin meta về đơn vị
Cho phép máy khách chuyển đổi giữa các đơn vị theo lập trình:
{
"units_meta": {
"sun": {"base": "trx", "multiplier": 1000000},
"trx": {"base": "trx", "multiplier": 1},
"usdt": {"base": "usdt", "multiplier": 1}
}
}Để quy đổi từ SUN sang TRX: trx_price = sun_price / units_meta.sun.multiplier
Các trường chung của dịch vụ
Mỗi dịch vụ đều bao gồm các trường sau:
| Trường | Loại | Mô tả |
|---|---|---|
| unit | string | Đơn vị giá (sun, trx, usdt) |
| pricing_type | string | Cách phân tích cú pháp dịch vụ này (xem bên dưới) |
| description | string | Mô tả dễ đọc cho con người |
| cache_ttl | integer | Tần suất làm mới dữ liệu này (giây) |
Các loại định giá
Trường pricing_type cho máy khách biết cách phân tích cú pháp từng dịch vụ:
| Loại | Cấu trúc | Được sử dụng bởi |
|---|---|---|
periodic | Mảng periods[] với giá theo thời gian | energy_1h, energy_5m |
flat_rates | Đối tượng rates{} với các khóa biểu phí được đặt tên | host |
provider_based | Đối tượng providers{} chứa dữ liệu nhà cung cấp | aml |
tiered_by_amount_and_period | tiers[] theo phạm vi số lượng, mỗi tier có periods[] | bandwidth |
Dịch vụ: energy_1h / energy_5m
pricing_type: periodic
| Trường | Loại | Mô tả |
|---|---|---|
| current_period | string | Slug của khoảng thời gian đang hoạt động hiện tại |
| periods[] | array | Tất cả các khoảng thời gian định giá (động, được tải từ DB) |
| periods[].id | string | Định danh duy nhất của khoảng thời gian (slug) |
| periods[].label | string | Tên khoảng thời gian dễ đọc |
| periods[].start | string | Thời gian bắt đầu khoảng thời gian (HH:MM UTC) |
| periods[].end | string | Thời gian kết thúc khoảng thời gian (HH:MM UTC) |
| periods[].is_current | boolean | Liệu khoảng thời gian này có đang hoạt động hay không |
| periods[].price | integer | Giá cho mỗi đơn vị energy tính bằng SUN |
| periods[].tiers | array|null | Các bậc định giá theo khối lượng (xem Bậc giá) |
Khoảng thời gian động
Số lượng khoảng thời gian, phạm vi thời gian, nhãn và giá đều mang tính động và được quản lý ở phía máy chủ. Không mã hóa cứng (hardcode) ID hoặc số lượng khoảng thời gian. Luôn lặp qua mảng periods.
Dịch vụ: host
pricing_type: flat_rates
| Trường | Loại | Mô tả |
|---|---|---|
| rates.standard_65k | number | Mức giá tiêu chuẩn cho 65k energy (TRX) |
| rates.standard_131k_initial | number | Mức giá tiêu chuẩn cho 131k energy, kích hoạt ban đầu (TRX) |
| rates.frequent_65k | number | Mức giá thường xuyên cho 65k energy (TRX) |
| rates.frequent_131k | number | Mức giá thường xuyên cho 131k energy (TRX) |
Dịch vụ: aml
pricing_type: provider_based
| Trường | Loại | Mô tả |
|---|---|---|
| providers | object | Bản đồ các nhà cung cấp AML (động, có thể thay đổi) |
| providers[name].price | number | Giá kiểm tra tính bằng USDT |
| providers[name].price_trx | number | Giá kiểm tra được quy đổi sang TRX theo tỷ giá hiện tại |
| providers[name].available | boolean | Liệu nhà cung cấp có hạn ngạch khả dụng hay không |
Nhà cung cấp động
Các nhà cung cấp AML được tải từ cơ sở dữ liệu. Các nhà cung cấp mới có thể xuất hiện hoặc các nhà cung cấp hiện có có thể ngừng khả dụng. Luôn lặp qua đối tượng providers.
Dịch vụ: bandwidth
pricing_type: tiered_by_amount_and_period
Tùy chọn & quyền truy cập
Giá Bandwidth chỉ được trả về khi được yêu cầu rõ ràng qua ?services=bandwidth — nó không phải là một phần của phản hồi mặc định. Bản thân điểm cuối thuê Bandwidth khả dụng theo yêu cầu; hãy liên hệ bộ phận hỗ trợ để được cấp quyền truy cập. Xem Thuê Bandwidth.
Giá thuê Bandwidth phụ thuộc vào số lượng đặt hàng (bậc đơn vị), thời hạn thuê (ví dụ: 5m / 1h), khung giờ trong ngày (UTC) và ngày trong tuần. Giá cơ sở tính bằng SUN trên mỗi đơn vị; ngoài mức giá cơ sở, các khoản phụ phí cố định (bằng TRX) có thể được áp dụng — tất cả các giá trị đều được trả về trong phản hồi.
Phản hồi cung cấp cả chế độ xem thuận tiện (tiers — giá cho khung giờ/ngày hiện tại) và lưới biểu phí đầy đủ (windows + schedule — mọi khung giờ trên tất cả các ngày trong tuần).
Định dạng thích ứng — không mã hóa cứng
Lưới định giá hoàn toàn hướng dữ liệu và có thể thay đổi bất kỳ lúc nào: số lượng khung thời gian, nhãn của chúng, thời gian bắt đầu/kết thúc, tập hợp các thời hạn thuê (các thời hạn mới có thể được thêm vào hoặc loại bỏ), các bậc số lượng, phân chia theo ngày trong tuần và chính bản thân mức giá. Máy khách phải lặp qua các mảng được trả về (windows, schedule, tiers, periods) và khớp theo giá trị — tuyệt đối không giả định số lượng cố định, nhãn cố định, thời gian cố định hoặc id thời hạn cố định. Mã được viết theo cách này sẽ tiếp tục hoạt động khi lịch trình thay đổi.
| Trường | Loại | Mô tả |
|---|---|---|
| unit | string | sun_per_unit |
| window | string | Nhãn khung giờ trong ngày hiện tại (UTC) |
| current_day_of_week | integer | Ngày trong tuần hiện tại, ISO 1=Thứ Hai … 7=Chủ Nhật (UTC) |
| tiers[] | array | Các bậc số lượng cho khung giờ/ngày hiện tại (thuận tiện; cùng cấu trúc như bên trong schedule) |
| windows[] | array | Danh mục tất cả các khung giờ trong ngày (có thể tăng/giảm/dịch chuyển) |
| windows[].label | string | Nhãn khung giờ |
| windows[].start / .end | string | Thời gian bắt đầu/kết thúc khung giờ HH:MM UTC (một khung giờ có thể qua nửa đêm, nghĩa là start > end) |
| schedule[] | array | Lưới biểu phí đầy đủ — một mục cho mỗi kết hợp (ngày trong tuần × khung giờ) |
| schedule[].day_of_week | integer | Ngày trong tuần theo chuẩn ISO 1…7 |
| schedule[].window | string | Nhãn khung giờ (khớp với một windows[].label) |
| schedule[].period_start / .period_end | string | HH:MM UTC |
| schedule[].is_current | boolean | true đối với phân đoạn đang hoạt động ngay lúc này |
| schedule[].tiers[] | array | Các bậc số lượng cho phân đoạn này |
| tiers[].amount_min | integer | Giới hạn dưới của bậc (bao gồm) |
| tiers[].amount_max | integer|null | Giới hạn trên của bậc (không bao gồm). null = không giới hạn |
| tiers[].periods[] | array | Giá theo từng thời hạn thuê trong bậc |
| tiers[].periods[].id | string | ID thời hạn thuê (ví dụ: 5m, 1h) — có thể thay đổi/mở rộng |
| tiers[].periods[].rental_seconds | integer | Độ dài thời hạn tính bằng giây |
| tiers[].periods[].price | integer | Giá cho mỗi đơn vị Bandwidth tính bằng SUN |
| surcharges | object | Các khoản phụ phí cố định cộng thêm vào giá của khách hàng (TRX) — xem bên dưới |
| limits | object | Giới hạn đơn hàng: min_units, max_units |
Phụ phí
| Trường | Loại | Mô tả |
|---|---|---|
| surcharges.small_order_threshold_units | integer | Các đơn hàng có amount dưới giá trị này sẽ chịu phụ phí đơn hàng nhỏ |
| surcharges.small_order_surcharge_trx | number | Cộng thêm (TRX) cho các đơn hàng ủy quyền nhỏ — bù đắp cho việc ủy quyền + thu hồi trên chuỗi |
| surcharges.trx_send_surcharge_trx | number | Cộng thêm (TRX) khi đơn hàng được thực hiện bằng cách gửi TRX — bù đắp cho phí chuyển khoản TRX |
Phản hồi mẫu
{
"bandwidth": {
"unit": "sun_per_unit",
"pricing_type": "tiered_by_amount_and_period",
"description": "Bandwidth delegation rental",
"cache_ttl": 30,
"window": "<current window label>",
"current_day_of_week": 7,
"tiers": [
{
"amount_min": 400,
"amount_max": 1000,
"periods": [
{"id": "5m", "rental_seconds": 300, "price": "<price_sun>"},
{"id": "1h", "rental_seconds": 3600, "price": "<price_sun>"}
]
},
{"amount_min": 1000, "amount_max": 3000, "periods": ["..."]},
{"amount_min": 3000, "amount_max": null, "periods": ["..."]}
],
"windows": [
{"label": "<window label>", "start": "01:00", "end": "09:00"},
{"label": "<window label>", "start": "14:00", "end": "00:00"}
],
"schedule": [
{
"day_of_week": 1,
"window": "<window label>",
"period_start": "01:00",
"period_end": "09:00",
"is_current": false,
"tiers": [
{"amount_min": 400, "amount_max": 1000, "periods": [
{"id": "5m", "rental_seconds": 300, "price": "<price_sun>"},
{"id": "1h", "rental_seconds": 3600, "price": "<price_sun>"}
]}
]
}
],
"surcharges": {
"small_order_threshold_units": 1000,
"small_order_surcharge_trx": "<trx>",
"trx_send_surcharge_trx": "<trx>"
},
"limits": {"min_units": 400, "max_units": 5000}
}
}schedule chứa một mục cho mọi kết hợp (ngày trong tuần × khung giờ) — hãy lặp qua nó để hiển thị một lịch giá đầy đủ. Chính xác một mục có is_current: true.
Logic máy khách (tính giá đơn hàng)
Sử dụng tiers để lấy "mức giá ngay lúc này". Để tra cứu giá cho một thời điểm khác, hãy chọn mục schedule phù hợp theo ngày trong tuần + khung giờ có khoảng [period_start, period_end) chứa thời gian đó (lưu ý rằng một khung giờ có thể qua nửa đêm khi start > end), sau đó sử dụng tiers của mục đó.
# price for the current moment:
for tier in bandwidth.tiers:
if tier.amount_min <= amount < (tier.amount_max or infinity):
for p in tier.periods:
if p.id == requested_period: # match by value, not by index
base_trx = (p.price / units_meta.sun.multiplier) * amount
if amount < surcharges.small_order_threshold_units:
base_trx += surcharges.small_order_surcharge_trx # delegation orders
# TRX-send fulfillment branch instead:
# trx_branch_trx = base_trx_for_smallest_tier_shortest_period + surcharges.trx_send_surcharge_trx
# price for an arbitrary weekday/time: same logic, but first select the schedule[] entry
# where day_of_week matches and the time falls in [period_start, period_end).Tập trung & mang tính động
Giá Bandwidth, khung giờ, phân chia theo ngày trong tuần và phụ phí đều được quản lý ở phía máy chủ (DB) và có thể thay đổi. Luôn lặp qua windows, schedule, tiers và periods từ phản hồi và so khớp theo giá trị — không mã hóa cứng số lượng, nhãn, thời gian hoặc id thời hạn. Phí cộng thêm cho người dùng SUB không áp dụng cho Bandwidth.
Bậc giá
Hiện tại tiers là null đối với tất cả các khoảng thời gian. Khi định giá theo khối lượng được kích hoạt, trường này sẽ chứa một mảng các đối tượng bậc giá:
{
"tiers": [
{
"min_energy": 0,
"max_energy": 64999,
"price": "<price_sun>",
"label": "standard"
},
{
"min_energy": 65000,
"max_energy": 130999,
"price": "<price_sun>",
"label": "65k"
},
{
"min_energy": 131000,
"max_energy": 131000,
"price": "<price_sun>",
"label": "131k"
},
{
"min_energy": 131001,
"max_energy": null,
"price": "<price_sun>",
"label": "bulk"
}
]
}Lược đồ bậc giá
| Trường | Loại | Mô tả |
|---|---|---|
| min_energy | integer | Số lượng energy tối thiểu cho bậc này (bao gồm) |
| max_energy | integer|null | Số lượng energy tối đa cho bậc này (bao gồm). null = không giới hạn |
| price | integer | Giá cho mỗi đơn vị energy tính bằng SUN cho bậc này |
| label | string | Định danh của bậc |
Logic máy khách
if tiers != null:
find the tier where min_energy <= order_amount <= max_energy
use that tier's price
else:
use the flat price field for all order amountsĐịnh dạng phản hồi rút gọn
Sử dụng tiêu đề X-Format để nhận các phản hồi văn bản rút gọn. Các phản hồi này trả về giá của khoảng thời gian đang hoạt động hiện tại từ energy_1h.
X-Format: now / compact / short
curl -H "X-API-KEY: your_key" -H "X-Format: now" https://netts.io/apiv2/pricing<Period>: price=<N> sun, 65k=<X.XXX> TRX (<X.XX>$), 131k=<X.XXX> TRX (<X.XX>$), 1m=<X.XXX> TRX (<X.XX>$)X-Format: short1h
Tương tự nhưng không có nhãn khoảng thời gian và giá trên mỗi đơn vị.
curl -H "X-API-KEY: your_key" -H "X-Format: short1h" https://netts.io/apiv2/pricing65k=<X.XXX> TRX (<X.XX>$), 131k=<X.XXX> TRX (<X.XX>$), 1m=<X.XXX> TRX (<X.XX>$)X-Format: count
Định giá đơn hàng số lượng lớn cho 1, 2, 3, 5, 10, 20 đơn hàng.
curl -H "X-API-KEY: your_key" -H "X-Format: count" https://netts.io/apiv2/pricing1-<X.XXX> TRX (<X.XX>$), 2-<X.XXX> TRX (<X.XX>$), ...Công thức tính toán
TRX cost = (price_sun / units_meta.sun.multiplier) x energy_amount
USD cost = TRX_cost x trx_rate_usdPhí cộng thêm cho người dùng SUB
Người dùng SUB sẽ tự động nhận được giá đã áp dụng mức phí cộng thêm của tài khoản cha. API luôn trả về mức giá cuối cùng cho người dùng đã xác thực — không cần tính toán phía máy khách.
Phản hồi lỗi
Lỗi có thể bắt nguồn từ hai tầng với các định dạng khác nhau. Ứng dụng phía máy khách của bạn nên xử lý cả hai.
Lỗi ứng dụng (từ API)
Các lỗi cấp độ ứng dụng sử dụng định dạng success/error tiêu chuẩn:
Dịch vụ không hợp lệ (400)
{
"success": false,
"error": {
"code": 4002,
"message": "Unknown services: invalid_service"
}
}Lỗi xác thực (401)
Được trả về bởi ứng dụng khi thiếu khóa API hoặc IP không nằm trong danh sách trắng:
{
"detail": {
"code": -1,
"msg": "Invalid API key or IP not in whitelist"
}
}Định dạng khác biệt
Lỗi xác thực sử dụng định dạng detail nguyên bản của FastAPI chứ không phải cấu trúc success/error. Điều này là do lỗi được kích hoạt trước khi yêu cầu đến được logic ứng dụng.
Không tìm thấy người dùng (404)
{
"detail": {
"code": -1,
"msg": "User not found"
}
}Lỗi máy chủ nội bộ (500)
{
"success": false,
"error": {
"code": 5001,
"message": "Failed to retrieve pricing data"
}
}Lỗi Gateway (từ Kong)
Các lỗi này được trả về bởi API gateway trước khi yêu cầu đến được ứng dụng. Chúng sử dụng định dạng riêng của Kong:
Vượt quá giới hạn tỷ lệ yêu cầu (429)
{
"message": "API rate limit exceeded"
}Hết thời gian chờ Gateway (504)
{
"message": "An invalid response was received from the upstream server"
}Tham chiếu mã lỗi
| Mã | Mô tả | Trạng thái HTTP | Nguồn |
|---|---|---|---|
-1 | Khóa API không được cung cấp | 401 | Ứng dụng |
-1 | Khóa API không hợp lệ hoặc IP không nằm trong danh sách trắng | 401 | Ứng dụng |
-1 | Không tìm thấy người dùng | 404 | Ứng dụng |
4002 | Dịch vụ không xác định trong tham số ?services= | 400 | Ứng dụng |
5000 | Lỗi máy chủ nội bộ | 500 | Ứng dụng |
5001 | Không thể truy xuất dữ liệu định giá | 500 | Ứng dụng |
5002 | Dữ liệu giá không khả dụng cho định dạng rút gọn | 500 | Ứng dụng |
- | Vượt quá giới hạn tỷ lệ yêu cầu API | 429 | Kong |
Xử lý lỗi khuyến nghị cho máy khách
response = requests.get(url, headers=headers)
data = response.json()
if response.status_code == 200 and data.get("success"):
# Success — process data
services = data["data"]["services"]
elif response.status_code == 429:
# Kong rate limit — back off and retry
retry_after = response.headers.get("Retry-After", "60")
time.sleep(int(retry_after))
elif "detail" in data:
# FastAPI auth/validation error
detail = data["detail"]
if isinstance(detail, dict):
print(f"Error {detail.get('code')}: {detail.get('msg')}")
else:
print(f"Error: {detail}")
elif "error" in data:
# Application error
err = data["error"]
print(f"Error {err.get('code')}: {err.get('message')}")
else:
print(f"Unexpected response: {response.status_code}")Di chuyển từ /apiv2/prices
| Khía cạnh | /apiv2/prices (cũ) | /apiv2/pricing (mới) |
|---|---|---|
| Khoảng thời gian | 5 cố định | Động từ DB |
| Bậc giá | 3 được mã hóa cứng | Giá đơn lẻ + tiers trong tương lai |
| Các biến thể thời lượng | Không khả dụng | energy_5m |
| Giá AML | Điểm cuối riêng biệt | Được bao gồm thông qua ?services=aml |
| Giá Host | Trộn lẫn trong phản hồi | Dịch vụ host riêng biệt |
| Lọc dịch vụ | Không khả dụng | Tham số ?services= |
| Chuyển đổi đơn vị | Không có tài liệu | units_meta trong phản hồi |
| Thông tin bộ nhớ đệm | Không có tài liệu | cache_ttl cho mỗi dịch vụ |
| Định dạng phản hồi | {"status": "success", ...} | {"success": true, "version": "2.1", "data": {...}} |
Giới hạn tỷ lệ yêu cầu
Áp dụng cùng giới hạn tỷ lệ yêu cầu như /apiv2/prices (được cấu hình trong Kong gateway).
Ghi chú
- Tất cả giá energy đều tính bằng SUN — sử dụng
units_metađể chuyển đổi - Giá Host tính bằng TRX
- Giá AML tính bằng USDT kèm theo giá trị chuyển đổi TRX
- Tất cả thời gian đều tính theo UTC
- Sử dụng
cache_ttlcho mỗi dịch vụ để biết tần suất làm mới dữ liệu - Sử dụng
pricing_typeđể xác định cách phân tích cú pháp từng dịch vụ - Các khoảng thời gian, nhà cung cấp, tỷ giá và tất cả giá trị đều mang tính động — không mã hóa cứng chúng
- Định giá Bandwidth là tùy chọn (opt-in) (
?services=bandwidth), sử dụngtiered_by_amount_and_periodkèm theosurcharges, và không chịu phí cộng thêm cho người dùng SUB