Create teams.overview - #851
lavanya-gunreddi wants to merge 7 commits into
Conversation
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Automations to automatically generate PRs for you. |
rambo-runpod
left a comment
There was a problem hiding this comment.
Checked the content against the backend (runpod/RunPod origin/main, 2da6af24c) and the console (main-ui origin/main, ff9b7114e).
Structure is good and needs no change: putting Teams as a peer of Accounts and billing and Organizations (Beta) matches how Organizations is already set up, a top-level teams/ directory matches repo layout, and every link target resolves. Not renaming it "Teams (Beta)" is also right, since teams are GA.
Findings are content accuracy, inline below. Six are wrong against the current backend; the rest are consistency and link-integrity items.
Heads-up on two of them: I have a backend PR open (runpod/RunPod#6176) that changes team role verdicts for audit logs and the Billing role. I have flagged which comments it affects so this page does not get written twice.
| | Create and delete Serverless endpoints | ❌ | ❌ | ✅ | ✅ | | ||
| | Send requests to Serverless endpoints | ✅ | ❌ | ✅ | ✅ | | ||
| | Connect to existing Instant Clusters | ✅ | ❌ | ✅ | ✅ | | ||
| | Create, delete, start, and stop Instant Clusters | ❌ | ❌ | ❌ | ✅ | |
There was a problem hiding this comment.
Dev should be white-check, not cross.
Team Dev holds CLUSTER_MANAGE (model/src/authz/roleGrid.ts:511), and cluster create/delete/update/expand gate on CLUSTER:CREATE/DELETE/UPDATE (node/graphql/schema/cluster.ts:276,286,289). The console agrees: cluster delete is [ADMIN, DEV] (features/Clusters/ClusterCard/index.tsx:57).
| | Invite team members | ❌ | ❌ | ❌ | ✅ | | ||
| | Manage team permissions | ❌ | ❌ | ❌ | ✅ | | ||
| | Modify team account settings | ❌ | ❌ | ❌ | ✅ | | ||
| | Access audit logs | ❌ | ❌ | ❌ | ✅ | |
There was a problem hiding this comment.
Correct as written today, but about to change.
Admin-only matches the backend right now: only the team admin row holds AUDIT_LOG_VIEW_SELF (roleGrid.ts:467) and the resolver gates on AUDIT_LOG:LIST (node/graphql/schema/auditLog.ts:60).
runpod/RunPod#6176 grants it to all four roles, matching the org grid and the RBAC spec, which puts AUDIT_LOG LIST on all roles. If that lands before this page ships, every cell in this row becomes a check.
Worth confirming merge order before publishing. Separately, the console has shown this nav item to team Dev the whole time (console/src/utils/routes.tsx:227, [ADMIN, DEV]), so a Dev currently sees the link and gets an error. #6176 resolves that too.
|
|
||
| ## Billing | ||
|
|
||
| The Billing role is for financial management only. Billing members can view billing information and manage payment methods but have no access to compute resources. |
There was a problem hiding this comment.
"No access to compute resources" is not accurate, before or after my backend change.
Today, team Billing holds CRA:CREATE/UPDATE/DELETE (roleGrid.ts:531), so it can create, edit and delete the container registry credentials that Pods and Serverless workers use to pull private images. Dev cannot. It also holds CLUSTER:LIST and ENDPOINT:LIST.
runpod/RunPod#6176 removes those writes, but Billing still ends up able to read compute: pods, network volumes, templates, clusters and endpoints, mirroring org billing, whose purpose is explaining spend.
So the sentence needs changing either way. Suggested wording that holds after #6176:
| The Billing role is for financial management only. Billing members can view billing information and manage payment methods but have no access to compute resources. | |
| The Billing role is for financial management. Billing members can view billing information and manage payment methods. They can also view compute resources such as Pods, endpoints, and network volumes in order to understand spend, but cannot create, modify, or connect to them. |
The table is also missing a container registry credentials row, which is where the Billing and Dev difference actually shows up. Worth adding once #6176 settles the values.
|
|
||
| To invite multiple members at once, click **Bulk Invite**. Upload a CSV file or paste content directly using the format `role,email`, one member per line. A header row is detected automatically. Click **Send Invites** when done. | ||
|
|
||
| Invitation links remain active until used or manually revoked. |
There was a problem hiding this comment.
Wrong: team invites expire after 3 days.
const expiresAt = addDays(now, 3) (model/src/team/createTeamInvite.ts:74, and the bulk path at createBulkTeamInvites.ts:121), enforced on accept (joinTeam.ts:26, "This invite has expired.").
You may be thinking of org invites, which are 14 days. The constant says so explicitly: // Org invites expire after 14 days (longer than TeamInvite's 3-day window...) (model/src/org/invite/constants.ts:1-3).
| Invitation links remain active until used or manually revoked. | |
| Invitation links expire 3 days after they are created. They also become invalid once used or manually revoked. |
| </Steps> | ||
|
|
||
| <Note> | ||
| To delete your team, scroll to the bottom of the **Team** page and click **Delete Team**. This reverts your account to a personal account. All members are removed, but your resources remain unchanged. |
There was a problem hiding this comment.
Deleting a team is owner-only, not admin.
if (teamToDelete.ownerId !== context.auth.originalUserId) throw 'Only the team owner can delete the team.' (model/src/team/deleteTeam.ts:27-28). A team admin who is not the owner cannot do this.
Two other omissions: clicking Delete Team opens a confirmation dialog, and pending invites are cancelled along with memberships (TeamInvite.team ... onDelete: Cascade).
| To delete your team, scroll to the bottom of the **Team** page and click **Delete Team**. This reverts your account to a personal account. All members are removed, but your resources remain unchanged. | |
| Only the team owner can delete a team. To do so, scroll to the bottom of the **Team** page, click **Delete Team**, and confirm in the dialog. This reverts your account to a personal account. All members are removed and any pending invites are cancelled, but your resources remain unchanged. |
| ## Personal accounts | ||
|
|
||
| Sign up for a Runpod account at [console.runpod.io/signup](https://www.console.runpod.io/signup). | ||
| A personal account is the default account type. Sign up at [console.runpod.io/signup](https://console.runpod.io/signup) to get started. All resources you deploy, including Pods, Serverless endpoints, and network volumes, belong to your personal account. |
There was a problem hiding this comment.
Please keep an explicit ## Create an account heading here.
24 pages link to /accounts-billing/manage-accounts specifically as the signup prerequisite, for example:
serverless/quickstart.mdx:15- "You've created a Runpod account"tutorials/migrations/openai/overview.mdx:11- "Create a Runpod account"public-endpoints/quickstart.mdx:14- "A Runpod account with at least 1 dollar in credits"
The signup URL does survive inside this paragraph, so nothing 404s, but those readers arrive at an account-types explainer rather than instructions, and the #create-an-account anchor is gone. Re-adding the H2 preserves the anchor and fixes all 24 in one edit.
While here: docs.json:1683 redirects /docs/invites to this page, which existed to serve the invite content this PR moved. It should now point at the teams page. release-notes.mdx:432 links "Teams: ... role-based access control" here too, and wants the roles page.
| Teams let multiple users collaborate under a shared account with role-based access control. | ||
|
|
||
| Team accounts enable multiple users to collaborate on projects and share resources. | ||
| For details on setting up and managing a team, see [Manage teams](/teams/manageteams). |
There was a problem hiding this comment.
teams/teamroles is in the sidebar but nothing in the repo links to it in prose, so the only way to find it is scanning the nav. Worth linking from here, and from the invite step on the Manage teams page where a reader picks a role.
| For details on setting up and managing a team, see [Manage teams](/teams/manageteams). | |
| For details on setting up and managing a team, see [Manage teams](/teams/manageteams). For what each role can do, see [Roles and permissions](/teams/teamroles). |
| --- | ||
| title: "Manage teams" | ||
| sidebarTitle: "Manage teams" | ||
| description: "Create and manage team accounts in Runpod. Invite members, assign roles, and collaborate on Pods, endpoints, and other resources." |
There was a problem hiding this comment.
Filename convention: manageteams.mdx and teamroles.mdx are the only multi-word action slugs in the repo without separators. 175 of 255 prose pages use kebab-case, and every immediate sibling does: accounts-billing/manage-accounts, add-tax-id, manage-payment-cards; organizations/orgs-overview, org-roles, orgs-billing.
Since slugs are permanent URLs, worth renaming to teams/manage-teams.mdx and teams/team-roles.mdx (or teams/roles.mdx, mirroring organizations/org-roles) before this ships. That also means updating docs.json:290-294 and the two links in accounts-billing/manage-accounts.mdx.
I noticed commit 1718ceae renamed teams.roles to teamroles, so this may have been deliberate. If there is a reason, ignore me.
| Go to the [Team page](https://console.runpod.io/team) in the Runpod console. | ||
| </Step> | ||
| <Step title="Send the invitation"> | ||
| In the **Members** section, click **Invite new member**. Select a role, enter the member's email address, and click **Create Invite**. |
There was a problem hiding this comment.
The team-invite screenshot from the old page (create-team-invite-dialog-d8cb3fc6.png, "Create Team Invite dialog showing role selection and required email field") was removed and not re-added anywhere. This step is where it belongs. Confirmed it appears nowhere on the branch.
|
|
||
| <Steps> | ||
| <Step title="Open the Team page"> | ||
| Navigate to **Create team** in the [Runpod console](https://console.runpod.io/team). |
There was a problem hiding this comment.
Minor: this step is titled "Open the Team page" but the body says to navigate to Create team. The second Steps block at line 29-30 says "Go to the Team page", which reads better. Both labels are real; the sidebar entry is "Create team" for a personal account and "Team" once you are on a team (routes.tsx:187-201). Worth making the title and body agree.
Also verified and correct as written: the Convert to a Team Account button and modal, the team display name field, and the acknowledgment checkbox, which does gate the confirm button.
Two undocumented limits you may want to mention: team names must be 3 to 50 characters, and a user can own only one team (createTeam.ts:10-26, "You can only have 1 team").
No description provided.