# Teams and roles

> Tokens-এ team organization খোলা, member invite করা, প্রত্যেককে role আর মাসিক spending cap দেওয়া, organization বদলানো আর member সরানো। সঙ্গে প্রতিটা role কী করতে পারে আর team-এর মধ্যে কী ভাগ হয়।

Organization থাকলে কয়েকজন মিলে একটা Tokens অ্যাকাউন্টে কাজ করতে পারেন: key আর usage report সবাই ভাগ করে নেয়, প্রত্যেকের একটা role থাকে, আর প্রতি member-এর জন্য মাসিক spending cap ঠিক করা যায়। এই পেজে আছে team বানানো, মানুষ invite করা, প্রতিটা role কী করতে পারে, spending cap, organization বদলানো আর member সরানো।

:::note[আপনার অ্যাকাউন্টে team চালু নাও থাকতে পারে]
Team এমন একটা feature, যা Tokens প্রতিটা deployment-এ আলাদা করে চালু করে। বন্ধ থাকলে Dashboard-এর sidebar-এ **Team & members** আইটেম থাকে না, আর organization switcher-ও লুকানো থাকে। তবু [/dashboard/team](/dashboard/team) খুললে লেখা আসে "Teams and collaborative workspaces are coming soon." দরকার হলে [support](/docs/support)-কে জিজ্ঞেস করুন।
:::

## Personal আর team organization

প্রতিটা অ্যাকাউন্টে একটা **Personal** organization নিজে থেকেই তৈরি হয়। Team না বানানো পর্যন্ত আপনার key, plan আর Wallet এখানেই থাকে। Personal organization-এ invite করার মতো কোনো member নেই: **Invite Member** শুধু team organization-এ দেখা যায়।

**Team** organization আপনি নিজে বানান, আর তার **owner** হন আপনিই। নিচের সবকিছু ঘটে switcher-এ যে organization active আছে সেখানে। তাই key বানানো বা কাউকে invite করার আগে top bar-এ নাম আর Team বা Personal ট্যাগটা দেখে নিন।

## Team বানান

1. Dashboard-এর top bar-এ organization switcher খুলুন।
2. **Create Team Organization** চাপুন।
3. **Team / Organization Name** লিখে **Create Team** চাপুন।

Dashboard নতুন করে লোড হবে, নতুন team active থাকবে আর আপনি হবেন তার owner। Team সামলাতে [/dashboard/team](/dashboard/team) খুলুন। Owner আর admin সেখানে **Org Settings** খুলে **Organization Name**, **Billing Email (Receipts)**, **Company / Legal Name** আর **BIN / VAT / Tax ID** বদলাতে পারেন।

## Member invite করুন

Invitation আসলে একটা link। Tokens সেটা ইমেইলে পাঠায় না, আপনাকেই পাঠাতে হবে।

1. Team organization-এ [/dashboard/team](/dashboard/team) খুলে **Invite Member** চাপুন।
2. **Email Address** লিখুন, একটা **Role** বাছুন, আর চাইলে **Monthly Spend Cap (Optional USD)** দিন।
3. **Generate Invitation** চাপুন।
4. **Invitation Link (valid for 7 days)** copy করে মানুষটাকে নিজেই পাঠিয়ে দিন।

যাকে invite করা হয়েছে, তিনি এমন একটা Tokens অ্যাকাউন্টে Sign in করা অবস্থায় link-টা খুলবেন, যেটার ইমেইল ওই একই ঠিকানা। তারপর **Accept and join organization** চাপবেন। এক ঠিকানার জন্য বানানো link অন্য ঠিকানায় চলে না: error message-এ লেখা থাকে invitation কোন ঠিকানার জন্য ছিল। Join করার পর তিনি organization switcher খুলে team-টা বেছে নিলেই সেখানে কাজ শুরু করতে পারবেন।

যেসব কারণে invitation আটকে যেতে পারে:

- **Seat limit।** Member কতজন হতে পারবে তা ঠিক হয় organization-এর active plan থেকে। Plan না থাকলে সীমা 1, মানে শুধু owner। সীমা পার হলে আসে "Organization has reached its plan seat limit of N members. Upgrade your plan to invite more team members." যে invitation এখনো accept বা expire হয়নি, সেটাও সীমার হিসাবে ধরা হয়।
- **আগে থেকেই member।** "This user is already a member of the organization"।
- **Link-এর মেয়াদ শেষ, অথবা আগেই ব্যবহার হয়ে গেছে।** নতুন করে invitation বানান।

