پرش به مطلب اصلی
Version: 1.0.0

API کلید API نوبیتکس

API Key برای دسترسی کنترل‌شده به APIهای نوبیتکس طراحی شده است. هر کلید می‌تواند دسترسی محدود، لیست IP مجاز و تاریخ انقضا داشته باشد.

چرا API Key؟

  • محدود کردن سطح دسترسی به مجوزهای مشخص
  • پشتیبانی از IP Whitelist
  • امکان تعیین تاریخ انقضا
  • امکان حذف یا غیرفعال‌سازی بدون تغییر رمز عبور اصلی
  • مناسب برای ربات‌ها و اسکریپت‌های خودکار

دسترسی‌ها

دسترسیکاربرد
READخواندن اطلاعات کاربر، سفارش‌ها، کیف‌پول‌ها، برداشت‌ها، پرتفو و داده‌های مشابه
TRADEثبت، لغو یا تغییر سفارش‌های اسپات و تعهدی و عملیات تبدیل موجودی
WITHDRAWثبت، تایید، لغو و عملیات مرتبط با برداشت
DEPOSITساخت آدرس واریز رمزارز
ADDRESS_BOOKافزودن، حذف و تغییر وضعیت دفتر آدرس و برداشت امن
OTPدرخواست رمز یکبارمصرف از APIهای مرتبط، مانند دفتر آدرس یا آنتی‌فیشینگ

هر کلید می‌تواند یک یا چند دسترسی داشته باشد. مقدار permissions هنگام ساخت کلید به صورت رشته جداشده با کاما ارسال می‌شود، مانند READ,TRADE.

استفاده از API Key

برای درخواست‌های پشتیبانی‌شده، به جای هدر Authorization سه هدر زیر را ارسال کنید:

Headerتوضیح
Nobitex-Keyکلید عمومی برگشتی در فیلد key
Nobitex-Signatureامضای Ed25519 به صورت URL-safe Base64
Nobitex-Timestampزمان Unix بر حسب ثانیه در UTC

مقدار Nobitex-Timestamp در محیط production باید حداکثر ۳۰ ثانیه با زمان سرور اختلاف داشته باشد.

ساخت امضا

متن امضا دقیقا به این شکل ساخته می‌شود:

timestamp + METHOD + full_path + raw_body
  • timestamp: همان رشته‌ای که در هدر Nobitex-Timestamp ارسال می‌کنید.
  • METHOD: متد HTTP با حروف بزرگ، مانند GET یا POST.
  • full_path: مسیر کامل درخواست همراه query string، مانند /market/orders/list?fromId=123.
  • raw_body: بدنه خام درخواست دقیقا به همان شکلی که ارسال می‌شود. برای درخواست بدون body این بخش رشته خالی است.

دقت کنید که فاصله‌ها، ترتیب کلیدهای JSON و newlineهای body در امضا اثر دارند. رشته‌ای را امضا کنید که دقیقا به سرور ارسال می‌شود.

نمونه ساخت امضا برای درخواست POST /market/orders/cancel-old:

import base64
import json
import time
from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PrivateKey

timestamp = str(int(time.time()))
method = "POST"
full_path = "/market/orders/cancel-old"
body = json.dumps({"hours": 2.4}, separators=(",", ":"))
payload = f"{timestamp}{method}{full_path}{body}".encode()

private_key_b64 = "<Your-Private-Key>"
private_key_bytes = base64.urlsafe_b64decode(private_key_b64)
private_key = Ed25519PrivateKey.from_private_bytes(private_key_bytes)

signature = private_key.sign(payload)
signature_b64 = base64.urlsafe_b64encode(signature).decode()
print(signature_b64)

نمونه درخواست متناظر:

BODY='{"hours":2.4}'
curl -X POST 'https://apiv2.nobitex.ir/market/orders/cancel-old' \
-H "Content-Type: application/json" \
-H "Nobitex-Key: <Your-Public-Key>" \
-H "Nobitex-Signature: <Generated-Signature>" \
-H "Nobitex-Timestamp: <Unix-Timestamp>" \
-d "$BODY"

در این نمونه مقدار BODY باید همان رشته‌ای باشد که در متغیر body پایتون امضا شده است.

Authentication

توکن احراز هویت به صورت Token <token>.

Security Scheme Type:

apiKey

Header parameter name:

Authorization