নিজের script, Zapier/n8n automation বা অন্য কোনো app থেকে Mind Map তৈরি, update, export করুন। JSON in, JSON out — Bearer API Key দিয়ে authenticate, আর সব message Banglish।
Key আপনার account-এর সব Map access করতে পারে (owner হিসেবে যেগুলো আপনার, আর collaborator হিসেবে যেগুলো share করা)।
Server-এ শুধু Key-এর SHA-256 hash থাকে; plaintext হারালে revoke করে নতুন বানান।
একসাথে সর্বোচ্চ ১০টা active Key। Revoke করলে সাথে সাথে সেই Key-এর request 401 পায়।
Key শেষ কবে ব্যবহার হয়েছে সেটা Profile-এ দেখা যায় (lastUsedAt, মিনিটে একবার update হয়)।
Key নিরাপদ রাখুন
Browser-এর public JavaScript, GitHub repo বা screenshot-এ কখনো Key বসাবেন না। Server-side code বা environment variable-এ (DMM_API_KEY) রাখুন। সন্দেহ হলে Profile থেকে Revoke করুন।
03
Rate limit
প্রতি API Key-তে মিনিটে ১২০টা request (sliding window)। Limit পার হলে 429 আসে, সাথে Retry-After header (কত second পরে আবার try করবেন)।
Header
মানে
X-RateLimit-Limit
Window-এ মোট কতটা request (120)
X-RateLimit-Remaining
এই মিনিটে আর কতটা বাকি
Retry-After
শুধু 429-এ: কত second পরে আবার try করবেন
429 Too Many Requests
HTTP/1.1 429 Too Many Requests
Retry-After: 23
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 0
{ "ok": false, "error": "API rate limit পার হয়ে গেছে (প্রতি Key-তে মিনিটে ১২০টা request)। একটু পরে আবার try করুন।", "code": "RATE_LIMITED", "retryAfterSec": 23 }
04
Response envelope ও error code
প্রতিটা JSON response একই খামে আসে: সফল হলে { ok: true, data }, ভুল হলে { ok: false, error, code }। error সবসময় মানুষের পড়ার মতো Banglish message — সরাসরি user-কে দেখাতে পারেন; program-এ branch করতে code ব্যবহার করুন।
আপনার own Map আর যেগুলোতে আপনাকে collaborator করা হয়েছে — সবগুলোর summary, শেষ update অনুযায়ী sort করা। Document (data) এখানে থাকে না; সেটার জন্য GET /maps/{id}।
Parameter
In
Type
বিবরণ
page
query
number
কত নম্বর page (default 1)।
limit
query
number
প্রতি page-এ কতটা, 1–100 (default 20)।
q
query
string
Title-এ search (case-insensitive, max 100 অক্ষর)।
archived
query
"false" | "true" | "all"
Default false = শুধু active Map। true = শুধু archived, all = সব।
role = OWNER | EDITOR | VIEWER। Viewer হলে PATCH/DELETE-এ 403 পাবেন।
POST/api/v1/maps
নতুন Map তৈরি
তিনভাবে বানানো যায়: শুধু title (একটা root Node নিয়ে খালি Map), templateId (built-in slug যেমন study-notes, অথবা community template-এর id/slug), কিংবা পুরো data document (দেখুন Map document format)। Dashboard-এর মতোই plan-এর Map limit আর Node limit এখানেও খাটে।
Parameter
In
Type
বিবরণ
titlerequired
body
string
Map-এর নাম, 1–120 অক্ষর।
description
body
string
সর্বোচ্চ 500 অক্ষর।
templateId
body
string
Built-in template slug (GET /templates দেখুন) বা community template id/slug। data থাকলে এটা ignore হয়।
data
body
MapDocument
পুরো document। Node label/note plain text করা হয়, rich html sanitize হয়।
যেটা পাঠাবেন শুধু সেটাই বদলায়। data দিলে পুরো document replace হয় — তাই আগে GET করে, বদলে, তারপর PATCH করুন। Owner আর editor করতে পারে; isArchived শুধু owner।
Parameter
In
Type
বিবরণ
title
body
string
1–120 অক্ষর।
description
body
string | null
সর্বোচ্চ 500 অক্ষর; null দিলে মুছে যায়।
data
body
MapDocument
পুরো document। Node limit owner-এর plan অনুযায়ী — শুধু সেই save refuse হয় যেটা Map-কে limit-এর বাইরে বড় করে।
tags
body
string[]
সর্বোচ্চ 10টা, প্রতিটা 30 অক্ষর।
isArchived
body
boolean
Archive / unarchive (owner only)।
createVersion
body
boolean
true দিলে save-এর আগে একটা version snapshot নেয় (Standard+ owner)।
Node-এর label/note plain text হিসেবে রাখা হয় (HTML tag থাকলেও text হিসেবেই দেখাবে); rich text চাইলে data.html দিন — সেটা DOMPurify দিয়ে sanitize হয়।
Free plan-এর owner-এর Map-এ 20-এর বেশি Node করতে চাইলে 402 PLAN_LIMIT; কিন্তু আগে থেকেই বড় Map ছোট করা যায়।
DELETE/api/v1/maps/{id}
Map delete (trash)
শুধু owner। Soft delete — Map trash-এ যায়, public link বন্ধ হয়, list/GET-এ আর দেখায় না।
JSON envelope না — সরাসরি file body আসে, Content-Disposition: attachment সহ। json = আমাদের নিজস্ব re-importable format, md = nested Markdown outline। বিস্তারিত: Export format।
একটা Map-এর পুরো content একটা JSON document — { version: 1, nodes, edges, settings, viewport? }। Canvas-এ React Flow ব্যবহার হয়, তাই node/edge-এর shape-ও সেটার মতো। নিচের field-গুলো ছাড়া বাকি সব optional; না দিলে default বসে।
# Chapter 3
- 📌 Formulas
- Newton's 2nd law
- Examples ([link](https://example.com))
> পরীক্ষায় আসে
## অন্যান্য Node
- Loose note
json — একই file পরে app-এ Import করা যায় (Dashboard → Import) বা POST /maps-এর data হিসেবে পাঠানো যায় (.data অংশটা)।
md — Notion/Obsidian-এ paste করার মতো nested outline। Node-এর emoji icon, link আর note-ও আসে।
08
CORS ও browser থেকে call
v1 cookie ব্যবহার করে না, তাই CORS পুরো খোলা: Access-Control-Allow-Origin: *। যেকোনো origin থেকে fetch করতে পারবেন — কিন্তু মনে রাখবেন, browser-এর JavaScript-এ Key বসালে সেটা যে কেউ দেখতে পাবে। Browser app-এর জন্য নিজের backend-এ proxy করুন।