From c277c52b4e7990ef8ce62643b50441bd3328bbab Mon Sep 17 00:00:00 2001 From: mdtro Date: Fri, 27 Oct 2023 12:54:13 -0500 Subject: [PATCH 1/7] feat: add name and token_last_characters to apitoken --- migrations_lockfile.txt | 2 +- .../0584_apitoken_add_name_and_last_chars.py | 36 +++++++++++++++++++ src/sentry/models/apitoken.py | 13 ++++++- 3 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 src/sentry/migrations/0584_apitoken_add_name_and_last_chars.py diff --git a/migrations_lockfile.txt b/migrations_lockfile.txt index 1f0fbd74e97d9c..860d6ec82e78ba 100644 --- a/migrations_lockfile.txt +++ b/migrations_lockfile.txt @@ -9,5 +9,5 @@ feedback: 0003_feedback_add_env hybridcloud: 0008_add_externalactorreplica nodestore: 0002_nodestore_no_dictfield replays: 0003_add_size_to_recording_segment -sentry: 0583_add_early_adopter_to_organization_mapping +sentry: 0584_apitoken_add_name_and_last_chars social_auth: 0002_default_auto_field diff --git a/src/sentry/migrations/0584_apitoken_add_name_and_last_chars.py b/src/sentry/migrations/0584_apitoken_add_name_and_last_chars.py new file mode 100644 index 00000000000000..258ee772074b0c --- /dev/null +++ b/src/sentry/migrations/0584_apitoken_add_name_and_last_chars.py @@ -0,0 +1,36 @@ +# Generated by Django 3.2.20 on 2023-10-27 17:53 + +from django.db import migrations, models + +from sentry.new_migrations.migrations import CheckedMigration + + +class Migration(CheckedMigration): + # This flag is used to mark that a migration shouldn't be automatically run in production. For + # the most part, this should only be used for operations where it's safe to run the migration + # after your code has deployed. So this should not be used for most operations that alter the + # schema of a table. + # Here are some things that make sense to mark as dangerous: + # - Large data migrations. Typically we want these to be run manually by ops so that they can + # be monitored and not block the deploy for a long period of time while they run. + # - Adding indexes to large tables. Since this can take a long time, we'd generally prefer to + # have ops run this and not block the deploy. Note that while adding an index is a schema + # change, it's completely safe to run the operation after the code has deployed. + is_dangerous = False + + dependencies = [ + ("sentry", "0583_add_early_adopter_to_organization_mapping"), + ] + + operations = [ + migrations.AddField( + model_name="apitoken", + name="name", + field=models.CharField(max_length=255, null=True), + ), + migrations.AddField( + model_name="apitoken", + name="token_last_characters", + field=models.CharField(max_length=4, null=True), + ), + ] diff --git a/src/sentry/models/apitoken.py b/src/sentry/models/apitoken.py index 3c71b85170c878..6a68f5c511e0d9 100644 --- a/src/sentry/models/apitoken.py +++ b/src/sentry/models/apitoken.py @@ -2,7 +2,7 @@ import secrets from datetime import timedelta -from typing import Collection, Optional, Tuple +from typing import Any, Collection, Optional, Tuple from django.db import models, router, transaction from django.utils import timezone @@ -37,7 +37,9 @@ class ApiToken(ReplicatedControlModel, HasApiScopes): # users can generate tokens without being application-bound application = FlexibleForeignKey("sentry.ApiApplication", null=True) user = FlexibleForeignKey("sentry.User") + name = models.CharField(max_length=255, null=True) token = models.CharField(max_length=64, unique=True, default=generate_token) + token_last_characters = models.CharField(max_length=4, null=True) refresh_token = models.CharField(max_length=64, unique=True, null=True, default=generate_token) expires_at = models.DateTimeField(null=True, default=default_expiration) date_added = models.DateTimeField(default=timezone.now) @@ -53,6 +55,15 @@ class Meta: def __str__(self): return force_str(self.token) + def save(self, **kwargs: Any) -> None: + # when a new ApiToken is created we take the last four characters of the token + # and save them in the `token_last_characters` field so users can identify + # tokens in the UI where they're mostly obfuscated + token_last_characters = self.token[-4:] + self.token_last_characters = token_last_characters + + return super().save(**kwargs) + def outbox_region_names(self) -> Collection[str]: return list(find_all_region_names()) From ed40e03d1a0354f6b6483209fc1ede9380238403 Mon Sep 17 00:00:00 2001 From: mdtro Date: Fri, 27 Oct 2023 13:22:58 -0500 Subject: [PATCH 2/7] add test for migration --- ...t_0584_apitoken_add_name_and_last_chars.py | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 tests/sentry/migrations/test_0584_apitoken_add_name_and_last_chars.py diff --git a/tests/sentry/migrations/test_0584_apitoken_add_name_and_last_chars.py b/tests/sentry/migrations/test_0584_apitoken_add_name_and_last_chars.py new file mode 100644 index 00000000000000..2a67358798fc11 --- /dev/null +++ b/tests/sentry/migrations/test_0584_apitoken_add_name_and_last_chars.py @@ -0,0 +1,30 @@ +from django.db import router + +from sentry.silo import unguarded_write +from sentry.testutils.cases import TestMigrations + + +class NameLastCharsApiTokenMigrationTest(TestMigrations): + migrate_from = "0583_add_early_adopter_to_organization_mapping" + migrate_to = "0584_apitoken_add_name_and_last_chars" + + def setUp(self): + from sentry.models.apitoken import ApiToken + + with unguarded_write(using=router.db_for_write(ApiToken)): + super().setUp() + + def setup_before_migration(self, apps): + ApiToken = apps.get_model("sentry", "ApiToken") + self.api_token = ApiToken.objects.create( + user_id=self.user.id, + refresh_token=None, + ) + self.api_token.save() + + def test(self): + from sentry.models.apitoken import ApiToken + + api_token = ApiToken.objects.get() + assert api_token.name is None + assert api_token.token_last_characters is None From d5d5adcbe2f405276b57b9bd22c7b441f5d8b807 Mon Sep 17 00:00:00 2001 From: mdtro Date: Fri, 27 Oct 2023 13:59:09 -0500 Subject: [PATCH 3/7] typing: fix save method signature --- src/sentry/models/apitoken.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sentry/models/apitoken.py b/src/sentry/models/apitoken.py index 6a68f5c511e0d9..0f3352b6ad0120 100644 --- a/src/sentry/models/apitoken.py +++ b/src/sentry/models/apitoken.py @@ -55,7 +55,7 @@ class Meta: def __str__(self): return force_str(self.token) - def save(self, **kwargs: Any) -> None: + def save(self, *args: Any, **kwargs: Any) -> None: # when a new ApiToken is created we take the last four characters of the token # and save them in the `token_last_characters` field so users can identify # tokens in the UI where they're mostly obfuscated From a2a341ed644594c83160fbe5c7b6f99802414c2b Mon Sep 17 00:00:00 2001 From: mdtro Date: Fri, 27 Oct 2023 14:04:33 -0500 Subject: [PATCH 4/7] comment save function save() is needed after the migration has been applied, not along with otherwise we cannot properly test it and the backfill --- src/sentry/models/apitoken.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/sentry/models/apitoken.py b/src/sentry/models/apitoken.py index 0f3352b6ad0120..5c66b8a6158d5e 100644 --- a/src/sentry/models/apitoken.py +++ b/src/sentry/models/apitoken.py @@ -2,7 +2,7 @@ import secrets from datetime import timedelta -from typing import Any, Collection, Optional, Tuple +from typing import Collection, Optional, Tuple from django.db import models, router, transaction from django.utils import timezone @@ -55,14 +55,15 @@ class Meta: def __str__(self): return force_str(self.token) - def save(self, *args: Any, **kwargs: Any) -> None: - # when a new ApiToken is created we take the last four characters of the token - # and save them in the `token_last_characters` field so users can identify - # tokens in the UI where they're mostly obfuscated - token_last_characters = self.token[-4:] - self.token_last_characters = token_last_characters + # TODO(mdtro): uncomment this function after 0583_apitoken_add_name_and_last_chars migration has been applied + # def save(self, *args: Any, **kwargs: Any) -> None: + # # when a new ApiToken is created we take the last four characters of the token + # # and save them in the `token_last_characters` field so users can identify + # # tokens in the UI where they're mostly obfuscated + # token_last_characters = self.token[-4:] + # self.token_last_characters = token_last_characters - return super().save(**kwargs) + # return super().save(**kwargs) def outbox_region_names(self) -> Collection[str]: return list(find_all_region_names()) From 0c71f2753adf6cd96f4133a3cb83fb95122e1c5d Mon Sep 17 00:00:00 2001 From: mdtro Date: Tue, 31 Oct 2023 14:05:45 -0500 Subject: [PATCH 5/7] tests: update backup tests to use name on ApiToken --- src/sentry/testutils/helpers/backups.py | 9 +++++++-- tests/sentry/backup/test_models.py | 10 +++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/sentry/testutils/helpers/backups.py b/src/sentry/testutils/helpers/backups.py index 226e1c3a538432..56b970e0598416 100644 --- a/src/sentry/testutils/helpers/backups.py +++ b/src/sentry/testutils/helpers/backups.py @@ -550,7 +550,10 @@ def create_exhaustive_sentry_app(self, name: str, owner: User, org: Organization # Api* ApiAuthorization.objects.create(application=app.application, user=owner) ApiToken.objects.create( - application=app.application, user=owner, token=uuid4().hex, expires_at=None + application=app.application, + user=owner, + expires_at=None, + name="create_exhaustive_sentry_app", ) ApiGrant.objects.create( user=owner, @@ -583,7 +586,9 @@ def create_exhaustive_global_configs(self, owner: User): self.create_exhaustive_global_configs_regional() ControlOption.objects.create(key="bar", value="b") ApiAuthorization.objects.create(user=owner) - ApiToken.objects.create(user=owner, token=uuid4().hex, expires_at=None) + ApiToken.objects.create( + user=owner, expires_at=None, name="create_exhaustive_global_configs" + ) @assume_test_silo_mode(SiloMode.REGION) def create_exhaustive_global_configs_regional(self): diff --git a/tests/sentry/backup/test_models.py b/tests/sentry/backup/test_models.py index 52c80618c12a5e..b3ab174e9d0eb9 100644 --- a/tests/sentry/backup/test_models.py +++ b/tests/sentry/backup/test_models.py @@ -178,7 +178,9 @@ def test_api_token(self): app = ApiApplication.objects.create( owner=user, redirect_uris="http://example.com\nhttp://sub.example.com/path" ) - ApiToken.objects.create(application=app, user=user, token=uuid4().hex, expires_at=None) + ApiToken.objects.create( + application=app, user=user, expires_at=None, name="test_api_token" + ) return self.import_export_then_validate() @@ -596,7 +598,7 @@ def test_api_auth_application_bound(self): application=app, user=self.create_user("example@example.com") ) token = ApiToken.objects.create( - application=app, user=user, token=uuid4().hex, expires_at=None + application=app, user=user, expires_at=None, name="test_api_auth_application_bound" ) # TODO(getsentry/team-ospo#188): this should be extension scope once that gets added. @@ -610,7 +612,9 @@ def test_api_auth_not_bound(self): with assume_test_silo_mode(SiloMode.CONTROL): auth = ApiAuthorization.objects.create(user=self.create_user("example@example.com")) - token = ApiToken.objects.create(user=user, token=uuid4().hex, expires_at=None) + token = ApiToken.objects.create( + user=user, expires_at=None, name="test_api_auth_not_bound" + ) assert auth.get_relocation_scope() == RelocationScope.Config assert token.get_relocation_scope() == RelocationScope.Config From 5f2f097cda3858f3768210bf473c2d7bc2549abf Mon Sep 17 00:00:00 2001 From: mdtro Date: Tue, 31 Oct 2023 14:36:56 -0500 Subject: [PATCH 6/7] include token_last_characters in apitoken backup comparator --- src/sentry/backup/comparators.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/sentry/backup/comparators.py b/src/sentry/backup/comparators.py index 92bff97f1bd277..432df23ab956f1 100644 --- a/src/sentry/backup/comparators.py +++ b/src/sentry/backup/comparators.py @@ -666,7 +666,9 @@ def get_default_comparators(): default_comparators: ComparatorMap = defaultdict( list, { - "sentry.apitoken": [HashObfuscatingComparator("refresh_token", "token")], + "sentry.apitoken": [ + HashObfuscatingComparator("refresh_token", "token", "token_last_characters") + ], "sentry.apiapplication": [HashObfuscatingComparator("client_id", "client_secret")], "sentry.authidentity": [HashObfuscatingComparator("ident", "token")], "sentry.alertrule": [DateUpdatedComparator("date_modified")], From b7e3250e48f9fda9ace89c73f8e98830cdb951fd Mon Sep 17 00:00:00 2001 From: mdtro Date: Tue, 31 Oct 2023 15:01:17 -0500 Subject: [PATCH 7/7] tests: accept backup snapshot changes --- .../ReleaseTests/test_at_head.pysnap | 576 +++++++++--------- 1 file changed, 290 insertions(+), 286 deletions(-) diff --git a/tests/sentry/backup/snapshots/ReleaseTests/test_at_head.pysnap b/tests/sentry/backup/snapshots/ReleaseTests/test_at_head.pysnap index d392e20461f6d2..cb6d60e6a43ac8 100644 --- a/tests/sentry/backup/snapshots/ReleaseTests/test_at_head.pysnap +++ b/tests/sentry/backup/snapshots/ReleaseTests/test_at_head.pysnap @@ -1,18 +1,16 @@ --- -created: '2023-10-23T21:19:11.329335Z' -creator: sentry source: tests/sentry/backup/test_releases.py --- - fields: key: bar - last_updated: '2023-10-23T21:19:10.869Z' + last_updated: '2023-10-31T19:59:25.376Z' last_updated_by: unknown value: '"b"' model: sentry.controloption pk: 6 - fields: - date_added: '2023-10-23T21:19:10.323Z' - date_updated: '2023-10-23T21:19:10.323Z' + date_added: '2023-10-31T19:59:24.951Z' + date_updated: '2023-10-31T19:59:24.951Z' external_id: slack:test-org metadata: {} name: Slack for test-org @@ -22,13 +20,13 @@ source: tests/sentry/backup/test_releases.py pk: 6 - fields: key: foo - last_updated: '2023-10-23T21:19:10.868Z' + last_updated: '2023-10-31T19:59:25.375Z' last_updated_by: unknown value: '"a"' model: sentry.option pk: 6 - fields: - date_added: '2023-10-23T21:19:10.033Z' + date_added: '2023-10-31T19:59:24.727Z' default_role: member flags: '1' is_test: false @@ -36,92 +34,92 @@ source: tests/sentry/backup/test_releases.py slug: test-org status: 0 model: sentry.organization - pk: 4552849770807312 + pk: 4552894755635216 - fields: - date_added: '2023-10-23T21:19:10.498Z' + date_added: '2023-10-31T19:59:25.090Z' default_role: member flags: '1' is_test: false - name: Noble Ghost - slug: noble-ghost + name: Light Honeybee + slug: light-honeybee status: 0 model: sentry.organization - pk: 4552849770807316 + pk: 4552894755700752 - fields: config: hello: hello - date_added: '2023-10-23T21:19:10.324Z' - date_updated: '2023-10-23T21:19:10.324Z' + date_added: '2023-10-31T19:59:24.952Z' + date_updated: '2023-10-31T19:59:24.952Z' default_auth_id: null grace_period_end: null integration: 6 - organization_id: 4552849770807312 + organization_id: 4552894755635216 status: 0 model: sentry.organizationintegration pk: 6 - fields: key: sentry:account-rate-limit - organization: 4552849770807312 + organization: 4552894755635216 value: 0 model: sentry.organizationoption pk: 6 - fields: - date_added: '2023-10-23T21:19:10.197Z' + date_added: '2023-10-31T19:59:24.854Z' first_event: null flags: '10' forced_color: null name: project-test-org - organization: 4552849770807312 + organization: 4552894755635216 platform: null public: false slug: project-test-org status: 0 model: sentry.project - pk: 4552849770807314 + pk: 4552894755635218 - fields: - date_added: '2023-10-23T21:19:10.353Z' + date_added: '2023-10-31T19:59:24.981Z' first_event: null flags: '10' forced_color: null name: other-project-test-org - organization: 4552849770807312 + organization: 4552894755635216 platform: null public: false slug: other-project-test-org status: 0 model: sentry.project - pk: 4552849770807315 + pk: 4552894755635219 - fields: - date_added: '2023-10-23T21:19:10.567Z' + date_added: '2023-10-31T19:59:25.146Z' first_event: null flags: '10' forced_color: null - name: Star Shiner - organization: 4552849770807312 + name: Secure Mule + organization: 4552894755635216 platform: null public: false - slug: star-shiner + slug: secure-mule status: 0 model: sentry.project - pk: 4552849770807317 + pk: 4552894755700753 - fields: - date_added: '2023-10-23T21:19:10.817Z' + date_added: '2023-10-31T19:59:25.334Z' first_event: null flags: '10' forced_color: null - name: Charming Crow - organization: 4552849770807312 + name: Adapting Primate + organization: 4552894755635216 platform: null public: false - slug: charming-crow + slug: adapting-primate status: 0 model: sentry.project - pk: 4552849770807318 + pk: 4552894755700754 - fields: config: hello: hello integration_id: 6 - project: 4552849770807314 + project: 4552894755635218 model: sentry.projectintegration pk: 6 - fields: @@ -129,14 +127,14 @@ source: tests/sentry/backup/test_releases.py dynamicSdkLoaderOptions: hasPerformance: true hasReplay: true - date_added: '2023-10-23T21:19:10.217Z' + date_added: '2023-10-31T19:59:24.868Z' label: Default - project: 4552849770807314 - public_key: 823303c8f821ffb6a18706676c2f8018 + project: 4552894755635218 + public_key: 37c292819a55300f5b0589798abbd8bf rate_limit_count: null rate_limit_window: null roles: '1' - secret_key: b515d7d1f1a1af0639be2f69093941d1 + secret_key: 9c7886b96e8b5ab0645ed46e224892a3 status: 0 model: sentry.projectkey pk: 21 @@ -145,14 +143,14 @@ source: tests/sentry/backup/test_releases.py dynamicSdkLoaderOptions: hasPerformance: true hasReplay: true - date_added: '2023-10-23T21:19:10.370Z' + date_added: '2023-10-31T19:59:24.994Z' label: Default - project: 4552849770807315 - public_key: 17e2ae3c0e5710c24e3e3db6384ae607 + project: 4552894755635219 + public_key: ad2c42143425d0dc2dc621e8baba7106 rate_limit_count: null rate_limit_window: null roles: '1' - secret_key: a31345f509045905352450d76a835a54 + secret_key: 34a76d0d5df4cc2f9e5a9a8b82667dda status: 0 model: sentry.projectkey pk: 22 @@ -161,14 +159,14 @@ source: tests/sentry/backup/test_releases.py dynamicSdkLoaderOptions: hasPerformance: true hasReplay: true - date_added: '2023-10-23T21:19:10.590Z' + date_added: '2023-10-31T19:59:25.162Z' label: Default - project: 4552849770807317 - public_key: ca2bcf3f133af07f0e4f40227108ea32 + project: 4552894755700753 + public_key: dba987007564f84192a61d780b2a98e0 rate_limit_count: null rate_limit_window: null roles: '1' - secret_key: a0cbc75e96d9d4f6eaf225ffc16cc6a1 + secret_key: b2857a30a978921e422a121762df1cb8 status: 0 model: sentry.projectkey pk: 23 @@ -177,97 +175,97 @@ source: tests/sentry/backup/test_releases.py dynamicSdkLoaderOptions: hasPerformance: true hasReplay: true - date_added: '2023-10-23T21:19:10.838Z' + date_added: '2023-10-31T19:59:25.350Z' label: Default - project: 4552849770807318 - public_key: 4fc32a4bed8538278ecd8e82254bc71e + project: 4552894755700754 + public_key: 3d615a7d6bae2ed1f9bb99463efe8220 rate_limit_count: null rate_limit_window: null roles: '1' - secret_key: 1eaa5c34de41c00ddd8755c2ad283d21 + secret_key: 66066fbf2c0660df8a01407bc8f834dc status: 0 model: sentry.projectkey pk: 24 - fields: key: sentry:relay-rev - project: 4552849770807314 - value: '"92f5870700294f4ca401e07ba218cc09"' + project: 4552894755635218 + value: '"2d5cb031e9594fc3af0610552791c26f"' model: sentry.projectoption pk: 61 - fields: key: sentry:relay-rev-lastchange - project: 4552849770807314 - value: '"2023-10-23T21:19:10.222436Z"' + project: 4552894755635218 + value: '"2023-10-31T19:59:24.871855Z"' model: sentry.projectoption pk: 62 - fields: key: sentry:option-epoch - project: 4552849770807314 + project: 4552894755635218 value: 11 model: sentry.projectoption pk: 63 - fields: key: sentry:relay-rev - project: 4552849770807315 - value: '"88103afa502748ca9c6982b7dbae6a1b"' + project: 4552894755635219 + value: '"53b7bba813094e06a53fff1f2d718d19"' model: sentry.projectoption pk: 64 - fields: key: sentry:relay-rev-lastchange - project: 4552849770807315 - value: '"2023-10-23T21:19:10.376313Z"' + project: 4552894755635219 + value: '"2023-10-31T19:59:24.998374Z"' model: sentry.projectoption pk: 65 - fields: key: sentry:option-epoch - project: 4552849770807315 + project: 4552894755635219 value: 11 model: sentry.projectoption pk: 66 - fields: key: sentry:relay-rev - project: 4552849770807317 - value: '"9be83265acc347d9bcc66a6d6393570f"' + project: 4552894755700753 + value: '"6ff1a6b95785437eba36f39f643d34ed"' model: sentry.projectoption pk: 67 - fields: key: sentry:relay-rev-lastchange - project: 4552849770807317 - value: '"2023-10-23T21:19:10.594759Z"' + project: 4552894755700753 + value: '"2023-10-31T19:59:25.165934Z"' model: sentry.projectoption pk: 68 - fields: key: sentry:option-epoch - project: 4552849770807317 + project: 4552894755700753 value: 11 model: sentry.projectoption pk: 69 - fields: key: sentry:relay-rev - project: 4552849770807318 - value: '"bbf24d2b98774d4c927ec356528c1e41"' + project: 4552894755700754 + value: '"1ea0418712d44657915ef1c9927ce6a9"' model: sentry.projectoption pk: 70 - fields: key: sentry:relay-rev-lastchange - project: 4552849770807318 - value: '"2023-10-23T21:19:10.843868Z"' + project: 4552894755700754 + value: '"2023-10-31T19:59:25.353808Z"' model: sentry.projectoption pk: 71 - fields: key: sentry:option-epoch - project: 4552849770807318 + project: 4552894755700754 value: 11 model: sentry.projectoption pk: 72 - fields: auto_assignment: true codeowners_auto_sync: true - date_created: '2023-10-23T21:19:10.239Z' + date_created: '2023-10-31T19:59:24.885Z' fallthrough: true is_active: true - last_updated: '2023-10-23T21:19:10.239Z' - project: 4552849770807314 + last_updated: '2023-10-31T19:59:24.885Z' + project: 4552894755635218 raw: '{"hello":"hello"}' schema: hello: hello @@ -275,9 +273,9 @@ source: tests/sentry/backup/test_releases.py model: sentry.projectownership pk: 6 - fields: - date_added: '2023-10-23T21:19:10.244Z' - organization: 4552849770807312 - project: 4552849770807314 + date_added: '2023-10-31T19:59:24.889Z' + organization: 4552894755635216 + project: 4552894755635218 redirect_slug: project_slug_in_test-org model: sentry.projectredirect pk: 6 @@ -285,26 +283,26 @@ source: tests/sentry/backup/test_releases.py first_seen: null is_internal: true last_seen: null - public_key: kG7Lo1NNAx8lmNyV39fHc2QHy-C1ZJWgmmAp9au-3_s - relay_id: b1af7ab6-de42-4bf5-9a3a-659e98d740bf + public_key: 8VGx9pMIB6G4BzPGILRtANxCr6xPiETV7sR3R2jOhxU + relay_id: 0a6a1e95-9655-4e8e-94c1-8ea5f4449025 model: sentry.relay pk: 6 - fields: - first_seen: '2023-10-23T21:19:10.867Z' - last_seen: '2023-10-23T21:19:10.867Z' - public_key: kG7Lo1NNAx8lmNyV39fHc2QHy-C1ZJWgmmAp9au-3_s - relay_id: b1af7ab6-de42-4bf5-9a3a-659e98d740bf + first_seen: '2023-10-31T19:59:25.374Z' + last_seen: '2023-10-31T19:59:25.374Z' + public_key: 8VGx9pMIB6G4BzPGILRtANxCr6xPiETV7sR3R2jOhxU + relay_id: 0a6a1e95-9655-4e8e-94c1-8ea5f4449025 version: 0.0.1 model: sentry.relayusage pk: 6 - fields: config: {} - date_added: '2023-10-23T21:19:10.469Z' + date_added: '2023-10-31T19:59:25.069Z' external_id: null integration_id: 6 languages: '[]' name: getsentry/getsentry - organization_id: 4552849770807312 + organization_id: 4552894755635216 provider: integrations:github status: 0 url: https://github.com/getsentry/getsentry @@ -312,19 +310,19 @@ source: tests/sentry/backup/test_releases.py pk: 6 - fields: actor: 6 - date_added: '2023-10-23T21:19:10.142Z' + date_added: '2023-10-31T19:59:24.813Z' idp_provisioned: false name: test_team_in_test-org org_role: null - organization: 4552849770807312 + organization: 4552894755635216 slug: test_team_in_test-org status: 0 model: sentry.team - pk: 4552849770807313 + pk: 4552894755635217 - fields: avatar_type: 0 avatar_url: null - date_joined: '2023-10-23T21:19:09.850Z' + date_joined: '2023-10-31T19:59:24.604Z' email: owner flags: '0' is_active: true @@ -334,11 +332,11 @@ source: tests/sentry/backup/test_releases.py is_staff: true is_superuser: true is_unclaimed: false - last_active: '2023-10-23T21:19:09.850Z' + last_active: '2023-10-31T19:59:24.604Z' last_login: null - last_password_change: '2023-10-23T21:19:09.850Z' + last_password_change: '2023-10-31T19:59:24.604Z' name: '' - password: md5$KrrJv8Kxx7RUkSkanMLfsz$8ceb77aaba8c1f7f79854a3a5eb29e1d + password: md5$vZzV7STtarE63PpHDyJ4wj$23aae81af88ab3d0626cc2942445a2e0 session_nonce: null username: owner model: sentry.user @@ -346,7 +344,7 @@ source: tests/sentry/backup/test_releases.py - fields: avatar_type: 0 avatar_url: null - date_joined: '2023-10-23T21:19:09.982Z' + date_joined: '2023-10-31T19:59:24.692Z' email: invitee flags: '0' is_active: true @@ -356,11 +354,11 @@ source: tests/sentry/backup/test_releases.py is_staff: false is_superuser: false is_unclaimed: false - last_active: '2023-10-23T21:19:09.982Z' + last_active: '2023-10-31T19:59:24.692Z' last_login: null - last_password_change: '2023-10-23T21:19:09.982Z' + last_password_change: '2023-10-31T19:59:24.692Z' name: '' - password: md5$hCmBoG1cA0KqRwLTuNLYc3$f13222b01626679fdcf9d9b90373b08f + password: md5$6A2IBhJ2syLD6AFHIXvacm$806dbd543b794f2d1e429049d8193bba session_nonce: null username: invitee model: sentry.user @@ -368,7 +366,7 @@ source: tests/sentry/backup/test_releases.py - fields: avatar_type: 0 avatar_url: null - date_joined: '2023-10-23T21:19:10.407Z' + date_joined: '2023-10-31T19:59:25.022Z' email: admin@localhost flags: '0' is_active: true @@ -378,11 +376,11 @@ source: tests/sentry/backup/test_releases.py is_staff: true is_superuser: true is_unclaimed: false - last_active: '2023-10-23T21:19:10.407Z' + last_active: '2023-10-31T19:59:25.023Z' last_login: null - last_password_change: '2023-10-23T21:19:10.407Z' + last_password_change: '2023-10-31T19:59:25.023Z' name: '' - password: md5$VRVXVqSQSFpR9XJyM3oWUW$19ea22c3d8f10904903d0f9b3a0442e6 + password: md5$dO9HxiMqmS5kdqywbv9AyO$ce819fcbc30ab52366b8259f082c717a session_nonce: null username: admin@localhost model: sentry.user @@ -390,8 +388,8 @@ source: tests/sentry/backup/test_releases.py - fields: avatar_type: 0 avatar_url: null - date_joined: '2023-10-23T21:19:10.472Z' - email: 32c20115cbab434bbd9ff35ae8a4d6e3@example.com + date_joined: '2023-10-31T19:59:25.071Z' + email: e6a17cc63f2b495d824788f92f4af173@example.com flags: '0' is_active: true is_managed: false @@ -400,19 +398,19 @@ source: tests/sentry/backup/test_releases.py is_staff: true is_superuser: false is_unclaimed: false - last_active: '2023-10-23T21:19:10.472Z' + last_active: '2023-10-31T19:59:25.071Z' last_login: null - last_password_change: '2023-10-23T21:19:10.472Z' + last_password_change: '2023-10-31T19:59:25.071Z' name: '' - password: md5$hPH8IE7SfblqNbwQOKoP9f$2f12816cb72544d201e6a36558aca025 + password: md5$Mw7nZIOqlu4j9n5qve8zup$c7bc87455d3f21f14422f2514ee33af2 session_nonce: null - username: 32c20115cbab434bbd9ff35ae8a4d6e3@example.com + username: e6a17cc63f2b495d824788f92f4af173@example.com model: sentry.user pk: 34 - fields: avatar_type: 0 avatar_url: null - date_joined: '2023-10-23T21:19:10.536Z' + date_joined: '2023-10-31T19:59:25.123Z' email: '' flags: '0' is_active: true @@ -422,20 +420,20 @@ source: tests/sentry/backup/test_releases.py is_staff: false is_superuser: false is_unclaimed: false - last_active: '2023-10-23T21:19:10.536Z' + last_active: '2023-10-31T19:59:25.123Z' last_login: null last_password_change: null name: '' password: '' session_nonce: null - username: test-app-b2d51214-2536-4dce-9d5c-8045658c8cee + username: test-app-38aaadf2-a2e3-4547-87cf-c8acb2b45957 model: sentry.user pk: 35 - fields: avatar_type: 0 avatar_url: null - date_joined: '2023-10-23T21:19:10.790Z' - email: 83036fae32ea46b5aa71e83a3560ba7c@example.com + date_joined: '2023-10-31T19:59:25.312Z' + email: f556a0e5236b4fe0aebee9dd39a45735@example.com flags: '0' is_active: true is_managed: false @@ -444,13 +442,13 @@ source: tests/sentry/backup/test_releases.py is_staff: true is_superuser: false is_unclaimed: false - last_active: '2023-10-23T21:19:10.790Z' + last_active: '2023-10-31T19:59:25.312Z' last_login: null - last_password_change: '2023-10-23T21:19:10.790Z' + last_password_change: '2023-10-31T19:59:25.312Z' name: '' - password: md5$qW7EieDQcb5ES5vaHSaMUA$ea98fb6c8e5cfb739647f45426c62db4 + password: md5$qB0Y8QRbe7VJ3KY0javOUI$866719d13c6ad0b3ea22dd3707a37dc0 session_nonce: null - username: 83036fae32ea46b5aa71e83a3560ba7c@example.com + username: f556a0e5236b4fe0aebee9dd39a45735@example.com model: sentry.user pk: 36 - fields: @@ -493,24 +491,24 @@ source: tests/sentry/backup/test_releases.py model: sentry.userpermission pk: 6 - fields: - date_added: '2023-10-23T21:19:09.927Z' - date_updated: '2023-10-23T21:19:09.927Z' + date_added: '2023-10-31T19:59:24.656Z' + date_updated: '2023-10-31T19:59:24.656Z' name: test-admin-role permissions: '[]' model: sentry.userrole pk: 6 - fields: - date_added: '2023-10-23T21:19:09.932Z' - date_updated: '2023-10-23T21:19:09.932Z' + date_added: '2023-10-31T19:59:24.660Z' + date_updated: '2023-10-31T19:59:24.660Z' role: 6 user: 31 model: sentry.userroleuser pk: 6 - fields: - date_added: '2023-10-23T21:19:10.462Z' + date_added: '2023-10-31T19:59:25.065Z' is_global: false name: Saved query for test-org - organization: 4552849770807312 + organization: 4552894755635216 owner_id: null query: saved query for test-org sort: date @@ -519,9 +517,9 @@ source: tests/sentry/backup/test_releases.py model: sentry.savedsearch pk: 6 - fields: - date_added: '2023-10-23T21:19:10.461Z' - last_seen: '2023-10-23T21:19:10.461Z' - organization: 4552849770807312 + date_added: '2023-10-31T19:59:25.064Z' + last_seen: '2023-10-31T19:59:25.064Z' + organization: 4552894755635216 query: some query for test-org query_hash: 7c69362cd42207b83f80087bc15ebccb type: 0 @@ -529,42 +527,42 @@ source: tests/sentry/backup/test_releases.py model: sentry.recentsearch pk: 6 - fields: - project: 4552849770807314 - team: 4552849770807313 + project: 4552894755635218 + team: 4552894755635217 model: sentry.projectteam pk: 11 - fields: - project: 4552849770807315 - team: 4552849770807313 + project: 4552894755635219 + team: 4552894755635217 model: sentry.projectteam pk: 12 - fields: - date_added: '2023-10-23T21:19:10.238Z' - project: 4552849770807314 + date_added: '2023-10-31T19:59:24.884Z' + project: 4552894755635218 user_id: 31 model: sentry.projectbookmark pk: 6 - fields: created_by: null - date_added: '2023-10-23T21:19:10.306Z' + date_added: '2023-10-31T19:59:24.939Z' date_deactivated: null date_last_used: null name: token 1 for test-org - organization_id: 4552849770807312 - project_last_used_id: 4552849770807314 + organization_id: 4552894755635216 + project_last_used_id: 4552894755635218 scope_list: '[''org:ci'']' token_hashed: ABCDEFtest-org token_last_characters: xyz1 model: sentry.orgauthtoken pk: 6 - fields: - date_added: '2023-10-23T21:19:10.073Z' + date_added: '2023-10-31T19:59:24.761Z' email: null flags: '0' has_global_access: true invite_status: 0 inviter_id: null - organization: 4552849770807312 + organization: 4552894755635216 role: owner token: null token_expires_at: null @@ -575,13 +573,13 @@ source: tests/sentry/backup/test_releases.py model: sentry.organizationmember pk: 11 - fields: - date_added: '2023-10-23T21:19:10.107Z' + date_added: '2023-10-31T19:59:24.786Z' email: null flags: '0' has_global_access: true invite_status: 0 inviter_id: null - organization: 4552849770807312 + organization: 4552894755635216 role: member token: null token_expires_at: null @@ -594,104 +592,104 @@ source: tests/sentry/backup/test_releases.py - fields: member: 12 requester_id: null - team: 4552849770807313 + team: 4552894755635217 model: sentry.organizationaccessrequest pk: 6 - fields: config: schedule: '* * * * *' schedule_type: 1 - date_added: '2023-10-23T21:19:10.348Z' - guid: 93201e57-0b6b-4461-afbd-ad3388190396 + date_added: '2023-10-31T19:59:24.978Z' + guid: 3174913b-b6de-47bf-8322-142f262a2a4c name: '' - organization_id: 4552849770807312 - project_id: 4552849770807314 - slug: 4e1a5eb14301 + organization_id: 4552894755635216 + project_id: 4552894755635218 + slug: 62285a3264ad status: 0 type: 3 model: sentry.monitor pk: 6 - fields: - date_added: '2023-10-23T21:19:10.345Z' - name: mistakenly quality cobra - organization_id: 4552849770807312 + date_added: '2023-10-31T19:59:24.967Z' + name: marginally grown panther + organization_id: 4552894755635216 model: sentry.environment pk: 6 - fields: - date_added: '2023-10-23T21:19:09.857Z' + date_added: '2023-10-31T19:59:24.608Z' email: owner model: sentry.email pk: 43 - fields: - date_added: '2023-10-23T21:19:09.986Z' + date_added: '2023-10-31T19:59:24.695Z' email: invitee model: sentry.email pk: 44 - fields: - date_added: '2023-10-23T21:19:10.412Z' + date_added: '2023-10-31T19:59:25.026Z' email: admin@localhost model: sentry.email pk: 45 - fields: - date_added: '2023-10-23T21:19:10.476Z' - email: 32c20115cbab434bbd9ff35ae8a4d6e3@example.com + date_added: '2023-10-31T19:59:25.074Z' + email: e6a17cc63f2b495d824788f92f4af173@example.com model: sentry.email pk: 46 - fields: - date_added: '2023-10-23T21:19:10.539Z' + date_added: '2023-10-31T19:59:25.126Z' email: '' model: sentry.email pk: 47 - fields: - date_added: '2023-10-23T21:19:10.795Z' - email: 83036fae32ea46b5aa71e83a3560ba7c@example.com + date_added: '2023-10-31T19:59:25.316Z' + email: f556a0e5236b4fe0aebee9dd39a45735@example.com model: sentry.email pk: 48 - fields: - date_added: '2023-10-23T21:19:10.460Z' - organization: 4552849770807312 + date_added: '2023-10-31T19:59:25.063Z' + organization: 4552894755635216 slug: test-tombstone-in-test-org model: sentry.dashboardtombstone pk: 6 - fields: created_by_id: 31 - date_added: '2023-10-23T21:19:10.457Z' + date_added: '2023-10-31T19:59:25.060Z' filters: null - last_visited: '2023-10-23T21:19:10.457Z' - organization: 4552849770807312 + last_visited: '2023-10-31T19:59:25.060Z' + organization: 4552894755635216 title: Dashboard 1 for test-org visits: 1 model: sentry.dashboard pk: 6 - fields: condition: '{"op":"equals","name":"environment","value":"prod"}' - condition_hash: b4499a04a0d5746f2f7cab977ee1ea56e27a4db8 + condition_hash: d160a073fe64e48b46dab48d5228bf1eb2bd7bc1 created_by_id: null - date_added: '2023-10-23T21:19:10.337Z' - end_date: '2023-10-23T22:19:10.336Z' + date_added: '2023-10-31T19:59:24.962Z' + end_date: '2023-10-31T20:59:24.960Z' is_active: true is_org_level: false num_samples: 100 - organization: 4552849770807312 + organization: 4552894755635216 query: environment:prod event.type:transaction rule_id: 1 sample_rate: 0.5 - start_date: '2023-10-23T21:19:10.336Z' + start_date: '2023-10-31T19:59:24.960Z' model: sentry.customdynamicsamplingrule pk: 4 - fields: - project: 4552849770807314 + project: 4552894755635218 value: 1 model: sentry.counter pk: 6 - fields: config: {} - date_added: '2023-10-23T21:19:10.269Z' + date_added: '2023-10-31T19:59:24.910Z' default_global_access: true default_role: 50 flags: '0' last_sync: null - organization_id: 4552849770807312 + organization_id: 4552894755635216 provider: sentry sync_time: null model: sentry.authprovider @@ -707,16 +705,16 @@ source: tests/sentry/backup/test_releases.py - 3 key4: nested_key: nested_value - date_added: '2023-10-23T21:19:10.288Z' + date_added: '2023-10-31T19:59:24.925Z' ident: 123456789test-org - last_synced: '2023-10-23T21:19:10.288Z' - last_verified: '2023-10-23T21:19:10.288Z' + last_synced: '2023-10-31T19:59:24.925Z' + last_verified: '2023-10-31T19:59:24.925Z' user: 31 model: sentry.authidentity pk: 6 - fields: config: '""' - created_at: '2023-10-23T21:19:09.889Z' + created_at: '2023-10-31T19:59:24.631Z' last_used_at: null type: 1 user: 31 @@ -724,7 +722,7 @@ source: tests/sentry/backup/test_releases.py pk: 11 - fields: config: '""' - created_at: '2023-10-23T21:19:10.015Z' + created_at: '2023-10-31T19:59:24.714Z' last_used_at: null type: 1 user: 32 @@ -732,10 +730,10 @@ source: tests/sentry/backup/test_releases.py pk: 12 - fields: allowed_origins: null - date_added: '2023-10-23T21:19:10.252Z' - key: fb88f7002db84754ac26a72c8eb1932a + date_added: '2023-10-31T19:59:24.895Z' + key: 8978ba489a194eca91e1e18d7381ae6f label: Default - organization_id: 4552849770807312 + organization_id: 4552894755635216 scope_list: '[]' scopes: '0' status: 0 @@ -743,11 +741,11 @@ source: tests/sentry/backup/test_releases.py pk: 6 - fields: allowed_origins: '' - client_id: 66924938c779e5063a1baa4a8fa433719930ed2b1c75504ba31fd475dd84810f - client_secret: 27fb1a4f183179df94552812d24e78a1dd6947b55e929c4e27038ed24905e6d6 - date_added: '2023-10-23T21:19:10.545Z' + client_id: 9befd5aa965acf842484a9b144acc8960b8ff2ed4b323c316a75de614c5c758a + client_secret: cc1744803da4399ffae5e93a64d6bbdd1b8c33dcf2849f18d904b718eb79fdd5 + date_added: '2023-10-31T19:59:25.131Z' homepage_url: null - name: Evolving Narwhal + name: Intense Adder owner: 35 privacy_url: null redirect_uris: '' @@ -756,63 +754,63 @@ source: tests/sentry/backup/test_releases.py model: sentry.apiapplication pk: 6 - fields: - team: 4552849770807313 + team: 4552894755635217 type: 0 user_id: null model: sentry.actor pk: 6 - fields: - date_hash_added: '2023-10-23T21:19:09.854Z' + date_hash_added: '2023-10-31T19:59:24.607Z' email: owner is_verified: true user: 31 - validation_hash: UbVjuqPktzxwAF7swsITM5IRTvm0tPuX + validation_hash: PmgPYRjddkP1zd2yb9ow1oVqwDGoDWRS model: sentry.useremail pk: 31 - fields: - date_hash_added: '2023-10-23T21:19:09.984Z' + date_hash_added: '2023-10-31T19:59:24.694Z' email: invitee is_verified: true user: 32 - validation_hash: AhqAiIkzs11hZbrh6MOWtCPZZ3WoXYAG + validation_hash: TdhHg5dkum2POmyC6O0TaUbYY8voNFhy model: sentry.useremail pk: 32 - fields: - date_hash_added: '2023-10-23T21:19:10.410Z' + date_hash_added: '2023-10-31T19:59:25.024Z' email: admin@localhost is_verified: true user: 33 - validation_hash: lND9rzSozskRq3l7FOAN00Q4qi1664HW + validation_hash: B0W4fgXlOxnbNhHY5agfdHnxoQpvUXh5 model: sentry.useremail pk: 33 - fields: - date_hash_added: '2023-10-23T21:19:10.474Z' - email: 32c20115cbab434bbd9ff35ae8a4d6e3@example.com + date_hash_added: '2023-10-31T19:59:25.072Z' + email: e6a17cc63f2b495d824788f92f4af173@example.com is_verified: true user: 34 - validation_hash: Dz8t9jcEVrNQSZzF28sZ5hmoYXaYpKVi + validation_hash: CRw1SuCT4CAnGC4hXONETG0QJ71rTDyB model: sentry.useremail pk: 34 - fields: - date_hash_added: '2023-10-23T21:19:10.538Z' + date_hash_added: '2023-10-31T19:59:25.125Z' email: '' is_verified: false user: 35 - validation_hash: cfdr3SEXezVEK0koxO7xokHvWxE1Qjcj + validation_hash: PaliANZJiTM9nQc7R15ZM0aygi6EEpmu model: sentry.useremail pk: 35 - fields: - date_hash_added: '2023-10-23T21:19:10.793Z' - email: 83036fae32ea46b5aa71e83a3560ba7c@example.com + date_hash_added: '2023-10-31T19:59:25.314Z' + email: f556a0e5236b4fe0aebee9dd39a45735@example.com is_verified: true user: 36 - validation_hash: 5qDCsH1ppgOqXz2nK9RUKxFIlezoWIGS + validation_hash: LR4CeyeLUBEbJkRBnW7O8wyCPO9eqXa5 model: sentry.useremail pk: 36 - fields: aggregate: count() dataset: events - date_added: '2023-10-23T21:19:10.390Z' + date_added: '2023-10-31T19:59:25.010Z' environment: null query: level:error resolution: 60 @@ -823,7 +821,7 @@ source: tests/sentry/backup/test_releases.py - fields: aggregate: count() dataset: events - date_added: '2023-10-23T21:19:10.438Z' + date_added: '2023-10-31T19:59:25.045Z' environment: null query: test query resolution: 60 @@ -834,17 +832,17 @@ source: tests/sentry/backup/test_releases.py - fields: application: 6 author: A Company - creator_label: 32c20115cbab434bbd9ff35ae8a4d6e3@example.com + creator_label: e6a17cc63f2b495d824788f92f4af173@example.com creator_user: 34 - date_added: '2023-10-23T21:19:10.546Z' + date_added: '2023-10-31T19:59:25.131Z' date_deleted: null date_published: null - date_updated: '2023-10-23T21:19:10.732Z' + date_updated: '2023-10-31T19:59:25.269Z' events: '[]' is_alertable: false name: test app overview: null - owner_id: 4552849770807312 + owner_id: 4552894755635216 popularity: 1 proxy_user: 35 redirect_url: null @@ -885,26 +883,26 @@ source: tests/sentry/backup/test_releases.py scopes: '0' slug: test-app status: 0 - uuid: 0d8f46f4-35bd-4b54-a34a-fc2f461cbfcf + uuid: b76997ac-e299-4fe6-bfeb-ad70fb81ac83 verify_install: true webhook_url: https://example.com/webhook model: sentry.sentryapp pk: 6 - fields: data: '{"conditions":[{"id":"sentry.rules.conditions.first_seen_event.FirstSeenEventCondition"},{"id":"sentry.rules.conditions.every_event.EveryEventCondition"}],"action_match":"all","filter_match":"all","actions":[{"id":"sentry.rules.actions.notify_event.NotifyEventAction"},{"id":"sentry.rules.actions.notify_event_service.NotifyEventServiceAction","service":"mail"}]}' - date_added: '2023-10-23T21:19:10.330Z' + date_added: '2023-10-31T19:59:24.956Z' environment_id: null label: '' owner: null - project: 4552849770807314 + project: 4552894755635218 source: 0 status: 0 model: sentry.rule pk: 6 - fields: - date_added: '2023-10-23T21:19:10.397Z' - date_updated: '2023-10-23T21:19:10.397Z' - project: 4552849770807314 + date_added: '2023-10-31T19:59:25.015Z' + date_updated: '2023-10-31T19:59:25.015Z' + project: 4552894755635218 snuba_query: 11 status: 1 subscription_id: null @@ -912,9 +910,9 @@ source: tests/sentry/backup/test_releases.py model: sentry.querysubscription pk: 21 - fields: - date_added: '2023-10-23T21:19:10.442Z' - date_updated: '2023-10-23T21:19:10.442Z' - project: 4552849770807314 + date_added: '2023-10-31T19:59:25.047Z' + date_updated: '2023-10-31T19:59:25.047Z' + project: 4552894755635218 snuba_query: 12 status: 1 subscription_id: null @@ -922,9 +920,9 @@ source: tests/sentry/backup/test_releases.py model: sentry.querysubscription pk: 22 - fields: - date_added: '2023-10-23T21:19:10.571Z' - date_updated: '2023-10-23T21:19:10.571Z' - project: 4552849770807317 + date_added: '2023-10-31T19:59:25.149Z' + date_updated: '2023-10-31T19:59:25.149Z' + project: 4552894755700753 snuba_query: 11 status: 1 subscription_id: null @@ -932,9 +930,9 @@ source: tests/sentry/backup/test_releases.py model: sentry.querysubscription pk: 23 - fields: - date_added: '2023-10-23T21:19:10.821Z' - date_updated: '2023-10-23T21:19:10.821Z' - project: 4552849770807318 + date_added: '2023-10-31T19:59:25.337Z' + date_updated: '2023-10-31T19:59:25.337Z' + project: 4552894755700754 snuba_query: 11 status: 1 subscription_id: null @@ -945,12 +943,12 @@ source: tests/sentry/backup/test_releases.py is_active: true organizationmember: 11 role: null - team: 4552849770807313 + team: 4552894755635217 model: sentry.organizationmemberteam pk: 6 - fields: integration_id: null - organization: 4552849770807312 + organization: 4552894755635216 sentry_app_id: null target_display: Sentry User target_identifier: '1' @@ -961,7 +959,7 @@ source: tests/sentry/backup/test_releases.py pk: 9 - fields: integration_id: null - organization: 4552849770807312 + organization: 4552894755635216 sentry_app_id: 6 target_display: Sentry User target_identifier: '1' @@ -971,23 +969,23 @@ source: tests/sentry/backup/test_releases.py model: sentry.notificationaction pk: 10 - fields: - disable_date: '2023-10-23T21:19:10.334Z' + disable_date: '2023-10-31T19:59:24.959Z' opted_out: false - organization: 4552849770807312 + organization: 4552894755635216 rule: 6 - sent_final_email_date: '2023-10-23T21:19:10.334Z' - sent_initial_email_date: '2023-10-23T21:19:10.334Z' + sent_final_email_date: '2023-10-31T19:59:24.959Z' + sent_initial_email_date: '2023-10-31T19:59:24.959Z' model: sentry.neglectedrule pk: 6 - fields: environment: 6 is_hidden: null - project: 4552849770807314 + project: 4552894755635218 model: sentry.environmentproject pk: 6 - fields: dashboard: 6 - date_added: '2023-10-23T21:19:10.458Z' + date_added: '2023-10-31T19:59:25.061Z' description: null detail: null display_type: 0 @@ -1001,45 +999,51 @@ source: tests/sentry/backup/test_releases.py pk: 6 - fields: custom_dynamic_sampling_rule: 4 - project: 4552849770807314 + project: 4552894755635218 model: sentry.customdynamicsamplingruleproject pk: 4 - fields: application: 6 - date_added: '2023-10-23T21:19:10.653Z' - expires_at: '2023-10-24T05:19:10.653Z' - refresh_token: 678ba98bc2283cfcb2542b6208fd8fd08c54730e644e95b75245bcfac63b185f + date_added: '2023-10-31T19:59:25.211Z' + expires_at: '2023-11-01T03:59:25.211Z' + name: null + refresh_token: 682fe9091e9c7dbdc3eb5888edd78f9d40d4626e3b29cbdb19fe169dae8ee612 scope_list: '[]' scopes: '0' - token: 7dcbb0f9acbe1fa2fb7cd98eb8e5ea789a9c7754a734fd4fb3ff2301768744d5 + token: b18204ebb4b1fcfdb90327cc32261774b08dfbc777fcc621ff0b05526a20965f + token_last_characters: null user: 35 model: sentry.apitoken pk: 14 - fields: application: 6 - date_added: '2023-10-23T21:19:10.739Z' + date_added: '2023-10-31T19:59:25.274Z' expires_at: null - refresh_token: 26e2bf7c771e8bc2bc6b3fdbe7a5378e726a6bee0ffaf2b02f7579b454e573d0 + name: create_exhaustive_sentry_app + refresh_token: d27487d1757df1b0440fb6f515e1b6d886c9514ac54ba48ed48597638d4f636d scope_list: '[]' scopes: '0' - token: adf999d27d984798b10faba00f3eeae3 + token: 91fa8b4bfa8ca52d1020cdc4c11440c5c32d910fa9eeeae921d05dcf8bc12eac + token_last_characters: null user: 31 model: sentry.apitoken pk: 15 - fields: application: null - date_added: '2023-10-23T21:19:10.871Z' + date_added: '2023-10-31T19:59:25.378Z' expires_at: null - refresh_token: 5b4070d589bbcb81c84fb20cae640d100526dd0709e09e0e6502047da3946c91 + name: create_exhaustive_global_configs + refresh_token: d2577f394ae4af75c013cba3c280a721593716eb337499ae38edc64eeb341096 scope_list: '[]' scopes: '0' - token: e8e13a79f47349ef89ed82a2f97de061 + token: 1eb36501b3f0c1e2f98bb2954630a35b8c03b28a7d71708238c3f86c7ad5401f + token_last_characters: null user: 31 model: sentry.apitoken pk: 16 - fields: application: 6 - code: dd72e78edc7da4ae6aec5db9d65cfe0a02078f6fd46464ee7cba9a45523df33b + code: b8a1777d937c42b05d44fa2b882a32b0487c4ad711101903c5f06bedb606d334 expires_at: '2022-01-01T11:11:00.000Z' redirect_uri: https://example.com scope_list: '[''openid'', ''profile'', ''email'']' @@ -1049,7 +1053,7 @@ source: tests/sentry/backup/test_releases.py pk: 8 - fields: application: 6 - date_added: '2023-10-23T21:19:10.738Z' + date_added: '2023-10-31T19:59:25.273Z' scope_list: '[]' scopes: '0' user: 31 @@ -1057,7 +1061,7 @@ source: tests/sentry/backup/test_releases.py pk: 9 - fields: application: null - date_added: '2023-10-23T21:19:10.870Z' + date_added: '2023-10-31T19:59:25.377Z' scope_list: '[]' scopes: '0' user: 31 @@ -1065,11 +1069,11 @@ source: tests/sentry/backup/test_releases.py pk: 10 - fields: comparison_delta: null - date_added: '2023-10-23T21:19:10.393Z' - date_modified: '2023-10-23T21:19:10.393Z' + date_added: '2023-10-31T19:59:25.012Z' + date_modified: '2023-10-31T19:59:25.012Z' include_all_projects: true - name: Devoted Wombat - organization: 4552849770807312 + name: Dear Jay + organization: 4552894755635216 owner: null resolve_threshold: null snuba_query: 11 @@ -1082,11 +1086,11 @@ source: tests/sentry/backup/test_releases.py pk: 11 - fields: comparison_delta: null - date_added: '2023-10-23T21:19:10.440Z' - date_modified: '2023-10-23T21:19:10.440Z' + date_added: '2023-10-31T19:59:25.046Z' + date_modified: '2023-10-31T19:59:25.046Z' include_all_projects: false - name: Helped Goat - organization: 4552849770807312 + name: Humane Bird + organization: 4552894755635216 owner: null resolve_threshold: null snuba_query: 12 @@ -1110,13 +1114,13 @@ source: tests/sentry/backup/test_releases.py - fields: api_grant: null api_token: 14 - date_added: '2023-10-23T21:19:10.612Z' + date_added: '2023-10-31T19:59:25.179Z' date_deleted: null - date_updated: '2023-10-23T21:19:10.632Z' - organization_id: 4552849770807312 + date_updated: '2023-10-31T19:59:25.194Z' + organization_id: 4552894755635216 sentry_app: 6 status: 1 - uuid: 65a5aebd-fe75-4563-befd-95b984c4a2e5 + uuid: a7567a8c-3c78-46b7-8152-adea88d0b68d model: sentry.sentryappinstallation pk: 6 - fields: @@ -1154,12 +1158,12 @@ source: tests/sentry/backup/test_releases.py type: alert-rule-action sentry_app: 6 type: alert-rule-action - uuid: cdcc9cd1-8b5f-4a1f-863c-ab5a2e0c7669 + uuid: b2617ea2-5f95-44a7-b9d2-e35eacaba3e6 model: sentry.sentryappcomponent pk: 6 - fields: alert_rule: null - date_added: '2023-10-23T21:19:10.333Z' + date_added: '2023-10-31T19:59:24.958Z' owner_id: 31 rule: 6 until: null @@ -1167,7 +1171,7 @@ source: tests/sentry/backup/test_releases.py model: sentry.rulesnooze pk: 6 - fields: - date_added: '2023-10-23T21:19:10.332Z' + date_added: '2023-10-31T19:59:24.957Z' rule: 6 type: 1 user_id: null @@ -1175,26 +1179,26 @@ source: tests/sentry/backup/test_releases.py pk: 6 - fields: action: 9 - project: 4552849770807314 + project: 4552894755635218 model: sentry.notificationactionproject pk: 9 - fields: action: 10 - project: 4552849770807314 + project: 4552894755635218 model: sentry.notificationactionproject pk: 10 - fields: alert_rule: 12 - date_added: '2023-10-23T21:19:10.446Z' + date_added: '2023-10-31T19:59:25.051Z' date_closed: null - date_detected: '2023-10-23T21:19:10.445Z' - date_started: '2023-10-23T21:19:10.445Z' + date_detected: '2023-10-31T19:59:25.049Z' + date_started: '2023-10-31T19:59:25.049Z' detection_uuid: null identifier: 1 - organization: 4552849770807312 + organization: 4552894755635216 status: 1 status_method: 3 - title: Next Marten + title: Sharing Roughy type: 2 model: sentry.incident pk: 6 @@ -1202,7 +1206,7 @@ source: tests/sentry/backup/test_releases.py aggregates: null columns: null conditions: '' - date_added: '2023-10-23T21:19:10.459Z' + date_added: '2023-10-31T19:59:25.062Z' field_aliases: null fields: '[]' name: Test Query for test-org @@ -1214,21 +1218,21 @@ source: tests/sentry/backup/test_releases.py - fields: alert_rule: 11 alert_threshold: 100.0 - date_added: '2023-10-23T21:19:10.403Z' - label: Tidy Macaque + date_added: '2023-10-31T19:59:25.020Z' + label: Amusing Dolphin resolve_threshold: null threshold_type: null model: sentry.alertruletrigger pk: 6 - fields: alert_rule: 11 - date_added: '2023-10-23T21:19:10.395Z' - project: 4552849770807315 + date_added: '2023-10-31T19:59:25.014Z' + project: 4552894755635219 model: sentry.alertruleexcludedprojects pk: 6 - fields: alert_rule: 11 - date_added: '2023-10-23T21:19:10.399Z' + date_added: '2023-10-31T19:59:25.016Z' previous_alert_rule: null type: 1 user_id: null @@ -1236,30 +1240,30 @@ source: tests/sentry/backup/test_releases.py pk: 11 - fields: alert_rule: 12 - date_added: '2023-10-23T21:19:10.443Z' + date_added: '2023-10-31T19:59:25.048Z' previous_alert_rule: null type: 1 user_id: null model: sentry.alertruleactivity pk: 12 - fields: - date_added: '2023-10-23T21:19:10.451Z' - end: '2023-10-23T21:19:10.451Z' + date_added: '2023-10-31T19:59:25.055Z' + end: '2023-10-31T19:59:25.055Z' period: 1 - start: '2023-10-22T21:19:10.451Z' + start: '2023-10-30T19:59:25.055Z' values: '[[1.0, 2.0, 3.0], [1.5, 2.5, 3.5]]' model: sentry.timeseriessnapshot pk: 6 - fields: actor_id: 6 application_id: 6 - date_added: '2023-10-23T21:19:10.629Z' + date_added: '2023-10-31T19:59:25.192Z' events: '[]' - guid: f65c859ce28449a992dd67b48e01b6b8 + guid: df6a4275d03f49a391ddc6d2be80ae9f installation_id: 6 - organization_id: 4552849770807312 + organization_id: 4552894755635216 project_id: null - secret: 8714f3d8edbb0f92c9b12bbd90fb6f6afdfac3935499a32b92217933514ff05b + secret: ef85effff0672d3d82ba1f1d3d78c6e17f97a443fdc358f4fec93383e3359181 status: 0 url: https://example.com/webhook version: 0 @@ -1268,40 +1272,40 @@ source: tests/sentry/backup/test_releases.py - fields: actor_id: 36 application_id: 6 - date_added: '2023-10-23T21:19:10.855Z' + date_added: '2023-10-31T19:59:25.363Z' events: '[''event.created'']' - guid: b84250159dd64cf2bdee2a99a06bcdf2 + guid: 86f154c4a3af439f9eaf778b500ed21a installation_id: 6 - organization_id: 4552849770807312 - project_id: 4552849770807318 - secret: 8cc45ac09efaf76da322f5cd006ff6ca2f3d209665b24ed4f51c07735b033fc5 + organization_id: 4552894755635216 + project_id: 4552894755700754 + secret: 5cf2c75f2cab24b97fecd9d2332e6906b86086987f013f72e343de073f5c076c status: 0 url: https://example.com/sentry/webhook version: 0 model: sentry.servicehook pk: 12 - fields: - date_added: '2023-10-23T21:19:10.456Z' + date_added: '2023-10-31T19:59:25.059Z' incident: 6 - target_run_date: '2023-10-24T01:19:10.456Z' + target_run_date: '2023-10-31T23:59:25.059Z' model: sentry.pendingincidentsnapshot pk: 6 - fields: alert_rule_trigger: 6 - date_added: '2023-10-23T21:19:10.455Z' - date_modified: '2023-10-23T21:19:10.455Z' + date_added: '2023-10-31T19:59:25.058Z' + date_modified: '2023-10-31T19:59:25.058Z' incident: 6 status: 1 model: sentry.incidenttrigger pk: 6 - fields: - date_added: '2023-10-23T21:19:10.453Z' + date_added: '2023-10-31T19:59:25.057Z' incident: 6 user_id: 31 model: sentry.incidentsubscription pk: 6 - fields: - date_added: '2023-10-23T21:19:10.452Z' + date_added: '2023-10-31T19:59:25.056Z' event_stats_snapshot: 6 incident: 6 total_events: 1 @@ -1310,7 +1314,7 @@ source: tests/sentry/backup/test_releases.py pk: 6 - fields: comment: hello test-org - date_added: '2023-10-23T21:19:10.450Z' + date_added: '2023-10-31T19:59:25.054Z' incident: 6 notification_uuid: null previous_value: null @@ -1321,13 +1325,13 @@ source: tests/sentry/backup/test_releases.py pk: 6 - fields: alert_rule_trigger: 6 - date_added: '2023-10-23T21:19:10.404Z' + date_added: '2023-10-31T19:59:25.021Z' query_subscription: 21 model: sentry.alertruletriggerexclusion pk: 6 - fields: alert_rule_trigger: 6 - date_added: '2023-10-23T21:19:10.436Z' + date_added: '2023-10-31T19:59:25.043Z' integration_id: null sentry_app_config: null sentry_app_id: null