Skip to content

Make project-create team optional with default #121490

Description

@sentry-junior

Summary

Creating a project still forces a team decision in API/headless paths even when the org only has one sensible default. That friction shows up for new users (who don't know what a team is) and for CLI/headless onboarding, where team selection is especially painful.

Current behavior

  • Canonical create path is team-scoped: POST /teams/{org_slug}/{team_slug}/projects/ (src/sentry/core/endpoints/team_projects.py). The team is required in the URL.
  • Org-level POST /organizations/{org_slug}/projects/ does not accept a team either; it auto-creates a personal team-{username} team and binds the project there (src/sentry/core/endpoints/organization_projects.py).
  • Web UI already defaults the team selector to the first accessible team and mostly works for new customers, but still surfaces the control and validates a missing team (static/app/views/projectInstall/createProject.tsx).
  • There is already a backend helper that resolves "the default team" as the earliest active team, or creates one from a provided slug if none exists: get_or_create_default_team in src/sentry/organizations/services/organization/impl.py.

Gap / impact

  • New users hit a required team choice they don't understand during project creation.
  • Headless/CLI project creation is worse because callers must discover and supply a team slug even when the org effectively has one default.
  • Team names are often low-signal (org-name default, team-{username}, etc.), so forcing the choice adds complexity without clear value for single-team orgs.
  • Teams still matter for larger orgs, but front-loading them on every create path over-exposes the concept.

User stories

  • As a new user creating my first project, I don't want to choose a team I don't understand; Sentry should just put the project somewhere sensible.
  • As a headless/CLI user (or agent) creating a project, I want to omit team entirely and still succeed.
  • As a member of a single-team org, I want project create to default to that team without prompting.
  • As a member of a multi-team org, I still want to be able to pick a team when it matters.
  • As someone onboarding into a large existing org, I don't want nonsensical team names or an unnecessary team fork (team-{me}) just to create a project.

Proposed solution

Make the team parameter optional on project creation and default it to the org's default team when omitted.

"Default team" still needs a crisp definition (likely the existing earliest-active-team behavior from get_or_create_default_team, not a new personal team), including permission and multi-team edge cases.

This is intentionally an API-first fix so CLI/headless flows inherit it; UI can keep hiding/defaulting team when n <= 1 as a follow-on.

Requested by David Cramer.

--

View Junior Session [Sentry]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions