From f25f1823bfc59339e43873b34eee161a25f57140 Mon Sep 17 00:00:00 2001 From: Lyn Nagara Date: Fri, 5 Dec 2025 14:59:15 -0800 Subject: [PATCH 1/3] feat(cells): make email capture demo mode control-silo only note: it is safe to ship frontend + backend together in this case as backend currently works in both silos --- src/sentry/api/endpoints/email_capture.py | 4 ++-- static/app/data/controlsiloUrlPatterns.ts | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/sentry/api/endpoints/email_capture.py b/src/sentry/api/endpoints/email_capture.py index 381e5dbf26579d..2ed52f022cf705 100644 --- a/src/sentry/api/endpoints/email_capture.py +++ b/src/sentry/api/endpoints/email_capture.py @@ -5,7 +5,7 @@ from sentry.api.api_owners import ApiOwner from sentry.api.api_publish_status import ApiPublishStatus -from sentry.api.base import Endpoint, all_silo_endpoint +from sentry.api.base import Endpoint, control_silo_endpoint from sentry.api.serializers.rest_framework.base import CamelSnakeSerializer from sentry.demo_mode.utils import is_demo_mode_enabled from sentry.utils.marketo_client import MarketoClient @@ -18,7 +18,7 @@ class EmailCaptureSerializer(CamelSnakeSerializer): # TODO(cells): This endpoint is moving to control -@all_silo_endpoint +@control_silo_endpoint class EmailCaptureEndpoint(Endpoint): publish_status = { "POST": ApiPublishStatus.PRIVATE, diff --git a/static/app/data/controlsiloUrlPatterns.ts b/static/app/data/controlsiloUrlPatterns.ts index 7e8c81188e0c62..bdb4ac3090ddfa 100644 --- a/static/app/data/controlsiloUrlPatterns.ts +++ b/static/app/data/controlsiloUrlPatterns.ts @@ -153,6 +153,7 @@ const patterns: RegExp[] = [ new RegExp('^api/0/wizard/[^/]+/$'), new RegExp('^api/0/internal/beacon/$'), new RegExp('^api/0/internal/integration-proxy/$'), + new RegExp('^api/0/internal/demo/email-capture/$'), new RegExp('^api/0/internal/notifications/registered-templates/$'), new RegExp('^api/0/uptime-ips/$'), new RegExp('^api/0/tempest-ips/$'), From 5db334101facf70afe3ef58895b38f90ce165183 Mon Sep 17 00:00:00 2001 From: Lyn Nagara Date: Mon, 8 Dec 2025 14:29:49 -0800 Subject: [PATCH 2/3] test --- tests/sentry/api/endpoints/test_email_capture.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/sentry/api/endpoints/test_email_capture.py b/tests/sentry/api/endpoints/test_email_capture.py index d4529a86658936..0d12f32c60c476 100644 --- a/tests/sentry/api/endpoints/test_email_capture.py +++ b/tests/sentry/api/endpoints/test_email_capture.py @@ -4,9 +4,11 @@ from sentry.testutils.cases import APITestCase from sentry.testutils.helpers.options import override_options +from sentry.testutils.silo import control_silo_test from sentry.utils.marketo_client import MarketoClient +@control_silo_test class EmailCaptureTest(APITestCase): def setUp(self) -> None: super().setUp() From 3dad47480ff0a2fa86b84714ca1f4c0af149e12b Mon Sep 17 00:00:00 2001 From: Lyn Nagara Date: Tue, 9 Dec 2025 09:46:35 -0800 Subject: [PATCH 3/3] . --- src/sentry/api/endpoints/email_capture.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/sentry/api/endpoints/email_capture.py b/src/sentry/api/endpoints/email_capture.py index 2ed52f022cf705..bcff0d093725a4 100644 --- a/src/sentry/api/endpoints/email_capture.py +++ b/src/sentry/api/endpoints/email_capture.py @@ -17,7 +17,6 @@ class EmailCaptureSerializer(CamelSnakeSerializer): email = serializers.EmailField(required=True) -# TODO(cells): This endpoint is moving to control @control_silo_endpoint class EmailCaptureEndpoint(Endpoint): publish_status = {