Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
32def59
feat(cmdk): Add search keywords to reduce no-result queries (#116431)
JonasBa May 29, 2026
62bad80
ref(issues): Minor cleanup of boolean logic in escalating issue algor…
shashjar May 29, 2026
4f6e18a
ref(issues): Rename feature flag to be specific to displaying Seer ac…
shashjar May 29, 2026
0451988
fix(forms): Surface backend error messages in AutoSaveForm (#116448)
malwilley May 29, 2026
a3c4b03
ref: Type utils.signing.unsign return as Any (#116486)
evanpurkhiser May 29, 2026
1791e4f
ref(seer): use get_group_list helper in supergroups-by-group endpoint…
giovanni-guidini May 29, 2026
6f8a955
ref(night-shift): Use default autofix model for night-shift runs (#11…
chromy May 29, 2026
6ee7569
ref(onboarding): update project creation URL to /organizations/{org}/…
betegon May 29, 2026
99c9507
feat(msteams): Support installing through the API pipeline modal (#11…
evanpurkhiser May 29, 2026
e44e20b
fix(replays): Stop page reloads on initial tab change (#116494)
nsdeschenes May 29, 2026
c8dc13c
ref(seer): Unify Seer project settings update helper and add tuning a…
srest2021 May 29, 2026
d58a6df
fix(dashboards): Move global filter loading spinner to dropdown foote…
DominikB2014 May 29, 2026
2068dff
feat(night-shift): be more conservative about which issues get autofi…
chromy May 29, 2026
01b7ff9
ref(bitbucket-server): Remove legacy pipeline setup views (#116489)
evanpurkhiser May 29, 2026
3e7c391
chore(ci): Skip broken trace item detail tests (#116497)
kenzoengineer May 29, 2026
ba70c88
feat(apidocs): Support union Response[T] annotations in structural li…
azulus May 29, 2026
7bc46ab
feat: Remove code coverage feature (#116240)
calvin-codecov May 29, 2026
51326ad
ref(feature-flags): Remove `organizations:insights-ai-and-mcp-dashboa…
cvxluo May 29, 2026
297a20e
fix(segment-enrichment): Propagate conventional user attributes (#116…
mjq May 29, 2026
7eb9dea
feat(settings): Support legacy usage-based Seer in project settings e…
srest2021 May 29, 2026
8c0f8f8
ref: delete unused options (#116409)
joshuarli May 29, 2026
196b72d
ref(webhooks): Add legacy_webhook to the Plugin ActionType (#116454)
Christinarlong May 29, 2026
eb7a68a
fix(webhooks): Check webhooks:enabled in new webhook path (#116459)
Christinarlong May 29, 2026
35f5dbc
fix(discover): Link issue event ids directly (#116507)
scttcper May 29, 2026
c5b68df
feat(snapshots): Add all_image_file_names_as_regex (new regex dep) (#…
NicoHinderling May 29, 2026
fd08d69
ref(seer): Add GitLab code-review web hooks (#116317)
cmanallen May 29, 2026
fa46def
feat(api-docs): publish project debug files list endpoint (#116444)
cvxluo May 29, 2026
be5e81e
deps(scm): Upgrade sentry-scm to 0.20.0 (#116499)
cmanallen May 29, 2026
29fc97b
feat(dashboards): Track dashboard generation validation attempts (#11…
DominikB2014 May 29, 2026
5ea7cc0
chore(issues): Add fallback event components codeowner (#116505)
scttcper May 29, 2026
201dd5a
feat(msteams): Wire Teams Marketplace installs through the API pipeli…
evanpurkhiser May 29, 2026
268270d
fix(eventstream): Guard against None entries in exception values list…
roggenkemper May 29, 2026
154893f
feat(autofix): Link linear ticket in autofix PR (#116510)
Zylphrex May 29, 2026
a15501f
fix(typing) Remove sentry.db.postgres.base from ignore list (#116493)
markstory May 29, 2026
d14ccb5
fix(eap): Recognize `normalize` deprecations in attribute mapping (#1…
mjq May 29, 2026
f8e642e
ref: bump taskbroker-client to 0.17.0 (#116526)
getsentry-bot May 29, 2026
a939301
ref(seer): Call project settings update helper in callsites that don'…
srest2021 May 29, 2026
61968fc
fix(releases): combine duplicate Author type (#116358)
cvxluo May 29, 2026
4f7cc95
ref(seer): Remove `organizations:seer-issue-view` (#116528)
cvxluo May 29, 2026
f46cb72
feat(activity): Add (project, type) index on sentry_activity (#116524)
malwilley May 29, 2026
35ffd12
ref(api-docs): add `EventAttachmentSerializerResponse` type and examp…
cvxluo May 29, 2026
3d2d19e
feat(issues): Restore issue details tour, remove guide (#116355)
scttcper May 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 3 additions & 7 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,9 @@ pnpm-lock.yaml @getsentry/owners-js-de
/src/sentry/tasks/post_process.py @getsentry/issue-detection-backend
## Issue Detection Lower Priority

## Event components fallback so more specific rules can take precedence
/static/app/components/events/ @getsentry/issue-workflow

## Hybrid Cloud
/src/sentry/silo/ @getsentry/hybrid-cloud
/src/sentry/hybridcloud/ @getsentry/hybrid-cloud
Expand Down Expand Up @@ -347,7 +350,6 @@ tests/sentry/api/endpoints/test_organization_attribute_mappings.py @get
/static/app/views/performance/ @getsentry/data-browsing
/static/app/components/performance/ @getsentry/data-browsing
/static/app/utils/performance/ @getsentry/data-browsing
/static/app/components/events/groupingInfo @getsentry/data-browsing
/static/app/components/events/interfaces/spans/ @getsentry/data-browsing
/static/app/components/events/viewHierarchy/* @getsentry/data-browsing
/static/app/components/searchQueryBuilder/ @getsentry/data-browsing
Expand Down Expand Up @@ -439,7 +441,6 @@ tests/sentry/api/endpoints/test_organization_attribute_mappings.py @get
/static/app/components/analyticsArea.spec.tsx @getsentry/app-frontend
/static/app/components/analyticsArea.tsx @getsentry/app-frontend
/static/app/components/loading/ @getsentry/app-frontend
/static/app/components/events/interfaces/ @getsentry/app-frontend
/static/app/components/forms/ @getsentry/app-frontend
/static/app/components/featureShowcase.mdx @getsentry/app-frontend
/static/app/components/featureShowcase.spec.tsx @getsentry/app-frontend
Expand Down Expand Up @@ -691,9 +692,6 @@ tests/sentry/api/endpoints/test_organization_attribute_mappings.py @get
/src/sentry/tasks/unmerge.py @getsentry/issue-detection-backend
/src/sentry/tasks/weekly_escalating_forecast.py @getsentry/issue-detection-backend
/src/sentry/tasks/llm_issue_detection/ @getsentry/issue-detection-backend
/static/app/components/events/contexts/ @getsentry/issue-workflow
/static/app/components/events/eventTags/ @getsentry/issue-workflow
/static/app/components/events/highlights/ @getsentry/issue-workflow
/static/app/components/issues/ @getsentry/issue-workflow
/static/app/components/stackTrace/ @getsentry/issue-workflow
/static/app/components/stream/supergroups/ @getsentry/issue-detection-frontend
Expand All @@ -704,8 +702,6 @@ tests/sentry/api/endpoints/test_organization_attribute_mappings.py @get
/static/app/views/issueDetails/ @getsentry/issue-workflow
/static/app/views/nav/secondary/sections/issues/ @getsentry/issue-workflow
/static/app/views/sharedGroupDetails/ @getsentry/issue-workflow
/static/app/components/events/interfaces/performance/spanEvidenceKeyValueList.tsx @getsentry/issue-detection-frontend
/static/app/components/events/interfaces/crashContent/exception/actionableItems.tsx @getsentry/issue-workflow
/tests/sentry/deletions/test_group.py @getsentry/issue-detection-backend
/tests/sentry/event_manager/ @getsentry/issue-detection-backend
/tests/sentry/grouping/ @getsentry/issue-detection-backend
Expand Down
3 changes: 0 additions & 3 deletions api-docs/openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -97,9 +97,6 @@
"/api/0/organizations/{organization_id_or_slug}/repos/": {
"$ref": "paths/organizations/repos.json"
},
"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/files/dsyms/": {
"$ref": "paths/projects/dsyms.json"
},
"/api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/users/": {
"$ref": "paths/projects/users.json"
},
Expand Down
165 changes: 0 additions & 165 deletions api-docs/paths/projects/dsyms.json

This file was deleted.

2 changes: 1 addition & 1 deletion migrations_lockfile.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ replays: 0007_organizationmember_replay_access

seer: 0017_drop_old_fk_columns

sentry: 1101_remove_email_model_pending
sentry: 1102_activity_project_type_index

social_auth: 0003_social_auth_json_field

Expand Down
9 changes: 6 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,9 @@ dependencies = [
"google-cloud-storage>=2.18.0",
"google-cloud-storage-transfer>=1.17.0",
"google-crc32c>=1.6.0",
# Linear-time regex engine (RE2). Used for client-supplied snapshot image-name
# patterns: no catastrophic backtracking (ReDoS-safe), no backreferences/lookaround.
"google-re2>=1.1.20251105",
"googleapis-common-protos>=1.63.2",
"granian[pname,reload,uvloop]>=2.7",
"grpc-google-iam-v1>=0.13.1",
Expand Down Expand Up @@ -96,7 +99,7 @@ dependencies = [
"sentry-protos>=0.17.0",
"sentry-redis-tools>=0.5.0",
"sentry-relay>=0.9.27",
"sentry-scm==0.16.0",
"sentry-scm==0.20.0",
"sentry-sdk[http2]>=2.59.0",
"sentry-usage-accountant>=0.0.10",
# remove once there are no unmarked transitive dependencies on setuptools
Expand All @@ -108,7 +111,7 @@ dependencies = [
"statsd>=3.3.0",
"structlog>=22.1.0",
"symbolic>=12.14.1",
"taskbroker-client>=0.16.0,<1",
"taskbroker-client>=0.17.0",
"tiktoken>=0.8.0",
"tokenizers>=0.22.0",
"tldextract>=5.1.2",
Expand Down Expand Up @@ -376,6 +379,7 @@ module = [
"pymemcache.*",
"P4",
"rb.*",
"re2.*",
"statsd.*",
"tokenizers.*",
"u2flib_server.model.*",
Expand All @@ -390,7 +394,6 @@ ignore_missing_imports = true
[[tool.mypy.overrides]]
module = [
"sentry.api.endpoints.organization_releases",
"sentry.db.postgres.base",
"sentry.release_health.metrics_sessions_v2",
"sentry.search.events.builder.errors",
"sentry.search.events.builder.metrics",
Expand Down
Empty file.
76 changes: 63 additions & 13 deletions src/sentry/api/endpoints/debug_files.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
from django.db import IntegrityError, router
from django.db.models import Case, Exists, F, IntegerField, Q, QuerySet, Value, When
from django.http import Http404, HttpResponse, StreamingHttpResponse
from drf_spectacular.utils import OpenApiParameter, extend_schema
from rest_framework import status
from rest_framework.request import Request
from rest_framework.response import Response
Expand All @@ -27,7 +28,12 @@
from sentry.api.exceptions import ResourceDoesNotExist
from sentry.api.paginator import OffsetPaginator
from sentry.api.serializers import serialize
from sentry.api.serializers.models.debug_file import DebugFileSerializerResponse
from sentry.api.utils import to_valid_int_id
from sentry.apidocs.constants import RESPONSE_FORBIDDEN, RESPONSE_NOT_FOUND, RESPONSE_UNAUTHORIZED
from sentry.apidocs.examples.dsym_examples import DebugFileExamples
from sentry.apidocs.parameters import CursorQueryParam, GlobalParams
from sentry.apidocs.utils import inline_sentry_response_serializer
from sentry.auth.access import Access
from sentry.auth.superuser import is_active_superuser
from sentry.auth.system import is_system_auth
Expand Down Expand Up @@ -198,12 +204,47 @@ def get(self, request: Request, project: Project) -> Response:
return Response({"releases": releases})


DSYM_QUERY_PARAM = OpenApiParameter(
name="query",
location="query",
required=False,
type=str,
description="Substring filter matched against object name, debug ID, code ID, CPU name, and file headers.",
)

DSYM_DEBUG_ID_PARAM = OpenApiParameter(
name="debug_id",
location="query",
required=False,
type=str,
description="Filter results to debug information files matching the given debug ID.",
)

DSYM_CODE_ID_PARAM = OpenApiParameter(
name="code_id",
location="query",
required=False,
type=str,
description="Filter results to debug information files matching the given code ID.",
)

DSYM_FILE_FORMATS_PARAM = OpenApiParameter(
name="file_formats",
location="query",
required=False,
many=True,
type=str,
description="Restrict results to one or more file formats.",
)


@extend_schema(tags=["Projects"])
@cell_silo_endpoint
class DebugFilesEndpoint(ProjectEndpoint):
owner = ApiOwner.OWNERS_INGEST
publish_status = {
"DELETE": ApiPublishStatus.PRIVATE,
"GET": ApiPublishStatus.PRIVATE,
"GET": ApiPublishStatus.PUBLIC,
"POST": ApiPublishStatus.PRIVATE,
}
permission_classes = (ProjectReleasePermission,)
Expand Down Expand Up @@ -241,21 +282,30 @@ def download(self, debug_file_id, project: Project):
except OSError:
raise Http404

@extend_schema(
operation_id="List a Project's Debug Information Files",
parameters=[
GlobalParams.ORG_ID_OR_SLUG,
GlobalParams.PROJECT_ID_OR_SLUG,
DSYM_QUERY_PARAM,
DSYM_DEBUG_ID_PARAM,
DSYM_CODE_ID_PARAM,
DSYM_FILE_FORMATS_PARAM,
CursorQueryParam,
],
responses={
200: inline_sentry_response_serializer(
"ListProjectDebugFilesResponse", list[DebugFileSerializerResponse]
),
401: RESPONSE_UNAUTHORIZED,
403: RESPONSE_FORBIDDEN,
404: RESPONSE_NOT_FOUND,
},
examples=DebugFileExamples.LIST_PROJECT_DEBUG_FILES,
)
def get(self, request: Request, project: Project) -> Response:
"""
List a Project's Debug Information Files
````````````````````````````````````````

Retrieve a list of debug information files for a given project.

:pparam string organization_id_or_slug: the id or slug of the organization the
file belongs to.
:pparam string project_id_or_slug: the id or slug of the project to list the
DIFs of.
:qparam string query: If set, this parameter is used to locate DIFs with.
:qparam string id: If set, the specified DIF will be sent in the response.
:qparam string file_formats: If set, only DIFs with these formats will be returned.
:auth: required
"""
download_requested = request.GET.get("id") is not None
if download_requested and has_download_permission(request, project):
Expand Down
Loading
Loading