Granetra මත නිර්මාණය කරන්න
ඔබගේ AI සහය නියෝජිතයන් සඳහා පිරිසිදු REST API සහ සත්යාපිත වෙබ්හූක්. ඔබේ ඩැෂ්බෝඩ් හි සංවර්ධක පිටුවේ යතුරක් නිර්මාණය කර, මිනිත්තු කිහිපයකින් නිර්මාණය කිරීමට ආරම්භ කරන්න.
https://granetra.com/api/v1REST API
බොට් ලැයිස්තුගත කරන්න, සංවාද සහ පරිච්ඡේද කියවන්න, සංවාද පණිවුඩ යැවීම, සහ නියෝජිත ක්රියා කළමනාකරණය කරන්න — සියල්ල scoped bearer යතුරක් සමඟ.
සත්යාපිත වෙබ්හූක්
සංවාදයක් ආරම්භ වන විට, සංචාරකයෙකු මිනිසෙකුට ඉල්ලීමක් කළ විට, හෝ නායකයෙක් අල්ලා ගැනීමේදී timestamped-HMAC POST එකක් ලබා ගන්න — නැවත උත්සාහ කිරීම් සහ බෙදාහැරීමේ ලොගයක් සමඟ.
ස්වයංක්රීය කිරීම සඳහා නිර්මාණය කරන ලදී
යතුරු ආපසු හැරවීම, ඔබේ සේවාදායක IPs සඳහා එය සීමා කිරීම, සහ CI/CD මඟින් බොට් වින්යාසය පවත්වා ගැනීම. ඩැෂ්බෝඩ් කරන සියල්ල, API මඟින්.
API යොමු
මූලික URL: https://granetra.com/api/v1
අනුමැතිය
ඔබේ API යතුර සෑම ඉල්ලීමකම bearer token ලෙස ගත කරන්න:
Authorization: Bearer gk_your_key_here
යතුරු scoped වේ. ඔබේ යතුර scoped නොවන endpoint එකකට ඉල්ලීමක් 403 insufficient_scope ආපසු ලබා දේ. ලබා ගත හැකි scopes: bots:read, conversations:read, chat:write, actions:read, actions:write.
Endpoints
| GET | /bots | ඔබේ බොට් ලැයිස්තුගත කරන්න |
| GET | /bots/:id | එකම බොට් |
| GET | /bots/:id/conversations | සංවාද ලැයිස්තුගත කරන්න |
| GET | /conversations/:id | සංවාද පරිච්ඡේදය |
| POST | /chat | පණිවුඩයක් යැවීම, පිළිතුරක් ලබා ගැනීම |
| GET | /bots/:id/actions | බොට්ගේ නියෝජිත ක්රියා ලැයිස්තුගත කරන්න |
| POST | /bots/:id/actions | ක්රියාවක් නිර්මාණය කරන්න |
| PATCH | /bots/:id/actions/:actionId | ක්රියාවක් යාවත්කාලීන කරන්න |
| DEL | /bots/:id/actions/:actionId | ක්රියාවක් මකා දැමීම |
චැට් පණිවුඩයක් යවන්න
curl -X POST https://granetra.com/api/v1/chat \
-H "Authorization: Bearer gk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"bot_id": "00000000-0000-0000-0000-000000000000",
"message": "What are your opening hours?"
}'
# → { "conversation_id": "…", "message_id": "…", "fallback": false, "reply": "We're open 9–5 Mon–Fri." }
# Pass the returned conversation_id back to continue the same thread.ආකාරක ක්රියා කළමනාකරණය කරන්න
ඔබගේම HTTPS අවසන් ලිපිනයන් ලියාපදිංචි කරන්න, බොට් එක සංවාදය අතරේ ඇමතුම් කළ හැකි මෙවලම් ලෙස — එය CI/CD මගින් කළමනාකරණය කරන්න, ඩැෂ්බෝඩ් එකෙන් නොවේ. actions:write පරාසය සහ Scale සැලැස්මක බොට් එකක් අවශ්ය වේ.
curl -X POST https://granetra.com/api/v1/bots/BOT_ID/actions \
-H "Authorization: Bearer gk_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"name": "lookup_order",
"description": "Look up an order status by number",
"url": "https://api.yourstore.com/orders",
"method": "GET",
"parameters": [
{ "name": "order_number", "type": "string", "description": "The order #", "required": true }
]
}'
# → { "ok": true, "id": "…" }Webhook සිදුවීම්
සෑම බෙදාහැරීමක්ම මෙම ආවරණය සමඟ JSON POST එකකි:
{
"id": "delivery-uuid",
"type": "handoff.requested",
"created": "2026-07-20T12:00:00.000Z",
"data": { "bot_id": "…", "conversation_id": "…" }
}සිදුවීම් වර්ග: conversation.created, handoff.requested, lead.captured.
අත්සන් වල සත්යාපනය
සෑම webhook එකක්ම X-Granetra-Signature ආවරණයක් ගෙන යයි t=<unix>,v1=<hmac> ආකාරයේ. ඔබගේ අවසන් ලිපිනයේ අත්සන් රහසින් `${t}.${rawBody}` හි HMAC-SHA256 නැවත ගණනය කර සසඳන්න:
import crypto from "node:crypto";
function verify(rawBody, header, secret) {
const parts = Object.fromEntries(header.split(",").map((p) => p.split("=")));
const expected = crypto
.createHmac("sha256", secret)
.update(`${parts.t}.${rawBody}`)
.digest("hex");
return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(parts.v1));
}සම්මාතනය කිරීමට ඕනෑම 2xx එකක් සමඟ ප්රතිචාර දිය යුතුය. නොවන 2xx හෝ කාලය ඉක්මවා යාමක් පසුබැසීමකින් නැවත උත්සාහ කරයි; දිගු අසාර්ථකත්වයක් ස්වයංක්රීයව අවසන් ලිපිනය අක්රීය කරයි.
ඔබගේ IPs සඳහා යතුරක් සුරක්ෂිත කිරීම
යතුරක් විකල්ප IP අවසර ලැයිස්තුවක් (පෞද්ගලික IPv4 ලිපිනයන් හෝ CIDR පරාස) ගෙන යා හැක. සකස් කළ විට, වෙනත් ලිපිනයන්ගෙන් කරන ලද ඉල්ලීම් 403 ip_not_allowed සමඟ ප්රතික්ෂේප කරයි. ඩැෂ්බෝඩ් එකෙන් යතුරෙන් යතුරට කළමනාකරණය කරන්න.