diff --git a/src/sentry/analytics/events/eventuser_endpoint_request.py b/src/sentry/analytics/events/eventuser_endpoint_request.py index 79c28fdc6868a5..df1dd2af56d5a5 100644 --- a/src/sentry/analytics/events/eventuser_endpoint_request.py +++ b/src/sentry/analytics/events/eventuser_endpoint_request.py @@ -1,13 +1,10 @@ from sentry import analytics +@analytics.eventclass("eventuser_endpoint.request") class EventUserEndpointRequest(analytics.Event): - type = "eventuser_endpoint.request" - - attributes = ( - analytics.Attribute("endpoint", required=True), - analytics.Attribute("project_id", required=False), - ) + endpoint: str + project_id: str | None = None analytics.register(EventUserEndpointRequest) diff --git a/src/sentry/analytics/events/first_profile_sent.py b/src/sentry/analytics/events/first_profile_sent.py index caa3a81a6d6750..25b15dd9d999f8 100644 --- a/src/sentry/analytics/events/first_profile_sent.py +++ b/src/sentry/analytics/events/first_profile_sent.py @@ -1,15 +1,12 @@ from sentry import analytics +@analytics.eventclass("first_profile.sent") class FirstProfileSentEvent(analytics.Event): - type = "first_profile.sent" - - attributes = ( - analytics.Attribute("organization_id"), - analytics.Attribute("project_id"), - analytics.Attribute("platform", required=False), - analytics.Attribute("user_id", required=False), - ) + organization_id: str + project_id: str + platform: str | None = None + user_id: str | None = None analytics.register(FirstProfileSentEvent) diff --git a/src/sentry/api/endpoints/group_tagkey_values.py b/src/sentry/api/endpoints/group_tagkey_values.py index f63c7ca3799334..beaefb3306319a 100644 --- a/src/sentry/api/endpoints/group_tagkey_values.py +++ b/src/sentry/api/endpoints/group_tagkey_values.py @@ -3,6 +3,7 @@ from rest_framework.response import Response from sentry import analytics, tagstore +from sentry.analytics.events.eventuser_endpoint_request import EventUserEndpointRequest from sentry.api.api_owners import ApiOwner from sentry.api.api_publish_status import ApiPublishStatus from sentry.api.base import region_silo_endpoint @@ -68,9 +69,10 @@ def get(self, request: Request, group, key) -> Response: List a Tag's Values """ analytics.record( - "eventuser_endpoint.request", - project_id=group.project_id, - endpoint="sentry.api.endpoints.group_tagkey_values.get", + EventUserEndpointRequest( + project_id=group.project_id, + endpoint="sentry.api.endpoints.group_tagkey_values.get", + ) ) lookup_key = tagstore.backend.prefix_reserved_key(key) diff --git a/src/sentry/api/endpoints/project_users.py b/src/sentry/api/endpoints/project_users.py index fffd5df8ac17b0..70714ef3c87d65 100644 --- a/src/sentry/api/endpoints/project_users.py +++ b/src/sentry/api/endpoints/project_users.py @@ -2,6 +2,7 @@ from rest_framework.response import Response from sentry import analytics +from sentry.analytics.events.eventuser_endpoint_request import EventUserEndpointRequest from sentry.api.api_publish_status import ApiPublishStatus from sentry.api.base import region_silo_endpoint from sentry.api.bases.project import ProjectAndStaffPermission, ProjectEndpoint @@ -41,9 +42,10 @@ def get(self, request: Request, project) -> Response: For example, ``query=email:foo@example.com`` """ analytics.record( - "eventuser_endpoint.request", - project_id=project.id, - endpoint="sentry.api.endpoints.project_users.get", + EventUserEndpointRequest( + project_id=project.id, + endpoint="sentry.api.endpoints.project_users.get", + ) ) field, identifier = None, None if request.GET.get("query"): diff --git a/src/sentry/receivers/onboarding.py b/src/sentry/receivers/onboarding.py index f2ad6b7158cd74..8cd420b13e0752 100644 --- a/src/sentry/receivers/onboarding.py +++ b/src/sentry/receivers/onboarding.py @@ -7,6 +7,7 @@ from django.db.models import F from sentry import analytics +from sentry.analytics.events.first_profile_sent import FirstProfileSentEvent from sentry.integrations.base import IntegrationDomain, get_integration_types from sentry.integrations.services.integration import RpcIntegration, integration_service from sentry.models.organization import Organization @@ -182,11 +183,12 @@ def record_first_transaction(project, event, **kwargs): @first_profile_received.connect(weak=False, dispatch_uid="onboarding.record_first_profile") def record_first_profile(project, **kwargs): analytics.record( - "first_profile.sent", - user_id=get_owner_id(project), - organization_id=project.organization_id, - project_id=project.id, - platform=project.platform, + FirstProfileSentEvent( + user_id=get_owner_id(project), + organization_id=project.organization_id, + project_id=project.id, + platform=project.platform, + ) ) diff --git a/src/sentry/tasks/unmerge.py b/src/sentry/tasks/unmerge.py index 3afb03d2aa4c3d..680913b781edbd 100644 --- a/src/sentry/tasks/unmerge.py +++ b/src/sentry/tasks/unmerge.py @@ -11,6 +11,7 @@ from django.db.models.base import Model from sentry import analytics, eventstore, features, similarity, tsdb +from sentry.analytics.events.eventuser_endpoint_request import EventUserEndpointRequest from sentry.constants import DEFAULT_LOGGER_NAME, LOG_LEVELS_MAP from sentry.culprit import generate_culprit from sentry.eventstore.models import BaseEvent @@ -380,9 +381,10 @@ def repair_group_release_data(caches, project, events): def get_event_user_from_interface(value, project): analytics.record( - "eventuser_endpoint.request", - project_id=project.id, - endpoint="sentry.tasks.unmerge.get_event_user_from_interface", + EventUserEndpointRequest( + project_id=project.id, + endpoint="sentry.tasks.unmerge.get_event_user_from_interface", + ) ) return EventUser( user_ident=value.get("id"),