:::tip
Member join করার পর members table-এ গিয়ে তার spending cap ঠিক করুন, আর সেখানে cap-টা দেখাচ্ছে কি না মিলিয়ে নিন। নিচে "প্রতি member-এর spending cap" অংশটা দেখুন।
:::

## Role আর কে কী করতে পারে

Role পাঁচটা। প্রথম চারটা invite করার সময় বা role বদলানোর সময় বেছে নেওয়া যায়; owner হলেন যিনি team-টা বানিয়েছেন।

| Action                                 |    Owner     |    Admin     |   Billing    |  Developer   |    Viewer    |
| -------------------------------------- | :----------: | :----------: | :----------: | :----------: | :----------: |
| See the member list                    |     হ্যাঁ      |     হ্যাঁ      |     হ্যাঁ      |     হ্যাঁ      |     হ্যাঁ      |
| See the usage table for all members    |     হ্যাঁ      |     হ্যাঁ      |     হ্যাঁ      | শুধু নিজের সারি |     হ্যাঁ      |
| Create API keys                        |     হ্যাঁ      |     হ্যাঁ      |      না      |     হ্যাঁ      |      না      |
| See keys in the organization           |     সব      |     সব      |   একটাও না   | নিজের key |   একটাও না   |
| Rotate or revoke keys                  |    যেকোনো    |    যেকোনো    |      না      | নিজের key |      না      |
| Invite members, change roles, set caps |     হ্যাঁ      |     হ্যাঁ      |      না      |      না      |      না      |
| Remove members                         |     হ্যাঁ      |     হ্যাঁ      |      না      |      না      |      না      |
| Edit Org Settings                      |     হ্যাঁ      |     হ্যাঁ      |      না      |      না      |      না      |

Invitation-এর form-এ role-গুলোর বর্ণনা এভাবে দেওয়া:

- **Developer**, form-এ লেখা: "Create & manage own keys, view own usage"।
- **Admin**, form-এ লেখা: "Manage members, keys, view all usage"।
- **Billing**, form-এ লেখা: "Manage subscription & top-ups, invoices"।
- **Viewer**, form-এ লেখা: "View org usage & models, read-only"।

Admin-এর ওপর কিছু সীমা আছে:

- এক admin অন্য admin-এর role বদলাতে পারেন না, আর অন্য admin-কে সরাতেও পারেন না।
- Admin নিজের জন্য বা owner-এর জন্য spending cap ঠিক করতে পারেন না।
- Dashboard থেকে কেউ owner-কে demote বা remove করতে পারে না। কোনো member-এর role তালিকায় শুধু Admin, Billing, Developer আর Viewer থাকে।

Billing আর viewer member key বানাতে পারেন না, কোনো key দেখতেও পান না। তাই team-এ তাঁরা request চালাতে পারেন না। [Playground](/docs/playground)-এ team-এর জন্য তাঁদের সামনে আসে "No active API keys found"।

## প্রতি member-এর spending cap

Cap দিয়ে ঠিক করা হয় এক ক্যালেন্ডার মাসে একজন member-এর request সর্বোচ্চ কত খরচ করতে পারবে। Members table-এর **Monthly Spend Cap** কলামে ডলারে সেটা লিখুন, আর cap না চাইলে ঘর ফাঁকা রাখুন। ঘর থেকে বেরিয়ে এলে table নিজেই সেভ করে নেয়।

এটা কীভাবে কার্যকর হয়:

- Tokens হিসাব করে: ওই member মাসের শুরু থেকে এই team-এ কত খরচ করেছেন, তার সঙ্গে এখনো চলছে এমন request-এর খরচ, আর নতুন request-টায় সর্বোচ্চ কত খরচ হতে পারে। মোট যদি cap ছাড়িয়ে যায়, request model-এ পৌঁছানোর আগেই ফিরিয়ে দেওয়া হয়।
- ফিরিয়ে দিলে আসে `402 member_cap_reached`। Message-এ member-কে বলা থাকে limit বাড়ানোর জন্য organization administrator-কে বলতে। এটা [Errors](/docs/errors)-এর তালিকায় আছে।
- Cap মানুষের ওপর বসে, key-র ওপর নয়। আলাদা key-র নিজস্ব মাসিক cap-ও থাকতে পারে; দুটোই যাচাই হয়। দেখুন [API keys](/docs/api-keys)।
- Cap 0 দিলে সেটাকে cap না থাকা হিসেবেই ধরা হয়। কোনো member-কে আটকাতে চাইলে ছোট একটা ধনাত্মক সংখ্যা দিন।

