انتقل إلى المحتوى الرئيسي

المصادقة

تصادق واجهة TakeTheme البرمجية الطلبات باستخدام مفاتيح API. ويجب أن يحمل كل طلب مفتاحك بإحدى طريقتين:

tt-api-key: tt_YOUR_API_KEY

أو كرمز Bearer قياسي:

Authorization: Bearer tt_YOUR_API_KEY

والطريقتان متكافئتان، ويُفضَّل tt-api-key لأنه لا يتعارض مع أنظمة تفويض أخرى.

صيغة المفتاح

تبدو المفاتيح على شكل tt_ متبوعًا بسلسلة ست عشرية من 64 حرفًا. وإذا لم يبدأ مفتاحك بـ tt_، ترفضه الواجهة بالخطأ INVALID_API_KEY_FORMAT قبل أي عملية بحث.

إرسال طلبات مُصادَقة

cURL

curl -X GET "https://api.taketheme.com/api/v1/product" \
-H "tt-api-key: $TAKETHEME_API_KEY" \
-H "Content-Type: application/json"

JavaScript (Axios)

import axios from "axios";

const client = axios.create({
baseURL: "https://api.taketheme.com/api/v1",
headers: {
"tt-api-key": process.env.TAKETHEME_API_KEY,
"Content-Type": "application/json",
},
});

const response = await client.get("/product");
const data = response.data;

Python

import requests
import os

headers = {
'tt-api-key': os.environ.get('TAKETHEME_API_KEY'),
'Content-Type': 'application/json'
}

response = requests.get(
'https://api.taketheme.com/api/v1/product',
headers=headers
)

data = response.json()

‏.NET

using System.Net.Http;
using System.Net.Http.Headers;

var client = new HttpClient();
client.BaseAddress = new Uri("https://api.taketheme.com/api/v1/");
client.DefaultRequestHeaders.Add("tt-api-key", Environment.GetEnvironmentVariable("TAKETHEME_API_KEY"));

var response = await client.GetAsync("product");
var data = await response.Content.ReadAsStringAsync();

الصلاحيات

يحمل كل مفتاح API قائمة صلاحيات — أزواجًا من مورد والإجراءات المسموحة عليه:

{
"scopes": [
{ "resource": "PRODUCTS", "actions": ["READ", "WRITE"] },
{ "resource": "ORDERS", "actions": ["READ", "UPDATE"] }
]
}

وتقابل الإجراءات دلالات HTTP: READ (GET) وWRITE (POST) وUPDATE (PATCH/PUT) وDELETE (DELETE). ويعلن كل عنوان عن زوج (مورد، إجراء) واحد مطلوب؛ فإن لم يملكه مفتاحك فشل الطلب بالخطأ 403 INSUFFICIENT_SCOPE.

راجع مرجع الصلاحيات الكامل لقائمة الموارد والصلاحية التي يتطلبها كل عنوان.

أقل امتياز ممكن

امنح التكامل الصلاحيات التي يحتاجها فقط. فمزامنة التجهيز تحتاج ORDERS:READ وORDERS:UPDATE — لا PRODUCTS:DELETE.

البيئات

يُنشأ كل مفتاح لبيئة واحدة: production أو staging أو development. استخدم مفاتيح منفصلة لكل بيئة حتى لا يمسّ مفتاح تطوير مسرَّب بيانات الإنتاج أبدًا.

قائمة عناوين IP المسموحة

يمكنك تقييد المفتاح بعناوين IP محددة. وعند ضبط قائمة مسموحة، تُرفض الطلبات من أي عنوان آخر بالخطأ 403 IP_NOT_WHITELISTED.

  1. اذهب إلى لوحة التحكم ← الإعدادات ← مفاتيح الـ API
  2. افتح المفتاح الذي تريد تقييده
  3. أضف عناوين IP المسموحة (بمطابقة تامة) أو نطاقات بصيغة CIDR
  4. احفظ

أخطاء المصادقة

تستخدم الأخطاء الغلاف القياسي — راجع معالجة الأخطاء:

{
"status": 401,
"message": "API key not found or has been revoked"
}
الرمزالشيفرةالمعنى
401API_KEY_REQUIREDلا يوجد مفتاح في ترويسة tt-api-key أو Authorization
401INVALID_API_KEY_FORMATالمفتاح لا يبدأ بـ tt_ أو أقصر من اللازم
401INVALID_API_KEYالمفتاح غير موجود أو فشل التحقق من بصمته
401API_KEY_REVOKEDأُبطل المفتاح (وانتهت أي فترة سماح)
401API_KEY_INACTIVEالمفتاح مُعطَّل
401API_KEY_EXPIREDتجاوز المفتاح تاريخ expiresAt
401API_KEY_GRACE_PERIOD_EXPIREDاستُخدم مفتاح مدوَّر أو مُبطل بعد انتهاء نافذة السماح
402STORE_SUSPENDEDالمتجر الذي يتبعه المفتاح موقوف
403INSUFFICIENT_SCOPEالمفتاح لا يملك صلاحية (مورد، إجراء) التي يتطلبها العنوان
403IP_NOT_WHITELISTEDالطلب من عنوان IP خارج قائمة المفتاح المسموحة
429API_KEY_USAGE_LIMIT_REACHEDاستُنفدت حصة الاستخدام الإجمالية للمفتاح

أفضل الممارسات الأمنية

  • لا تكشف مفاتيح الـ API أبدًا في شيفرة العميل أو المستودعات العامة أو نظام إدارة الإصدارات
  • استخدم متغيرات البيئة لتخزين المفاتيح في تطبيقاتك
  • دوّر المفاتيح دوريًا — يُصدر التدوير مفتاحًا جديدًا مع بقاء القديم صالحًا لفترة سماح قصيرة، فتنتقل دون انقطاع
# .env file
TAKETHEME_API_KEY=tt_abc123...

الخطوات التالية