Skip to content

feat(slack): Add a team link context API - #130554

Open
sentry-junior[bot] wants to merge 2 commits into
ref/slack-extract-team-linkingfrom
feat/slack-link-team-context-api
Open

sentry-junior[bot] wants to merge 2 commits into
ref/slack-extract-team-linkingfrom
feat/slack-link-team-context-api

Conversation

@sentry-junior

@sentry-junior sentry-junior Bot commented Nov 10, 2026

Copy link
Copy Markdown
Contributor

The React team link page has to offer organizations from every cell, but a cell only knows about its own. This adds a control silo endpoint for that:

GET /api/0/integrations/slack/link-team/{signed_params}/

It validates the link that /sentry link team signs and returns:

  • channelName
  • channelUrl: a slack:// deep link back to the channel
  • organizations: the user's active organizations that have the Slack workspace installed, serialized with ControlSiloOrganizationMappingSerializer so each one carries its links.regionUrl. The page uses that to call each organization's cell directly.

Malformed or expired links return 400 instead of 500. Signed-param parsing lives in TeamLinkParams.from_signed so the cell endpoint in the next PR can reuse it.

Stacked on #130553.

via evan.purkhiser.

--

View Session [Sentry]

@sentry-junior
sentry-junior Bot requested review from a team as code owners November 10, 2026 00:14
@sentry-junior
sentry-junior Bot added this pull request to stack #130555 November 10, 2026 00:14
@github-actions github-actions Bot added Scope: Frontend Automatically applied to PRs that change frontend components Scope: Backend Automatically applied to PRs that change backend components labels Nov 10, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🚨 Warning: This pull request contains Frontend and Backend changes!

It's discouraged to make changes to Sentry's Frontend and Backend in a single pull request. The Frontend and Backend are not atomically deployed. If the changes are interdependent of each other, they must be separated into two pull requests and be made forward or backwards compatible, such that the Backend or Frontend can be safely deployed independently.

Have questions? Please ask in the #discuss-dev-infra channel.

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit b80f45d. Configure here.

sentry-junior Bot and others added 2 commits November 12, 2026 20:26
The team link page must offer organizations from every cell, but a cell
only knows about its own. Add a control silo `GET
/api/0/integrations/slack/link-team/{signed_params}/` that validates the
link signed by `/sentry link team` and returns the channel name with the
user's organizations that have the Slack workspace installed.

Organizations are serialized with their region URLs so the page can talk
to each organization's cell directly.

Co-Authored-By: Evan Purkhiser <evan.purkhiser@sentry.io>
Co-Authored-By: Michi Hoffmann <michael.hoffmann@sentry.io>
Serializing an org mapping whose cell isn't in this deploy's directory
raises CellResolutionError, so one stale membership failed the whole
team link context. Only list orgs in known cells, the same way the
organization index does.
@sentry-junior
sentry-junior Bot force-pushed the feat/slack-link-team-context-api branch from a93ab72 to 3bfc89f Compare November 12, 2026 20:28

This branch was successfully deployed

1 active (outdated) deployment
Preview — b80f45d1 Deployed Nov 12, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Scope: Backend Automatically applied to PRs that change backend components Scope: Frontend Automatically applied to PRs that change frontend components

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants