Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
288 changes: 152 additions & 136 deletions .github/CODEOWNERS

Large diffs are not rendered by default.

10 changes: 6 additions & 4 deletions src/sentry/api/api_owners.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,30 +7,32 @@ class ApiOwner(Enum):
Value should map to team's github group
"""

ALERTS_NOTIFICATIONS = "alerts-notifications"
ALERTS_MONITORS = "alerts-monitors"
BILLING = "revenue"
CODECOV = "codecov"
CODING_WORKFLOWS = "coding-workflows-sentry-backend"
CRONS = "crons"
DASHBOARDS = "dashboards"
DATA_BROWSING = "data-browsing"
ECOSYSTEM = "ecosystem"
EMERGE_TOOLS = "emerge-tools"
ENTERPRISE = "enterprise"
EXPLORE = "explore"
FEEDBACK = "feedback-backend"
FLAG = "replay-backend"
FOUNDATIONAL_STORAGE = "foundational-storage"
FOUNDATIONS = "foundations"
GDX = "gdx"
HYBRID_CLOUD = "hybrid-cloud"
INFRA_ENG = "sre-infrastructure-engineering"
INTEGRATIONS = "product-owners-settings-integrations"
INTEGRATION_PLATFORM = "integration-platform"
ISSUE_DETECTION_BACKEND = "issue-detection-backend"
ISSUES = "issue-workflow"
MESSAGING_INTEGRATIONS = "messaging-integrations"
ML_AI = "machine-learning-ai"
NOTIFICATIONS = "notifications"
OWNERS_INGEST = "ingest"
OWNERS_SNUBA = "owners-snuba"
PROFILING = "profiling"
PROJECT_MANAGEMENT_INTEGRATIONS = "project-management-integrations"
REPLAY = "replay-backend"
SECURITY = "security"
TELEMETRY_EXPERIENCE = "telemetry-experience"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class ApiApplicationRotateSecretEndpoint(ApiApplicationEndpoint):
publish_status = {
"POST": ApiPublishStatus.PRIVATE,
}
owner = ApiOwner.ECOSYSTEM
owner = ApiOwner.FOUNDATIONS
authentication_classes = (SessionAuthentication,)
permission_classes = (SentryIsAuthenticated,)

Expand Down
2 changes: 1 addition & 1 deletion src/sentry/api/endpoints/api_authorizations.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class ApiAuthorizationsEndpoint(Endpoint):
"DELETE": ApiPublishStatus.PRIVATE,
"GET": ApiPublishStatus.PRIVATE,
}
owner = ApiOwner.ECOSYSTEM
owner = ApiOwner.FOUNDATIONS
authentication_classes = (SessionAuthentication,)
permission_classes = (SentryIsAuthenticated,)

Expand Down
2 changes: 1 addition & 1 deletion src/sentry/api/endpoints/auth_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class AuthConfigEndpoint(Endpoint, OrganizationMixin):
publish_status = {
"GET": ApiPublishStatus.PRIVATE,
}
owner = ApiOwner.ENTERPRISE
owner = ApiOwner.FOUNDATIONS
# Disable authentication and permission requirements.
permission_classes = ()

Expand Down
2 changes: 1 addition & 1 deletion src/sentry/api/endpoints/auth_index.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ class BaseAuthIndexEndpoint(Endpoint):
AuthIndexEndpoint and StaffAuthIndexEndpoint (in getsentry)
"""

owner = ApiOwner.ENTERPRISE
owner = ApiOwner.FOUNDATIONS
authentication_classes = (QuietBasicAuthentication, SessionAuthentication)

permission_classes = ()
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/api/endpoints/auth_login.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class AuthLoginEndpoint(Endpoint, OrganizationMixin):
publish_status = {
"POST": ApiPublishStatus.PRIVATE,
}
owner = ApiOwner.ENTERPRISE
owner = ApiOwner.FOUNDATIONS
# Disable authentication and permission requirements.
permission_classes = ()

Expand Down
2 changes: 1 addition & 1 deletion src/sentry/api/endpoints/oauth_userinfo.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ class OAuthUserInfoEndpoint(Endpoint):
publish_status = {
"GET": ApiPublishStatus.PRIVATE,
}
owner = ApiOwner.ENTERPRISE
owner = ApiOwner.FOUNDATIONS
authentication_classes = ()
permission_classes = ()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ class OrganizationAccessRequestDetailsEndpoint(OrganizationEndpoint):
"GET": ApiPublishStatus.PRIVATE,
"PUT": ApiPublishStatus.PRIVATE,
}
owner = ApiOwner.ENTERPRISE
owner = ApiOwner.FOUNDATIONS
permission_classes = (AccessRequestPermission,)

