مفاتيح API
مفاتيح API هي الطريقة الأساسية للمصادقة مع Brevo API. توفر طريقة بسيطة وآمنة للوصول إلى حسابك برمجيًا.
ما هي مفاتيح API؟
مفاتيح API هي معرّفات فريدة تقوم بمصادقة تطبيقك عند إجراء طلبات إلى Brevo API. كل مفتاح هو سلسلة من 64 حرفًا تعمل كمعرّف وككلمة مرور في آن واحد.
Example API key: xkeysib-a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456-Ab1Cd2Ef3Gh4إنشاء مفاتيح API
دليل خطوة بخطوة
- تسجيل الدخول إلى Brevo: الوصول إلى لوحة تحكم Brevo
- الانتقال إلى الإعدادات: انقر على ملفك الشخصي ← الإعدادات
- الذهاب إلى مفاتيح API: اختر “API Keys” من القائمة اليسرى
- إنشاء مفتاح جديد: انقر على “Generate a New API Key”
- تسمية المفتاح: أعطه اسمًا وصفيًا (مثل “Production App”، “Development Testing”)
- تعيين الأذونات: اختر مستوى الوصول المناسب
- الإنشاء: انقر على “Generate” وانسخ المفتاح فورًا
اصطلاحات تسمية مفاتيح API
استخدم أسماء وصفية تساعدك على تحديد الغرض من المفتاح:
production-web-appstaging-environmentmobile-app-ioswebhook-listenerdata-sync-service
أنواع مفاتيح API والأذونات
مفاتيح الوصول الكامل
Permissions: All API endpointsUse cases: Complete application integrationRisk level: High - protect carefullyمفاتيح القراءة فقط
Permissions: GET requests onlyUse cases: Analytics, reporting, dashboardsRisk level: Low - limited accessمفاتيح الإرسال فقط
Permissions: Transactional email sendingUse cases: Application notifications, receiptsRisk level: Medium - can send emailsمفاتيح إدارة جهات الاتصال
Permissions: Contact CRUD operationsUse cases: CRM integrations, form submissionsRisk level: Medium - data modificationاستخدام مفاتيح API
المصادقة عبر الترويسة
قم بتضمين مفتاح API الخاص بك في ترويسة api-key:
GET /v3/account HTTP/1.1Host: api.brevo.comAccept: application/jsonContent-Type: application/jsonapi-key: YOUR_API_KEYأمثلة الكود
JavaScript/Node.js
const brevo = require('@brevo/api');
const apiInstance = new brevo.AccountApi();apiInstance.setApiKey(brevo.AccountApiApiKeys.apiKey, process.env.BREVO_API_KEY);
// Make authenticated requestapiInstance.getAccount() .then(data => console.log('Account info:', data)) .catch(error => console.error('Error:', error));Python
import sib_api_v3_sdkfrom sib_api_v3_sdk.rest import ApiException
# Configure API keyconfiguration = sib_api_v3_sdk.Configuration()configuration.api_key['api-key'] = 'YOUR_API_KEY'
# Create API instanceapi_instance = sib_api_v3_sdk.AccountApi(sib_api_v3_sdk.ApiClient(configuration))
try: # Get account info api_response = api_instance.get_account() print(api_response)except ApiException as e: print("Exception when calling AccountApi->get_account: %s\n" % e)PHP
<?phprequire_once(__DIR__ . '/vendor/autoload.php');
// Configure API key$config = SendinBlue\Client\Configuration::getDefaultConfiguration()->setApiKey('api-key', 'YOUR_API_KEY');
// Create API instance$apiInstance = new SendinBlue\Client\Api\AccountApi( new GuzzleHttp\Client(), $config);
try { $result = $apiInstance->getAccount(); print_r($result);} catch (Exception $e) { echo 'Exception when calling AccountApi->getAccount: ', $e->getMessage(), PHP_EOL;}?>Ruby
require 'sib-api-v3-sdk'
# Configure API keySibApiV3Sdk.configure do |config| config.api_key['api-key'] = 'YOUR_API_KEY'end
# Create API instanceapi_instance = SibApiV3Sdk::AccountApi.new
begin # Get account info result = api_instance.get_account puts resultrescue SibApiV3Sdk::ApiError => e puts "Exception when calling AccountApi->get_account: #{e}"endأمان مفاتيح API
التخزين الآمن
متغيرات البيئة (الطريقة الموصى بها)
# .env fileBREVO_API_KEY=xkeysib-your-api-key-here
# Usage in codeconst apiKey = process.env.BREVO_API_KEY;مديرو أسرار السحابة
- AWS Secrets Manager
- Google Secret Manager
- Azure Key Vault
- HashiCorp Vault
أفضل ممارسات الأمان
-
لا تقم أبدًا بتضمين المفاتيح في الكود مباشرة
// Bad - hardcodedconst apiKey = "xkeysib-a1b2c3d4...";// Good - environment variableconst apiKey = process.env.BREVO_API_KEY; -
استخدم مفاتيح مختلفة لكل بيئة
Production: BREVO_API_KEY_PRODStaging: BREVO_API_KEY_STAGINGDevelopment: BREVO_API_KEY_DEV -
قم بتدوير المفاتيح بانتظام
- عيّن تذكيرات تقويمية للتدوير الربع سنوي
- استخدم أدوات الأتمتة لتدوير المفاتيح
- احتفظ بخطة تراجع جاهزة
-
راقب استخدام المفاتيح
- أعد تنبيهات للنشاط غير المعتاد
- راجع سجلات استخدام المفاتيح شهريًا
- تتبع أنماط الوصول الجغرافي
إدارة المفاتيح
مراقبة المفاتيح النشطة
راقب مفاتيحك النشطة في لوحة التحكم:
Key Name: production-web-appCreated: 2024-01-15Last Used: 2024-01-20 14:30 UTCRequests Today: 1,247Status: Activeعملية تدوير المفاتيح
- إنشاء مفتاح جديد: إنشاء مفتاح بديل
- تحديث التكوين: النشر بالمفتاح الجديد
- المراقبة: التأكد من عمل المفتاح الجديد بشكل صحيح
- فترة السماح: إبقاء المفتاح القديم نشطًا لمدة 24-48 ساعة
- إلغاء المفتاح القديم: حذف المفتاح السابق
إلغاء المفتاح في حالات الطوارئ
إذا تم اختراق مفتاح:
- الإلغاء الفوري: حذف المفتاح من لوحة التحكم
- إنشاء بديل: إنشاء مفتاح جديد فورًا
- تحديث التطبيقات: النشر بالمفتاح الجديد في أسرع وقت
- مراقبة النشاط: التحقق من الاستخدام غير المصرح به
- تقرير الحادث: توثيق حادثة الأمان
تحديد معدل الطلبات ومفاتيح API
لكل مفتاح API حدود معدل طلبات فردية:
- الخطة المجانية: 300 طلب/يوم
- خطة المبتدئين: 20,000 طلب/يوم
- خطة الأعمال: 50,000 طلب/يوم
- خطة المؤسسات: حدود مخصصة
ترويسات تحديد معدل الطلبات
HTTP/1.1 200 OKX-RateLimit-Limit: 1000X-RateLimit-Remaining: 999X-RateLimit-Reset: 1640995200التعامل مع حدود معدل الطلبات
async function makeApiCall() { try { const response = await fetch(url, { headers });
if (response.status === 429) { const resetTime = response.headers.get('X-RateLimit-Reset'); const waitTime = resetTime - Math.floor(Date.now() / 1000);
console.log(`Rate limited. Waiting ${waitTime} seconds`); await new Promise(resolve => setTimeout(resolve, waitTime * 1000));
// Retry the request return makeApiCall(); }
return response.json(); } catch (error) { console.error('API call failed:', error); throw error; }}استكشاف أخطاء مفاتيح API وإصلاحها
رسائل الخطأ الشائعة
مفتاح API غير صالح (401)
{ "code": "unauthorized", "message": "Invalid API key provided"}أذونات غير كافية (403)
{ "code": "permission_denied", "message": "API key does not have required permissions"}تجاوز حد معدل الطلبات (429)
{ "code": "too_many_requests", "message": "Rate limit exceeded for API key"}قائمة التحقق لتصحيح الأخطاء
- المفتاح بالتنسيق الصحيح (64 حرفًا)
- لا توجد مسافات إضافية أو أحرف مخفية
- المفتاح لديه الأذونات المطلوبة
- المفتاح نشط (غير ملغي)
- ضمن حدود معدل الطلبات
- استخدام نقطة نهاية API الصحيحة
- الترويسات بالتنسيق الصحيح