Harano.site API
আপনার app বা website-এ approved Lost & Found report যুক্ত করুন। API matching score মালিকানা যাচাই নয়।
শুরু করুন
- Verified account-এ login করে Account → আমার API Keys-এ key বানান; Admin চাইলে
/admin/api-keys.phpথেকেও verified account-এর জন্য বানাতে পারেন। - প্রয়োজনীয় scope দিন; secret একবার দেখানো হবে। server-এর environment/secret manager-এ রাখুন। Public browser code বা APK-তে স্থায়ী secret embed করলে সেটি চুরি হতে পারে।
- সম্ভব হলে public client-এর বদলে নিজের backend দিয়ে request proxy করুন. CORS Origin browser policy-ই নিয়ন্ত্রণ করে, authentication/security boundary নয়.
- Default rate limit 60 request/key/minute; Admin settings-এর
api_rate_limit_per_minuteথেকে 5–300 করা যায়।
Base URL: https://harano.site/api.php
Approved report খোঁজা GET ?resource=posts
Scope: posts:read. Optional query: q, type=lost|found, category_id, district_id, page, per_page (max 50).
curl -H 'Authorization: Bearer YOUR_KEY' \
'https://harano.site/api.php?resource=posts&type=lost&per_page=10'
Category ও District metadata
GET ?resource=categories category ID এবং GET ?resource=locations district ID ফেরত দেয়। দুটির জন্যই posts:read scope দরকার। Report submit করার আগে metadata থেকে valid IDs নিন।
একটি report GET ?resource=post&id=123
Scope: posts:read. শুধু approved/active report ফেরত আসে; personal contact তথ্য API response-এ নেই।
Report জমা POST ?resource=posts
Scope: posts:create. সাধারণ API report স্বয়ংক্রিয়ভাবে প্রকাশিত হয়। urgent=true অথবা person/NID/passport lost report Admin-এর নজরে pending থাকবে এবং configured SMTP থাকলে Admin alert যাবে। User key-এর post তার account-এ; Primary key-এর post Admin-owned। JSON fields: type, title, description, category_id, district_id, optional lost_date, urgent, contact_name, contact_email, contact_phone. ছবি গ্রহণ করা হয় না; contact তথ্য public API response-এ ফেরে না। Duplicate detection চালু।
curl -X POST \
-H 'Authorization: Bearer YOUR_KEY' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: my-app-report-00001' \
--data '{"type":"lost","title":"কালো স্কুল ব্যাগ হারিয়েছে","description":"গুলশান এলাকায় বইসহ হারিয়েছে।","category_id":8,"district_id":1,"lost_date":"2026-10-18"}' \
'https://harano.site/api.php?resource=posts'একই idempotency key ২৪ ঘণ্টার বেশি ধরে সংরক্ষিত হতে পারে; cleanup cron/job scheduled থাকলে পুরোনো key পরে মুছে যাবে। Request duplicate হলে একই response ফেরত দেওয়ার জন্য database unique constraint আছে।
নিজের সম্ভাব্য match GET ?resource=matches
Scope: matches:read. শুধু API key owner-এর approved posts-এর সম্ভাব্য matches দেখায়। Score ownership proof அல்ல.
Errors
JSON response-এ ok এবং troubleshooting-এর request_id থাকবে। HTTP 401 key সমস্যা, 403 scope/origin, 409 possible duplicate, 422 input, 429 rate limit. Token query string-এ দেবেন না; সবসময় HTTPS ও Authorization header ব্যবহার করুন।
CORS
Browser-origin integration-এর জন্য key তৈরি করার সময় নির্দিষ্ট HTTPS Origin দিন (যেমন https://example.com)। Wildcard নেই; OPTIONS preflight ওই exact origin-সহ active key থাকলে অনুমোদিত। Native Android/iOS app বা server-to-server integration-এ CORS সাধারণত প্রযোজ্য নয়। APK/public JavaScript-এ key embed করা নিরাপদ নয়।
Example response
{"ok":true,"request_id":"abc123...","data":[{"id":42,"type":"lost","title":"...","category":"...","district":"...","url":"..."}],"pagination":{"page":1,"per_page":20}}API key তৈরি/বন্ধ করুন: Account dashboard.