Created
March 9, 2023 21:07
-
-
Save evanpurkhiser/be1a84e7d869480d188ec7ff71f18f19 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
commit 66a8ed628e9bb6958b5a5aa2d362c380964caa03 | |
Author: Evan Purkhiser <[email protected]> | |
Date: Wed Mar 8 17:05:15 2023 -0800 | |
ref(py): Group URLs into blocks for easier readability | |
diff --git a/src/sentry/api/urls.py b/src/sentry/api/urls.py | |
index 70b0edbaa3..89a17dd8aa 100644 | |
--- a/src/sentry/api/urls.py | |
+++ b/src/sentry/api/urls.py | |
@@ -621,54 +621,1804 @@ GROUP_URLS = [ | |
), | |
] | |
+AUTH_URLS = [ | |
+ url( | |
+ r"^$", | |
+ AuthIndexEndpoint.as_view(), | |
+ name="sentry-api-0-auth", | |
+ ), | |
+ url( | |
+ r"^config/$", | |
+ AuthConfigEndpoint.as_view(), | |
+ name="sentry-api-0-auth-config", | |
+ ), | |
+ url( | |
+ r"^login/$", | |
+ AuthLoginEndpoint.as_view(), | |
+ name="sentry-api-0-auth-login", | |
+ ), | |
+] | |
+ | |
+BROADCAST_URLS = [ | |
+ url( | |
+ r"^$", | |
+ BroadcastIndexEndpoint.as_view(), | |
+ name="sentry-api-0-broadcast-index", | |
+ ), | |
+ url( | |
+ r"^(?P<broadcast_id>[^\/]+)/$", | |
+ BroadcastDetailsEndpoint.as_view(), | |
+ ), | |
+] | |
+ | |
+RELAY_URLS = [ | |
+ url( | |
+ r"^$", | |
+ RelayIndexEndpoint.as_view(), | |
+ name="sentry-api-0-relays-index", | |
+ ), | |
+ url( | |
+ r"^register/challenge/$", | |
+ RelayRegisterChallengeEndpoint.as_view(), | |
+ name="sentry-api-0-relay-register-challenge", | |
+ ), | |
+ url( | |
+ r"^register/response/$", | |
+ RelayRegisterResponseEndpoint.as_view(), | |
+ name="sentry-api-0-relay-register-response", | |
+ ), | |
+ url( | |
+ r"^projectconfigs/$", | |
+ RelayProjectConfigsEndpoint.as_view(), | |
+ name="sentry-api-0-relay-projectconfigs", | |
+ ), | |
+ url( | |
+ r"^projectids/$", | |
+ RelayProjectIdsEndpoint.as_view(), | |
+ name="sentry-api-0-relay-projectids", | |
+ ), | |
+ url( | |
+ r"^publickeys/$", | |
+ RelayPublicKeysEndpoint.as_view(), | |
+ name="sentry-api-0-relay-publickeys", | |
+ ), | |
+ url( | |
+ r"^live/$", | |
+ RelayHealthCheck.as_view(), | |
+ name="sentry-api-0-relays-healthcheck", | |
+ ), | |
+ url( | |
+ r"^(?P<relay_id>[^\/]+)/$", | |
+ RelayDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-relays-details", | |
+ ), | |
+] | |
+ | |
+USER_URLS = [ | |
+ url( | |
+ r"^$", | |
+ UserIndexEndpoint.as_view(), | |
+ name="sentry-api-0-user-index", | |
+ ), | |
+ url( | |
+ r"^(?P<user_id>[^\/]+)/$", | |
+ UserDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-user-details", | |
+ ), | |
+ url( | |
+ r"^(?P<user_id>[^\/]+)/avatar/$", | |
+ UserAvatarEndpoint.as_view(), | |
+ name="sentry-api-0-user-avatar", | |
+ ), | |
+ url( | |
+ r"^(?P<user_id>[^\/]+)/authenticators/$", | |
+ UserAuthenticatorIndexEndpoint.as_view(), | |
+ name="sentry-api-0-user-authenticator-index", | |
+ ), | |
+ url( | |
+ r"^(?P<user_id>[^\/]+)/authenticators/(?P<interface_id>[^\/]+)/enroll/$", | |
+ UserAuthenticatorEnrollEndpoint.as_view(), | |
+ name="sentry-api-0-user-authenticator-enroll", | |
+ ), | |
+ url( | |
+ r"^(?P<user_id>[^\/]+)/authenticators/(?P<auth_id>[^\/]+)/(?P<interface_device_id>[^\/]+)/$", | |
+ UserAuthenticatorDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-user-authenticator-device-details", | |
+ ), | |
+ url( | |
+ r"^(?P<user_id>[^\/]+)/authenticators/(?P<auth_id>[^\/]+)/$", | |
+ UserAuthenticatorDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-user-authenticator-details", | |
+ ), | |
+ url( | |
+ r"^(?P<user_id>[^\/]+)/emails/$", | |
+ UserEmailsEndpoint.as_view(), | |
+ name="sentry-api-0-user-emails", | |
+ ), | |
+ url( | |
+ r"^(?P<user_id>[^\/]+)/emails/confirm/$", | |
+ UserEmailsConfirmEndpoint.as_view(), | |
+ name="sentry-api-0-user-emails-confirm", | |
+ ), | |
+ url( | |
+ r"^(?P<user_id>[^\/]+)/identities/(?P<identity_id>[^\/]+)/$", | |
+ UserIdentityDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-user-identity-details", | |
+ ), | |
+ url( | |
+ r"^(?P<user_id>[^\/]+)/identities/$", | |
+ UserIdentityEndpoint.as_view(), | |
+ name="sentry-api-0-user-identity", | |
+ ), | |
+ url( | |
+ r"^(?P<user_id>[^\/]+)/ips/$", | |
+ UserIPsEndpoint.as_view(), | |
+ name="sentry-api-0-user-ips", | |
+ ), | |
+ url( | |
+ r"^(?P<user_id>[^\/]+)/organizations/$", | |
+ UserOrganizationsEndpoint.as_view(), | |
+ name="sentry-api-0-user-organizations", | |
+ ), | |
+ url( | |
+ r"^(?P<user_id>[^\/]+)/notification-settings/$", | |
+ UserNotificationSettingsDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-user-notification-settings", | |
+ ), | |
+ url( | |
+ r"^(?P<user_id>[^\/]+)/notifications/$", | |
+ UserNotificationDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-user-notifications", | |
+ ), | |
+ url( | |
+ r"^(?P<user_id>[^\/]+)/notifications/(?P<notification_type>[^\/]+)/$", | |
+ UserNotificationFineTuningEndpoint.as_view(), | |
+ name="sentry-api-0-user-notifications-fine-tuning", | |
+ ), | |
+ url( | |
+ r"^(?P<user_id>[^\/]+)/password/$", | |
+ UserPasswordEndpoint.as_view(), | |
+ name="sentry-api-0-user-password", | |
+ ), | |
+ url( | |
+ r"^(?P<user_id>[^\/]+)/permissions/$", | |
+ UserPermissionsEndpoint.as_view(), | |
+ name="sentry-api-0-user-permissions", | |
+ ), | |
+ url( | |
+ r"^(?P<user_id>[^\/]+)/permissions/config/$", | |
+ UserPermissionsConfigEndpoint.as_view(), | |
+ name="sentry-api-0-user-permissions-config", | |
+ ), | |
+ url( | |
+ r"^(?P<user_id>[^\/]+)/permissions/(?P<permission_name>[^\/]+)/$", | |
+ UserPermissionDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-user-permission-details", | |
+ ), | |
+ url( | |
+ r"^(?P<user_id>[^\/]+)/roles/$", | |
+ UserUserRolesEndpoint.as_view(), | |
+ name="sentry-api-0-user-userroles", | |
+ ), | |
+ url( | |
+ r"^(?P<user_id>[^\/]+)/roles/(?P<role_name>[^\/]+)/$", | |
+ UserUserRoleDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-user-userrole-details", | |
+ ), | |
+ url( | |
+ r"^(?P<user_id>[^\/]+)/social-identities/$", | |
+ UserSocialIdentitiesIndexEndpoint.as_view(), | |
+ name="sentry-api-0-user-social-identities-index", | |
+ ), | |
+ url( | |
+ r"^(?P<user_id>[^\/]+)/social-identities/(?P<identity_id>[^\/]+)/$", | |
+ UserSocialIdentityDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-user-social-identity-details", | |
+ ), | |
+ url( | |
+ r"^(?P<user_id>[^\/]+)/subscriptions/$", | |
+ UserSubscriptionsEndpoint.as_view(), | |
+ name="sentry-api-0-user-subscriptions", | |
+ ), | |
+ url( | |
+ r"^(?P<user_id>[^\/]+)/organization-integrations/$", | |
+ UserOrganizationIntegrationsEndpoint.as_view(), | |
+ name="sentry-api-0-user-organization-integrations", | |
+ ), | |
+ url( | |
+ r"^(?P<user_id>[^\/]+)/user-identities/$", | |
+ UserIdentityConfigEndpoint.as_view(), | |
+ name="sentry-api-0-user-identity-config", | |
+ ), | |
+ url( | |
+ r"^(?P<user_id>[^\/]+)/user-identities/(?P<category>[\w-]+)/(?P<identity_id>[^\/]+)/$", | |
+ UserIdentityConfigDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-user-identity-config-details", | |
+ ), | |
+] | |
+ | |
+USER_ROLE_URLS = [ | |
+ url( | |
+ r"^$", | |
+ UserRolesEndpoint.as_view(), | |
+ name="sentry-api-0-userroles", | |
+ ), | |
+ url( | |
+ r"^(?P<role_name>[^\/]+)/$", | |
+ UserRoleDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-userroles-details", | |
+ ), | |
+] | |
+ | |
+ORGANIZATION_URLS = [ | |
+ url( | |
+ r"^$", | |
+ OrganizationIndexEndpoint.as_view(), | |
+ name="sentry-api-0-organizations", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/$", | |
+ OrganizationDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-details", | |
+ ), | |
+ # Alert Rules | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/alert-rules/available-actions/$", | |
+ OrganizationAlertRuleAvailableActionIndexEndpoint.as_view(), | |
+ name="sentry-api-0-organization-alert-rule-available-actions", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/alert-rules/(?P<alert_rule_id>[^\/]+)/$", | |
+ OrganizationAlertRuleDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-alert-rule-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/alert-rules/$", | |
+ OrganizationAlertRuleIndexEndpoint.as_view(), | |
+ name="sentry-api-0-organization-alert-rules", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/combined-rules/$", | |
+ OrganizationCombinedRuleIndexEndpoint.as_view(), | |
+ name="sentry-api-0-organization-combined-rules", | |
+ ), | |
+ # Data Export | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/data-export/$", | |
+ DataExportEndpoint.as_view(), | |
+ name="sentry-api-0-organization-data-export", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/data-export/(?P<data_export_id>[^\/]+)/$", | |
+ DataExportDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-data-export-details", | |
+ ), | |
+ # Incidents | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/incidents/(?P<incident_identifier>[^\/]+)/activity/$", | |
+ OrganizationIncidentActivityIndexEndpoint.as_view(), | |
+ name="sentry-api-0-organization-incident-activity", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/incidents/(?P<incident_identifier>[^\/]+)/comments/$", | |
+ OrganizationIncidentCommentIndexEndpoint.as_view(), | |
+ name="sentry-api-0-organization-incident-comments", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/incidents/(?P<incident_identifier>[^\/]+)/comments/(?P<activity_id>[^\/]+)/$", | |
+ OrganizationIncidentCommentDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-incident-comment-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/incidents/(?P<incident_identifier>[^\/]+)/$", | |
+ OrganizationIncidentDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-incident-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/incidents/$", | |
+ OrganizationIncidentIndexEndpoint.as_view(), | |
+ name="sentry-api-0-organization-incident-index", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/incidents/(?P<incident_identifier>[^\/]+)/seen/$", | |
+ OrganizationIncidentSeenEndpoint.as_view(), | |
+ name="sentry-api-0-organization-incident-seen", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/incidents/(?P<incident_identifier>[^\/]+)/subscriptions/$", | |
+ OrganizationIncidentSubscriptionIndexEndpoint.as_view(), | |
+ name="sentry-api-0-organization-incident-subscription-index", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/chunk-upload/$", | |
+ ChunkUploadEndpoint.as_view(), | |
+ name="sentry-api-0-chunk-upload", | |
+ ), | |
+ # Code Path Mappings | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/code-mappings/$", | |
+ OrganizationCodeMappingsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-code-mappings", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/derive-code-mappings/$", | |
+ OrganizationDeriveCodeMappingsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-derive-code-mappings", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/code-mappings/(?P<config_id>[^\/]+)/$", | |
+ OrganizationCodeMappingDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-code-mapping-details", | |
+ ), | |
+ # Codeowners | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/code-mappings/(?P<config_id>[^\/]+)/codeowners/$", | |
+ OrganizationCodeMappingCodeOwnersEndpoint.as_view(), | |
+ name="sentry-api-0-organization-code-mapping-codeowners", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/codeowners-associations/$", | |
+ OrganizationCodeOwnersAssociationsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-codeowners-associations", | |
+ ), | |
+ # Discover | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/discover/homepage/$", | |
+ DiscoverHomepageQueryEndpoint.as_view(), | |
+ name="sentry-api-0-discover-homepage-query", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/discover/saved/$", | |
+ DiscoverSavedQueriesEndpoint.as_view(), | |
+ name="sentry-api-0-discover-saved-queries", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/discover/saved/(?P<query_id>\d+)/$", | |
+ DiscoverSavedQueryDetailEndpoint.as_view(), | |
+ name="sentry-api-0-discover-saved-query-detail", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/discover/saved/(?P<query_id>\d+)/visit/$", | |
+ DiscoverSavedQueryVisitEndpoint.as_view(), | |
+ name="sentry-api-0-discover-saved-query-visit", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/key-transactions/$", | |
+ KeyTransactionEndpoint.as_view(), | |
+ name="sentry-api-0-organization-key-transactions", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/key-transactions-list/$", | |
+ KeyTransactionListEndpoint.as_view(), | |
+ name="sentry-api-0-organization-key-transactions-list", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/related-issues/$", | |
+ OrganizationEventsRelatedIssuesEndpoint.as_view(), | |
+ name="sentry-api-0-organization-related-issues", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/project-transaction-threshold-override/$", | |
+ ProjectTransactionThresholdOverrideEndpoint.as_view(), | |
+ name="sentry-api-0-organization-project-transaction-threshold-override", | |
+ ), | |
+ # Dashboards | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/dashboards/$", | |
+ OrganizationDashboardsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-dashboards", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/dashboards/widgets/$", | |
+ OrganizationDashboardWidgetDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-dashboard-widget-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/dashboards/(?P<dashboard_id>[^\/]+)/$", | |
+ OrganizationDashboardDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-dashboard-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/dashboards/(?P<dashboard_id>[^\/]+)/visit/$", | |
+ OrganizationDashboardVisitEndpoint.as_view(), | |
+ name="sentry-api-0-organization-dashboard-visit", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/shortids/(?P<short_id>[^\/]+)/$", | |
+ ShortIdLookupEndpoint.as_view(), | |
+ name="sentry-api-0-short-id-lookup", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/eventids/(?P<event_id>(?:\d+|[A-Fa-f0-9-]{32,36}))/$", | |
+ EventIdLookupEndpoint.as_view(), | |
+ name="sentry-api-0-event-id-lookup", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/data-scrubbing-selector-suggestions/$", | |
+ DataScrubbingSelectorSuggestionsEndpoint.as_view(), | |
+ name="sentry-api-0-data-scrubbing-selector-suggestions", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/slugs/$", | |
+ SlugsUpdateEndpoint.as_view(), | |
+ name="sentry-api-0-short-ids-update", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/access-requests/$", | |
+ OrganizationAccessRequestDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-access-requests", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/access-requests/(?P<request_id>\d+)/$", | |
+ OrganizationAccessRequestDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-access-request-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/activity/$", | |
+ OrganizationActivityEndpoint.as_view(), | |
+ name="sentry-api-0-organization-activity", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/api-keys/$", | |
+ OrganizationApiKeyIndexEndpoint.as_view(), | |
+ name="sentry-api-0-organization-api-key-index", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/api-keys/(?P<api_key_id>[^\/]+)/$", | |
+ OrganizationApiKeyDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-api-key-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/audit-logs/$", | |
+ OrganizationAuditLogsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-audit-logs", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/auth-provider/$", | |
+ OrganizationAuthProviderDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-auth-provider", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/auth-providers/$", | |
+ OrganizationAuthProvidersEndpoint.as_view(), | |
+ name="sentry-api-0-organization-auth-providers", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/auth-provider/send-reminders/$", | |
+ OrganizationAuthProviderSendRemindersEndpoint.as_view(), | |
+ name="sentry-api-0-organization-auth-provider-send-reminders", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/avatar/$", | |
+ OrganizationAvatarEndpoint.as_view(), | |
+ name="sentry-api-0-organization-avatar", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/artifactbundle/assemble/$", | |
+ OrganizationArtifactBundleAssembleEndpoint.as_view(), | |
+ name="sentry-api-0-organization-artifactbundle-assemble", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/config/integrations/$", | |
+ OrganizationConfigIntegrationsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-config-integrations", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/config/repos/$", | |
+ OrganizationConfigRepositoriesEndpoint.as_view(), | |
+ name="sentry-api-0-organization-config-repositories", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/sdk-updates/$", | |
+ OrganizationSdkUpdatesEndpoint.as_view(), | |
+ name="sentry-api-0-organization-sdk-updates", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/events/$", | |
+ OrganizationEventsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-events", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/events/(?P<project_slug>[^\/]+):(?P<event_id>(?:\d+|[A-Fa-f0-9-]{32,36}))/$", | |
+ OrganizationEventDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-event-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/events-stats/$", | |
+ OrganizationEventsStatsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-events-stats", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/events-geo/$", | |
+ OrganizationEventsGeoEndpoint.as_view(), | |
+ name="sentry-api-0-organization-events-geo", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/events-facets/$", | |
+ OrganizationEventsFacetsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-events-facets", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/events-facets-performance/$", | |
+ OrganizationEventsFacetsPerformanceEndpoint.as_view(), | |
+ name="sentry-api-0-organization-events-facets-performance", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/events-facets-performance-histogram/$", | |
+ OrganizationEventsFacetsPerformanceHistogramEndpoint.as_view(), | |
+ name="sentry-api-0-organization-events-facets-performance-histogram", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/events-span-ops/$", | |
+ OrganizationEventsSpanOpsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-events-span-ops", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/events-spans/$", | |
+ OrganizationEventsSpansExamplesEndpoint.as_view(), | |
+ name="sentry-api-0-organization-events-spans", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/events-spans-performance/$", | |
+ OrganizationEventsSpansPerformanceEndpoint.as_view(), | |
+ name="sentry-api-0-organization-events-spans-performance", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/events-spans-stats/$", | |
+ OrganizationEventsSpansStatsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-events-spans-stats", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/events-meta/$", | |
+ OrganizationEventsMetaEndpoint.as_view(), | |
+ name="sentry-api-0-organization-events-meta", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/metrics-compatibility/$", | |
+ OrganizationMetricsCompatibility.as_view(), | |
+ name="sentry-api-0-organization-metrics-compatibility", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/metrics-compatibility-sums/$", | |
+ OrganizationMetricsCompatibilitySums.as_view(), | |
+ name="sentry-api-0-organization-metrics-compatibility-sums", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/events-histogram/$", | |
+ OrganizationEventsHistogramEndpoint.as_view(), | |
+ name="sentry-api-0-organization-events-histogram", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/events-spans-histogram/$", | |
+ OrganizationEventsSpansHistogramEndpoint.as_view(), | |
+ name="sentry-api-0-organization-events-spans-histogram", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/events-trends/$", | |
+ OrganizationEventsTrendsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-events-trends", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/events-vitals/$", | |
+ OrganizationEventsVitalsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-events-vitals", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/events-has-measurements/$", | |
+ OrganizationEventsHasMeasurementsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-events-has-measurements", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/events-trends-stats/$", | |
+ OrganizationEventsTrendsStatsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-events-trends-stats", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/events-trace-light/(?P<trace_id>(?:\d+|[A-Fa-f0-9-]{32,36}))/$", | |
+ OrganizationEventsTraceLightEndpoint.as_view(), | |
+ name="sentry-api-0-organization-events-trace-light", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/events-trace/(?P<trace_id>(?:\d+|[A-Fa-f0-9-]{32,36}))/$", | |
+ OrganizationEventsTraceEndpoint.as_view(), | |
+ name="sentry-api-0-organization-events-trace", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/events-trace-meta/(?P<trace_id>(?:\d+|[A-Fa-f0-9-]{32,36}))/$", | |
+ OrganizationEventsTraceMetaEndpoint.as_view(), | |
+ name="sentry-api-0-organization-events-trace-meta", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/measurements-meta/$", | |
+ OrganizationMeasurementsMeta.as_view(), | |
+ name="sentry-api-0-organization-measurements-meta", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/issues/$", | |
+ OrganizationGroupIndexEndpoint.as_view(), | |
+ name="sentry-api-0-organization-group-index", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/issues-count/$", | |
+ OrganizationIssuesCountEndpoint.as_view(), | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/issues-stats/$", | |
+ OrganizationGroupIndexStatsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-group-index-stats", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?:issues|groups)/", | |
+ include(GROUP_URLS), | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/integrations/$", | |
+ OrganizationIntegrationsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-integrations", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/integrations/(?P<integration_id>[^\/]+)/$", | |
+ OrganizationIntegrationDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-integration-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/integrations/(?P<integration_id>[^\/]+)/repos/$", | |
+ OrganizationIntegrationReposEndpoint.as_view(), | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/integrations/(?P<integration_id>[^\/]+)/issues/$", | |
+ OrganizationIntegrationIssuesEndpoint.as_view(), | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/integrations/(?P<integration_id>[^\/]+)/serverless-functions/$", | |
+ OrganizationIntegrationServerlessFunctionsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-integration-serverless-functions", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/members/$", | |
+ OrganizationMemberIndexEndpoint.as_view(), | |
+ name="sentry-api-0-organization-member-index", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/external-users/$", | |
+ ExternalUserEndpoint.as_view(), | |
+ name="sentry-api-0-organization-external-user", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/external-users/(?P<external_user_id>[^\/]+)/$", | |
+ ExternalUserDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-external-user-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/integration-requests/$", | |
+ OrganizationIntegrationRequestEndpoint.as_view(), | |
+ name="sentry-api-0-organization-integration-request", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/invite-requests/$", | |
+ OrganizationInviteRequestIndexEndpoint.as_view(), | |
+ name="sentry-api-0-organization-invite-request-index", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/invite-requests/(?P<member_id>[^\/]+)/$", | |
+ OrganizationInviteRequestDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-invite-request-detail", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/monitors/$", | |
+ OrganizationMonitorsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-monitors", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/monitors/(?P<monitor_id>[^\/]+)/$", | |
+ OrganizationMonitorDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-monitor-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/monitors/(?P<monitor_id>[^\/]+)/stats/$", | |
+ OrganizationMonitorStatsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-monitor-stats", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/monitors/(?P<monitor_id>[^\/]+)/checkins/(?P<checkin_id>[^\/]+)/attachment/$", | |
+ OrganizationMonitorCheckInAttachmentEndpoint.as_view(), | |
+ name="sentry-api-0-organization-monitor-check-in-attachment", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/pinned-searches/$", | |
+ OrganizationPinnedSearchEndpoint.as_view(), | |
+ name="sentry-api-0-organization-pinned-searches", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/recent-searches/$", | |
+ OrganizationRecentSearchesEndpoint.as_view(), | |
+ name="sentry-api-0-organization-recent-searches", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/searches/(?P<search_id>[^\/]+)/$", | |
+ OrganizationSearchDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-search-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/searches/$", | |
+ OrganizationSearchesEndpoint.as_view(), | |
+ name="sentry-api-0-organization-searches", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/sessions/$", | |
+ OrganizationSessionsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-sessions", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/users/issues/$", | |
+ OrganizationUserIssuesSearchEndpoint.as_view(), | |
+ name="sentry-api-0-organization-issue-search", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/releases/(?P<version>[^/]+)/resolved/$", | |
+ OrganizationIssuesResolvedInReleaseEndpoint.as_view(), | |
+ name="sentry-api-0-organization-release-resolved", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/members/(?P<member_id>[^\/]+)/$", | |
+ OrganizationMemberDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-member-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/members/(?P<member_id>[^\/]+)/unreleased-commits/$", | |
+ OrganizationMemberUnreleasedCommitsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-member-unreleased-commits", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/members/(?P<member_id>[^\/]+)/teams/(?P<team_slug>[^\/]+)/$", | |
+ OrganizationMemberTeamDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-member-team-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/onboarding-continuation-email/$", | |
+ OrganizationOnboardingContinuationEmail.as_view(), | |
+ name="sentry-api-0-organization-onboarding-continuation-email", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/processingissues/$", | |
+ OrganizationProcessingIssuesEndpoint.as_view(), | |
+ name="sentry-api-0-organization-processing-issues", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/projects/$", | |
+ OrganizationProjectsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-projects", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/projects-count/$", | |
+ OrganizationProjectsCountEndpoint.as_view(), | |
+ name="sentry-api-0-organization-projects-count", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/sent-first-event/$", | |
+ OrganizationProjectsSentFirstEventEndpoint.as_view(), | |
+ name="sentry-api-0-organization-sent-first-event", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/repos/$", | |
+ OrganizationRepositoriesEndpoint.as_view(), | |
+ name="sentry-api-0-organization-repositories", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/repos/(?P<repo_id>[^\/]+)/$", | |
+ OrganizationRepositoryDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-repository-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/repos/(?P<repo_id>[^\/]+)/commits/$", | |
+ OrganizationRepositoryCommitsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-repository-commits", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/plugins/$", | |
+ OrganizationPluginsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-plugins", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/plugins/configs/$", | |
+ OrganizationPluginsConfigsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-plugins-configs", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/releases/$", | |
+ OrganizationReleasesEndpoint.as_view(), | |
+ name="sentry-api-0-organization-releases", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/releases/stats/$", | |
+ OrganizationReleasesStatsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-releases-stats", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/releases/(?P<version>[^/]+)/$", | |
+ OrganizationReleaseDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-release-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/releases/(?P<version>[^/]+)/meta/$", | |
+ OrganizationReleaseMetaEndpoint.as_view(), | |
+ name="sentry-api-0-organization-release-meta", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/releases/(?P<version>[^/]+)/assemble/$", | |
+ OrganizationReleaseAssembleEndpoint.as_view(), | |
+ name="sentry-api-0-organization-release-assemble", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/releases/(?P<version>[^/]+)/files/$", | |
+ OrganizationReleaseFilesEndpoint.as_view(), | |
+ name="sentry-api-0-organization-release-files", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/releases/(?P<version>[^/]+)/files/(?P<file_id>[^/]+)/$", | |
+ OrganizationReleaseFileDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-release-file-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/releases/(?P<version>[^/]+)/commitfiles/$", | |
+ CommitFileChangeEndpoint.as_view(), | |
+ name="sentry-api-0-release-commitfilechange", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/releases/(?P<version>[^/]+)/deploys/$", | |
+ ReleaseDeploysEndpoint.as_view(), | |
+ name="sentry-api-0-organization-release-deploys", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/releases/(?P<version>[^/]+)/commits/$", | |
+ OrganizationReleaseCommitsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-release-commits", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/releases/(?P<version>[^/]+)/previous-with-commits/$", | |
+ OrganizationReleasePreviousCommitsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-release-previous-with-commits", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/user-feedback/$", | |
+ OrganizationUserReportsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-user-feedback", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/user-teams/$", | |
+ OrganizationUserTeamsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-user-teams", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/users/$", | |
+ OrganizationUsersEndpoint.as_view(), | |
+ name="sentry-api-0-organization-users", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/users/(?P<user_id>[^\/]+)/$", | |
+ OrganizationUserDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-user-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/sentry-app-installations/$", | |
+ SentryAppInstallationsEndpoint.as_view(), | |
+ name="sentry-api-0-sentry-app-installations", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/sentry-apps/$", | |
+ OrganizationSentryAppsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-sentry-apps", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/stats/$", | |
+ OrganizationStatsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-stats", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/stats_v2/$", | |
+ OrganizationStatsEndpointV2.as_view(), | |
+ name="sentry-api-0-organization-stats-v2", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/teams/$", | |
+ OrganizationTeamsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-teams", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/tags/$", | |
+ OrganizationTagsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-tags", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/tags/(?P<key>[^/]+)/values/$", | |
+ OrganizationTagKeyValuesEndpoint.as_view(), | |
+ name="sentry-api-0-organization-tagkey-values", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/onboarding-tasks/$", | |
+ OrganizationOnboardingTaskEndpoint.as_view(), | |
+ name="sentry-api-0-organization-onboardingtasks", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/environments/$", | |
+ OrganizationEnvironmentsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-environments", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/broadcasts/$", | |
+ BroadcastIndexEndpoint.as_view(), | |
+ name="sentry-api-0-organization-broadcasts", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/join-request/$", | |
+ OrganizationJoinRequestEndpoint.as_view(), | |
+ name="sentry-api-0-organization-join-request", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/transaction-anomaly-detection/$", | |
+ OrganizationTransactionAnomalyDetectionEndpoint.as_view(), | |
+ name="sentry-api-0-organization-transaction-anomaly-detection", | |
+ ), | |
+ # relay usage | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/relay_usage/$", | |
+ OrganizationRelayUsage.as_view(), | |
+ name="sentry-api-0-organization-relay-usage", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/replays/$", | |
+ OrganizationReplayIndexEndpoint.as_view(), | |
+ name="sentry-api-0-organization-replay-index", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/replay-count/$", | |
+ OrganizationReplayCountEndpoint.as_view(), | |
+ name="sentry-api-0-organization-replay-count", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/replays-events-meta/$", | |
+ OrganizationReplayEventsMetaEndpoint.as_view(), | |
+ name="sentry-api-0-organization-replay-events-meta", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/functions/$", | |
+ OrganizationSentryFunctionEndpoint.as_view(), | |
+ name="sentry-api-0-organization-sentry-functions", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/functions/(?P<function_slug>[^\/]+)/$", | |
+ OrganizationSentryFunctionDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-sentry-function-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/request-project-creation/$", | |
+ OrganizationRequestProjectCreation.as_view(), | |
+ name="sentry-api-0-organization-request-project-creation", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/scim/v2/", | |
+ include( | |
+ [ | |
+ url( | |
+ r"^Users$", | |
+ OrganizationSCIMMemberIndex.as_view(), | |
+ name="sentry-api-0-organization-scim-member-index", | |
+ ), | |
+ url( | |
+ r"^Users/(?P<member_id>\d+)$", | |
+ OrganizationSCIMMemberDetails.as_view(), | |
+ name="sentry-api-0-organization-scim-member-details", | |
+ ), | |
+ url( | |
+ r"^Groups$", | |
+ OrganizationSCIMTeamIndex.as_view(), | |
+ name="sentry-api-0-organization-scim-team-index", | |
+ ), | |
+ url( | |
+ r"^Groups/(?P<team_id>\d+)$", | |
+ OrganizationSCIMTeamDetails.as_view(), | |
+ name="sentry-api-0-organization-scim-team-details", | |
+ ), | |
+ url( | |
+ r"^Schemas$", | |
+ OrganizationSCIMSchemaIndex.as_view(), | |
+ name="sentry-api-0-organization-scim-schema-index", | |
+ ), | |
+ ] | |
+ ), | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^/]+)/metrics/meta/$", | |
+ OrganizationMetricsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-metrics-index", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^/]+)/metrics/meta/(?P<metric_name>[^/]+)/$", | |
+ OrganizationMetricDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-metric-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^/]+)/metrics/data/$", | |
+ OrganizationMetricsDataEndpoint.as_view(), | |
+ name="sentry-api-0-organization-metrics-data", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^/]+)/metrics/tags/$", | |
+ OrganizationMetricsTagsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-metrics-tags", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^/]+)/metrics/tags/(?P<tag_name>[^/]+)/$", | |
+ OrganizationMetricsTagDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-organization-metrics-tag-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^/]+)/profiling/", | |
+ include( | |
+ [ | |
+ url( | |
+ r"^filters/$", | |
+ OrganizationProfilingFiltersEndpoint.as_view(), | |
+ name="sentry-api-0-organization-profiling-filters", | |
+ ), | |
+ ], | |
+ ), | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^/]+)/client-state/$", | |
+ ClientStateListEndpoint.as_view(), | |
+ name="sentry-api-0-organization-client-state-list", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^/]+)/client-state/(?P<category>[^\/]+)/$", | |
+ ClientStateEndpoint.as_view(), | |
+ name="sentry-api-0-organization-client-state", | |
+ ), | |
+] | |
+ | |
+PROJECT_URLS = [ | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/rule-conditions/$", | |
+ ProjectAgnosticRuleConditionsEndpoint.as_view(), | |
+ name="sentry-api-0-project-agnostic-rule-conditions", | |
+ ), | |
+ url( | |
+ r"^$", | |
+ ProjectIndexEndpoint.as_view(), | |
+ name="sentry-api-0-projects", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/$", | |
+ ProjectDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-project-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/alert-rules/(?P<alert_rule_id>[^\/]+)/$", | |
+ ProjectAlertRuleDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-project-alert-rule-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/alert-rules/$", | |
+ ProjectAlertRuleIndexEndpoint.as_view(), | |
+ name="sentry-api-0-project-alert-rules", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/alert-rule-task/(?P<task_uuid>[^\/]+)/$", | |
+ ProjectAlertRuleTaskDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-project-alert-rule-task-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/combined-rules/$", | |
+ ProjectCombinedRuleIndexEndpoint.as_view(), | |
+ name="sentry-api-0-project-combined-rules", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/avatar/$", | |
+ ProjectAvatarEndpoint.as_view(), | |
+ name="sentry-api-0-project-avatar", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/create-sample/$", | |
+ ProjectCreateSampleEndpoint.as_view(), | |
+ name="sentry-api-0-project-create-sample", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/create-sample-transaction/$", | |
+ ProjectCreateSampleTransactionEndpoint.as_view(), | |
+ name="sentry-api-0-project-create-sample-transaction", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/docs/(?P<platform>[\w-]+)/$", | |
+ ProjectDocsPlatformEndpoint.as_view(), | |
+ name="sentry-api-0-project-docs-platform", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/environments/$", | |
+ ProjectEnvironmentsEndpoint.as_view(), | |
+ name="sentry-api-0-project-environments", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/environments/(?P<environment>[^/]+)/$", | |
+ ProjectEnvironmentDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-project-environment-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/platforms/$", | |
+ ProjectPlatformsEndpoint.as_view(), | |
+ name="sentry-api-0-project-platform-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/events/$", | |
+ ProjectEventsEndpoint.as_view(), | |
+ name="sentry-api-0-project-events", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/events/(?P<event_id>(?:\d+|[A-Fa-f0-9]{32}))/$", | |
+ ProjectEventDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-project-event-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/events/(?P<event_id>[\w-]+)/grouping-info/$", | |
+ EventGroupingInfoEndpoint.as_view(), | |
+ name="sentry-api-0-event-grouping-info", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/events/(?P<event_id>[\w-]+)/apple-crash-report$", | |
+ EventAppleCrashReportEndpoint.as_view(), | |
+ name="sentry-api-0-event-apple-crash-report", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/events/(?P<event_id>[\w-]+)/attachments/$", | |
+ EventAttachmentsEndpoint.as_view(), | |
+ name="sentry-api-0-event-attachments", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/events/(?P<event_id>[\w-]+)/reprocessable/$", | |
+ EventReprocessableEndpoint.as_view(), | |
+ name="sentry-api-0-event-attachments", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/events/(?P<event_id>[\w-]+)/attachments/(?P<attachment_id>[\w-]+)/$", | |
+ EventAttachmentDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-event-attachment-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/events/(?P<event_id>[\w-]+)/committers/$", | |
+ EventFileCommittersEndpoint.as_view(), | |
+ name="sentry-api-0-event-file-committers", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/events/(?P<event_id>[\w-]+)/json/$", | |
+ EventJsonEndpoint.as_view(), | |
+ name="sentry-api-0-event-json", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/events/(?P<event_id>[\w-]+)/owners/$", | |
+ EventOwnersEndpoint.as_view(), | |
+ name="sentry-api-0-event-owners", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/events/(?P<event_id>[\w-]+)/source-map-debug/$", | |
+ SourceMapDebugEndpoint.as_view(), | |
+ name="sentry-api-0-event-source-map-debug", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/files/dsyms/$", | |
+ DebugFilesEndpoint.as_view(), | |
+ name="sentry-api-0-dsym-files", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/files/source-maps/$", | |
+ SourceMapsEndpoint.as_view(), | |
+ name="sentry-api-0-source-maps", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/files/difs/assemble/$", | |
+ DifAssembleEndpoint.as_view(), | |
+ name="sentry-api-0-assemble-dif-files", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/files/dsyms/unknown/$", | |
+ UnknownDebugFilesEndpoint.as_view(), | |
+ name="sentry-api-0-unknown-dsym-files", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/files/dsyms/associate/$", | |
+ AssociateDSymFilesEndpoint.as_view(), | |
+ name="sentry-api-0-associate-dsym-files", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/filters/$", | |
+ ProjectFiltersEndpoint.as_view(), | |
+ name="sentry-api-0-project-filters", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/filters/(?P<filter_id>[\w-]+)/$", | |
+ ProjectFilterDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-project-filters", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/hooks/$", | |
+ ProjectServiceHooksEndpoint.as_view(), | |
+ name="sentry-api-0-service-hooks", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/hooks/(?P<hook_id>[^\/]+)/$", | |
+ ProjectServiceHookDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-project-service-hook-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/hooks/(?P<hook_id>[^\/]+)/stats/$", | |
+ ProjectServiceHookStatsEndpoint.as_view(), | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/(?:issues|groups)/$", | |
+ ProjectGroupIndexEndpoint.as_view(), | |
+ name="sentry-api-0-project-group-index", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/(?:issues|groups)/stats/$", | |
+ ProjectGroupStatsEndpoint.as_view(), | |
+ name="sentry-api-0-project-group-stats", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/keys/$", | |
+ ProjectKeysEndpoint.as_view(), | |
+ name="sentry-api-0-project-keys", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/keys/(?P<key_id>[^\/]+)/$", | |
+ ProjectKeyDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-project-key-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/keys/(?P<key_id>[^\/]+)/stats/$", | |
+ ProjectKeyStatsEndpoint.as_view(), | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^/]+)/(?P<project_slug>[^/]+)/members/$", | |
+ ProjectMemberIndexEndpoint.as_view(), | |
+ name="sentry-api-0-project-member-index", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/releases/$", | |
+ ProjectReleasesEndpoint.as_view(), | |
+ name="sentry-api-0-project-releases", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/commits/$", | |
+ ProjectCommitsEndpoint.as_view(), | |
+ name="sentry-api-0-project-commits", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/releases/token/$", | |
+ ProjectReleasesTokenEndpoint.as_view(), | |
+ name="sentry-api-0-project-releases-token", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/releases/completion/$", | |
+ ProjectReleaseSetupCompletionEndpoint.as_view(), | |
+ name="sentry-api-0-project-releases-completion-status", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/releases/(?P<version>[^/]+)/$", | |
+ ProjectReleaseDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-project-release-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/releases/(?P<version>[^/]+)/commits/$", | |
+ ProjectReleaseCommitsEndpoint.as_view(), | |
+ name="sentry-api-0-project-release-commits", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/releases/(?P<version>[^/]+)/repositories/$", | |
+ ProjectReleaseRepositories.as_view(), | |
+ name="sentry-api-0-project-release-repositories", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/releases/(?P<version>[^/]+)/resolved/$", | |
+ ProjectIssuesResolvedInReleaseEndpoint.as_view(), | |
+ name="sentry-api-0-project-release-resolved", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/releases/(?P<version>[^/]+)/stats/$", | |
+ ProjectReleaseStatsEndpoint.as_view(), | |
+ name="sentry-api-0-project-release-stats", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/releases/(?P<version>[^/]+)/files/$", | |
+ ProjectReleaseFilesEndpoint.as_view(), | |
+ name="sentry-api-0-project-release-files", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/releases/(?P<version>[^/]+)/files/(?P<file_id>[^/]+)/$", | |
+ ProjectReleaseFileDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-project-release-file-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/rules/$", | |
+ ProjectRulesEndpoint.as_view(), | |
+ name="sentry-api-0-project-rules", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^/]+)/(?P<project_slug>[^\/]+)/replays/(?P<replay_id>[\w-]+)/$", | |
+ ProjectReplayDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-project-replay-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^/]+)/(?P<project_slug>[^\/]+)/replays/(?P<replay_id>[\w-]+)/recording-segments/$", | |
+ ProjectReplayRecordingSegmentIndexEndpoint.as_view(), | |
+ name="sentry-api-0-project-replay-recording-segment-index", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^/]+)/(?P<project_slug>[^\/]+)/replays/(?P<replay_id>[\w-]+)/recording-segments/(?P<segment_id>\d+)/$", | |
+ ProjectReplayRecordingSegmentDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-project-replay-recording-segment-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/rules/configuration/$", | |
+ ProjectRulesConfigurationEndpoint.as_view(), | |
+ name="sentry-api-0-project-rules-configuration", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/rules/(?P<rule_id>[^\/]+)/$", | |
+ ProjectRuleDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-project-rule-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/rules/preview$", | |
+ ProjectRulePreviewEndpoint.as_view(), | |
+ name="sentry-api-0-project-rule-preview", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/rule-actions/$", | |
+ ProjectRuleActionsEndpoint.as_view(), | |
+ name="sentry-api-0-project-rule-actions", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/rules/(?P<rule_id>[^\/]+)/group-history/$", | |
+ ProjectRuleGroupHistoryIndexEndpoint.as_view(), | |
+ name="sentry-api-0-project-rule-group-history-index", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/rules/(?P<rule_id>[^\/]+)/stats/$", | |
+ ProjectRuleStatsIndexEndpoint.as_view(), | |
+ name="sentry-api-0-project-rule-stats-index", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/rule-task/(?P<task_uuid>[^\/]+)/$", | |
+ ProjectRuleTaskDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-project-rule-task-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/stats/$", | |
+ ProjectStatsEndpoint.as_view(), | |
+ name="sentry-api-0-project-stats", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/tags/$", | |
+ ProjectTagsEndpoint.as_view(), | |
+ name="sentry-api-0-project-tags", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/tags/(?P<key>[^/]+)/$", | |
+ ProjectTagKeyDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-project-tagkey-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/tags/(?P<key>[^/]+)/values/$", | |
+ ProjectTagKeyValuesEndpoint.as_view(), | |
+ name="sentry-api-0-project-tagkey-values", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/teams/$", | |
+ ProjectTeamsEndpoint.as_view(), | |
+ name="sentry-api-0-project-teams", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/teams/(?P<team_slug>[^\/]+)/$", | |
+ ProjectTeamDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-project-team-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/transfer/$", | |
+ ProjectTransferEndpoint.as_view(), | |
+ name="sentry-api-0-project-transfer", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/users/$", | |
+ ProjectUsersEndpoint.as_view(), | |
+ name="sentry-api-0-project-users", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/users/(?P<user_hash>[^/]+)/$", | |
+ ProjectUserDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-project-user-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/(?:user-feedback|user-reports)/$", | |
+ ProjectUserReportsEndpoint.as_view(), | |
+ name="sentry-api-0-project-user-reports", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/user-stats/$", | |
+ ProjectUserStatsEndpoint.as_view(), | |
+ name="sentry-api-0-project-userstats", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/processingissues/$", | |
+ ProjectProcessingIssuesEndpoint.as_view(), | |
+ name="sentry-api-0-project-processing-issues", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/processingissues/fix$", | |
+ ProjectProcessingIssuesFixEndpoint.as_view(), | |
+ name="sentry-api-0-project-fix-processing-issues", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/reprocessing/$", | |
+ ProjectReprocessingEndpoint.as_view(), | |
+ name="sentry-api-0-project-reprocessing", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/processingissues/discard/$", | |
+ ProjectProcessingIssuesDiscardEndpoint.as_view(), | |
+ name="sentry-api-0-project-discard-processing-issues", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/ownership/$", | |
+ ProjectOwnershipEndpoint.as_view(), | |
+ name="sentry-api-0-project-ownership", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/codeowners/$", | |
+ ProjectCodeOwnersEndpoint.as_view(), | |
+ name="sentry-api-0-project-codeowners", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/codeowners/(?P<codeowners_id>[^\/]+)/$", | |
+ ProjectCodeOwnersDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-project-codeowners-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/transaction-threshold/configure/$", | |
+ ProjectTransactionThresholdEndpoint.as_view(), | |
+ name="sentry-api-0-project-transaction-threshold", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/performance-issues/configure/$", | |
+ ProjectPerformanceIssueSettingsEndpoint.as_view(), | |
+ name="sentry-api-0-project-performance-issue-settings", | |
+ ), | |
+ # Load plugin project urls | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/plugins/$", | |
+ ProjectPluginsEndpoint.as_view(), | |
+ name="sentry-api-0-project-plugins", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/plugins/(?P<plugin_id>[^\/]+)/$", | |
+ ProjectPluginDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-project-plugin-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/cluster-transaction-names/$", | |
+ ProjectTransactionNamesCluster.as_view(), | |
+ name="sentry-api-0-organization-project-cluster-transaction-names", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/plugins?/", | |
+ include("sentry.plugins.base.project_api_urls"), | |
+ ), | |
+ # Tombstone | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/tombstones/$", | |
+ GroupTombstoneEndpoint.as_view(), | |
+ name="sentry-api-0-group-tombstones", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/tombstones/(?P<tombstone_id>\d+)/$", | |
+ GroupTombstoneDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-group-tombstone-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/stacktrace-link/$", | |
+ ProjectStacktraceLinkEndpoint.as_view(), | |
+ name="sentry-api-0-project-stacktrace-link", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/repo-path-parsing/$", | |
+ ProjectRepoPathParsingEndpoint.as_view(), | |
+ name="sentry-api-0-project-repo-path-parsing", | |
+ ), | |
+ # Grouping configs | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/grouping-configs/$", | |
+ ProjectGroupingConfigsEndpoint.as_view(), | |
+ name="sentry-api-0-project-grouping-configs", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/appstoreconnect/$", | |
+ AppStoreConnectCreateCredentialsEndpoint.as_view(), | |
+ name="sentry-api-0-project-appstoreconnect-credentials-create", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/appstoreconnect/apps/$", | |
+ AppStoreConnectAppsEndpoint.as_view(), | |
+ name="sentry-api-0-project-appstoreconnect-apps", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/appstoreconnect/status/$", | |
+ AppStoreConnectStatusEndpoint.as_view(), | |
+ name="sentry-api-0-project-appstoreconnect-status", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/appstoreconnect/(?P<credentials_id>[^\/]+)/$", | |
+ AppStoreConnectUpdateCredentialsEndpoint.as_view(), | |
+ name="sentry-api-0-project-appstoreconnect-credentials-update", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/appstoreconnect/(?P<credentials_id>[^\/]+)/refresh/$", | |
+ AppStoreConnectRefreshEndpoint.as_view(), | |
+ name="sentry-api-0-project-appstoreconnect-refresh", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/profiling/functions/$", | |
+ ProjectProfilingFunctionsEndpoint.as_view(), | |
+ name="sentry-api-0-project-profiling-functions", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/profiling/profiles/(?P<profile_id>(?:\d+|[A-Fa-f0-9-]{32,36}))/$", | |
+ ProjectProfilingProfileEndpoint.as_view(), | |
+ name="sentry-api-0-project-profiling-profile", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/profiling/raw_profiles/(?P<profile_id>(?:\d+|[A-Fa-f0-9-]{32,36}))/$", | |
+ ProjectProfilingRawProfileEndpoint.as_view(), | |
+ name="sentry-api-0-project-profiling-raw-profile", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/profiling/flamegraph/$", | |
+ ProjectProfilingFlamegraphEndpoint.as_view(), | |
+ name="sentry-api-0-project-profiling-flamegraph", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/profiling/transactions/(?P<transaction_id>(?:\d+|[A-Fa-f0-9-]{32,36}))/$", | |
+ ProjectProfilingTransactionIDProfileIDEndpoint.as_view(), | |
+ name="sentry-api-0-project-profiling-transactions", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/dynamic-sampling/distribution/$", | |
+ ProjectDynamicSamplingDistributionEndpoint.as_view(), | |
+ name="sentry-api-0-project-dynamic-sampling-distribution", | |
+ ), | |
+] | |
+ | |
+TEAM_URLS = [ | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/$", | |
+ TeamDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-team-details", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/issues/old/$", | |
+ TeamGroupsOldEndpoint.as_view(), | |
+ name="sentry-api-0-team-oldest-issues", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/release-count/$", | |
+ TeamReleaseCountEndpoint.as_view(), | |
+ name="sentry-api-0-team-release-count", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/time-to-resolution/$", | |
+ TeamTimeToResolutionEndpoint.as_view(), | |
+ name="sentry-api-0-team-time-to-resolution", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/unresolved-issue-age/$", | |
+ TeamUnresolvedIssueAgeEndpoint.as_view(), | |
+ name="sentry-api-0-team-unresolved-issue-age", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/alerts-triggered/$", | |
+ TeamAlertsTriggeredTotalsEndpoint.as_view(), | |
+ name="sentry-api-0-team-alerts-triggered", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/alerts-triggered-index/$", | |
+ TeamAlertsTriggeredIndexEndpoint.as_view(), | |
+ name="sentry-api-0-team-alerts-triggered-index", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/issue-breakdown/$", | |
+ TeamIssueBreakdownEndpoint.as_view(), | |
+ name="sentry-api-0-team-issue-breakdown", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/all-unresolved-issues/$", | |
+ TeamAllUnresolvedIssuesEndpoint.as_view(), | |
+ name="sentry-api-0-team-all-unresolved-issues", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/notification-settings/$", | |
+ TeamNotificationSettingsDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-team-notification-settings", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/members/$", | |
+ TeamMembersEndpoint.as_view(), | |
+ name="sentry-api-0-team-members", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/projects/$", | |
+ TeamProjectsEndpoint.as_view(), | |
+ name="sentry-api-0-team-project-index", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/stats/$", | |
+ TeamStatsEndpoint.as_view(), | |
+ name="sentry-api-0-team-stats", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/avatar/$", | |
+ TeamAvatarEndpoint.as_view(), | |
+ name="sentry-api-0-team-avatar", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/external-teams/$", | |
+ ExternalTeamEndpoint.as_view(), | |
+ name="sentry-api-0-external-team", | |
+ ), | |
+ url( | |
+ r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/external-teams/(?P<external_team_id>[^\/]+)/$", | |
+ ExternalTeamDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-external-team-details", | |
+ ), | |
+] | |
+ | |
+SENTRY_APP_URLS = [ | |
+ url( | |
+ r"^$", | |
+ SentryAppsEndpoint.as_view(), | |
+ name="sentry-api-0-sentry-apps", | |
+ ), | |
+ url( | |
+ r"^(?P<sentry_app_slug>[^\/]+)/$", | |
+ SentryAppDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-sentry-app-details", | |
+ ), | |
+ url( | |
+ r"^(?P<sentry_app_slug>[^\/]+)/features/$", | |
+ SentryAppFeaturesEndpoint.as_view(), | |
+ name="sentry-api-0-sentry-app-features", | |
+ ), | |
+ url( | |
+ r"^(?P<sentry_app_slug>[^\/]+)/components/$", | |
+ SentryAppComponentsEndpoint.as_view(), | |
+ name="sentry-api-0-sentry-app-components", | |
+ ), | |
+ url( | |
+ r"^(?P<sentry_app_slug>[^\/]+)/avatar/$", | |
+ SentryAppAvatarEndpoint.as_view(), | |
+ name="sentry-api-0-sentry-app-avatar", | |
+ ), | |
+ url( | |
+ r"^(?P<sentry_app_slug>[^\/]+)/api-tokens/$", | |
+ SentryInternalAppTokensEndpoint.as_view(), | |
+ name="sentry-api-0-sentry-internal-app-tokens", | |
+ ), | |
+ url( | |
+ r"^(?P<sentry_app_slug>[^\/]+)/api-tokens/(?P<api_token>[^\/]+)/$", | |
+ SentryInternalAppTokenDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-sentry-internal-app-token-details", | |
+ ), | |
+ url( | |
+ r"^(?P<sentry_app_slug>[^\/]+)/stats/$", | |
+ SentryAppStatsEndpoint.as_view(), | |
+ name="sentry-api-0-sentry-app-stats", | |
+ ), | |
+ url( | |
+ r"^(?P<sentry_app_slug>[^\/]+)/requests/$", | |
+ SentryAppRequestsEndpoint.as_view(), | |
+ name="sentry-api-0-sentry-app-requests", | |
+ ), | |
+ url( | |
+ r"^(?P<sentry_app_slug>[^\/]+)/interaction/$", | |
+ SentryAppInteractionEndpoint.as_view(), | |
+ name="sentry-api-0-sentry-app-interaction", | |
+ ), | |
+ url( | |
+ r"^(?P<sentry_app_slug>[^\/]+)/publish-request/$", | |
+ SentryAppPublishRequestEndpoint.as_view(), | |
+ name="sentry-api-0-sentry-app-publish-request", | |
+ ), | |
+] | |
+ | |
+SENTRY_APP_INSTALLATION_URLS = [ | |
+ url( | |
+ r"^(?P<uuid>[^\/]+)/$", | |
+ SentryAppInstallationDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-sentry-app-installation-details", | |
+ ), | |
+ url( | |
+ r"^(?P<uuid>[^\/]+)/external-requests/$", | |
+ SentryAppInstallationExternalRequestsEndpoint.as_view(), | |
+ name="sentry-api-0-sentry-app-installation-external-requests", | |
+ ), | |
+ url( | |
+ r"^(?P<uuid>[^\/]+)/external-issue-actions/$", | |
+ SentryAppInstallationExternalIssueActionsEndpoint.as_view(), | |
+ name="sentry-api-0-sentry-app-installation-external-issue-actions", | |
+ ), | |
+ url( | |
+ r"^(?P<uuid>[^\/]+)/external-issues/$", | |
+ SentryAppInstallationExternalIssuesEndpoint.as_view(), | |
+ name="sentry-api-0-sentry-app-installation-external-issues", | |
+ ), | |
+ url( | |
+ r"^(?P<uuid>[^\/]+)/external-issues/(?P<external_issue_id>[^\/]+)/$", | |
+ SentryAppInstallationExternalIssueDetailsEndpoint.as_view(), | |
+ name="sentry-api-0-sentry-app-installation-external-issue-details", | |
+ ), | |
+] | |
+ | |
+INTERNAL_URLS = [ | |
+ url( | |
+ r"^health/$", | |
+ SystemHealthEndpoint.as_view(), | |
+ name="sentry-api-0-system-health", | |
+ ), | |
+ url( | |
+ r"^options/$", | |
+ SystemOptionsEndpoint.as_view(), | |
+ name="sentry-api-0-system-options", | |
+ ), | |
+ url( | |
+ r"^beacon/$", | |
+ InternalBeaconEndpoint.as_view(), | |
+ name="sentry-api-0-internal-beacon", | |
+ ), | |
+ url( | |
+ r"^quotas/$", | |
+ InternalQuotasEndpoint.as_view(), | |
+ ), | |
+ url( | |
+ r"^queue/tasks/$", | |
+ InternalQueueTasksEndpoint.as_view(), | |
+ ), | |
+ url( | |
+ r"^stats/$", | |
+ InternalStatsEndpoint.as_view(), | |
+ ), | |
+ url( | |
+ r"^warnings/$", | |
+ InternalWarningsEndpoint.as_view(), | |
+ ), | |
+ url( | |
+ r"^packages/$", | |
+ InternalPackagesEndpoint.as_view(), | |
+ ), | |
+ url( | |
+ r"^environment/$", | |
+ InternalEnvironmentEndpoint.as_view(), | |
+ ), | |
+ url( | |
+ r"^mail/$", | |
+ InternalMailEndpoint.as_view(), | |
+ ), | |
+ url( | |
+ r"^project-config/$", | |
+ AdminRelayProjectConfigsEndpoint.as_view(), | |
+ name="sentry-api-0-internal-project-config", | |
+ ), | |
+] | |
+ | |
urlpatterns = [ | |
# Relay | |
url( | |
r"^relays/", | |
- include( | |
- [ | |
- url( | |
- r"^$", | |
- RelayIndexEndpoint.as_view(), | |
- name="sentry-api-0-relays-index", | |
- ), | |
- url( | |
- r"^register/challenge/$", | |
- RelayRegisterChallengeEndpoint.as_view(), | |
- name="sentry-api-0-relay-register-challenge", | |
- ), | |
- url( | |
- r"^register/response/$", | |
- RelayRegisterResponseEndpoint.as_view(), | |
- name="sentry-api-0-relay-register-response", | |
- ), | |
- url( | |
- r"^projectconfigs/$", | |
- RelayProjectConfigsEndpoint.as_view(), | |
- name="sentry-api-0-relay-projectconfigs", | |
- ), | |
- url( | |
- r"^projectids/$", | |
- RelayProjectIdsEndpoint.as_view(), | |
- name="sentry-api-0-relay-projectids", | |
- ), | |
- url( | |
- r"^publickeys/$", | |
- RelayPublicKeysEndpoint.as_view(), | |
- name="sentry-api-0-relay-publickeys", | |
- ), | |
- url( | |
- r"^live/$", | |
- RelayHealthCheck.as_view(), | |
- name="sentry-api-0-relays-healthcheck", | |
- ), | |
- url( | |
- r"^(?P<relay_id>[^\/]+)/$", | |
- RelayDetailsEndpoint.as_view(), | |
- name="sentry-api-0-relays-details", | |
- ), | |
- ] | |
- ), | |
+ include(RELAY_URLS), | |
), | |
# Api Data | |
url( | |
@@ -704,25 +2454,7 @@ urlpatterns = [ | |
# Auth | |
url( | |
r"^auth/", | |
- include( | |
- [ | |
- url( | |
- r"^$", | |
- AuthIndexEndpoint.as_view(), | |
- name="sentry-api-0-auth", | |
- ), | |
- url( | |
- r"^config/$", | |
- AuthConfigEndpoint.as_view(), | |
- name="sentry-api-0-auth-config", | |
- ), | |
- url( | |
- r"^login/$", | |
- AuthLoginEndpoint.as_view(), | |
- name="sentry-api-0-auth-login", | |
- ), | |
- ] | |
- ), | |
+ include(AUTH_URLS), | |
), | |
# List Authenticators | |
url( | |
@@ -732,13 +2464,8 @@ urlpatterns = [ | |
), | |
# Broadcasts | |
url( | |
- r"^broadcasts/$", | |
- BroadcastIndexEndpoint.as_view(), | |
- name="sentry-api-0-broadcast-index", | |
- ), | |
- url( | |
- r"^broadcasts/(?P<broadcast_id>[^\/]+)/$", | |
- BroadcastDetailsEndpoint.as_view(), | |
+ r"^broadcasts/", | |
+ include(BROADCAST_URLS), | |
), | |
# Project transfer | |
url( | |
@@ -796,1636 +2523,37 @@ urlpatterns = [ | |
# Users | |
url( | |
r"^users/", | |
- include( | |
- [ | |
- url( | |
- r"^$", | |
- UserIndexEndpoint.as_view(), | |
- name="sentry-api-0-user-index", | |
- ), | |
- url( | |
- r"^(?P<user_id>[^\/]+)/$", | |
- UserDetailsEndpoint.as_view(), | |
- name="sentry-api-0-user-details", | |
- ), | |
- url( | |
- r"^(?P<user_id>[^\/]+)/avatar/$", | |
- UserAvatarEndpoint.as_view(), | |
- name="sentry-api-0-user-avatar", | |
- ), | |
- url( | |
- r"^(?P<user_id>[^\/]+)/authenticators/$", | |
- UserAuthenticatorIndexEndpoint.as_view(), | |
- name="sentry-api-0-user-authenticator-index", | |
- ), | |
- url( | |
- r"^(?P<user_id>[^\/]+)/authenticators/(?P<interface_id>[^\/]+)/enroll/$", | |
- UserAuthenticatorEnrollEndpoint.as_view(), | |
- name="sentry-api-0-user-authenticator-enroll", | |
- ), | |
- url( | |
- r"^(?P<user_id>[^\/]+)/authenticators/(?P<auth_id>[^\/]+)/(?P<interface_device_id>[^\/]+)/$", | |
- UserAuthenticatorDetailsEndpoint.as_view(), | |
- name="sentry-api-0-user-authenticator-device-details", | |
- ), | |
- url( | |
- r"^(?P<user_id>[^\/]+)/authenticators/(?P<auth_id>[^\/]+)/$", | |
- UserAuthenticatorDetailsEndpoint.as_view(), | |
- name="sentry-api-0-user-authenticator-details", | |
- ), | |
- url( | |
- r"^(?P<user_id>[^\/]+)/emails/$", | |
- UserEmailsEndpoint.as_view(), | |
- name="sentry-api-0-user-emails", | |
- ), | |
- url( | |
- r"^(?P<user_id>[^\/]+)/emails/confirm/$", | |
- UserEmailsConfirmEndpoint.as_view(), | |
- name="sentry-api-0-user-emails-confirm", | |
- ), | |
- url( | |
- r"^(?P<user_id>[^\/]+)/identities/(?P<identity_id>[^\/]+)/$", | |
- UserIdentityDetailsEndpoint.as_view(), | |
- name="sentry-api-0-user-identity-details", | |
- ), | |
- url( | |
- r"^(?P<user_id>[^\/]+)/identities/$", | |
- UserIdentityEndpoint.as_view(), | |
- name="sentry-api-0-user-identity", | |
- ), | |
- url( | |
- r"^(?P<user_id>[^\/]+)/ips/$", | |
- UserIPsEndpoint.as_view(), | |
- name="sentry-api-0-user-ips", | |
- ), | |
- url( | |
- r"^(?P<user_id>[^\/]+)/organizations/$", | |
- UserOrganizationsEndpoint.as_view(), | |
- name="sentry-api-0-user-organizations", | |
- ), | |
- url( | |
- r"^(?P<user_id>[^\/]+)/notification-settings/$", | |
- UserNotificationSettingsDetailsEndpoint.as_view(), | |
- name="sentry-api-0-user-notification-settings", | |
- ), | |
- url( | |
- r"^(?P<user_id>[^\/]+)/notifications/$", | |
- UserNotificationDetailsEndpoint.as_view(), | |
- name="sentry-api-0-user-notifications", | |
- ), | |
- url( | |
- r"^(?P<user_id>[^\/]+)/notifications/(?P<notification_type>[^\/]+)/$", | |
- UserNotificationFineTuningEndpoint.as_view(), | |
- name="sentry-api-0-user-notifications-fine-tuning", | |
- ), | |
- url( | |
- r"^(?P<user_id>[^\/]+)/password/$", | |
- UserPasswordEndpoint.as_view(), | |
- name="sentry-api-0-user-password", | |
- ), | |
- url( | |
- r"^(?P<user_id>[^\/]+)/permissions/$", | |
- UserPermissionsEndpoint.as_view(), | |
- name="sentry-api-0-user-permissions", | |
- ), | |
- url( | |
- r"^(?P<user_id>[^\/]+)/permissions/config/$", | |
- UserPermissionsConfigEndpoint.as_view(), | |
- name="sentry-api-0-user-permissions-config", | |
- ), | |
- url( | |
- r"^(?P<user_id>[^\/]+)/permissions/(?P<permission_name>[^\/]+)/$", | |
- UserPermissionDetailsEndpoint.as_view(), | |
- name="sentry-api-0-user-permission-details", | |
- ), | |
- url( | |
- r"^(?P<user_id>[^\/]+)/roles/$", | |
- UserUserRolesEndpoint.as_view(), | |
- name="sentry-api-0-user-userroles", | |
- ), | |
- url( | |
- r"^(?P<user_id>[^\/]+)/roles/(?P<role_name>[^\/]+)/$", | |
- UserUserRoleDetailsEndpoint.as_view(), | |
- name="sentry-api-0-user-userrole-details", | |
- ), | |
- url( | |
- r"^(?P<user_id>[^\/]+)/social-identities/$", | |
- UserSocialIdentitiesIndexEndpoint.as_view(), | |
- name="sentry-api-0-user-social-identities-index", | |
- ), | |
- url( | |
- r"^(?P<user_id>[^\/]+)/social-identities/(?P<identity_id>[^\/]+)/$", | |
- UserSocialIdentityDetailsEndpoint.as_view(), | |
- name="sentry-api-0-user-social-identity-details", | |
- ), | |
- url( | |
- r"^(?P<user_id>[^\/]+)/subscriptions/$", | |
- UserSubscriptionsEndpoint.as_view(), | |
- name="sentry-api-0-user-subscriptions", | |
- ), | |
- url( | |
- r"^(?P<user_id>[^\/]+)/organization-integrations/$", | |
- UserOrganizationIntegrationsEndpoint.as_view(), | |
- name="sentry-api-0-user-organization-integrations", | |
- ), | |
- url( | |
- r"^(?P<user_id>[^\/]+)/user-identities/$", | |
- UserIdentityConfigEndpoint.as_view(), | |
- name="sentry-api-0-user-identity-config", | |
- ), | |
- url( | |
- r"^(?P<user_id>[^\/]+)/user-identities/(?P<category>[\w-]+)/(?P<identity_id>[^\/]+)/$", | |
- UserIdentityConfigDetailsEndpoint.as_view(), | |
- name="sentry-api-0-user-identity-config-details", | |
- ), | |
- ] | |
- ), | |
+ include(USER_URLS), | |
), | |
# UserRoles | |
url( | |
r"^userroles/", | |
- include( | |
- [ | |
- url( | |
- r"^$", | |
- UserRolesEndpoint.as_view(), | |
- name="sentry-api-0-userroles", | |
- ), | |
- url( | |
- r"^(?P<role_name>[^\/]+)/$", | |
- UserRoleDetailsEndpoint.as_view(), | |
- name="sentry-api-0-userroles-details", | |
- ), | |
- ] | |
- ), | |
+ include(USER_ROLE_URLS), | |
), | |
# Organizations | |
url( | |
r"^organizations/", | |
- include( | |
- [ | |
- url( | |
- r"^$", | |
- OrganizationIndexEndpoint.as_view(), | |
- name="sentry-api-0-organizations", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/$", | |
- OrganizationDetailsEndpoint.as_view(), | |
- name="sentry-api-0-organization-details", | |
- ), | |
- # Alert Rules | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/alert-rules/available-actions/$", | |
- OrganizationAlertRuleAvailableActionIndexEndpoint.as_view(), | |
- name="sentry-api-0-organization-alert-rule-available-actions", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/alert-rules/(?P<alert_rule_id>[^\/]+)/$", | |
- OrganizationAlertRuleDetailsEndpoint.as_view(), | |
- name="sentry-api-0-organization-alert-rule-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/alert-rules/$", | |
- OrganizationAlertRuleIndexEndpoint.as_view(), | |
- name="sentry-api-0-organization-alert-rules", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/combined-rules/$", | |
- OrganizationCombinedRuleIndexEndpoint.as_view(), | |
- name="sentry-api-0-organization-combined-rules", | |
- ), | |
- # Data Export | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/data-export/$", | |
- DataExportEndpoint.as_view(), | |
- name="sentry-api-0-organization-data-export", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/data-export/(?P<data_export_id>[^\/]+)/$", | |
- DataExportDetailsEndpoint.as_view(), | |
- name="sentry-api-0-organization-data-export-details", | |
- ), | |
- # Incidents | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/incidents/(?P<incident_identifier>[^\/]+)/activity/$", | |
- OrganizationIncidentActivityIndexEndpoint.as_view(), | |
- name="sentry-api-0-organization-incident-activity", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/incidents/(?P<incident_identifier>[^\/]+)/comments/$", | |
- OrganizationIncidentCommentIndexEndpoint.as_view(), | |
- name="sentry-api-0-organization-incident-comments", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/incidents/(?P<incident_identifier>[^\/]+)/comments/(?P<activity_id>[^\/]+)/$", | |
- OrganizationIncidentCommentDetailsEndpoint.as_view(), | |
- name="sentry-api-0-organization-incident-comment-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/incidents/(?P<incident_identifier>[^\/]+)/$", | |
- OrganizationIncidentDetailsEndpoint.as_view(), | |
- name="sentry-api-0-organization-incident-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/incidents/$", | |
- OrganizationIncidentIndexEndpoint.as_view(), | |
- name="sentry-api-0-organization-incident-index", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/incidents/(?P<incident_identifier>[^\/]+)/seen/$", | |
- OrganizationIncidentSeenEndpoint.as_view(), | |
- name="sentry-api-0-organization-incident-seen", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/incidents/(?P<incident_identifier>[^\/]+)/subscriptions/$", | |
- OrganizationIncidentSubscriptionIndexEndpoint.as_view(), | |
- name="sentry-api-0-organization-incident-subscription-index", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/chunk-upload/$", | |
- ChunkUploadEndpoint.as_view(), | |
- name="sentry-api-0-chunk-upload", | |
- ), | |
- # Code Path Mappings | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/code-mappings/$", | |
- OrganizationCodeMappingsEndpoint.as_view(), | |
- name="sentry-api-0-organization-code-mappings", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/derive-code-mappings/$", | |
- OrganizationDeriveCodeMappingsEndpoint.as_view(), | |
- name="sentry-api-0-organization-derive-code-mappings", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/code-mappings/(?P<config_id>[^\/]+)/$", | |
- OrganizationCodeMappingDetailsEndpoint.as_view(), | |
- name="sentry-api-0-organization-code-mapping-details", | |
- ), | |
- # Codeowners | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/code-mappings/(?P<config_id>[^\/]+)/codeowners/$", | |
- OrganizationCodeMappingCodeOwnersEndpoint.as_view(), | |
- name="sentry-api-0-organization-code-mapping-codeowners", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/codeowners-associations/$", | |
- OrganizationCodeOwnersAssociationsEndpoint.as_view(), | |
- name="sentry-api-0-organization-codeowners-associations", | |
- ), | |
- # Discover | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/discover/homepage/$", | |
- DiscoverHomepageQueryEndpoint.as_view(), | |
- name="sentry-api-0-discover-homepage-query", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/discover/saved/$", | |
- DiscoverSavedQueriesEndpoint.as_view(), | |
- name="sentry-api-0-discover-saved-queries", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/discover/saved/(?P<query_id>\d+)/$", | |
- DiscoverSavedQueryDetailEndpoint.as_view(), | |
- name="sentry-api-0-discover-saved-query-detail", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/discover/saved/(?P<query_id>\d+)/visit/$", | |
- DiscoverSavedQueryVisitEndpoint.as_view(), | |
- name="sentry-api-0-discover-saved-query-visit", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/key-transactions/$", | |
- KeyTransactionEndpoint.as_view(), | |
- name="sentry-api-0-organization-key-transactions", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/key-transactions-list/$", | |
- KeyTransactionListEndpoint.as_view(), | |
- name="sentry-api-0-organization-key-transactions-list", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/related-issues/$", | |
- OrganizationEventsRelatedIssuesEndpoint.as_view(), | |
- name="sentry-api-0-organization-related-issues", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/project-transaction-threshold-override/$", | |
- ProjectTransactionThresholdOverrideEndpoint.as_view(), | |
- name="sentry-api-0-organization-project-transaction-threshold-override", | |
- ), | |
- # Dashboards | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/dashboards/$", | |
- OrganizationDashboardsEndpoint.as_view(), | |
- name="sentry-api-0-organization-dashboards", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/dashboards/widgets/$", | |
- OrganizationDashboardWidgetDetailsEndpoint.as_view(), | |
- name="sentry-api-0-organization-dashboard-widget-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/dashboards/(?P<dashboard_id>[^\/]+)/$", | |
- OrganizationDashboardDetailsEndpoint.as_view(), | |
- name="sentry-api-0-organization-dashboard-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/dashboards/(?P<dashboard_id>[^\/]+)/visit/$", | |
- OrganizationDashboardVisitEndpoint.as_view(), | |
- name="sentry-api-0-organization-dashboard-visit", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/shortids/(?P<short_id>[^\/]+)/$", | |
- ShortIdLookupEndpoint.as_view(), | |
- name="sentry-api-0-short-id-lookup", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/eventids/(?P<event_id>(?:\d+|[A-Fa-f0-9-]{32,36}))/$", | |
- EventIdLookupEndpoint.as_view(), | |
- name="sentry-api-0-event-id-lookup", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/data-scrubbing-selector-suggestions/$", | |
- DataScrubbingSelectorSuggestionsEndpoint.as_view(), | |
- name="sentry-api-0-data-scrubbing-selector-suggestions", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/slugs/$", | |
- SlugsUpdateEndpoint.as_view(), | |
- name="sentry-api-0-short-ids-update", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/access-requests/$", | |
- OrganizationAccessRequestDetailsEndpoint.as_view(), | |
- name="sentry-api-0-organization-access-requests", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/access-requests/(?P<request_id>\d+)/$", | |
- OrganizationAccessRequestDetailsEndpoint.as_view(), | |
- name="sentry-api-0-organization-access-request-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/activity/$", | |
- OrganizationActivityEndpoint.as_view(), | |
- name="sentry-api-0-organization-activity", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/api-keys/$", | |
- OrganizationApiKeyIndexEndpoint.as_view(), | |
- name="sentry-api-0-organization-api-key-index", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/api-keys/(?P<api_key_id>[^\/]+)/$", | |
- OrganizationApiKeyDetailsEndpoint.as_view(), | |
- name="sentry-api-0-organization-api-key-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/audit-logs/$", | |
- OrganizationAuditLogsEndpoint.as_view(), | |
- name="sentry-api-0-organization-audit-logs", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/auth-provider/$", | |
- OrganizationAuthProviderDetailsEndpoint.as_view(), | |
- name="sentry-api-0-organization-auth-provider", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/auth-providers/$", | |
- OrganizationAuthProvidersEndpoint.as_view(), | |
- name="sentry-api-0-organization-auth-providers", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/auth-provider/send-reminders/$", | |
- OrganizationAuthProviderSendRemindersEndpoint.as_view(), | |
- name="sentry-api-0-organization-auth-provider-send-reminders", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/avatar/$", | |
- OrganizationAvatarEndpoint.as_view(), | |
- name="sentry-api-0-organization-avatar", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/artifactbundle/assemble/$", | |
- OrganizationArtifactBundleAssembleEndpoint.as_view(), | |
- name="sentry-api-0-organization-artifactbundle-assemble", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/config/integrations/$", | |
- OrganizationConfigIntegrationsEndpoint.as_view(), | |
- name="sentry-api-0-organization-config-integrations", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/config/repos/$", | |
- OrganizationConfigRepositoriesEndpoint.as_view(), | |
- name="sentry-api-0-organization-config-repositories", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/sdk-updates/$", | |
- OrganizationSdkUpdatesEndpoint.as_view(), | |
- name="sentry-api-0-organization-sdk-updates", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/events/$", | |
- OrganizationEventsEndpoint.as_view(), | |
- name="sentry-api-0-organization-events", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/events/(?P<project_slug>[^\/]+):(?P<event_id>(?:\d+|[A-Fa-f0-9-]{32,36}))/$", | |
- OrganizationEventDetailsEndpoint.as_view(), | |
- name="sentry-api-0-organization-event-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/events-stats/$", | |
- OrganizationEventsStatsEndpoint.as_view(), | |
- name="sentry-api-0-organization-events-stats", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/events-geo/$", | |
- OrganizationEventsGeoEndpoint.as_view(), | |
- name="sentry-api-0-organization-events-geo", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/events-facets/$", | |
- OrganizationEventsFacetsEndpoint.as_view(), | |
- name="sentry-api-0-organization-events-facets", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/events-facets-performance/$", | |
- OrganizationEventsFacetsPerformanceEndpoint.as_view(), | |
- name="sentry-api-0-organization-events-facets-performance", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/events-facets-performance-histogram/$", | |
- OrganizationEventsFacetsPerformanceHistogramEndpoint.as_view(), | |
- name="sentry-api-0-organization-events-facets-performance-histogram", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/events-span-ops/$", | |
- OrganizationEventsSpanOpsEndpoint.as_view(), | |
- name="sentry-api-0-organization-events-span-ops", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/events-spans/$", | |
- OrganizationEventsSpansExamplesEndpoint.as_view(), | |
- name="sentry-api-0-organization-events-spans", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/events-spans-performance/$", | |
- OrganizationEventsSpansPerformanceEndpoint.as_view(), | |
- name="sentry-api-0-organization-events-spans-performance", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/events-spans-stats/$", | |
- OrganizationEventsSpansStatsEndpoint.as_view(), | |
- name="sentry-api-0-organization-events-spans-stats", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/events-meta/$", | |
- OrganizationEventsMetaEndpoint.as_view(), | |
- name="sentry-api-0-organization-events-meta", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/metrics-compatibility/$", | |
- OrganizationMetricsCompatibility.as_view(), | |
- name="sentry-api-0-organization-metrics-compatibility", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/metrics-compatibility-sums/$", | |
- OrganizationMetricsCompatibilitySums.as_view(), | |
- name="sentry-api-0-organization-metrics-compatibility-sums", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/events-histogram/$", | |
- OrganizationEventsHistogramEndpoint.as_view(), | |
- name="sentry-api-0-organization-events-histogram", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/events-spans-histogram/$", | |
- OrganizationEventsSpansHistogramEndpoint.as_view(), | |
- name="sentry-api-0-organization-events-spans-histogram", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/events-trends/$", | |
- OrganizationEventsTrendsEndpoint.as_view(), | |
- name="sentry-api-0-organization-events-trends", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/events-vitals/$", | |
- OrganizationEventsVitalsEndpoint.as_view(), | |
- name="sentry-api-0-organization-events-vitals", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/events-has-measurements/$", | |
- OrganizationEventsHasMeasurementsEndpoint.as_view(), | |
- name="sentry-api-0-organization-events-has-measurements", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/events-trends-stats/$", | |
- OrganizationEventsTrendsStatsEndpoint.as_view(), | |
- name="sentry-api-0-organization-events-trends-stats", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/events-trace-light/(?P<trace_id>(?:\d+|[A-Fa-f0-9-]{32,36}))/$", | |
- OrganizationEventsTraceLightEndpoint.as_view(), | |
- name="sentry-api-0-organization-events-trace-light", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/events-trace/(?P<trace_id>(?:\d+|[A-Fa-f0-9-]{32,36}))/$", | |
- OrganizationEventsTraceEndpoint.as_view(), | |
- name="sentry-api-0-organization-events-trace", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/events-trace-meta/(?P<trace_id>(?:\d+|[A-Fa-f0-9-]{32,36}))/$", | |
- OrganizationEventsTraceMetaEndpoint.as_view(), | |
- name="sentry-api-0-organization-events-trace-meta", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/measurements-meta/$", | |
- OrganizationMeasurementsMeta.as_view(), | |
- name="sentry-api-0-organization-measurements-meta", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/issues/$", | |
- OrganizationGroupIndexEndpoint.as_view(), | |
- name="sentry-api-0-organization-group-index", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/issues-count/$", | |
- OrganizationIssuesCountEndpoint.as_view(), | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/issues-stats/$", | |
- OrganizationGroupIndexStatsEndpoint.as_view(), | |
- name="sentry-api-0-organization-group-index-stats", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?:issues|groups)/", | |
- include(GROUP_URLS), | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/integrations/$", | |
- OrganizationIntegrationsEndpoint.as_view(), | |
- name="sentry-api-0-organization-integrations", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/integrations/(?P<integration_id>[^\/]+)/$", | |
- OrganizationIntegrationDetailsEndpoint.as_view(), | |
- name="sentry-api-0-organization-integration-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/integrations/(?P<integration_id>[^\/]+)/repos/$", | |
- OrganizationIntegrationReposEndpoint.as_view(), | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/integrations/(?P<integration_id>[^\/]+)/issues/$", | |
- OrganizationIntegrationIssuesEndpoint.as_view(), | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/integrations/(?P<integration_id>[^\/]+)/serverless-functions/$", | |
- OrganizationIntegrationServerlessFunctionsEndpoint.as_view(), | |
- name="sentry-api-0-organization-integration-serverless-functions", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/members/$", | |
- OrganizationMemberIndexEndpoint.as_view(), | |
- name="sentry-api-0-organization-member-index", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/external-users/$", | |
- ExternalUserEndpoint.as_view(), | |
- name="sentry-api-0-organization-external-user", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/external-users/(?P<external_user_id>[^\/]+)/$", | |
- ExternalUserDetailsEndpoint.as_view(), | |
- name="sentry-api-0-organization-external-user-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/integration-requests/$", | |
- OrganizationIntegrationRequestEndpoint.as_view(), | |
- name="sentry-api-0-organization-integration-request", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/invite-requests/$", | |
- OrganizationInviteRequestIndexEndpoint.as_view(), | |
- name="sentry-api-0-organization-invite-request-index", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/invite-requests/(?P<member_id>[^\/]+)/$", | |
- OrganizationInviteRequestDetailsEndpoint.as_view(), | |
- name="sentry-api-0-organization-invite-request-detail", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/monitors/$", | |
- OrganizationMonitorsEndpoint.as_view(), | |
- name="sentry-api-0-organization-monitors", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/monitors/(?P<monitor_id>[^\/]+)/$", | |
- OrganizationMonitorDetailsEndpoint.as_view(), | |
- name="sentry-api-0-organization-monitor-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/monitors/(?P<monitor_id>[^\/]+)/stats/$", | |
- OrganizationMonitorStatsEndpoint.as_view(), | |
- name="sentry-api-0-organization-monitor-stats", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/monitors/(?P<monitor_id>[^\/]+)/checkins/(?P<checkin_id>[^\/]+)/attachment/$", | |
- OrganizationMonitorCheckInAttachmentEndpoint.as_view(), | |
- name="sentry-api-0-organization-monitor-check-in-attachment", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/pinned-searches/$", | |
- OrganizationPinnedSearchEndpoint.as_view(), | |
- name="sentry-api-0-organization-pinned-searches", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/recent-searches/$", | |
- OrganizationRecentSearchesEndpoint.as_view(), | |
- name="sentry-api-0-organization-recent-searches", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/searches/(?P<search_id>[^\/]+)/$", | |
- OrganizationSearchDetailsEndpoint.as_view(), | |
- name="sentry-api-0-organization-search-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/searches/$", | |
- OrganizationSearchesEndpoint.as_view(), | |
- name="sentry-api-0-organization-searches", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/sessions/$", | |
- OrganizationSessionsEndpoint.as_view(), | |
- name="sentry-api-0-organization-sessions", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/users/issues/$", | |
- OrganizationUserIssuesSearchEndpoint.as_view(), | |
- name="sentry-api-0-organization-issue-search", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/releases/(?P<version>[^/]+)/resolved/$", | |
- OrganizationIssuesResolvedInReleaseEndpoint.as_view(), | |
- name="sentry-api-0-organization-release-resolved", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/members/(?P<member_id>[^\/]+)/$", | |
- OrganizationMemberDetailsEndpoint.as_view(), | |
- name="sentry-api-0-organization-member-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/members/(?P<member_id>[^\/]+)/unreleased-commits/$", | |
- OrganizationMemberUnreleasedCommitsEndpoint.as_view(), | |
- name="sentry-api-0-organization-member-unreleased-commits", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/members/(?P<member_id>[^\/]+)/teams/(?P<team_slug>[^\/]+)/$", | |
- OrganizationMemberTeamDetailsEndpoint.as_view(), | |
- name="sentry-api-0-organization-member-team-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/onboarding-continuation-email/$", | |
- OrganizationOnboardingContinuationEmail.as_view(), | |
- name="sentry-api-0-organization-onboarding-continuation-email", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/processingissues/$", | |
- OrganizationProcessingIssuesEndpoint.as_view(), | |
- name="sentry-api-0-organization-processing-issues", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/projects/$", | |
- OrganizationProjectsEndpoint.as_view(), | |
- name="sentry-api-0-organization-projects", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/projects-count/$", | |
- OrganizationProjectsCountEndpoint.as_view(), | |
- name="sentry-api-0-organization-projects-count", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/sent-first-event/$", | |
- OrganizationProjectsSentFirstEventEndpoint.as_view(), | |
- name="sentry-api-0-organization-sent-first-event", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/repos/$", | |
- OrganizationRepositoriesEndpoint.as_view(), | |
- name="sentry-api-0-organization-repositories", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/repos/(?P<repo_id>[^\/]+)/$", | |
- OrganizationRepositoryDetailsEndpoint.as_view(), | |
- name="sentry-api-0-organization-repository-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/repos/(?P<repo_id>[^\/]+)/commits/$", | |
- OrganizationRepositoryCommitsEndpoint.as_view(), | |
- name="sentry-api-0-organization-repository-commits", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/plugins/$", | |
- OrganizationPluginsEndpoint.as_view(), | |
- name="sentry-api-0-organization-plugins", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/plugins/configs/$", | |
- OrganizationPluginsConfigsEndpoint.as_view(), | |
- name="sentry-api-0-organization-plugins-configs", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/releases/$", | |
- OrganizationReleasesEndpoint.as_view(), | |
- name="sentry-api-0-organization-releases", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/releases/stats/$", | |
- OrganizationReleasesStatsEndpoint.as_view(), | |
- name="sentry-api-0-organization-releases-stats", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/releases/(?P<version>[^/]+)/$", | |
- OrganizationReleaseDetailsEndpoint.as_view(), | |
- name="sentry-api-0-organization-release-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/releases/(?P<version>[^/]+)/meta/$", | |
- OrganizationReleaseMetaEndpoint.as_view(), | |
- name="sentry-api-0-organization-release-meta", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/releases/(?P<version>[^/]+)/assemble/$", | |
- OrganizationReleaseAssembleEndpoint.as_view(), | |
- name="sentry-api-0-organization-release-assemble", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/releases/(?P<version>[^/]+)/files/$", | |
- OrganizationReleaseFilesEndpoint.as_view(), | |
- name="sentry-api-0-organization-release-files", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/releases/(?P<version>[^/]+)/files/(?P<file_id>[^/]+)/$", | |
- OrganizationReleaseFileDetailsEndpoint.as_view(), | |
- name="sentry-api-0-organization-release-file-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/releases/(?P<version>[^/]+)/commitfiles/$", | |
- CommitFileChangeEndpoint.as_view(), | |
- name="sentry-api-0-release-commitfilechange", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/releases/(?P<version>[^/]+)/deploys/$", | |
- ReleaseDeploysEndpoint.as_view(), | |
- name="sentry-api-0-organization-release-deploys", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/releases/(?P<version>[^/]+)/commits/$", | |
- OrganizationReleaseCommitsEndpoint.as_view(), | |
- name="sentry-api-0-organization-release-commits", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/releases/(?P<version>[^/]+)/previous-with-commits/$", | |
- OrganizationReleasePreviousCommitsEndpoint.as_view(), | |
- name="sentry-api-0-organization-release-previous-with-commits", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/user-feedback/$", | |
- OrganizationUserReportsEndpoint.as_view(), | |
- name="sentry-api-0-organization-user-feedback", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/user-teams/$", | |
- OrganizationUserTeamsEndpoint.as_view(), | |
- name="sentry-api-0-organization-user-teams", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/users/$", | |
- OrganizationUsersEndpoint.as_view(), | |
- name="sentry-api-0-organization-users", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/users/(?P<user_id>[^\/]+)/$", | |
- OrganizationUserDetailsEndpoint.as_view(), | |
- name="sentry-api-0-organization-user-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/sentry-app-installations/$", | |
- SentryAppInstallationsEndpoint.as_view(), | |
- name="sentry-api-0-sentry-app-installations", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/sentry-apps/$", | |
- OrganizationSentryAppsEndpoint.as_view(), | |
- name="sentry-api-0-organization-sentry-apps", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/stats/$", | |
- OrganizationStatsEndpoint.as_view(), | |
- name="sentry-api-0-organization-stats", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/stats_v2/$", | |
- OrganizationStatsEndpointV2.as_view(), | |
- name="sentry-api-0-organization-stats-v2", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/teams/$", | |
- OrganizationTeamsEndpoint.as_view(), | |
- name="sentry-api-0-organization-teams", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/tags/$", | |
- OrganizationTagsEndpoint.as_view(), | |
- name="sentry-api-0-organization-tags", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/tags/(?P<key>[^/]+)/values/$", | |
- OrganizationTagKeyValuesEndpoint.as_view(), | |
- name="sentry-api-0-organization-tagkey-values", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/onboarding-tasks/$", | |
- OrganizationOnboardingTaskEndpoint.as_view(), | |
- name="sentry-api-0-organization-onboardingtasks", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/environments/$", | |
- OrganizationEnvironmentsEndpoint.as_view(), | |
- name="sentry-api-0-organization-environments", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/broadcasts/$", | |
- BroadcastIndexEndpoint.as_view(), | |
- name="sentry-api-0-organization-broadcasts", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/join-request/$", | |
- OrganizationJoinRequestEndpoint.as_view(), | |
- name="sentry-api-0-organization-join-request", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/transaction-anomaly-detection/$", | |
- OrganizationTransactionAnomalyDetectionEndpoint.as_view(), | |
- name="sentry-api-0-organization-transaction-anomaly-detection", | |
- ), | |
- # relay usage | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/relay_usage/$", | |
- OrganizationRelayUsage.as_view(), | |
- name="sentry-api-0-organization-relay-usage", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/replays/$", | |
- OrganizationReplayIndexEndpoint.as_view(), | |
- name="sentry-api-0-organization-replay-index", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/replay-count/$", | |
- OrganizationReplayCountEndpoint.as_view(), | |
- name="sentry-api-0-organization-replay-count", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/replays-events-meta/$", | |
- OrganizationReplayEventsMetaEndpoint.as_view(), | |
- name="sentry-api-0-organization-replay-events-meta", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/functions/$", | |
- OrganizationSentryFunctionEndpoint.as_view(), | |
- name="sentry-api-0-organization-sentry-functions", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/functions/(?P<function_slug>[^\/]+)/$", | |
- OrganizationSentryFunctionDetailsEndpoint.as_view(), | |
- name="sentry-api-0-organization-sentry-function-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/request-project-creation/$", | |
- OrganizationRequestProjectCreation.as_view(), | |
- name="sentry-api-0-organization-request-project-creation", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/scim/v2/", | |
- include( | |
- [ | |
- url( | |
- r"^Users$", | |
- OrganizationSCIMMemberIndex.as_view(), | |
- name="sentry-api-0-organization-scim-member-index", | |
- ), | |
- url( | |
- r"^Users/(?P<member_id>\d+)$", | |
- OrganizationSCIMMemberDetails.as_view(), | |
- name="sentry-api-0-organization-scim-member-details", | |
- ), | |
- url( | |
- r"^Groups$", | |
- OrganizationSCIMTeamIndex.as_view(), | |
- name="sentry-api-0-organization-scim-team-index", | |
- ), | |
- url( | |
- r"^Groups/(?P<team_id>\d+)$", | |
- OrganizationSCIMTeamDetails.as_view(), | |
- name="sentry-api-0-organization-scim-team-details", | |
- ), | |
- url( | |
- r"^Schemas$", | |
- OrganizationSCIMSchemaIndex.as_view(), | |
- name="sentry-api-0-organization-scim-schema-index", | |
- ), | |
- ] | |
- ), | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^/]+)/metrics/meta/$", | |
- OrganizationMetricsEndpoint.as_view(), | |
- name="sentry-api-0-organization-metrics-index", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^/]+)/metrics/meta/(?P<metric_name>[^/]+)/$", | |
- OrganizationMetricDetailsEndpoint.as_view(), | |
- name="sentry-api-0-organization-metric-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^/]+)/metrics/data/$", | |
- OrganizationMetricsDataEndpoint.as_view(), | |
- name="sentry-api-0-organization-metrics-data", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^/]+)/metrics/tags/$", | |
- OrganizationMetricsTagsEndpoint.as_view(), | |
- name="sentry-api-0-organization-metrics-tags", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^/]+)/metrics/tags/(?P<tag_name>[^/]+)/$", | |
- OrganizationMetricsTagDetailsEndpoint.as_view(), | |
- name="sentry-api-0-organization-metrics-tag-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^/]+)/profiling/", | |
- include( | |
- [ | |
- url( | |
- r"^filters/$", | |
- OrganizationProfilingFiltersEndpoint.as_view(), | |
- name="sentry-api-0-organization-profiling-filters", | |
- ), | |
- ], | |
- ), | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^/]+)/client-state/$", | |
- ClientStateListEndpoint.as_view(), | |
- name="sentry-api-0-organization-client-state-list", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^/]+)/client-state/(?P<category>[^\/]+)/$", | |
- ClientStateEndpoint.as_view(), | |
- name="sentry-api-0-organization-client-state", | |
- ), | |
- ] | |
- ), | |
- ), | |
- # Toplevel app installs | |
- url( | |
- r"^sentry-app-installations/(?P<uuid>[^\/]+)/$", | |
- SentryAppInstallationDetailsEndpoint.as_view(), | |
- name="sentry-api-0-sentry-app-installation-details", | |
- ), | |
- url( | |
- r"^sentry-app-installations/(?P<uuid>[^\/]+)/external-requests/$", | |
- SentryAppInstallationExternalRequestsEndpoint.as_view(), | |
- name="sentry-api-0-sentry-app-installation-external-requests", | |
- ), | |
- url( | |
- r"^sentry-app-installations/(?P<uuid>[^\/]+)/external-issue-actions/$", | |
- SentryAppInstallationExternalIssueActionsEndpoint.as_view(), | |
- name="sentry-api-0-sentry-app-installation-external-issue-actions", | |
- ), | |
- url( | |
- r"^sentry-app-installations/(?P<uuid>[^\/]+)/external-issues/$", | |
- SentryAppInstallationExternalIssuesEndpoint.as_view(), | |
- name="sentry-api-0-sentry-app-installation-external-issues", | |
- ), | |
- url( | |
- r"^sentry-app-installations/(?P<uuid>[^\/]+)/external-issues/(?P<external_issue_id>[^\/]+)/$", | |
- SentryAppInstallationExternalIssueDetailsEndpoint.as_view(), | |
- name="sentry-api-0-sentry-app-installation-external-issue-details", | |
+ include(ORGANIZATION_URLS), | |
), | |
# Teams | |
url( | |
r"^teams/", | |
- include( | |
- [ | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/$", | |
- TeamDetailsEndpoint.as_view(), | |
- name="sentry-api-0-team-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/issues/old/$", | |
- TeamGroupsOldEndpoint.as_view(), | |
- name="sentry-api-0-team-oldest-issues", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/release-count/$", | |
- TeamReleaseCountEndpoint.as_view(), | |
- name="sentry-api-0-team-release-count", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/time-to-resolution/$", | |
- TeamTimeToResolutionEndpoint.as_view(), | |
- name="sentry-api-0-team-time-to-resolution", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/unresolved-issue-age/$", | |
- TeamUnresolvedIssueAgeEndpoint.as_view(), | |
- name="sentry-api-0-team-unresolved-issue-age", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/alerts-triggered/$", | |
- TeamAlertsTriggeredTotalsEndpoint.as_view(), | |
- name="sentry-api-0-team-alerts-triggered", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/alerts-triggered-index/$", | |
- TeamAlertsTriggeredIndexEndpoint.as_view(), | |
- name="sentry-api-0-team-alerts-triggered-index", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/issue-breakdown/$", | |
- TeamIssueBreakdownEndpoint.as_view(), | |
- name="sentry-api-0-team-issue-breakdown", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/all-unresolved-issues/$", | |
- TeamAllUnresolvedIssuesEndpoint.as_view(), | |
- name="sentry-api-0-team-all-unresolved-issues", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/notification-settings/$", | |
- TeamNotificationSettingsDetailsEndpoint.as_view(), | |
- name="sentry-api-0-team-notification-settings", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/members/$", | |
- TeamMembersEndpoint.as_view(), | |
- name="sentry-api-0-team-members", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/projects/$", | |
- TeamProjectsEndpoint.as_view(), | |
- name="sentry-api-0-team-project-index", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/stats/$", | |
- TeamStatsEndpoint.as_view(), | |
- name="sentry-api-0-team-stats", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/avatar/$", | |
- TeamAvatarEndpoint.as_view(), | |
- name="sentry-api-0-team-avatar", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/external-teams/$", | |
- ExternalTeamEndpoint.as_view(), | |
- name="sentry-api-0-external-team", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<team_slug>[^\/]+)/external-teams/(?P<external_team_id>[^\/]+)/$", | |
- ExternalTeamDetailsEndpoint.as_view(), | |
- name="sentry-api-0-external-team-details", | |
- ), | |
- ] | |
- ), | |
+ include(TEAM_URLS), | |
), | |
# Projects | |
url( | |
r"^projects/", | |
- include( | |
- [ | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/rule-conditions/$", | |
- ProjectAgnosticRuleConditionsEndpoint.as_view(), | |
- name="sentry-api-0-project-agnostic-rule-conditions", | |
- ), | |
- url( | |
- r"^$", | |
- ProjectIndexEndpoint.as_view(), | |
- name="sentry-api-0-projects", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/$", | |
- ProjectDetailsEndpoint.as_view(), | |
- name="sentry-api-0-project-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/alert-rules/(?P<alert_rule_id>[^\/]+)/$", | |
- ProjectAlertRuleDetailsEndpoint.as_view(), | |
- name="sentry-api-0-project-alert-rule-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/alert-rules/$", | |
- ProjectAlertRuleIndexEndpoint.as_view(), | |
- name="sentry-api-0-project-alert-rules", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/alert-rule-task/(?P<task_uuid>[^\/]+)/$", | |
- ProjectAlertRuleTaskDetailsEndpoint.as_view(), | |
- name="sentry-api-0-project-alert-rule-task-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/combined-rules/$", | |
- ProjectCombinedRuleIndexEndpoint.as_view(), | |
- name="sentry-api-0-project-combined-rules", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/avatar/$", | |
- ProjectAvatarEndpoint.as_view(), | |
- name="sentry-api-0-project-avatar", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/create-sample/$", | |
- ProjectCreateSampleEndpoint.as_view(), | |
- name="sentry-api-0-project-create-sample", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/create-sample-transaction/$", | |
- ProjectCreateSampleTransactionEndpoint.as_view(), | |
- name="sentry-api-0-project-create-sample-transaction", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/docs/(?P<platform>[\w-]+)/$", | |
- ProjectDocsPlatformEndpoint.as_view(), | |
- name="sentry-api-0-project-docs-platform", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/environments/$", | |
- ProjectEnvironmentsEndpoint.as_view(), | |
- name="sentry-api-0-project-environments", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/environments/(?P<environment>[^/]+)/$", | |
- ProjectEnvironmentDetailsEndpoint.as_view(), | |
- name="sentry-api-0-project-environment-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/platforms/$", | |
- ProjectPlatformsEndpoint.as_view(), | |
- name="sentry-api-0-project-platform-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/events/$", | |
- ProjectEventsEndpoint.as_view(), | |
- name="sentry-api-0-project-events", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/events/(?P<event_id>(?:\d+|[A-Fa-f0-9]{32}))/$", | |
- ProjectEventDetailsEndpoint.as_view(), | |
- name="sentry-api-0-project-event-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/events/(?P<event_id>[\w-]+)/grouping-info/$", | |
- EventGroupingInfoEndpoint.as_view(), | |
- name="sentry-api-0-event-grouping-info", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/events/(?P<event_id>[\w-]+)/apple-crash-report$", | |
- EventAppleCrashReportEndpoint.as_view(), | |
- name="sentry-api-0-event-apple-crash-report", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/events/(?P<event_id>[\w-]+)/attachments/$", | |
- EventAttachmentsEndpoint.as_view(), | |
- name="sentry-api-0-event-attachments", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/events/(?P<event_id>[\w-]+)/reprocessable/$", | |
- EventReprocessableEndpoint.as_view(), | |
- name="sentry-api-0-event-attachments", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/events/(?P<event_id>[\w-]+)/attachments/(?P<attachment_id>[\w-]+)/$", | |
- EventAttachmentDetailsEndpoint.as_view(), | |
- name="sentry-api-0-event-attachment-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/events/(?P<event_id>[\w-]+)/committers/$", | |
- EventFileCommittersEndpoint.as_view(), | |
- name="sentry-api-0-event-file-committers", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/events/(?P<event_id>[\w-]+)/json/$", | |
- EventJsonEndpoint.as_view(), | |
- name="sentry-api-0-event-json", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/events/(?P<event_id>[\w-]+)/owners/$", | |
- EventOwnersEndpoint.as_view(), | |
- name="sentry-api-0-event-owners", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/events/(?P<event_id>[\w-]+)/source-map-debug/$", | |
- SourceMapDebugEndpoint.as_view(), | |
- name="sentry-api-0-event-source-map-debug", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/files/dsyms/$", | |
- DebugFilesEndpoint.as_view(), | |
- name="sentry-api-0-dsym-files", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/files/source-maps/$", | |
- SourceMapsEndpoint.as_view(), | |
- name="sentry-api-0-source-maps", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/files/difs/assemble/$", | |
- DifAssembleEndpoint.as_view(), | |
- name="sentry-api-0-assemble-dif-files", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/files/dsyms/unknown/$", | |
- UnknownDebugFilesEndpoint.as_view(), | |
- name="sentry-api-0-unknown-dsym-files", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/files/dsyms/associate/$", | |
- AssociateDSymFilesEndpoint.as_view(), | |
- name="sentry-api-0-associate-dsym-files", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/filters/$", | |
- ProjectFiltersEndpoint.as_view(), | |
- name="sentry-api-0-project-filters", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/filters/(?P<filter_id>[\w-]+)/$", | |
- ProjectFilterDetailsEndpoint.as_view(), | |
- name="sentry-api-0-project-filters", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/hooks/$", | |
- ProjectServiceHooksEndpoint.as_view(), | |
- name="sentry-api-0-service-hooks", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/hooks/(?P<hook_id>[^\/]+)/$", | |
- ProjectServiceHookDetailsEndpoint.as_view(), | |
- name="sentry-api-0-project-service-hook-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/hooks/(?P<hook_id>[^\/]+)/stats/$", | |
- ProjectServiceHookStatsEndpoint.as_view(), | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/(?:issues|groups)/$", | |
- ProjectGroupIndexEndpoint.as_view(), | |
- name="sentry-api-0-project-group-index", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/(?:issues|groups)/stats/$", | |
- ProjectGroupStatsEndpoint.as_view(), | |
- name="sentry-api-0-project-group-stats", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/keys/$", | |
- ProjectKeysEndpoint.as_view(), | |
- name="sentry-api-0-project-keys", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/keys/(?P<key_id>[^\/]+)/$", | |
- ProjectKeyDetailsEndpoint.as_view(), | |
- name="sentry-api-0-project-key-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/keys/(?P<key_id>[^\/]+)/stats/$", | |
- ProjectKeyStatsEndpoint.as_view(), | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^/]+)/(?P<project_slug>[^/]+)/members/$", | |
- ProjectMemberIndexEndpoint.as_view(), | |
- name="sentry-api-0-project-member-index", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/releases/$", | |
- ProjectReleasesEndpoint.as_view(), | |
- name="sentry-api-0-project-releases", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/commits/$", | |
- ProjectCommitsEndpoint.as_view(), | |
- name="sentry-api-0-project-commits", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/releases/token/$", | |
- ProjectReleasesTokenEndpoint.as_view(), | |
- name="sentry-api-0-project-releases-token", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/releases/completion/$", | |
- ProjectReleaseSetupCompletionEndpoint.as_view(), | |
- name="sentry-api-0-project-releases-completion-status", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/releases/(?P<version>[^/]+)/$", | |
- ProjectReleaseDetailsEndpoint.as_view(), | |
- name="sentry-api-0-project-release-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/releases/(?P<version>[^/]+)/commits/$", | |
- ProjectReleaseCommitsEndpoint.as_view(), | |
- name="sentry-api-0-project-release-commits", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/releases/(?P<version>[^/]+)/repositories/$", | |
- ProjectReleaseRepositories.as_view(), | |
- name="sentry-api-0-project-release-repositories", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/releases/(?P<version>[^/]+)/resolved/$", | |
- ProjectIssuesResolvedInReleaseEndpoint.as_view(), | |
- name="sentry-api-0-project-release-resolved", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/releases/(?P<version>[^/]+)/stats/$", | |
- ProjectReleaseStatsEndpoint.as_view(), | |
- name="sentry-api-0-project-release-stats", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/releases/(?P<version>[^/]+)/files/$", | |
- ProjectReleaseFilesEndpoint.as_view(), | |
- name="sentry-api-0-project-release-files", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/releases/(?P<version>[^/]+)/files/(?P<file_id>[^/]+)/$", | |
- ProjectReleaseFileDetailsEndpoint.as_view(), | |
- name="sentry-api-0-project-release-file-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/rules/$", | |
- ProjectRulesEndpoint.as_view(), | |
- name="sentry-api-0-project-rules", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^/]+)/(?P<project_slug>[^\/]+)/replays/(?P<replay_id>[\w-]+)/$", | |
- ProjectReplayDetailsEndpoint.as_view(), | |
- name="sentry-api-0-project-replay-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^/]+)/(?P<project_slug>[^\/]+)/replays/(?P<replay_id>[\w-]+)/recording-segments/$", | |
- ProjectReplayRecordingSegmentIndexEndpoint.as_view(), | |
- name="sentry-api-0-project-replay-recording-segment-index", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^/]+)/(?P<project_slug>[^\/]+)/replays/(?P<replay_id>[\w-]+)/recording-segments/(?P<segment_id>\d+)/$", | |
- ProjectReplayRecordingSegmentDetailsEndpoint.as_view(), | |
- name="sentry-api-0-project-replay-recording-segment-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/rules/configuration/$", | |
- ProjectRulesConfigurationEndpoint.as_view(), | |
- name="sentry-api-0-project-rules-configuration", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/rules/(?P<rule_id>[^\/]+)/$", | |
- ProjectRuleDetailsEndpoint.as_view(), | |
- name="sentry-api-0-project-rule-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/rules/preview$", | |
- ProjectRulePreviewEndpoint.as_view(), | |
- name="sentry-api-0-project-rule-preview", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/rule-actions/$", | |
- ProjectRuleActionsEndpoint.as_view(), | |
- name="sentry-api-0-project-rule-actions", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/rules/(?P<rule_id>[^\/]+)/group-history/$", | |
- ProjectRuleGroupHistoryIndexEndpoint.as_view(), | |
- name="sentry-api-0-project-rule-group-history-index", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/rules/(?P<rule_id>[^\/]+)/stats/$", | |
- ProjectRuleStatsIndexEndpoint.as_view(), | |
- name="sentry-api-0-project-rule-stats-index", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/rule-task/(?P<task_uuid>[^\/]+)/$", | |
- ProjectRuleTaskDetailsEndpoint.as_view(), | |
- name="sentry-api-0-project-rule-task-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/stats/$", | |
- ProjectStatsEndpoint.as_view(), | |
- name="sentry-api-0-project-stats", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/tags/$", | |
- ProjectTagsEndpoint.as_view(), | |
- name="sentry-api-0-project-tags", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/tags/(?P<key>[^/]+)/$", | |
- ProjectTagKeyDetailsEndpoint.as_view(), | |
- name="sentry-api-0-project-tagkey-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/tags/(?P<key>[^/]+)/values/$", | |
- ProjectTagKeyValuesEndpoint.as_view(), | |
- name="sentry-api-0-project-tagkey-values", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/teams/$", | |
- ProjectTeamsEndpoint.as_view(), | |
- name="sentry-api-0-project-teams", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/teams/(?P<team_slug>[^\/]+)/$", | |
- ProjectTeamDetailsEndpoint.as_view(), | |
- name="sentry-api-0-project-team-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/transfer/$", | |
- ProjectTransferEndpoint.as_view(), | |
- name="sentry-api-0-project-transfer", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/users/$", | |
- ProjectUsersEndpoint.as_view(), | |
- name="sentry-api-0-project-users", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/users/(?P<user_hash>[^/]+)/$", | |
- ProjectUserDetailsEndpoint.as_view(), | |
- name="sentry-api-0-project-user-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/(?:user-feedback|user-reports)/$", | |
- ProjectUserReportsEndpoint.as_view(), | |
- name="sentry-api-0-project-user-reports", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/user-stats/$", | |
- ProjectUserStatsEndpoint.as_view(), | |
- name="sentry-api-0-project-userstats", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/processingissues/$", | |
- ProjectProcessingIssuesEndpoint.as_view(), | |
- name="sentry-api-0-project-processing-issues", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/processingissues/fix$", | |
- ProjectProcessingIssuesFixEndpoint.as_view(), | |
- name="sentry-api-0-project-fix-processing-issues", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/reprocessing/$", | |
- ProjectReprocessingEndpoint.as_view(), | |
- name="sentry-api-0-project-reprocessing", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/processingissues/discard/$", | |
- ProjectProcessingIssuesDiscardEndpoint.as_view(), | |
- name="sentry-api-0-project-discard-processing-issues", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/ownership/$", | |
- ProjectOwnershipEndpoint.as_view(), | |
- name="sentry-api-0-project-ownership", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/codeowners/$", | |
- ProjectCodeOwnersEndpoint.as_view(), | |
- name="sentry-api-0-project-codeowners", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/codeowners/(?P<codeowners_id>[^\/]+)/$", | |
- ProjectCodeOwnersDetailsEndpoint.as_view(), | |
- name="sentry-api-0-project-codeowners-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/transaction-threshold/configure/$", | |
- ProjectTransactionThresholdEndpoint.as_view(), | |
- name="sentry-api-0-project-transaction-threshold", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/performance-issues/configure/$", | |
- ProjectPerformanceIssueSettingsEndpoint.as_view(), | |
- name="sentry-api-0-project-performance-issue-settings", | |
- ), | |
- # Load plugin project urls | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/plugins/$", | |
- ProjectPluginsEndpoint.as_view(), | |
- name="sentry-api-0-project-plugins", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/plugins/(?P<plugin_id>[^\/]+)/$", | |
- ProjectPluginDetailsEndpoint.as_view(), | |
- name="sentry-api-0-project-plugin-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/cluster-transaction-names/$", | |
- ProjectTransactionNamesCluster.as_view(), | |
- name="sentry-api-0-organization-project-cluster-transaction-names", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/plugins?/", | |
- include("sentry.plugins.base.project_api_urls"), | |
- ), | |
- # Tombstone | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/tombstones/$", | |
- GroupTombstoneEndpoint.as_view(), | |
- name="sentry-api-0-group-tombstones", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/tombstones/(?P<tombstone_id>\d+)/$", | |
- GroupTombstoneDetailsEndpoint.as_view(), | |
- name="sentry-api-0-group-tombstone-details", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/stacktrace-link/$", | |
- ProjectStacktraceLinkEndpoint.as_view(), | |
- name="sentry-api-0-project-stacktrace-link", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/repo-path-parsing/$", | |
- ProjectRepoPathParsingEndpoint.as_view(), | |
- name="sentry-api-0-project-repo-path-parsing", | |
- ), | |
- # Grouping configs | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/grouping-configs/$", | |
- ProjectGroupingConfigsEndpoint.as_view(), | |
- name="sentry-api-0-project-grouping-configs", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/appstoreconnect/$", | |
- AppStoreConnectCreateCredentialsEndpoint.as_view(), | |
- name="sentry-api-0-project-appstoreconnect-credentials-create", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/appstoreconnect/apps/$", | |
- AppStoreConnectAppsEndpoint.as_view(), | |
- name="sentry-api-0-project-appstoreconnect-apps", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/appstoreconnect/status/$", | |
- AppStoreConnectStatusEndpoint.as_view(), | |
- name="sentry-api-0-project-appstoreconnect-status", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/appstoreconnect/(?P<credentials_id>[^\/]+)/$", | |
- AppStoreConnectUpdateCredentialsEndpoint.as_view(), | |
- name="sentry-api-0-project-appstoreconnect-credentials-update", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/appstoreconnect/(?P<credentials_id>[^\/]+)/refresh/$", | |
- AppStoreConnectRefreshEndpoint.as_view(), | |
- name="sentry-api-0-project-appstoreconnect-refresh", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/profiling/functions/$", | |
- ProjectProfilingFunctionsEndpoint.as_view(), | |
- name="sentry-api-0-project-profiling-functions", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/profiling/profiles/(?P<profile_id>(?:\d+|[A-Fa-f0-9-]{32,36}))/$", | |
- ProjectProfilingProfileEndpoint.as_view(), | |
- name="sentry-api-0-project-profiling-profile", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/profiling/raw_profiles/(?P<profile_id>(?:\d+|[A-Fa-f0-9-]{32,36}))/$", | |
- ProjectProfilingRawProfileEndpoint.as_view(), | |
- name="sentry-api-0-project-profiling-raw-profile", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/profiling/flamegraph/$", | |
- ProjectProfilingFlamegraphEndpoint.as_view(), | |
- name="sentry-api-0-project-profiling-flamegraph", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/profiling/transactions/(?P<transaction_id>(?:\d+|[A-Fa-f0-9-]{32,36}))/$", | |
- ProjectProfilingTransactionIDProfileIDEndpoint.as_view(), | |
- name="sentry-api-0-project-profiling-transactions", | |
- ), | |
- url( | |
- r"^(?P<organization_slug>[^\/]+)/(?P<project_slug>[^\/]+)/dynamic-sampling/distribution/$", | |
- ProjectDynamicSamplingDistributionEndpoint.as_view(), | |
- name="sentry-api-0-project-dynamic-sampling-distribution", | |
- ), | |
- ] | |
- ), | |
+ include(PROJECT_URLS), | |
+ ), | |
+ # Toplevel app installs | |
+ url( | |
+ r"^sentry-app-installations/", | |
+ include(SENTRY_APP_INSTALLATION_URLS), | |
+ ), | |
+ # Groups / Issues | |
+ url( | |
+ r"^(?:issues|groups)/", | |
+ include(GROUP_URLS), | |
), | |
# Profiling - This is a temporary endpoint to easily go from a project id + profile id to a flamechart. | |
# It will be removed in the near future. | |
@@ -2434,11 +2562,6 @@ urlpatterns = [ | |
ProjectProfilingEventEndpoint.as_view(), | |
name="sentry-api-0-profiling-project-profile", | |
), | |
- # Groups | |
- url( | |
- r"^(?:issues|groups)/", | |
- include(GROUP_URLS), | |
- ), | |
# TODO: include in the /organizations/ route tree + remove old dupe once hybrid cloud launches | |
url( | |
r"^organizations/(?P<organization_slug>[^\/]+)/issues/(?P<issue_id>[^\/]+)/participants/$", | |
@@ -2463,74 +2586,23 @@ urlpatterns = [ | |
), | |
# Sentry Apps | |
url( | |
- r"^sentry-apps/$", | |
- SentryAppsEndpoint.as_view(), | |
- name="sentry-api-0-sentry-apps", | |
+ r"^sentry-apps/", | |
+ include(SENTRY_APP_URLS), | |
), | |
url( | |
r"^sentry-apps-stats/$", | |
SentryAppsStatsEndpoint.as_view(), | |
name="sentry-api-0-sentry-apps-stats", | |
), | |
- url( | |
- r"^sentry-apps/(?P<sentry_app_slug>[^\/]+)/$", | |
- SentryAppDetailsEndpoint.as_view(), | |
- name="sentry-api-0-sentry-app-details", | |
- ), | |
- url( | |
- r"^sentry-apps/(?P<sentry_app_slug>[^\/]+)/features/$", | |
- SentryAppFeaturesEndpoint.as_view(), | |
- name="sentry-api-0-sentry-app-features", | |
- ), | |
- url( | |
- r"^sentry-apps/(?P<sentry_app_slug>[^\/]+)/components/$", | |
- SentryAppComponentsEndpoint.as_view(), | |
- name="sentry-api-0-sentry-app-components", | |
- ), | |
- url( | |
- r"^sentry-apps/(?P<sentry_app_slug>[^\/]+)/avatar/$", | |
- SentryAppAvatarEndpoint.as_view(), | |
- name="sentry-api-0-sentry-app-avatar", | |
- ), | |
- url( | |
- r"^sentry-apps/(?P<sentry_app_slug>[^\/]+)/api-tokens/$", | |
- SentryInternalAppTokensEndpoint.as_view(), | |
- name="sentry-api-0-sentry-internal-app-tokens", | |
- ), | |
- url( | |
- r"^sentry-apps/(?P<sentry_app_slug>[^\/]+)/api-tokens/(?P<api_token>[^\/]+)/$", | |
- SentryInternalAppTokenDetailsEndpoint.as_view(), | |
- name="sentry-api-0-sentry-internal-app-token-details", | |
- ), | |
- url( | |
- r"^sentry-apps/(?P<sentry_app_slug>[^\/]+)/stats/$", | |
- SentryAppStatsEndpoint.as_view(), | |
- name="sentry-api-0-sentry-app-stats", | |
- ), | |
- url( | |
- r"^sentry-apps/(?P<sentry_app_slug>[^\/]+)/requests/$", | |
- SentryAppRequestsEndpoint.as_view(), | |
- name="sentry-api-0-sentry-app-requests", | |
- ), | |
- url( | |
- r"^sentry-apps/(?P<sentry_app_slug>[^\/]+)/interaction/$", | |
- SentryAppInteractionEndpoint.as_view(), | |
- name="sentry-api-0-sentry-app-interaction", | |
- ), | |
- url( | |
- r"^organizations/(?P<organization_slug>[^\/]+)/sentry-app-components/$", | |
- OrganizationSentryAppComponentsEndpoint.as_view(), | |
- name="sentry-api-0-org-sentry-app-components", | |
- ), | |
url( | |
r"^sentry-app-installations/(?P<uuid>[^\/]+)/authorizations/$", | |
SentryAppAuthorizationsEndpoint.as_view(), | |
name="sentry-api-0-sentry-app-authorizations", | |
), | |
url( | |
- r"^sentry-apps/(?P<sentry_app_slug>[^\/]+)/publish-request/$", | |
- SentryAppPublishRequestEndpoint.as_view(), | |
- name="sentry-api-0-sentry-app-publish-request", | |
+ r"^organizations/(?P<organization_slug>[^\/]+)/sentry-app-components/$", | |
+ OrganizationSentryAppComponentsEndpoint.as_view(), | |
+ name="sentry-api-0-org-sentry-app-components", | |
), | |
# Document Integrations | |
url( | |
@@ -2572,60 +2644,6 @@ urlpatterns = [ | |
BuiltinSymbolSourcesEndpoint.as_view(), | |
name="sentry-api-0-builtin-symbol-sources", | |
), | |
- # Internal | |
- url( | |
- r"^internal/", | |
- include( | |
- [ | |
- url( | |
- r"^health/$", SystemHealthEndpoint.as_view(), name="sentry-api-0-system-health" | |
- ), | |
- url( | |
- r"^options/$", | |
- SystemOptionsEndpoint.as_view(), | |
- name="sentry-api-0-system-options", | |
- ), | |
- url( | |
- r"^beacon/$", | |
- InternalBeaconEndpoint.as_view(), | |
- name="sentry-api-0-internal-beacon", | |
- ), | |
- url( | |
- r"^quotas/$", | |
- InternalQuotasEndpoint.as_view(), | |
- ), | |
- url( | |
- r"^queue/tasks/$", | |
- InternalQueueTasksEndpoint.as_view(), | |
- ), | |
- url( | |
- r"^stats/$", | |
- InternalStatsEndpoint.as_view(), | |
- ), | |
- url( | |
- r"^warnings/$", | |
- InternalWarningsEndpoint.as_view(), | |
- ), | |
- url( | |
- r"^packages/$", | |
- InternalPackagesEndpoint.as_view(), | |
- ), | |
- url( | |
- r"^environment/$", | |
- InternalEnvironmentEndpoint.as_view(), | |
- ), | |
- url( | |
- r"^mail/$", | |
- InternalMailEndpoint.as_view(), | |
- ), | |
- url( | |
- r"^project-config/$", | |
- AdminRelayProjectConfigsEndpoint.as_view(), | |
- name="sentry-api-0-internal-project-config", | |
- ), | |
- ] | |
- ), | |
- ), | |
# Project Wizard | |
url( | |
r"^wizard/$", | |
@@ -2637,6 +2655,11 @@ urlpatterns = [ | |
SetupWizard.as_view(), | |
name="sentry-api-0-project-wizard", | |
), | |
+ # Internal | |
+ url( | |
+ r"^internal/", | |
+ include(INTERNAL_URLS), | |
+ ), | |
# Catch all | |
url( | |
r"^$", |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment