REST API
Hivesigner API আছে https://hivesigner.com/api/ ঠিকানায়। এটি লগইন করা ব্যবহারকারীর অ্যাকাউন্ট ফেরত দেয়, তার হয়ে পোস্টিং অপারেশন ব্রডকাস্ট করে, কোডকে টোকেনে বদলে দেয় এবং Hivesigner ব্যবহার করা অ্যাপের তালিকা দেয়। এই পাতায় প্রতিটি এন্ডপয়েন্ট তার অনুরোধ, উত্তর আর ত্রুটিসহ বর্ণনা করা হয়েছে।
অনুরোধ আর প্রমাণীকরণ
- বেস URL:
https://hivesigner.com/api/। নিচের প্রতিটি এন্ডপয়েন্টhttps://hivesigner.com-এর সাপেক্ষে। - টোকেন: এটি
Authorizationহেডারে যেমন আছে তেমনই পাঠান:Authorization: ACCESS_TOKEN।Bearerউপসর্গও গ্রহণ করা হয়। কোয়েরি স্ট্রিং বা বডিতেaccess_tokenহিসেবেও পাঠাতে পারেন, তবে হেডার একে URL আর লগের বাইরে রাখে। - বডি:
Content-Type: application/jsonসহ JSON, বা একটি ফর্ম (application/x-www-form-urlencoded)। - উত্তর: JSON।
- ব্রাউজার: API ক্রস-অরিজিন অনুরোধ অনুমোদন করে, তাই একটি ওয়েব অ্যাপ সরাসরি একে ডাকতে পারে।
টোকেন পেতে দেখুন OAuth2 দিয়ে লগইন। টোকেনে কী থাকে তার জন্য দেখুন টোকেন।
ত্রুটি
ত্রুটির উত্তরে একটি HTTP ত্রুটি স্ট্যাটাস আর এই বডি থাকে:
{
"error": "invalid_scope",
"error_description": "The access_token scope does not allow the following operation(s): transfer"
}
| স্ট্যাটাস | error |
কখন |
|---|---|---|
| 401 | invalid_grant |
টোকেন নেই বা বৈধ নয়, বা এই এন্ডপয়েন্টের জন্য ভুল ধরনের ("The token has invalid role")। /api/oauth2/token-এ আরও "The code or secret is not valid"। |
| 401 | invalid_scope |
/api/broadcast: টোকেন অনুমোদন করে না এমন একটি অপারেশন। বিবরণে অপারেশনগুলোর নাম থাকে। |
| 401 | unauthorized_client |
/api/broadcast: এমন অপারেশন যার লেখক টোকেনের ব্যবহারকারী নন, কী স্পর্শ করে এমন account_update2, অনুপস্থিত পোস্টিং কর্তৃত্বের অনুমতি, বা লোড করা যায়নি এমন অ্যাকাউন্ট। বিবরণে বলা থাকে কোনটি। |
| 500 | server_error |
/api/broadcast: Hive নেটওয়ার্ক লেনদেনটি প্রত্যাখ্যান করেছে। error_description-এ তার বার্তা থাকে। |
| 503 | unavailable |
/api/apps: ডিরেক্টরি এখনও তৈরি হচ্ছে। |
GET /api/me
টোকেনটি যে অ্যাকাউন্টের জন্য সেটি ফেরত দেয়। কে লগইন করেছেন তা জানতে, বা একটি টোকেন যাচাই করতে এটি ব্যবহার করুন।
- মেথড:
GETবাPOST। - টোকেন: একটি অ্যাক্সেস টোকেন, অ্যাপের নাম আছে এমন
loginটোকেনসহ।
curl https://hivesigner.com/api/me -H 'Authorization: ACCESS_TOKEN'
উত্তর, সংক্ষেপে:
{
"user": "alice",
"_id": "alice",
"name": "alice",
"account": { "id": 1370484, "name": "alice" },
"scope": [
"vote",
"comment",
"delete_comment",
"comment_options",
"custom_json",
"claim_reward_balance",
"account_update2"
],
"user_metadata": { "profile": { "name": "Alice", "version": 2 } }
}
| ফিল্ড | অর্থ |
|---|---|
user |
টোকেনটি যে Hive ইউজারনেমের জন্য। _id আর name সেটিই আবার বলে। |
account |
পুরো অ্যাকাউন্ট, Hive-এর condenser_api.get_accounts যেমন ফেরত দেয়। |
scope |
টোকেন যা অনুমোদন করে: লগইন টোকেনের জন্য ["login"], নয়তো /api/broadcast যেসব অপারেশন গ্রহণ করে। |
user_metadata |
অ্যাকাউন্টের প্রোফাইল মেটাডেটা, JSON থেকে পড়া। |
/api/me টোকেনটি কোন অ্যাপের জন্য তৈরি তা বলে না। সেটি যাচাই করতে টোকেনটি ডিকোড করুন: দেখুন API-কে জিজ্ঞেস করুন।
POST /api/broadcast
টোকেনের ব্যবহারকারীর পোস্টিং অপারেশনগুলো @hivesigner-এর পোস্টিং কী দিয়ে সাইন করে আর Hive-এ ব্রডকাস্ট করে।
- মেথড:
POST। - টোকেন: একটি
postingঅ্যাক্সেস টোকেন, টোকেন ফ্লো বা কোড ফ্লো থেকে। - কাজ করার আগে যা দরকার: ব্যবহারকারী আপনার অ্যাপ অ্যাকাউন্টকে পোস্টিং কর্তৃত্ব দিয়েছেন (সম্মতির পর্দা এটি করে) আর আপনার অ্যাপ অ্যাকাউন্ট @hivesigner-কে পোস্টিং কর্তৃত্ব দিয়েছে।
- বডি:
{ "operations": [...] }, যেখানে প্রতিটি অপারেশন[name, fields], ঠিক যেমন Hive ব্লকচেইনে। একটি অনুরোধের সব অপারেশন একটিমাত্র লেনদেনে যায়।
POST /api/broadcast HTTP/1.1
Host: hivesigner.com
Authorization: ACCESS_TOKEN
Content-Type: application/json
{
"operations": [
["vote", { "voter": "alice", "author": "bob", "permlink": "my-first-post", "weight": 10000 }]
]
}
curl দিয়ে একই অনুরোধ:
curl -X POST https://hivesigner.com/api/broadcast \
-H 'Authorization: ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"operations":[["vote",{"voter":"alice","author":"bob","permlink":"my-first-post","weight":10000}]]}'
অনুসরণ একটি custom_json অপারেশন:
{
"operations": [
["custom_json", {
"required_auths": [],
"required_posting_auths": ["alice"],
"id": "follow",
"json": "[\"follow\",{\"follower\":\"alice\",\"following\":\"bob\",\"what\":[\"blog\"]}]"
}]
]
}
কোনো Hive নোড লেনদেনটি গ্রহণ করলেই API উত্তর দেয়। result.id হলো লেনদেনের আইডি:
{
"result": { "id": "TRANSACTION_ID" }
}
নেটওয়ার্ক লেনদেনটি প্রত্যাখ্যান করলে উত্তর হয় server_error সহ 500। তার error_description-এ নেটওয়ার্কের বার্তা থাকে আর response-এ কাঁচা ত্রুটিটি থাকে।
broadcast যা গ্রহণ করে
পোস্টিং টোকেন API-কে এই অপারেশনগুলো ব্রডকাস্ট করতে দেয়, আর কিছু নয়। প্রতিটিতে দেখানো ফিল্ডের অ্যাকাউন্টটিই টোকেনের ব্যবহারকারী হতে হবে:
| অপারেশন | টোকেনের ব্যবহারকারীকে হতে হবে |
|---|---|
vote |
voter |
comment |
author |
delete_comment |
author |
comment_options |
author |
custom_json |
required_posting_auths-এর প্রথম অ্যাকাউন্ট |
claim_reward_balance |
account |
account_update2 |
account |
- অন্য যে কোনো অপারেশন
invalid_scopeদিয়ে প্রত্যাখ্যাত হয়।loginটোকেন কোনো অপারেশনই অনুমোদন করে না। - অন্য অ্যাকাউন্টের জন্য অপারেশন
unauthorized_clientদিয়ে প্রত্যাখ্যাত হয়। টোকেন সবসময় শুধু তার নিজের ব্যবহারকারীর হয়েই ব্রডকাস্ট করে। account_update2শুধু অ্যাকাউন্টের মেটাডেটাই বদলাতে পারে।owner,activeবাpostingফিল্ড আছে এমন অপারেশনunauthorized_clientদিয়ে প্রত্যাখ্যাত হয়।custom_json:required_authsফাঁকা রাখুন। API পোস্টিং কর্তৃত্ব দিয়ে সাইন করে, তাই অ্যাক্টিভ কর্তৃত্ব লাগে এমন অপারেশন নেটওয়ার্কে ব্যর্থ হয়।
স্থানান্তর আর অন্যান্য ওয়ালেট অপারেশনের জন্য ব্যবহারকারীর অ্যাক্টিভ কী লাগে। সেগুলো বরং সাইন লিংক হিসেবে পাঠান।
POST /api/oauth2/token
একটি কোডকে টোকেনে, বা একটি রিফ্রেশ টোকেনকে নতুন টোকেনে বদলে দেয়। শুধু আপনার সার্ভার থেকেই ডাকুন। দেখুন কোড ফ্লো।
- মেথড:
POST, মানগুলো বডিতে। - বডি:
codeআরclient_secret, অথবাrefresh_tokenআরclient_secret। - হেডার: কোনো
Authorizationহেডার পাঠাবেন না।
curl -X POST https://hivesigner.com/api/oauth2/token \
-H 'Content-Type: application/json' \
-d '{"code": "CODE", "client_secret": "CLIENT_SECRET"}'
{
"access_token": "ACCESS_TOKEN",
"refresh_token": "REFRESH_TOKEN",
"expires_in": 604800,
"username": "alice"
}
প্রতিটি কল একটি নতুন অ্যাক্সেস টোকেন আর একটি নতুন রিফ্রেশ টোকেন ফেরত দেয়। দুটিই @hivesigner সাইন করে। expires_in হলো অ্যাক্সেস টোকেনের আয়ু, সেকেন্ডে (৭ দিন)।
ত্রুটি: 401 invalid_grant। পাঠানো মানটি বৈধ কোড বা রিফ্রেশ টোকেন না হলে বিবরণ হয় "The token has invalid role"। কোড বা সিক্রেট না মিললে বিবরণ হয় "The code or secret is not valid"।
POST /api/oauth2/token/revoke
Hivesigner-কে জানায় যে ব্যবহারকারী আপনার অ্যাপ থেকে লগআউট করেছেন। আপনার অ্যাপ টোকেনটি নিজেই ফেলে দেয়।
- মেথড:
POST। - টোকেন: অ্যাক্সেস টোকেন,
Authorizationহেডারে।
curl -X POST https://hivesigner.com/api/oauth2/token/revoke -H 'Authorization: ACCESS_TOKEN'
{ "success": true }
JavaScript SDK-এর revokeToken() এই কলটি করে আর তারপর টোকেনটি ভুলে যায়। আপনার অ্যাপের অ্যাক্সেস চিরতরে সরাতে ব্যবহারকারী https://hivesigner.com/authorized-apps ঠিকানায় সেটি সরান। দেখুন লগআউট আর অ্যাক্সেস সরানো।
GET /api/apps
সর্বজনীন অ্যাপ ডিরেক্টরি: যেসব অ্যাপ Hivesigner দিয়ে ব্রডকাস্ট করে, কত মানুষ সেগুলো ব্যবহার করে সেই অনুসারে সাজানো। এতে কোনো টোকেন লাগে না। https://hivesigner.com/apps একই তালিকা দেখায়।
curl https://hivesigner.com/api/apps
{
"updated_at": "2026-09-19T06:00:00.000Z",
"building": false,
"window_days": 7,
"featured": ["myapp"],
"apps": [
{
"username": "myapp",
"name": "My App",
"about": "A short description from the app's profile.",
"website": "https://myapp.example",
"site": "ok",
"users": 412,
"requests": 9310,
"first_seen": "2026-08-01",
"last_seen": "2026-09-19",
"new": false
}
]
}
| ফিল্ড | অর্থ |
|---|---|
updated_at |
ডিরেক্টরিটি শেষবার কখন তৈরি হয়েছে। |
building |
প্রথম নির্মাণে ডেটা না আসা পর্যন্ত true। তখন apps ফাঁকা থাকে। |
window_days |
তালিকাটি কত দিনের হিসাব ধরে। |
featured |
যে ইউজারনেমগুলো প্রথমে দেখানো হয়, ক্রম অনুসারে। |
apps[].username |
অ্যাপ অ্যাকাউন্ট। |
apps[].name, about |
অ্যাপ অ্যাকাউন্টের প্রোফাইল থেকে, বা null। |
apps[].website |
প্রোফাইলের ওয়েবসাইট, যখন সেটি নিজের ডোমেইনে উত্তর দেয়। নয়তো null। |
apps[].site |
ওয়েবসাইট যাচাইয়ের ফল: ok, no_website, invalid, redirected, blocked বা unreachable। redirected হলে সঙ্গে redirects_to-ও থাকে। |
apps[].users |
দৈনিক আলাদা ব্যবহারকারী, পুরো সময়কালের যোগফল। |
apps[].requests |
ওই সময়কালে অ্যাপটির জন্য করা সফল API অনুরোধ। |
apps[].first_seen, last_seen |
Hivesigner অ্যাপটিকে প্রথম যেদিন নথিভুক্ত করেছে আর শেষ যেদিন সেটি ব্যবহার হয়েছে, বা null। |
apps[].new |
true, যখন অ্যাপটি এই সময়কালের মধ্যেই প্রথম দেখা গেছে। |
উত্তরটি ৫ মিনিট পর্যন্ত ক্যাশে থাকতে পারে। ডিরেক্টরি প্রথমবার তৈরি হওয়ার আগে API unavailable সহ 503 দেয়। পরে আবার চেষ্টা করুন।
নাম আর বিবরণ প্রতিটি অ্যাপ অ্যাকাউন্ট নিজেই প্রকাশ করে। Hivesigner এর কোনোটিই যাচাই করে না।