# TODO(dcramer): this should go onto AccessRequestPermission
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/api/endpoints/organization_api_key_details.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ def validate_scope_list(self, value):

@control_silo_endpoint
class OrganizationApiKeyDetailsEndpoint(ControlSiloOrganizationEndpoint):
owner = ApiOwner.ECOSYSTEM
owner = ApiOwner.FOUNDATIONS
publish_status = {
"DELETE": ApiPublishStatus.PRIVATE,
"GET": ApiPublishStatus.PRIVATE,
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/api/endpoints/organization_api_key_index.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

@control_silo_endpoint
class OrganizationApiKeyIndexEndpoint(ControlSiloOrganizationEndpoint):
owner = ApiOwner.ECOSYSTEM
owner = ApiOwner.FOUNDATIONS
publish_status = {
"GET": ApiPublishStatus.PRIVATE,
"POST": ApiPublishStatus.PRIVATE,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class OrganizationAuthProviderDetailsEndpoint(OrganizationEndpoint):
publish_status = {
"GET": ApiPublishStatus.PRIVATE,
}
owner = ApiOwner.ENTERPRISE
owner = ApiOwner.FOUNDATIONS
permission_classes = (OrganizationAuthProviderPermission,)

def get(self, request: Request, organization: Organization) -> Response:
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/api/endpoints/organization_auth_providers.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class OrganizationAuthProvidersEndpoint(OrganizationEndpoint):
publish_status = {
"GET": ApiPublishStatus.PRIVATE,
}
owner = ApiOwner.ENTERPRISE
owner = ApiOwner.FOUNDATIONS
permission_classes = (OrganizationAuthProviderPermission,)

def get(self, request: Request, organization: Organization) -> Response:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ class OrganizationAuthTokenDetailsEndpoint(ControlSiloOrganizationEndpoint):
"GET": ApiPublishStatus.PRIVATE,
"PUT": ApiPublishStatus.PRIVATE,
}
owner = ApiOwner.ECOSYSTEM
owner = ApiOwner.FOUNDATIONS
authentication_classes = (SessionNoAuthTokenAuthentication,)
permission_classes = (OrgAuthTokenPermission, DisallowImpersonatedTokenCreation)

Expand Down
2 changes: 1 addition & 1 deletion src/sentry/api/endpoints/organization_auth_tokens.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class OrganizationAuthTokensEndpoint(ControlSiloOrganizationEndpoint):
"GET": ApiPublishStatus.PRIVATE,
"POST": ApiPublishStatus.PRIVATE,
}
owner = ApiOwner.ECOSYSTEM
owner = ApiOwner.FOUNDATIONS
authentication_classes = (SessionNoAuthTokenAuthentication,)
permission_classes = (OrgAuthTokenPermission, DisallowImpersonatedTokenCreation)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

@cell_silo_endpoint
class OrganizationConfigRepositoriesEndpoint(OrganizationEndpoint):
owner = ApiOwner.INTEGRATIONS
owner = ApiOwner.CODING_WORKFLOWS
publish_status = {
"GET": ApiPublishStatus.PRIVATE,
}
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/api/endpoints/organization_intercom_jwt.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class OrganizationIntercomJwtEndpoint(ControlSiloOrganizationEndpoint):
publish_status = {
"GET": ApiPublishStatus.PRIVATE,
}
owner = ApiOwner.ENTERPRISE
owner = ApiOwner.FOUNDATIONS

def get(
self,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ def _get_email_domain(email: str) -> str | None:

@cell_silo_endpoint
class OrganizationMissingMembersEndpoint(OrganizationEndpoint):
owner = ApiOwner.ECOSYSTEM
owner = ApiOwner.CODING_WORKFLOWS
publish_status = {
"GET": ApiPublishStatus.EXPERIMENTAL,
}
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/api/endpoints/organization_pipeline.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ def _get_api_pipeline(

@control_silo_endpoint
class OrganizationPipelineEndpoint(ControlSiloOrganizationEndpoint):
owner = ApiOwner.ENTERPRISE
owner = ApiOwner.FOUNDATIONS
publish_status = {
"GET": ApiPublishStatus.EXPERIMENTAL,
"POST": ApiPublishStatus.EXPERIMENTAL,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class OrganizationPluginDeprecationInfoEndpoint(OrganizationEndpoint):
publish_status = {
"GET": ApiPublishStatus.PRIVATE,
}
owner = ApiOwner.ECOSYSTEM
owner = ApiOwner.INTEGRATION_PLATFORM

def get(self, request, organization, plugin_slug):
"""
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/api/endpoints/organization_plugins_configs.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

@cell_silo_endpoint
class OrganizationPluginsConfigsEndpoint(OrganizationEndpoint):
owner = ApiOwner.INTEGRATIONS
owner = ApiOwner.INTEGRATION_PLATFORM
publish_status = {
"GET": ApiPublishStatus.PRIVATE,
}
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/api/endpoints/organization_plugins_index.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

@cell_silo_endpoint
class OrganizationPluginsEndpoint(OrganizationEndpoint):
owner = ApiOwner.INTEGRATIONS
owner = ApiOwner.INTEGRATION_PLATFORM
publish_status = {
"GET": ApiPublishStatus.PRIVATE,
}
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/api/endpoints/organization_stats.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class OrganizationStatsEndpoint(OrganizationEndpoint, StatsMixin):
# Deprecated APIs remain private until removed
"GET": ApiPublishStatus.PRIVATE,
}
owner = ApiOwner.ENTERPRISE
owner = ApiOwner.FOUNDATIONS

def get(self, request: Request, organization) -> Response:
"""
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/api/endpoints/organization_stats_summary.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ class StatsSummaryApiResponse(TypedDict):
@cell_silo_endpoint
class OrganizationStatsSummaryEndpoint(OrganizationEndpoint):
publish_status = {"GET": ApiPublishStatus.PUBLIC}
owner = ApiOwner.ENTERPRISE
owner = ApiOwner.DASHBOARDS

@extend_schema(
operation_id="Retrieve an Organization's Events Count by Project",
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/api/endpoints/organization_stats_v2.py
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ class OrganizationStatsEndpointV2(OrganizationEndpoint):
publish_status = {
"GET": ApiPublishStatus.PUBLIC,
}
owner = ApiOwner.ENTERPRISE
owner = ApiOwner.DASHBOARDS
enforce_rate_limit = True
rate_limits = RateLimitConfig(
limit_overrides={
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/api/endpoints/project_member_index.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class ProjectMemberIndexEndpoint(ProjectEndpoint):
publish_status = {
"GET": ApiPublishStatus.PUBLIC,
}
owner = ApiOwner.ENTERPRISE
owner = ApiOwner.FOUNDATIONS

@extend_schema(
operation_id="List a Project's Organization Members",
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/api/endpoints/project_plugin_details.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@

@cell_silo_endpoint
class ProjectPluginDetailsEndpoint(ProjectEndpoint):
owner = ApiOwner.INTEGRATIONS
owner = ApiOwner.INTEGRATION_PLATFORM
publish_status = {
"DELETE": ApiPublishStatus.PRIVATE,
"GET": ApiPublishStatus.PRIVATE,
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/api/endpoints/project_plugins.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

@cell_silo_endpoint
class ProjectPluginsEndpoint(ProjectEndpoint):
owner = ApiOwner.INTEGRATIONS
owner = ApiOwner.INTEGRATION_PLATFORM
publish_status = {
"GET": ApiPublishStatus.PRIVATE,
}
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/api/endpoints/project_servicehook_details.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

@cell_silo_endpoint
class ProjectServiceHookDetailsEndpoint(ServiceHookEndpoint):
owner = ApiOwner.INTEGRATIONS
owner = ApiOwner.INTEGRATION_PLATFORM
publish_status = {
"DELETE": ApiPublishStatus.PRIVATE,
"GET": ApiPublishStatus.PRIVATE,
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/api/endpoints/project_servicehook_stats.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

@cell_silo_endpoint
class ProjectServiceHookStatsEndpoint(ServiceHookEndpoint, StatsMixin):
owner = ApiOwner.INTEGRATIONS
owner = ApiOwner.INTEGRATION_PLATFORM
publish_status = {
"GET": ApiPublishStatus.UNKNOWN,
}
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/api/endpoints/project_servicehooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

@cell_silo_endpoint
class ProjectServiceHooksEndpoint(ProjectEndpoint):
owner = ApiOwner.INTEGRATIONS
owner = ApiOwner.INTEGRATION_PLATFORM
publish_status = {
"GET": ApiPublishStatus.UNKNOWN,
"POST": ApiPublishStatus.UNKNOWN,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ def validate_trigger_type(self, trigger_type: str) -> int:
@cell_silo_endpoint
class ReleaseThresholdEndpoint(ProjectEndpoint):
permission_classes = (ProjectReleasePermission,)
owner: ApiOwner = ApiOwner.ENTERPRISE
owner: ApiOwner = ApiOwner.REPLAY
publish_status = {
"GET": ApiPublishStatus.EXPERIMENTAL,
"POST": ApiPublishStatus.EXPERIMENTAL,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ def validate_trigger_type(self, trigger_type: str) -> int:
@cell_silo_endpoint
class ReleaseThresholdDetailsEndpoint(ProjectEndpoint):
permission_classes = (ProjectReleasePermission,)
owner: ApiOwner = ApiOwner.ENTERPRISE
owner: ApiOwner = ApiOwner.REPLAY
publish_status = {
"DELETE": ApiPublishStatus.EXPERIMENTAL,
"GET": ApiPublishStatus.EXPERIMENTAL,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class ReleaseThresholdIndexGETValidator(serializers.Serializer[ReleaseThresholdI

@cell_silo_endpoint
class ReleaseThresholdIndexEndpoint(OrganizationEndpoint):
owner: ApiOwner = ApiOwner.ENTERPRISE
owner: ApiOwner = ApiOwner.REPLAY
publish_status = {
"GET": ApiPublishStatus.EXPERIMENTAL,
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ def validate(self, data: ReleaseThresholdStatusIndexData) -> ReleaseThresholdSta
@cell_silo_endpoint
@extend_schema(tags=["Releases"])
class ReleaseThresholdStatusIndexEndpoint(OrganizationReleasesBaseEndpoint):
owner: ApiOwner = ApiOwner.ENTERPRISE
owner: ApiOwner = ApiOwner.REPLAY
publish_status = {
"GET": ApiPublishStatus.PUBLIC,
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

@control_silo_endpoint
class UserOrganizationIntegrationsEndpoint(UserEndpoint):
owner = ApiOwner.INTEGRATIONS
owner = ApiOwner.INTEGRATION_PLATFORM
publish_status = {
"GET": ApiPublishStatus.PRIVATE,
}
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/auth_v2/endpoints/auth_merge_user_accounts.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class AuthMergeUserAccountsEndpoint(AuthV2Endpoint):
"GET": ApiPublishStatus.PRIVATE,
"POST": ApiPublishStatus.PRIVATE,
}
owner = ApiOwner.ENTERPRISE
owner = ApiOwner.FOUNDATIONS
"""
List and merge user accounts with the same primary email address.
"""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class AuthUserMergeVerificationCodeEndpoint(Endpoint):
publish_status = {
"POST": ApiPublishStatus.PRIVATE,
}
owner = ApiOwner.ENTERPRISE
owner = ApiOwner.FOUNDATIONS
permission_classes = (SentryIsAuthenticated,)
"""
Generate and update verification codes for the user account merge flow.
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/auth_v2/endpoints/csrf.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class CsrfTokenEndpoint(Endpoint):
NOTE: This endpoint is not protected by the feature flag in AuthV2Endpoint!
"""

owner = ApiOwner.ENTERPRISE
owner = ApiOwner.FOUNDATIONS
publish_status = {
"GET": ApiPublishStatus.EXPERIMENTAL,
"PUT": ApiPublishStatus.EXPERIMENTAL,
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/auth_v2/endpoints/feature_flag_view.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

@control_silo_endpoint
class FeatureFlagView(AuthV2Endpoint):
owner = ApiOwner.ENTERPRISE
owner = ApiOwner.FOUNDATIONS
publish_status = {"GET": ApiPublishStatus.EXPERIMENTAL}
enforce_rate_limit = True
rate_limits = RateLimitConfig(
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/auth_v2/endpoints/user_login_view.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

@control_silo_endpoint
class UserLoginView(AuthV2Endpoint):
owner = ApiOwner.ENTERPRISE
owner = ApiOwner.FOUNDATIONS
publish_status = {
"GET": ApiPublishStatus.PRIVATE,
}
Expand Down
2 changes: 1 addition & 1 deletion src/sentry/core/endpoints/organization_auditlogs.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class OrganizationAuditLogsEndpoint(ControlSiloOrganizationEndpoint):
publish_status = {
"GET": ApiPublishStatus.EXPERIMENTAL,
}
owner = ApiOwner.ENTERPRISE
owner = ApiOwner.FOUNDATIONS
permission_classes = (OrganizationAuditPermission,)

def get(
Expand Down
Loading
Loading