From e7996088c7a0b57abb7e140b1658d6e3eb7cae01 Mon Sep 17 00:00:00 2001 From: Kyle Consalus Date: Mon, 4 May 2026 16:33:41 -0700 Subject: [PATCH] fix(integrations): Validate integration_id in OrganizationIntegrationBaseEndpoint --- .../api/bases/organization_integrations.py | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/sentry/integrations/api/bases/organization_integrations.py b/src/sentry/integrations/api/bases/organization_integrations.py index 8c52c02db47553..4c04fb9ef9b80f 100644 --- a/src/sentry/integrations/api/bases/organization_integrations.py +++ b/src/sentry/integrations/api/bases/organization_integrations.py @@ -14,6 +14,7 @@ RpcOrganizationIntegration, integration_service, ) +from sentry.workflow_engine.endpoints.utils.ids import to_valid_int_id class OrganizationIntegrationBaseEndpoint(IntegrationEndpoint): @@ -25,6 +26,22 @@ class OrganizationIntegrationBaseEndpoint(IntegrationEndpoint): permission_classes = (OrganizationIntegrationsPermission,) + def convert_args( + self, + request: Request, + organization_id_or_slug: int | str | None = None, + integration_id: str | None = None, + *args: Any, + **kwargs: Any, + ) -> tuple[tuple[Any, ...], dict[str, Any]]: + args, kwargs = super().convert_args(request, organization_id_or_slug, *args, **kwargs) + + if integration_id is not None: + kwargs["integration_id"] = to_valid_int_id( + "integration_id", integration_id, raise_404=True + ) + return args, kwargs + @staticmethod def get_organization_integration( organization_id: int, integration_id: int @@ -82,16 +99,12 @@ def convert_args( ) -> tuple[tuple[Any, ...], dict[str, Any]]: args, kwargs = super().convert_args(request, organization_id_or_slug, *args, **kwargs) - kwargs["integration_id"] = self.validate_integration_id(integration_id or "") + if integration_id is not None: + kwargs["integration_id"] = to_valid_int_id( + "integration_id", integration_id, raise_404=True + ) return args, kwargs - @staticmethod - def validate_integration_id(integration_id: str) -> int: - try: - return int(integration_id) - except ValueError: - raise Http404 - @staticmethod def get_organization_integration( organization_id: int, integration_id: int