للمطورين
واجهة برمجة التطبيقات
أنشئ أكواد وغيّر وجهتها من السيرفر بتاعك. الكود المطبوع مبيتغيرش أبدًا — اللي بيتغير هو المكان اللي بيروحه.
الأساسيات
- العنوان
- https://blueagency-eg.com/api/v1
- المصادقة
- Authorization: Bearer bq_live_…
- الحد
- ١٢٠ طلب في الدقيقة لكل مفتاح
- الباقة
- Agency
المفاتيح
من لوحة التحكم → API. المفتاح بيتعرض مرة واحدة بس — إحنا بنخزّن hash مش المفتاح نفسه، فمفيش طريقة نرجّعه بيها.
في نوعين: read بيقرأ بس، و write يقدر يغيّر وجهة أي كود مطبوع. اختار read لو مش محتاج تغيّر.
المسارات
GET
/api/v1/codesreadقائمة الأكواد. الترقيم بـ cursor — مرّر next_cursor عشان الصفحة اللي بعدها.
?limit=25&cursor=…&q=menu
POST
/api/v1/codeswriteأنشئ كود ديناميكي جديد.
{
"name": "Zamalek menu",
"destination": "https://example.com/menu",
"custom_code": "ZAMALEK",
"tags": ["menu", "cairo"]
}GET
/api/v1/codes/{id}readكود واحد.
PATCH
/api/v1/codes/{id}writeغيّر الوجهة أو الحالة. الـ payload المطبوع مبيتلمسش.
{ "destination": "https://example.com/new-menu" }
{ "status": "paused" } // active · paused · archivedالردود
كل رد ناجح جواه data. وكل خطأ ليه code ثابت مش بيتغيّر — اتكل عليه مش على نص الرسالة.
{ "data": { "code": { "id": "…", "short_code": "BLUE01",
"payload": "HTTPS://BLUEAGENCY-EG.COM/Q/BLUE01",
"destination": "https://example.com/menu", "scans": 412 } } }
{ "error": { "code": "PLAN_LIMIT_REACHED",
"message": "Dynamic QR code limit reached" } }مثال كامل
# Repoint every code tagged "menu" at the new PDF
curl https://blueagency-eg.com/api/v1/codes?q=menu \
-H "Authorization: Bearer $BQ_KEY" \
| jq -r '.data.codes[].id' \
| while read id; do
curl -X PATCH https://blueagency-eg.com/api/v1/codes/$id \
-H "Authorization: Bearer $BQ_KEY" \
-H "Content-Type: application/json" \
-d '{"destination":"https://example.com/menu-autumn.pdf"}'
doneلاحظ إن مفيش endpoint بيغيّر الـ payload. مفيش، وعمرها ما هتبقى فيه — ده اللي بيخلّي كل حاجة مطبوعة تفضل شغّالة.