একই পেজের **Usage by Member (Current Month)** table-এ প্রতিটা member-এর request, মোট token, ডলারে এই মাসের খরচ আর cap দেখা যায়।

## Organization বদলানো

Top bar-এর organization switcher ব্যবহার করুন। আপনি যে যে organization-এর member, সবগুলো সেখানে তালিকায় থাকে, আর active-টার পাশে check চিহ্ন। অন্যটা বাছলে Dashboard নতুন করে লোড হয়। আপনার বানানো key, দেখা usage আর team পেজ, সবই active organization-এর সঙ্গে বদলে যায়।

একসঙ্গে একাধিক team-এর member হওয়া যায়, আর Personal organization-ও থাকে।

## কী ভাগ হয়, কী হয় না

প্রতিটা organization-এ তার member-রা যা ভাগ করে নেয়:

- **API key।** Key সেই organization-এরই, যেখানে সেটা বানানো হয়েছে। কোন কোন key আপনি দেখতে পাবেন তা role-এর ওপর নির্ভর করে (ওপরের table দেখুন)।
- **Usage record।** প্রতিটা request লেখা হয় organization আর যে member পাঠিয়েছেন তাঁর নামে। Team পেজের usage-by-member table এখান থেকেই পড়ে।
- **টাকার উৎস।** Team key দিয়ে করা request-এর খরচ কাটে ওই key যে organization-এর, তার Wallet আর plan থেকে। Invitation পেজেও লেখা আছে member-রা key পান "funded by the organization's credit pool"।

যা ভাগ হয় না:

- **আপনার Personal organization।** তার key, plan আর Wallet আপনারই থাকে, team সেগুলো দেখতে পায় না।
- **আপনার profile, ইমেইল আর Sign in।** সহকর্মীরা member list-এ শুধু আপনার নাম আর ইমেইল দেখেন, আর কিছু না।
- **Referral-এর আয়।** এটা আপনার নিজের Wallet-এ জমা হয়। দেখুন [Referrals](/docs/referrals)।

:::warning[পুরো team-কে নামানোর আগে টাকার উৎস যাচাই করুন]
Seat limit আর team-এর টাকার উৎস আসে team organization-এর plan আর Wallet থেকে, আপনার ব্যক্তিগতগুলো থেকে নয়। পুরো team-কে invite করার আগে একটা team key দিয়ে test request পাঠিয়ে দেখে নিন খরচ আপনি যেমন ভেবেছেন তেমনই কাটছে কি না। অথবা [support](/docs/support)-কে জিজ্ঞেস করুন আপনার team-এর খরচ কোথা থেকে মেটে।
:::

## Member সরানো

Owner আর admin যেকোনো member-এর সারিতে **Remove** চাপতে পারেন। তখন "Remove Team Member" নামের একটা confirmation dialog এসে সতর্ক করে: "All API keys created by this member will be permanently revoked immediately." এগোতে চাইলে **Confirm & Revoke Keys** চাপুন।

কাউকে সরালে যা হয়:

- এই organization-এ তাঁর বানানো প্রতিটা active key সঙ্গে সঙ্গে revoke হয়ে যায়। ওই key ব্যবহার করা tool-গুলো পরের request-এই `401 invalid_api_key` পাবে।
- Team-এর key, usage আর সেটিংসে তাঁর আর কোনো access থাকে না।
- তাঁর নিজের অ্যাকাউন্ট আর Personal organization যেমন ছিল তেমনই থাকে। যে team থেকে সরানো হলো সেটা যদি তাঁর active organization হয়ে থাকে, তাঁকে Personal-এ ফিরিয়ে দেওয়া হয়।

কোনো member-এর বানানো key রেখে দিতে চাইলে আগে নিজে একটা নতুন key বানিয়ে tool-গুলো সেটাতে সরিয়ে নিন। Revoke হয়ে যাওয়া key আর ফেরত আনা যায় না।

## আরও পড়ুন

- [API keys](/docs/api-keys)
- [Usage, limits and alerts](/docs/usage-and-alerts)
- [Plans, credits and wallet](/docs/plans-and-wallet)
- [Dashboard tour](/docs/dashboard-tour)

---
Page: https://tokens.bd/bn/docs/teams-and-roles
