From 2e9ddbaea3b58883027cb08a0bf0ceb796cef965 Mon Sep 17 00:00:00 2001 From: rohan Date: Tue, 31 Mar 2026 15:26:15 +0530 Subject: [PATCH 001/118] feat: add Team, TeamMembership, TeamAppEnvironment, EnvironmentKeyGrant models and server-side key wrapping --- .../api/migrations/0120_add_team_models.py | 73 ++++++++ .../0121_backfill_environment_key_grants.py | 46 +++++ backend/api/models.py | 122 +++++++++++++ backend/api/utils/keys.py | 169 ++++++++++++++++++ 4 files changed, 410 insertions(+) create mode 100644 backend/api/migrations/0120_add_team_models.py create mode 100644 backend/api/migrations/0121_backfill_environment_key_grants.py create mode 100644 backend/api/utils/keys.py diff --git a/backend/api/migrations/0120_add_team_models.py b/backend/api/migrations/0120_add_team_models.py new file mode 100644 index 000000000..66f16242b --- /dev/null +++ b/backend/api/migrations/0120_add_team_models.py @@ -0,0 +1,73 @@ +# Generated by Django 4.2.29 on 2026-03-30 11:38 + +from django.db import migrations, models +import django.db.models.deletion +import uuid + + +class Migration(migrations.Migration): + + dependencies = [ + ('api', '0119_secretevent_type_field'), + ] + + operations = [ + migrations.CreateModel( + name='Team', + fields=[ + ('id', models.TextField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), + ('name', models.CharField(max_length=64)), + ('description', models.TextField(blank=True, null=True)), + ('is_scim_managed', models.BooleanField(default=False)), + ('created_at', models.DateTimeField(auto_now_add=True, null=True)), + ('updated_at', models.DateTimeField(auto_now=True)), + ('deleted_at', models.DateTimeField(blank=True, null=True)), + ('created_by', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='created_teams', to='api.organisationmember')), + ('member_role', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='teams_as_member_role', to='api.role')), + ('organisation', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='teams', to='api.organisation')), + ('service_account_role', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='teams_as_sa_role', to='api.role')), + ], + ), + migrations.CreateModel( + name='TeamMembership', + fields=[ + ('id', models.TextField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), + ('created_at', models.DateTimeField(auto_now_add=True, null=True)), + ('org_member', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='team_memberships', to='api.organisationmember')), + ('service_account', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='team_memberships', to='api.serviceaccount')), + ('team', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='memberships', to='api.team')), + ], + ), + migrations.CreateModel( + name='TeamAppEnvironment', + fields=[ + ('id', models.TextField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), + ('created_at', models.DateTimeField(auto_now_add=True, null=True)), + ('app', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api.app')), + ('environment', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api.environment')), + ('team', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='app_environments', to='api.team')), + ], + ), + migrations.CreateModel( + name='EnvironmentKeyGrant', + fields=[ + ('id', models.TextField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), + ('grant_type', models.CharField(choices=[('individual', 'Individual'), ('team', 'Team')], max_length=20)), + ('created_at', models.DateTimeField(auto_now_add=True, null=True)), + ('environment_key', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='grants', to='api.environmentkey')), + ('team', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='key_grants', to='api.team')), + ], + ), + migrations.AddConstraint( + model_name='teammembership', + constraint=models.UniqueConstraint(condition=models.Q(('org_member__isnull', False)), fields=('team', 'org_member'), name='unique_team_user'), + ), + migrations.AddConstraint( + model_name='teammembership', + constraint=models.UniqueConstraint(condition=models.Q(('service_account__isnull', False)), fields=('team', 'service_account'), name='unique_team_sa'), + ), + migrations.AddConstraint( + model_name='teamappenvironment', + constraint=models.UniqueConstraint(fields=('team', 'environment'), name='unique_team_env'), + ), + ] diff --git a/backend/api/migrations/0121_backfill_environment_key_grants.py b/backend/api/migrations/0121_backfill_environment_key_grants.py new file mode 100644 index 000000000..70e975ea4 --- /dev/null +++ b/backend/api/migrations/0121_backfill_environment_key_grants.py @@ -0,0 +1,46 @@ +# Generated by Django 4.2.29 on 2026-03-30 11:38 + +from django.db import migrations + + +def backfill_grants(apps, schema_editor): + """ + Create an 'individual' EnvironmentKeyGrant for every existing EnvironmentKey. + This ensures the grant-tracking system works from day one — all pre-existing + keys are attributed to individual access. + """ + EnvironmentKey = apps.get_model("api", "EnvironmentKey") + EnvironmentKeyGrant = apps.get_model("api", "EnvironmentKeyGrant") + + grants_to_create = [] + for ek in EnvironmentKey.objects.filter(deleted_at__isnull=True).iterator(): + grants_to_create.append( + EnvironmentKeyGrant( + environment_key=ek, + grant_type="individual", + team=None, + ) + ) + if len(grants_to_create) >= 1000: + EnvironmentKeyGrant.objects.bulk_create(grants_to_create, ignore_conflicts=True) + grants_to_create = [] + + if grants_to_create: + EnvironmentKeyGrant.objects.bulk_create(grants_to_create, ignore_conflicts=True) + + +def reverse_backfill(apps, schema_editor): + """Remove all individual grants created by the forward migration.""" + EnvironmentKeyGrant = apps.get_model("api", "EnvironmentKeyGrant") + EnvironmentKeyGrant.objects.filter(grant_type="individual", team__isnull=True).delete() + + +class Migration(migrations.Migration): + + dependencies = [ + ("api", "0120_add_team_models"), + ] + + operations = [ + migrations.RunPython(backfill_grants, reverse_backfill), + ] diff --git a/backend/api/models.py b/backend/api/models.py index 771be6308..e6877bea1 100644 --- a/backend/api/models.py +++ b/backend/api/models.py @@ -1060,6 +1060,128 @@ class PersonalSecret(models.Model): deleted_at = models.DateTimeField(blank=True, null=True) +class Team(models.Model): + id = models.TextField(default=uuid4, primary_key=True, editable=False) + name = models.CharField(max_length=64) + description = models.TextField(null=True, blank=True) + organisation = models.ForeignKey( + Organisation, on_delete=models.CASCADE, related_name="teams" + ) + + # Optional roles — when set, override org role's app_permissions for team-accessed apps + member_role = models.ForeignKey( + Role, + null=True, + blank=True, + on_delete=models.SET_NULL, + related_name="teams_as_member_role", + ) + service_account_role = models.ForeignKey( + Role, + null=True, + blank=True, + on_delete=models.SET_NULL, + related_name="teams_as_sa_role", + ) + + is_scim_managed = models.BooleanField(default=False) + created_by = models.ForeignKey( + OrganisationMember, + null=True, + on_delete=models.SET_NULL, + related_name="created_teams", + ) + created_at = models.DateTimeField(auto_now_add=True, blank=True, null=True) + updated_at = models.DateTimeField(auto_now=True) + deleted_at = models.DateTimeField(null=True, blank=True) + + def delete(self, *args, **kwargs): + self.deleted_at = timezone.now() + self.save() + + def __str__(self): + return f"{self.name} ({self.organisation.name})" + + +class TeamMembership(models.Model): + id = models.TextField(default=uuid4, primary_key=True, editable=False) + team = models.ForeignKey( + Team, on_delete=models.CASCADE, related_name="memberships" + ) + org_member = models.ForeignKey( + OrganisationMember, + on_delete=models.CASCADE, + null=True, + blank=True, + related_name="team_memberships", + ) + service_account = models.ForeignKey( + ServiceAccount, + on_delete=models.CASCADE, + null=True, + blank=True, + related_name="team_memberships", + ) + created_at = models.DateTimeField(auto_now_add=True, blank=True, null=True) + + class Meta: + constraints = [ + models.UniqueConstraint( + fields=["team", "org_member"], + condition=models.Q(org_member__isnull=False), + name="unique_team_user", + ), + models.UniqueConstraint( + fields=["team", "service_account"], + condition=models.Q(service_account__isnull=False), + name="unique_team_sa", + ), + ] + + +class TeamAppEnvironment(models.Model): + """Tracks which environments within an app a team has access to.""" + + id = models.TextField(default=uuid4, primary_key=True, editable=False) + team = models.ForeignKey( + Team, on_delete=models.CASCADE, related_name="app_environments" + ) + app = models.ForeignKey(App, on_delete=models.CASCADE) + environment = models.ForeignKey(Environment, on_delete=models.CASCADE) + created_at = models.DateTimeField(auto_now_add=True, blank=True, null=True) + + class Meta: + constraints = [ + models.UniqueConstraint( + fields=["team", "environment"], + name="unique_team_env", + ) + ] + + +class EnvironmentKeyGrant(models.Model): + """Tracks why an EnvironmentKey exists — prevents accidental revocation + when removing team access.""" + + INDIVIDUAL = "individual" + TEAM = "team" + + GRANT_TYPE_CHOICES = [ + (INDIVIDUAL, "Individual"), + (TEAM, "Team"), + ] + + id = models.TextField(default=uuid4, primary_key=True, editable=False) + environment_key = models.ForeignKey( + EnvironmentKey, on_delete=models.CASCADE, related_name="grants" + ) + grant_type = models.CharField(max_length=20, choices=GRANT_TYPE_CHOICES) + team = models.ForeignKey( + Team, on_delete=models.CASCADE, null=True, blank=True, related_name="key_grants" + ) + created_at = models.DateTimeField(auto_now_add=True, blank=True, null=True) + + class Lockbox(models.Model): id = models.TextField(default=uuid4, primary_key=True, editable=False) data = models.JSONField() diff --git a/backend/api/utils/keys.py b/backend/api/utils/keys.py new file mode 100644 index 000000000..5a0456c0c --- /dev/null +++ b/backend/api/utils/keys.py @@ -0,0 +1,169 @@ +""" +Server-side key wrapping utilities for team-based access. + +When a team is granted access to an SSE-enabled app, the server wraps +EnvironmentKeys for each team member using ServerEnvironmentKey data. +""" + +from django.apps import apps +from django.utils import timezone +from api.utils.crypto import ( + get_server_keypair, + decrypt_asymmetric, + encrypt_asymmetric, +) + + +def server_wrap_env_key_for_member(environment, identity_key): + """ + Unwraps a ServerEnvironmentKey and re-wraps the seed/salt for a user's + identity_key. Returns (wrapped_seed, wrapped_salt). + + Requires SSE to be enabled on the app (ServerEnvironmentKey must exist). + """ + ServerEnvironmentKey = apps.get_model("api", "ServerEnvironmentKey") + + server_env_key = ServerEnvironmentKey.objects.get( + environment=environment, deleted_at__isnull=True + ) + server_pk, server_sk = get_server_keypair() + + seed = decrypt_asymmetric( + server_env_key.wrapped_seed, server_sk.hex(), server_pk.hex() + ) + salt = decrypt_asymmetric( + server_env_key.wrapped_salt, server_sk.hex(), server_pk.hex() + ) + + wrapped_seed = encrypt_asymmetric(seed, identity_key) + wrapped_salt = encrypt_asymmetric(salt, identity_key) + return wrapped_seed, wrapped_salt + + +def provision_team_environment_keys(team, app, members=None): + """ + Wraps EnvironmentKeys for team members for a given app's team environments. + + Called when: + - A team is granted access to an app (AddTeamApps) + - A member is added to a team that already has app access (AddTeamMembers) + - A SCIM-provisioned user completes their key ceremony (first login) + + Skips members without an identity_key (deferred until first login). + """ + Environment = apps.get_model("api", "Environment") + EnvironmentKey = apps.get_model("api", "EnvironmentKey") + EnvironmentKeyGrant = apps.get_model("api", "EnvironmentKeyGrant") + TeamAppEnvironment = apps.get_model("api", "TeamAppEnvironment") + + if not app.sse_enabled: + raise ValueError("Team-based access requires SSE-enabled apps.") + + env_ids = TeamAppEnvironment.objects.filter( + team=team, app=app + ).values_list("environment_id", flat=True) + environments = Environment.objects.filter(id__in=env_ids, deleted_at__isnull=True) + + if members is None: + members = team.memberships.all() + + for env in environments: + for membership in members: + account = membership.org_member or membership.service_account + if not account or not account.identity_key: + continue # Deferred until first login + + is_user = membership.org_member is not None + key_filter = { + "environment": env, + "user_id": membership.org_member_id if is_user else None, + "service_account_id": ( + membership.service_account_id if not is_user else None + ), + } + + env_key = EnvironmentKey.objects.filter( + deleted_at__isnull=True, **key_filter + ).first() + + if not env_key: + wrapped_seed, wrapped_salt = server_wrap_env_key_for_member( + env, account.identity_key + ) + env_key = EnvironmentKey.objects.create( + **key_filter, + identity_key=account.identity_key, + wrapped_seed=wrapped_seed, + wrapped_salt=wrapped_salt, + ) + + EnvironmentKeyGrant.objects.get_or_create( + environment_key=env_key, + grant_type="team", + team=team, + ) + + +def revoke_team_environment_keys(team, app=None, member=None, environments=None): + """ + Removes team-specific EnvironmentKeyGrants. + Soft-deletes EnvironmentKeys that have no remaining grants. + + Called when: + - A team is removed from an app (RemoveTeamApp) + - A member is removed from a team (RemoveTeamMember) + - A team is deleted (DeleteTeam) + - Specific environments are removed from a team-app link (UpdateTeamAppEnvironments) + """ + EnvironmentKey = apps.get_model("api", "EnvironmentKey") + EnvironmentKeyGrant = apps.get_model("api", "EnvironmentKeyGrant") + + grant_filter = {"grant_type": "team", "team": team} + if app: + grant_filter["environment_key__environment__app"] = app + if environments is not None: + grant_filter["environment_key__environment__in"] = environments + if member: + if hasattr(member, "user"): + grant_filter["environment_key__user_id"] = member.id + else: + grant_filter["environment_key__service_account_id"] = member.id + + grants = EnvironmentKeyGrant.objects.filter(**grant_filter) + env_key_ids = list(grants.values_list("environment_key_id", flat=True)) + grants.delete() + + # Soft-delete orphaned EnvironmentKeys (no remaining grants) + for ek_id in env_key_ids: + if not EnvironmentKeyGrant.objects.filter(environment_key_id=ek_id).exists(): + EnvironmentKey.objects.filter(id=ek_id).update( + deleted_at=timezone.now() + ) + + +def provision_pending_team_keys(org_member): + """ + Called after a user completes their key ceremony (first login). + Wraps EnvironmentKeys for all team-accessible SSE environments + that the user didn't yet have keys for. + """ + App = apps.get_model("api", "App") + TeamMembership = apps.get_model("api", "TeamMembership") + TeamAppEnvironment = apps.get_model("api", "TeamAppEnvironment") + + team_memberships = TeamMembership.objects.filter( + org_member=org_member, + team__deleted_at__isnull=True, + ).select_related("team") + + for tm in team_memberships: + team_app_ids = ( + TeamAppEnvironment.objects.filter(team=tm.team) + .values_list("app_id", flat=True) + .distinct() + ) + + for app_id in team_app_ids: + app = App.objects.get(id=app_id) + if app.sse_enabled: + provision_team_environment_keys(tm.team, app, members=[tm]) From 64f7e125510aefe2c215ae85aee7e697bfc91d73 Mon Sep 17 00:00:00 2001 From: rohan Date: Tue, 31 Mar 2026 15:26:18 +0530 Subject: [PATCH 002/118] feat: add Teams permission resource and team role override resolution to permission checks --- backend/api/utils/access/permissions.py | 75 ++++++++++++++++++++++++- backend/api/utils/access/roles.py | 5 ++ 2 files changed, 78 insertions(+), 2 deletions(-) diff --git a/backend/api/utils/access/permissions.py b/backend/api/utils/access/permissions.py index 4a08982a5..add8d74ae 100644 --- a/backend/api/utils/access/permissions.py +++ b/backend/api/utils/access/permissions.py @@ -23,12 +23,23 @@ def user_is_org_member(user_id, org_id): def user_can_access_app(user_id, app_id): OrganisationMember = apps.get_model("api", "OrganisationMember") App = apps.get_model("api", "App") + TeamMembership = apps.get_model("api", "TeamMembership") app = App.objects.get(id=app_id) org_member = OrganisationMember.objects.get( user_id=user_id, organisation=app.organisation, deleted_at=None ) - return org_member in app.members.all() + + # Individual access + if org_member in app.members.all(): + return True + + # Team access + return TeamMembership.objects.filter( + org_member=org_member, + team__app_environments__app=app, + team__deleted_at__isnull=True, + ).exists() def user_can_access_environment(user_id, env_id): @@ -88,6 +99,56 @@ def role_has_permission(role, action, resource, is_app_resource=False): return action in resource_permissions +def _check_app_permission(account, action, resource, app, is_service_account=False): + """ + Check app-level permission considering both individual and team access. + + - Individual access: uses org role's app_permissions + - Team access: uses team role's app_permissions (override model) + - Multiple teams: union — if ANY team role grants the permission, allow it + - Team role is null: uses org role (team is purely an access group) + """ + Team = apps.get_model("api", "Team") + + if is_service_account: + has_individual = app.service_accounts.filter(id=account.id).exists() + org_role = account.role + role_field = "service_account_role" + membership_filter = {"memberships__service_account": account} + else: + has_individual = account in app.members.all() + org_role = account.role + role_field = "member_role" + membership_filter = {"memberships__org_member": account} + + # Individual access → org role, no team override + if has_individual: + return role_has_permission(org_role, action, resource, is_app_resource=True) + + # Team access — find all teams granting access to this app + teams = Team.objects.filter( + app_environments__app=app, + deleted_at__isnull=True, + **membership_filter, + ).distinct() + + if not teams.exists(): + return False # No access + + # Union: if ANY team role grants this permission, allow it + for team in teams: + team_role = getattr(team, role_field) + if team_role is None: + # No team role → use org role (most permissive possible) + if role_has_permission(org_role, action, resource, is_app_resource=True): + return True + else: + if role_has_permission(team_role, action, resource, is_app_resource=True): + return True + + return False + + def user_has_permission( account, action, @@ -95,6 +156,7 @@ def user_has_permission( organisation, is_app_resource=False, is_service_account=False, + app=None, ): OrganisationMember = apps.get_model("api", "OrganisationMember") @@ -108,7 +170,16 @@ def user_has_permission( user=account, organisation=organisation, deleted_at=None ) - return role_has_permission(org_member.role, action, resource, is_app_resource) + # Org-level permissions — always use org role + if not is_app_resource or app is None: + return role_has_permission( + org_member.role, action, resource, is_app_resource + ) + + # App-level permissions — resolve effective role via team access + return _check_app_permission( + org_member, action, resource, app, is_service_account + ) except OrganisationMember.DoesNotExist: return False # User is not a member of the organization diff --git a/backend/api/utils/access/roles.py b/backend/api/utils/access/roles.py index b61f249aa..e19823eca 100644 --- a/backend/api/utils/access/roles.py +++ b/backend/api/utils/access/roles.py @@ -17,6 +17,7 @@ "IntegrationCredentials": ["create", "read", "update", "delete"], "NetworkAccessPolicies": ["create", "read", "update", "delete"], "SSO": ["create", "read", "update", "delete"], + "Teams": ["create", "read", "update", "delete"], }, "app_permissions": { "Environments": ["create", "read", "update", "delete"], @@ -50,6 +51,7 @@ "IntegrationCredentials": ["create", "read", "update", "delete"], "NetworkAccessPolicies": ["create", "read", "update", "delete"], "SSO": ["create", "read", "update", "delete"], + "Teams": ["create", "read", "update", "delete"], }, "app_permissions": { "Environments": ["create", "read", "update", "delete"], @@ -82,6 +84,7 @@ "IntegrationCredentials": ["create", "read", "update", "delete"], "NetworkAccessPolicies": ["create", "read", "update", "delete"], "SSO": [], + "Teams": ["create", "read", "update", "delete"], }, "app_permissions": { "Environments": ["read", "create", "update"], @@ -118,6 +121,7 @@ ], "NetworkAccessPolicies": ["read"], "SSO": [], + "Teams": ["read"], }, "app_permissions": { "Environments": ["read", "create", "update"], @@ -150,6 +154,7 @@ "IntegrationCredentials": ["read"], "NetworkAccessPolicies": ["read"], "SSO": [], + "Teams": [], }, "app_permissions": { "Environments": ["read", "create", "update", "delete"], From 44aae4c692c284b2f631f8af9b8ae682c6092730 Mon Sep 17 00:00:00 2001 From: rohan Date: Tue, 31 Mar 2026 15:26:22 +0530 Subject: [PATCH 003/118] feat: add GraphQL types, mutations, and queries for teams --- backend/backend/graphene/mutations/teams.py | 451 ++++++++++++++++++++ backend/backend/graphene/queries/teams.py | 30 ++ backend/backend/graphene/types.py | 86 +++- backend/backend/schema.py | 67 ++- 4 files changed, 621 insertions(+), 13 deletions(-) create mode 100644 backend/backend/graphene/mutations/teams.py create mode 100644 backend/backend/graphene/queries/teams.py diff --git a/backend/backend/graphene/mutations/teams.py b/backend/backend/graphene/mutations/teams.py new file mode 100644 index 000000000..175ac3ca9 --- /dev/null +++ b/backend/backend/graphene/mutations/teams.py @@ -0,0 +1,451 @@ +import graphene +from graphql import GraphQLError +from django.utils import timezone +from api.models import ( + App, + Environment, + Organisation, + OrganisationMember, + Role, + ServiceAccount, + Team, + TeamAppEnvironment, + TeamMembership, +) +from api.utils.access.permissions import ( + user_can_access_app, + user_has_permission, + user_is_org_member, +) +from api.utils.keys import ( + provision_team_environment_keys, + revoke_team_environment_keys, +) +from backend.quotas import can_use_teams +from backend.graphene.types import TeamType, MemberType + + +def _get_org_member(user, org): + """Get the requesting user's OrganisationMember.""" + return OrganisationMember.objects.get( + user=user, organisation=org, deleted_at=None + ) + + +class CreateTeamMutation(graphene.Mutation): + class Arguments: + organisation_id = graphene.ID(required=True) + name = graphene.String(required=True) + description = graphene.String(required=False) + member_role_id = graphene.ID(required=False) + service_account_role_id = graphene.ID(required=False) + + team = graphene.Field(TeamType) + + @classmethod + def mutate( + cls, + root, + info, + organisation_id, + name, + description=None, + member_role_id=None, + service_account_role_id=None, + ): + user = info.context.user + org = Organisation.objects.get(id=organisation_id) + + if not user_is_org_member(user.userId, organisation_id): + raise GraphQLError("You don't have access to this organisation") + + if not user_has_permission(user, "create", "Teams", org): + raise GraphQLError("You don't have permission to create Teams") + + if not can_use_teams(org): + raise GraphQLError( + "Teams require a Pro or Enterprise plan. Please upgrade to use this feature." + ) + + if not name or not name.strip(): + raise GraphQLError("Team name cannot be blank") + if len(name) > 64: + raise GraphQLError("Team name cannot exceed 64 characters") + + member_role = None + if member_role_id: + member_role = Role.objects.get(id=member_role_id, organisation=org) + + sa_role = None + if service_account_role_id: + sa_role = Role.objects.get(id=service_account_role_id, organisation=org) + + org_member = _get_org_member(user, org) + + team = Team.objects.create( + name=name.strip(), + description=description, + organisation=org, + member_role=member_role, + service_account_role=sa_role, + created_by=org_member, + ) + + # Auto-add the creator as a team member + TeamMembership.objects.create(team=team, org_member=org_member) + + return CreateTeamMutation(team=team) + + +class UpdateTeamMutation(graphene.Mutation): + class Arguments: + team_id = graphene.ID(required=True) + name = graphene.String(required=False) + description = graphene.String(required=False) + member_role_id = graphene.ID(required=False) + service_account_role_id = graphene.ID(required=False) + + team = graphene.Field(TeamType) + + @classmethod + def mutate( + cls, + root, + info, + team_id, + name=None, + description=None, + member_role_id=None, + service_account_role_id=None, + ): + user = info.context.user + team = Team.objects.get(id=team_id, deleted_at__isnull=True) + org = team.organisation + + if not user_is_org_member(user.userId, org.id): + raise GraphQLError("You don't have access to this organisation") + + if not user_has_permission(user, "update", "Teams", org): + raise GraphQLError("You don't have permission to update Teams") + + if team.is_scim_managed: + raise GraphQLError( + "This team is managed by SCIM and cannot be manually updated" + ) + + if name is not None: + if not name or not name.strip(): + raise GraphQLError("Team name cannot be blank") + if len(name) > 64: + raise GraphQLError("Team name cannot exceed 64 characters") + team.name = name.strip() + + if description is not None: + team.description = description + + if member_role_id is not None: + if member_role_id == "": + team.member_role = None + else: + team.member_role = Role.objects.get( + id=member_role_id, organisation=org + ) + + if service_account_role_id is not None: + if service_account_role_id == "": + team.service_account_role = None + else: + team.service_account_role = Role.objects.get( + id=service_account_role_id, organisation=org + ) + + team.save() + return UpdateTeamMutation(team=team) + + +class DeleteTeamMutation(graphene.Mutation): + class Arguments: + team_id = graphene.ID(required=True) + + ok = graphene.Boolean() + + @classmethod + def mutate(cls, root, info, team_id): + user = info.context.user + team = Team.objects.get(id=team_id, deleted_at__isnull=True) + org = team.organisation + + if not user_is_org_member(user.userId, org.id): + raise GraphQLError("You don't have access to this organisation") + + if not user_has_permission(user, "delete", "Teams", org): + raise GraphQLError("You don't have permission to delete Teams") + + # Revoke all team environment key grants + revoke_team_environment_keys(team) + + team.deleted_at = timezone.now() + team.save() + + return DeleteTeamMutation(ok=True) + + +class AddTeamMembersMutation(graphene.Mutation): + class Arguments: + team_id = graphene.ID(required=True) + member_ids = graphene.List(graphene.NonNull(graphene.ID), required=True) + member_type = MemberType(required=False, default_value=MemberType.USER) + + team = graphene.Field(TeamType) + + @classmethod + def mutate(cls, root, info, team_id, member_ids, member_type=MemberType.USER): + user = info.context.user + team = Team.objects.get(id=team_id, deleted_at__isnull=True) + org = team.organisation + + if not user_is_org_member(user.userId, org.id): + raise GraphQLError("You don't have access to this organisation") + + if not user_has_permission(user, "update", "Teams", org): + raise GraphQLError("You don't have permission to manage Teams") + + if team.is_scim_managed: + raise GraphQLError( + "This team is managed by SCIM. Members cannot be manually added." + ) + + new_memberships = [] + for mid in member_ids: + if member_type == MemberType.USER: + member = OrganisationMember.objects.get( + id=mid, organisation=org, deleted_at=None + ) + if TeamMembership.objects.filter( + team=team, org_member=member + ).exists(): + continue + tm = TeamMembership.objects.create(team=team, org_member=member) + else: + sa = ServiceAccount.objects.get( + id=mid, organisation=org, deleted_at=None + ) + if TeamMembership.objects.filter( + team=team, service_account=sa + ).exists(): + continue + tm = TeamMembership.objects.create(team=team, service_account=sa) + new_memberships.append(tm) + + # Provision environment keys for new members on all team apps + if new_memberships: + app_ids = ( + TeamAppEnvironment.objects.filter(team=team) + .values_list("app_id", flat=True) + .distinct() + ) + for app_id in app_ids: + app = App.objects.get(id=app_id) + if app.sse_enabled: + provision_team_environment_keys( + team, app, members=new_memberships + ) + + return AddTeamMembersMutation(team=team) + + +class RemoveTeamMemberMutation(graphene.Mutation): + class Arguments: + team_id = graphene.ID(required=True) + member_id = graphene.ID(required=True) + member_type = MemberType(required=False, default_value=MemberType.USER) + + team = graphene.Field(TeamType) + + @classmethod + def mutate(cls, root, info, team_id, member_id, member_type=MemberType.USER): + user = info.context.user + team = Team.objects.get(id=team_id, deleted_at__isnull=True) + org = team.organisation + + if not user_is_org_member(user.userId, org.id): + raise GraphQLError("You don't have access to this organisation") + + if not user_has_permission(user, "update", "Teams", org): + raise GraphQLError("You don't have permission to manage Teams") + + if team.is_scim_managed: + raise GraphQLError( + "This team is managed by SCIM. Members cannot be manually removed." + ) + + if member_type == MemberType.USER: + member = OrganisationMember.objects.get(id=member_id, deleted_at=None) + membership = TeamMembership.objects.get(team=team, org_member=member) + revoke_team_environment_keys(team, member=member) + else: + member = ServiceAccount.objects.get(id=member_id, deleted_at=None) + membership = TeamMembership.objects.get(team=team, service_account=member) + revoke_team_environment_keys(team, member=member) + + membership.delete() + + return RemoveTeamMemberMutation(team=team) + + +class AppEnvironmentInput(graphene.InputObjectType): + app_id = graphene.ID(required=True) + env_ids = graphene.List(graphene.NonNull(graphene.ID), required=True) + + +class AddTeamAppsMutation(graphene.Mutation): + class Arguments: + team_id = graphene.ID(required=True) + app_envs = graphene.List( + graphene.NonNull(AppEnvironmentInput), required=True + ) + + team = graphene.Field(TeamType) + + @classmethod + def mutate(cls, root, info, team_id, app_envs): + user = info.context.user + team = Team.objects.get(id=team_id, deleted_at__isnull=True) + org = team.organisation + + if not user_is_org_member(user.userId, org.id): + raise GraphQLError("You don't have access to this organisation") + + if not user_has_permission(user, "update", "Teams", org): + raise GraphQLError("You don't have permission to manage Teams") + + for app_env in app_envs: + app = App.objects.get(id=app_env.app_id, organisation=org) + + # Actor must have access to the app + if not user_can_access_app(user.userId, app.id): + raise GraphQLError( + f"You don't have access to app '{app.name}'" + ) + + # Team access requires SSE + if not app.sse_enabled: + raise GraphQLError( + f"App '{app.name}' does not have server-side encryption enabled. " + "Team-based access requires SSE." + ) + + for env_id in app_env.env_ids: + env = Environment.objects.get(id=env_id, app=app) + TeamAppEnvironment.objects.get_or_create( + team=team, app=app, environment=env + ) + + # Provision keys for all team members + provision_team_environment_keys(team, app) + + return AddTeamAppsMutation(team=team) + + +class RemoveTeamAppMutation(graphene.Mutation): + class Arguments: + team_id = graphene.ID(required=True) + app_id = graphene.ID(required=True) + + team = graphene.Field(TeamType) + + @classmethod + def mutate(cls, root, info, team_id, app_id): + user = info.context.user + team = Team.objects.get(id=team_id, deleted_at__isnull=True) + org = team.organisation + + if not user_is_org_member(user.userId, org.id): + raise GraphQLError("You don't have access to this organisation") + + if not user_has_permission(user, "update", "Teams", org): + raise GraphQLError("You don't have permission to manage Teams") + + app = App.objects.get(id=app_id, organisation=org) + + # Revoke grants before removing the app-env links + revoke_team_environment_keys(team, app=app) + + TeamAppEnvironment.objects.filter(team=team, app=app).delete() + + return RemoveTeamAppMutation(team=team) + + +class UpdateTeamAppEnvironmentsMutation(graphene.Mutation): + class Arguments: + team_id = graphene.ID(required=True) + app_id = graphene.ID(required=True) + env_ids = graphene.List(graphene.NonNull(graphene.ID), required=True) + + team = graphene.Field(TeamType) + + @classmethod + def mutate(cls, root, info, team_id, app_id, env_ids): + user = info.context.user + team = Team.objects.get(id=team_id, deleted_at__isnull=True) + org = team.organisation + + if not user_is_org_member(user.userId, org.id): + raise GraphQLError("You don't have access to this organisation") + + if not user_has_permission(user, "update", "Teams", org): + raise GraphQLError("You don't have permission to manage Teams") + + app = App.objects.get(id=app_id, organisation=org) + + if not user_can_access_app(user.userId, app.id): + raise GraphQLError("You don't have access to this app") + + if not app.sse_enabled: + raise GraphQLError( + "Team-based access requires server-side encryption." + ) + + # Determine which environments to add/remove + current_env_ids = set( + TeamAppEnvironment.objects.filter(team=team, app=app).values_list( + "environment_id", flat=True + ) + ) + new_env_ids = set(env_ids) + + # Validate all new env_ids belong to this app + valid_env_ids = set( + Environment.objects.filter( + id__in=new_env_ids, app=app + ).values_list("id", flat=True) + ) + invalid = new_env_ids - valid_env_ids + if invalid: + raise GraphQLError( + "Some environment IDs do not belong to this app" + ) + + to_remove = current_env_ids - new_env_ids + to_add = new_env_ids - current_env_ids + + # Remove environments no longer in scope + if to_remove: + envs_to_remove = Environment.objects.filter(id__in=to_remove) + revoke_team_environment_keys(team, app=app, environments=envs_to_remove) + TeamAppEnvironment.objects.filter( + team=team, app=app, environment_id__in=to_remove + ).delete() + + # Add new environments + for env_id in to_add: + env = Environment.objects.get(id=env_id, app=app) + TeamAppEnvironment.objects.get_or_create( + team=team, app=app, environment=env + ) + + # Provision keys for newly added environments + if to_add: + provision_team_environment_keys(team, app) + + return UpdateTeamAppEnvironmentsMutation(team=team) diff --git a/backend/backend/graphene/queries/teams.py b/backend/backend/graphene/queries/teams.py new file mode 100644 index 000000000..b88d207e4 --- /dev/null +++ b/backend/backend/graphene/queries/teams.py @@ -0,0 +1,30 @@ +from graphql import GraphQLError +from api.models import Team, OrganisationMember +from api.utils.access.permissions import ( + user_has_permission, + user_is_org_member, +) + + +def resolve_teams(root, info, organisation_id, team_id=None): + """Return teams visible to the requesting user.""" + user = info.context.user + + if not user_is_org_member(user.userId, organisation_id): + raise GraphQLError("You don't have access to this organisation") + + org_member = OrganisationMember.objects.get( + user_id=user.userId, organisation_id=organisation_id, deleted_at=None + ) + + if not user_has_permission(user, "read", "Teams", org_member.organisation): + return [] + + qs = Team.objects.filter( + organisation_id=organisation_id, deleted_at__isnull=True + ).order_by("name") + + if team_id: + qs = qs.filter(id=team_id) + + return qs diff --git a/backend/backend/graphene/types.py b/backend/backend/graphene/types.py index ef4580601..8b4eee9b0 100644 --- a/backend/backend/graphene/types.py +++ b/backend/backend/graphene/types.py @@ -40,6 +40,9 @@ ServiceToken, UserToken, Identity, + Team, + TeamMembership, + TeamAppEnvironment, ) from logs.dynamodb_models import KMSLog from django.utils import timezone @@ -540,7 +543,7 @@ def resolve_history(self, info): # Compute can_view_members only once per request organisation = self.environment.app.organisation can_view_members = user_has_permission( - user, "read", "Members", organisation, True + user, "read", "Members", organisation, True, app=self.environment.app ) or user_has_permission(user, "read", "Members", organisation, False) setattr(info.context, "can_view_members", can_view_members) @@ -601,9 +604,9 @@ def resolve_secrets(self, info, path=None): org = self.app.organisation if not user_has_permission( - info.context.user, "read", "Secrets", org, True + info.context.user, "read", "Secrets", org, True, app=self.app ) or not user_has_permission( - info.context.user, "read", "Environments", org, True + info.context.user, "read", "Environments", org, True, app=self.app ): raise GraphQLError("You don't have access to read secrets") @@ -1135,3 +1138,80 @@ def resolve_config(self, info): ) return None + + +class TeamAppEnvironmentType(DjangoObjectType): + class Meta: + model = TeamAppEnvironment + fields = ("id", "app", "environment", "created_at") + + +class TeamMembershipType(DjangoObjectType): + email = graphene.String() + full_name = graphene.String() + avatar_url = graphene.String() + + class Meta: + model = TeamMembership + fields = ("id", "org_member", "service_account", "created_at") + + def resolve_email(self, info): + if self.org_member: + return self.org_member.user.email + if self.service_account: + return self.service_account.name + return None + + def resolve_full_name(self, info): + if self.org_member: + social_acc = self.org_member.user.socialaccount_set.first() + if social_acc: + return social_acc.extra_data.get("name") + return None + + def resolve_avatar_url(self, info): + if self.org_member: + social_acc = self.org_member.user.socialaccount_set.first() + if social_acc: + if social_acc.provider == "google": + return social_acc.extra_data.get("picture") + return social_acc.extra_data.get("avatar_url") + return None + + +class TeamType(DjangoObjectType): + members = graphene.List(graphene.NonNull(TeamMembershipType)) + apps = graphene.List(graphene.NonNull(AppType)) + app_environments = graphene.List(graphene.NonNull(TeamAppEnvironmentType)) + member_count = graphene.Int() + + class Meta: + model = Team + fields = ( + "id", + "name", + "description", + "member_role", + "service_account_role", + "is_scim_managed", + "created_by", + "created_at", + "updated_at", + ) + + def resolve_members(self, info): + return self.memberships.select_related( + "org_member__user", "service_account" + ).all() + + def resolve_apps(self, info): + app_ids = ( + self.app_environments.values_list("app_id", flat=True).distinct() + ) + return App.objects.filter(id__in=app_ids, is_deleted=False) + + def resolve_app_environments(self, info): + return self.app_environments.select_related("app", "environment").all() + + def resolve_member_count(self, info): + return self.memberships.count() diff --git a/backend/backend/schema.py b/backend/backend/schema.py index 3ce37a4f4..3d4d3cf93 100644 --- a/backend/backend/schema.py +++ b/backend/backend/schema.py @@ -124,6 +124,17 @@ from .graphene.queries.quotas import resolve_organisation_plan from .graphene.queries.license import resolve_license, resolve_organisation_license from .graphene.queries.auth import resolve_verify_password +from .graphene.queries.teams import resolve_teams +from .graphene.mutations.teams import ( + AddTeamAppsMutation, + AddTeamMembersMutation, + CreateTeamMutation, + DeleteTeamMutation, + RemoveTeamAppMutation, + RemoveTeamMemberMutation, + UpdateTeamAppEnvironmentsMutation, + UpdateTeamMutation, +) from .graphene.mutations.environment import ( BulkCreateSecretMutation, BulkDeleteSecretMutation, @@ -225,6 +236,7 @@ ServiceAccountType, ServiceTokenType, ServiceType, + TeamType, TimeRange, UserTokenType, AWSValidationResultType, @@ -247,6 +259,7 @@ SecretTag, ServiceAccount, ServiceToken, + TeamAppEnvironment, UserToken, ) from logs.queries import get_app_log_count, get_app_log_count_range, get_app_logs @@ -276,6 +289,12 @@ class Query(graphene.ObjectType): ) identities = graphene.List(IdentityType, organisation_id=graphene.ID()) + teams = graphene.List( + TeamType, + organisation_id=graphene.ID(), + team_id=graphene.ID(required=False), + ) + organisation_name_available = graphene.Boolean(name=graphene.String()) verify_password = graphene.Boolean(auth_hash=graphene.String(required=True)) @@ -558,6 +577,9 @@ def resolve_organisations(root, info): resolve_aws_sts_endpoints = resolve_aws_sts_endpoints resolve_identity_providers = resolve_identity_providers + # Teams + resolve_teams = resolve_teams + resolve_organisation_plan = resolve_organisation_plan def resolve_organisation_name_available(root, info, name): @@ -623,9 +645,22 @@ def resolve_apps(root, info, organisation_id, app_id=None): ): return [] + # Individual app IDs + individual_ids = set(org_member.apps.values_list("id", flat=True)) + + # Team app IDs + team_ids = set( + TeamAppEnvironment.objects.filter( + team__memberships__org_member=org_member, + team__deleted_at__isnull=True, + ).values_list("app_id", flat=True) + ) + + all_app_ids = individual_ids | team_ids + filter = { "organisation_id": organisation_id, - "id__in": org_member.apps.all(), + "id__in": all_app_ids, "is_deleted": False, } @@ -640,7 +675,7 @@ def resolve_app_environments( app = App.objects.get(id=app_id) if not user_has_permission( - info.context.user, "read", "Environments", app.organisation, True + info.context.user, "read", "Environments", app.organisation, True, app=app ): return [] @@ -687,7 +722,7 @@ def resolve_app_users(root, info, app_id): app = App.objects.get(id=app_id) if not user_has_permission( - info.context.user, "read", "Members", app.organisation, True + info.context.user, "read", "Members", app.organisation, True, app=app ): raise GraphQLError("You don't have permission to read members of this App") @@ -700,11 +735,13 @@ def resolve_app_users(root, info, app_id): def resolve_secrets(root, info, env_id, path=None, id=None): - org = Environment.objects.get(id=env_id).app.organisation + env = Environment.objects.get(id=env_id) + app = env.app + org = app.organisation if not user_has_permission( - info.context.user, "read", "Secrets", org, True + info.context.user, "read", "Secrets", org, True, app=app ) or not user_has_permission( - info.context.user, "read", "Environments", org, True + info.context.user, "read", "Environments", org, True, app=app ): raise GraphQLError("You don't have access to read secrets") @@ -741,7 +778,7 @@ def resolve_secret_history(root, info, secret_id): # compute permission once and store it on the request context can_view_members = user_has_permission( - user, "read", "Members", secret.environment.app.organisation, True + user, "read", "Members", secret.environment.app.organisation, True, app=secret.environment.app ) or user_has_permission( user, "read", "Members", secret.environment.app.organisation, False ) @@ -810,7 +847,7 @@ def resolve_user_tokens(root, info, organisation_id): def resolve_service_tokens(root, info, app_id): app = App.objects.get(id=app_id) if not user_has_permission( - info.context.user, "read", "Tokens", app.organisation, True + info.context.user, "read", "Tokens", app.organisation, True, app=app ): raise GraphQLError("You don't have permission to view Tokens in this App") @@ -911,11 +948,11 @@ def resolve_secret_logs( # Permissions can_see_members = user_has_permission( - user, "read", "Members", app.organisation, True + user, "read", "Members", app.organisation, True, app=app ) or user_has_permission(user, "read", "Members", app.organisation, False) setattr(info.context, "can_view_members", can_see_members) - if not user_has_permission(user, "read", "Logs", app.organisation, True): + if not user_has_permission(user, "read", "Logs", app.organisation, True, app=app): return SecretLogsResponseType(logs=[], count=0) # Base filter @@ -1114,6 +1151,16 @@ class Mutation(graphene.ObjectType): test_organisation_sso_provider = TestOrganisationSSOProviderMutation.Field() update_organisation_security = UpdateOrganisationSecurityMutation.Field() + # Teams + create_team = CreateTeamMutation.Field() + update_team = UpdateTeamMutation.Field() + delete_team = DeleteTeamMutation.Field() + add_team_members = AddTeamMembersMutation.Field() + remove_team_member = RemoveTeamMemberMutation.Field() + add_team_apps = AddTeamAppsMutation.Field() + remove_team_app = RemoveTeamAppMutation.Field() + update_team_app_environments = UpdateTeamAppEnvironmentsMutation.Field() + # Service Accounts create_service_account = CreateServiceAccountMutation.Field() enable_service_account_server_side_key_management = ( From cbb56894916a4dc58c2b2888013d1d5865f443e9 Mon Sep 17 00:00:00 2001 From: rohan Date: Tue, 31 Mar 2026 15:26:27 +0530 Subject: [PATCH 004/118] feat: pass app param to permission checks across existing mutations and views --- backend/api/views/secrets.py | 2 ++ backend/backend/graphene/mutations/app.py | 6 ++-- .../backend/graphene/mutations/environment.py | 33 ++++++++++--------- .../graphene/mutations/organisation.py | 11 +++++++ backend/backend/graphene/queries/syncing.py | 15 +++++---- .../secrets/dynamic/aws/graphene/mutations.py | 7 ++-- .../secrets/dynamic/graphene/mutations.py | 8 ++--- .../secrets/dynamic/graphene/queries.py | 6 ++-- .../secrets/dynamic/graphene/types.py | 1 + .../secrets/dynamic/rest/views.py | 6 ++++ 10 files changed, 61 insertions(+), 34 deletions(-) diff --git a/backend/api/views/secrets.py b/backend/api/views/secrets.py index 4f44773bf..67e1f45bf 100644 --- a/backend/api/views/secrets.py +++ b/backend/api/views/secrets.py @@ -90,6 +90,7 @@ def initial(self, request, *args, **kwargs): organisation, True, request.auth.get("service_account") is not None, + app=env.app, ): raise PermissionDenied( f"You don't have permission to {action} secrets in this environment." @@ -538,6 +539,7 @@ def initial(self, request, *args, **kwargs): organisation, True, request.auth.get("service_account") is not None, + app=env.app, ): raise PermissionDenied( f"You don't have permission to {action} secrets in this environment." diff --git a/backend/backend/graphene/mutations/app.py b/backend/backend/graphene/mutations/app.py index 3b259951c..a0fa3fc6c 100644 --- a/backend/backend/graphene/mutations/app.py +++ b/backend/backend/graphene/mutations/app.py @@ -242,7 +242,7 @@ def mutate(cls, root, info, app_id, members): member = ServiceAccount.objects.get(id=member_id, deleted_at=None) if not user_has_permission( - user, "create", permission_key, app.organisation, True + user, "create", permission_key, app.organisation, True, app=app ): raise GraphQLError( f"You don't have permission to add {member_type.lower()}s to this App" @@ -297,7 +297,7 @@ def mutate( member = ServiceAccount.objects.get(id=member_id, deleted_at=None) if not user_has_permission( - info.context.user, "create", permission_key, app.organisation, True + info.context.user, "create", permission_key, app.organisation, True, app=app ): raise GraphQLError("You don't have permission to add members to this App") @@ -349,7 +349,7 @@ def mutate(cls, root, info, member_id, app_id, member_type=MemberType.USER): permission_key = "ServiceAccounts" if not user_has_permission( - info.context.user, "delete", permission_key, app.organisation, True + info.context.user, "delete", permission_key, app.organisation, True, app=app ): raise GraphQLError( f"You don't have permission to remove {permission_key} from this App" diff --git a/backend/backend/graphene/mutations/environment.py b/backend/backend/graphene/mutations/environment.py index c01af8da3..abeb5c0f7 100644 --- a/backend/backend/graphene/mutations/environment.py +++ b/backend/backend/graphene/mutations/environment.py @@ -111,7 +111,7 @@ def mutate( app = App.objects.get(id=environment_data.app_id) if not user_has_permission( - info.context.user, "create", "Environments", app.organisation, True + info.context.user, "create", "Environments", app.organisation, True, app=app ): raise GraphQLError( "You don't have permission to create environments in this organisation" @@ -208,7 +208,7 @@ def mutate(cls, root, info, environment_id, name): org = environment.app.organisation if not user_has_permission( - info.context.user, "update", "Environments", org, True + info.context.user, "update", "Environments", org, True, app=environment.app ): raise GraphQLError("You do not have permission to rename environments") @@ -250,7 +250,7 @@ def mutate(cls, root, info, environment_id): org = environment.app.organisation if not user_has_permission( - info.context.user, "delete", "Environments", org, True + info.context.user, "delete", "Environments", org, True, app=environment.app ): raise GraphQLError("You do not have permission to delete environments") @@ -277,7 +277,7 @@ def mutate(cls, root, info, app_id, environment_order): app = App.objects.get(id=app_id) org = app.organisation - if not user_has_permission(user, "update", "Environments", org, True): + if not user_has_permission(user, "update", "Environments", org, True, app=app): raise GraphQLError("You do not have permission to update environments") if not can_use_custom_envs(org): @@ -377,7 +377,7 @@ def mutate( permission_key = "ServiceAccounts" if not user_has_permission( - info.context.user, "update", permission_key, app.organisation, True + info.context.user, "update", permission_key, app.organisation, True, app=app ): raise GraphQLError("You don't have permission to update App member access") @@ -546,7 +546,7 @@ def mutate( app = App.objects.get(id=app_id) if not user_has_permission( - info.context.user, "create", "Tokens", app.organisation, True + info.context.user, "create", "Tokens", app.organisation, True, app=app ): raise GraphQLError("You don't have permission to create Tokens in this App") @@ -600,7 +600,7 @@ def mutate(cls, root, info, token_id): token = ServiceToken.objects.get(id=token_id) org = token.app.organisation - if not user_has_permission(info.context.user, "delete", "Tokens", org, True): + if not user_has_permission(info.context.user, "delete", "Tokens", org, True, app=token.app): raise GraphQLError("You don't have permission to delete Tokens in this App") token.deleted_at = timezone.now() @@ -621,9 +621,11 @@ class Arguments: def mutate(cls, root, info, env_id, name, path): user = info.context.user - org = Environment.objects.get(id=env_id).app.organisation + env_obj = Environment.objects.get(id=env_id) + app = env_obj.app + org = app.organisation - if not user_has_permission(info.context.user, "create", "Secrets", org, True): + if not user_has_permission(info.context.user, "create", "Secrets", org, True, app=app): raise GraphQLError( "You don't have permission to create folders in this organisation" ) @@ -668,6 +670,7 @@ def mutate(cls, root, info, folder_id): "Secrets", folder.environment.app.organisation, True, + app=folder.environment.app, ): raise GraphQLError( "You don't have permission to delete folders in this organisation" @@ -715,7 +718,7 @@ def mutate(cls, root, info, secret_data): env = Environment.objects.get(id=secret_data.env_id) org = env.app.organisation - if not user_has_permission(info.context.user, "create", "Secrets", org, True): + if not user_has_permission(info.context.user, "create", "Secrets", org, True, app=env.app): raise GraphQLError( "You don't have permission to create secrets in this organisation" ) @@ -784,7 +787,7 @@ def mutate(cls, root, info, secrets_data): org = env.app.organisation if not user_has_permission( - info.context.user, "create", "Secrets", org, True + info.context.user, "create", "Secrets", org, True, app=env.app ): raise GraphQLError( "You don't have permission to create secrets in this organisation" @@ -851,7 +854,7 @@ def mutate(cls, root, info, id, secret_data): env = secret.environment org = env.app.organisation - if not user_has_permission(info.context.user, "update", "Secrets", org, True): + if not user_has_permission(info.context.user, "update", "Secrets", org, True, app=env.app): raise GraphQLError( "You don't have permission to update secrets in this organisation" ) @@ -924,7 +927,7 @@ def mutate(cls, root, info, secrets_data): org = env.app.organisation if not user_has_permission( - info.context.user, "create", "Secrets", org, True + info.context.user, "create", "Secrets", org, True, app=env.app ): raise GraphQLError( "You don't have permission to update secrets in this organisation" @@ -999,7 +1002,7 @@ def mutate(cls, root, info, id): env = secret.environment org = env.app.organisation - if not user_has_permission(info.context.user, "delete", "Secrets", org, True): + if not user_has_permission(info.context.user, "delete", "Secrets", org, True, app=env.app): raise GraphQLError( "You don't have permission to delete secrets in this organisation" ) @@ -1037,7 +1040,7 @@ def mutate(cls, root, info, ids): org = env.app.organisation if not user_has_permission( - info.context.user, "delete", "Secrets", org, True + info.context.user, "delete", "Secrets", org, True, app=env.app ): raise GraphQLError( "You don't have permission to delete secrets in this organisation" diff --git a/backend/backend/graphene/mutations/organisation.py b/backend/backend/graphene/mutations/organisation.py index 490a87254..28183bbfe 100644 --- a/backend/backend/graphene/mutations/organisation.py +++ b/backend/backend/graphene/mutations/organisation.py @@ -6,6 +6,7 @@ user_is_org_member, ) from api.utils.access.roles import default_roles +from api.utils.keys import provision_pending_team_keys from api.tasks.emails import send_invite_email_job from backend.quotas import can_add_account import graphene @@ -129,10 +130,20 @@ def mutate(cls, root, info, org_id, identity_key, wrapped_keyring, wrapped_recov except OrganisationMember.DoesNotExist: raise GraphQLError("Not a member of this organisation.") + first_key_ceremony = identity_key and not org_member.identity_key + + if identity_key: + org_member.identity_key = identity_key + org_member.wrapped_keyring = wrapped_keyring org_member.wrapped_recovery = wrapped_recovery org_member.save() + # Provision team environment keys for SCIM-preprovisioned users + # completing their key ceremony for the first time + if first_key_ceremony: + provision_pending_team_keys(org_member) + return UpdateUserWrappedSecretsMutation(org_member=org_member) diff --git a/backend/backend/graphene/queries/syncing.py b/backend/backend/graphene/queries/syncing.py index 00d06ca6b..5bb5fc7a7 100644 --- a/backend/backend/graphene/queries/syncing.py +++ b/backend/backend/graphene/queries/syncing.py @@ -363,9 +363,10 @@ def resolve_syncs(root, info, app_id=None, env_id=None, org_id=None): # If both app_id and env_id are provided if app_id and env_id: - org = App.objects.get(id=app_id).organisation + app = App.objects.get(id=app_id) + org = app.organisation if not user_has_permission( - info.context.user, "read", "Integrations", org, True + info.context.user, "read", "Integrations", org, True, app=app ): return [] @@ -380,9 +381,10 @@ def resolve_syncs(root, info, app_id=None, env_id=None, org_id=None): # If only app_id is provided elif app_id: - org = App.objects.get(id=app_id).organisation + app = App.objects.get(id=app_id) + org = app.organisation if not user_has_permission( - info.context.user, "read", "Integrations", org, True + info.context.user, "read", "Integrations", org, True, app=app ): return [] @@ -395,9 +397,10 @@ def resolve_syncs(root, info, app_id=None, env_id=None, org_id=None): # If only env_id is provided elif env_id: - org = Environment.objects.get(id=env_id).app.organisation + env = Environment.objects.get(id=env_id) + org = env.app.organisation if not user_has_permission( - info.context.user, "read", "Integrations", org, True + info.context.user, "read", "Integrations", org, True, app=env.app ): return [] diff --git a/backend/ee/integrations/secrets/dynamic/aws/graphene/mutations.py b/backend/ee/integrations/secrets/dynamic/aws/graphene/mutations.py index ccc510be6..3fa86c882 100644 --- a/backend/ee/integrations/secrets/dynamic/aws/graphene/mutations.py +++ b/backend/ee/integrations/secrets/dynamic/aws/graphene/mutations.py @@ -75,15 +75,14 @@ def mutate( raise GraphQLError("You don't have access to this organisation") org = Organisation.objects.get(id=organisation_id) + env = Environment.objects.get(id=environment_id) - if not user_has_permission(user, "create", "Secrets", org, True): + if not user_has_permission(user, "create", "Secrets", org, True, app=env.app): raise GraphQLError("You don't have permission to create Dynamic Secrets") if not user_can_access_environment(user.userId, environment_id): raise GraphQLError("You don't have access to this environment") - env = Environment.objects.get(id=environment_id) - if not env.app.sse_enabled: raise GraphQLError("SSE is not enabled!") @@ -166,7 +165,7 @@ def mutate( env = Environment.objects.get(id=dynamic_secret.environment.id) - if not user_has_permission(user, "update", "Secrets", org, True): + if not user_has_permission(user, "update", "Secrets", org, True, app=env.app): raise GraphQLError("You don't have permission to update Dynamic Secrets") if not user_can_access_environment(user.userId, dynamic_secret.environment.id): diff --git a/backend/ee/integrations/secrets/dynamic/graphene/mutations.py b/backend/ee/integrations/secrets/dynamic/graphene/mutations.py index 93b60f8a4..eaa4cc008 100644 --- a/backend/ee/integrations/secrets/dynamic/graphene/mutations.py +++ b/backend/ee/integrations/secrets/dynamic/graphene/mutations.py @@ -49,7 +49,7 @@ def mutate( org = secret.environment.app.organisation # --- permission checks --- - if not user_has_permission(user, "delete", "Secrets", org, True): + if not user_has_permission(user, "delete", "Secrets", org, True, app=secret.environment.app): raise GraphQLError( "You don't have permission to delete secrets in this organisation" ) @@ -85,7 +85,7 @@ def mutate( if not user_is_org_member(user.userId, org.id): raise GraphQLError("You don't have access to this organisation") - if not user_has_permission(user, "create", "Secrets", org, True): + if not user_has_permission(user, "create", "Secrets", org, True, app=secret.environment.app): raise GraphQLError("You don't have permission to create Dynamic Secrets") if not user_can_access_environment(user.userId, secret.environment.id): @@ -136,7 +136,7 @@ def mutate( lease.organisation_member is None or lease.organisation_member.id != org_member.id ) and not user_has_permission( - info.context.user, "update", "DynamicSecretLeases", org, True + info.context.user, "update", "DynamicSecretLeases", org, True, app=lease.secret.environment.app ): raise GraphQLError( "You cannot renew this lease as it wasn't created by you" @@ -180,7 +180,7 @@ def mutate( lease.organisation_member is None or lease.organisation_member.id != org_member.id ) and not user_has_permission( - info.context.user, "delete", "DynamicSecretLeases", org, True + info.context.user, "delete", "DynamicSecretLeases", org, True, app=lease.secret.environment.app ): raise GraphQLError( "You cannot revoke this lease as it wasn't created by you" diff --git a/backend/ee/integrations/secrets/dynamic/graphene/queries.py b/backend/ee/integrations/secrets/dynamic/graphene/queries.py index bcbbb9c21..335790954 100644 --- a/backend/ee/integrations/secrets/dynamic/graphene/queries.py +++ b/backend/ee/integrations/secrets/dynamic/graphene/queries.py @@ -35,6 +35,7 @@ def resolve_dynamic_secrets( elif path is not None: filters["path"] = path org = None + app = None # Figure out which org to use if app_id: @@ -42,7 +43,8 @@ def resolve_dynamic_secrets( org = app.organisation elif env_id: env = Environment.objects.get(id=env_id) - org = env.app.organisation + app = env.app + org = app.organisation elif org_id: org = Organisation.objects.get(id=org_id) else: @@ -51,7 +53,7 @@ def resolve_dynamic_secrets( ) # Permission check (common to all cases) - if not user_has_permission(user, "read", "Secrets", org, True): + if not user_has_permission(user, "read", "Secrets", org, True, app=app): return [] # Build filters + access checks diff --git a/backend/ee/integrations/secrets/dynamic/graphene/types.py b/backend/ee/integrations/secrets/dynamic/graphene/types.py index 2a5ca0770..5826739cf 100644 --- a/backend/ee/integrations/secrets/dynamic/graphene/types.py +++ b/backend/ee/integrations/secrets/dynamic/graphene/types.py @@ -89,6 +89,7 @@ def resolve_leases(self, info): "DynamicSecretLeases", self.environment.app.organisation, True, + app=self.environment.app, ): filter["organisation_member"] = OrganisationMember.objects.get( organisation=self.environment.app.organisation, user=info.context.user diff --git a/backend/ee/integrations/secrets/dynamic/rest/views.py b/backend/ee/integrations/secrets/dynamic/rest/views.py index c3ba41760..7c16b699f 100644 --- a/backend/ee/integrations/secrets/dynamic/rest/views.py +++ b/backend/ee/integrations/secrets/dynamic/rest/views.py @@ -82,6 +82,7 @@ def initial(self, request, *args, **kwargs): organisation, True, request.auth.get("service_account") is not None, + app=env.app, ): raise PermissionDenied( f"You don't have permission to {action} secrets in this environment." @@ -232,6 +233,7 @@ def _assert_can_act_on_lease(self, request, lease: DynamicSecretLease, action: s and lease_holder.id == getattr(account, "id", None) ): return + env = request.auth["environment"] if not user_has_permission( account, action, @@ -239,6 +241,7 @@ def _assert_can_act_on_lease(self, request, lease: DynamicSecretLease, action: s organisation, True, request.auth.get("service_account") is not None, + app=env.app, ): raise PermissionDenied( f"You don't have permission to {action} leases for other accounts." @@ -252,6 +255,7 @@ def get(self, request, *args, **kwargs): account, organisation = self._get_account_and_org(request) + env = request.auth["environment"] if not user_has_permission( account, "read", @@ -259,6 +263,7 @@ def get(self, request, *args, **kwargs): organisation, True, request.auth.get("service_account") is not None, + app=env.app, ): raise PermissionDenied( f"You don't have permission to read secrets in this environment." @@ -279,6 +284,7 @@ def get(self, request, *args, **kwargs): organisation, True, request.auth.get("service_account") is not None, + app=env.app, ): if request.auth["org_member"] is not None: leases_filter["organisation_member"] = request.auth["org_member"] From 1fd088b6ed742236a529e574a1f1b2b237a21f88 Mon Sep 17 00:00:00 2001 From: rohan Date: Tue, 31 Mar 2026 15:26:31 +0530 Subject: [PATCH 005/118] feat: add Pro+ plan gating for teams --- backend/backend/quotas.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/backend/backend/quotas.py b/backend/backend/quotas.py index f053eb702..30d72b6e0 100644 --- a/backend/backend/quotas.py +++ b/backend/backend/quotas.py @@ -134,6 +134,16 @@ def can_use_custom_envs(organisation): return organisation.plan != "FR" +def can_use_teams(organisation): + """Teams require a Pro or Enterprise plan (or an activated license).""" + ActivatedPhaseLicense = apps.get_model("api", "ActivatedPhaseLicense") + + if ActivatedPhaseLicense.objects.filter(organisation=organisation).exists(): + return True + + return organisation.plan in ("PR", "EN") + + def can_add_service_token(app): """Check if a new service token can be added to the app.""" From db6eb386fb8d8c6110a5681bdf6c3d23ebd43e9e Mon Sep 17 00:00:00 2001 From: rohan Date: Tue, 31 Mar 2026 15:26:34 +0530 Subject: [PATCH 006/118] feat: add GraphQL schema, codegen output, and team operation files --- frontend/apollo/gql.ts | 150 ++--- frontend/apollo/graphql.ts | 603 ++++++++---------- frontend/apollo/schema.graphql | 294 +++------ .../graphql/mutations/teams/addTeamApps.gql | 7 + .../mutations/teams/addTeamMembers.gql | 7 + .../graphql/mutations/teams/createTeam.gql | 20 + .../graphql/mutations/teams/deleteTeam.gql | 5 + .../graphql/mutations/teams/removeTeamApp.gql | 7 + .../mutations/teams/removeTeamMember.gql | 7 + .../graphql/mutations/teams/updateTeam.gql | 20 + .../teams/updateTeamAppEnvironments.gql | 7 + frontend/graphql/queries/teams/getTeams.gql | 78 +++ 12 files changed, 590 insertions(+), 615 deletions(-) create mode 100644 frontend/graphql/mutations/teams/addTeamApps.gql create mode 100644 frontend/graphql/mutations/teams/addTeamMembers.gql create mode 100644 frontend/graphql/mutations/teams/createTeam.gql create mode 100644 frontend/graphql/mutations/teams/deleteTeam.gql create mode 100644 frontend/graphql/mutations/teams/removeTeamApp.gql create mode 100644 frontend/graphql/mutations/teams/removeTeamMember.gql create mode 100644 frontend/graphql/mutations/teams/updateTeam.gql create mode 100644 frontend/graphql/mutations/teams/updateTeamAppEnvironments.gql create mode 100644 frontend/graphql/queries/teams/getTeams.gql diff --git a/frontend/apollo/gql.ts b/frontend/apollo/gql.ts index 7d3f9d707..b7b507e51 100644 --- a/frontend/apollo/gql.ts +++ b/frontend/apollo/gql.ts @@ -26,8 +26,6 @@ type Documents = { "mutation RemoveMemberFromApp($memberId: ID!, $memberType: MemberType, $appId: ID!) {\n removeAppMember(memberId: $memberId, memberType: $memberType, appId: $appId) {\n app {\n id\n }\n }\n}": typeof types.RemoveMemberFromAppDocument, "mutation UpdateAppInfoOp($id: ID!, $name: String, $description: String) {\n updateAppInfo(id: $id, name: $name, description: $description) {\n app {\n id\n name\n description\n }\n }\n}": typeof types.UpdateAppInfoOpDocument, "mutation UpdateEnvScope($memberId: ID!, $memberType: MemberType, $appId: ID!, $envKeys: [EnvironmentKeyInput]) {\n updateMemberEnvironmentScope(\n memberId: $memberId\n memberType: $memberType\n appId: $appId\n envKeys: $envKeys\n ) {\n app {\n id\n }\n }\n}": typeof types.UpdateEnvScopeDocument, - "mutation ChangePassword($orgId: ID!, $currentAuthHash: String!, $newAuthHash: String!, $identityKey: String!, $wrappedKeyring: String!, $wrappedRecovery: String!) {\n changeAccountPassword(\n orgId: $orgId\n currentAuthHash: $currentAuthHash\n newAuthHash: $newAuthHash\n identityKey: $identityKey\n wrappedKeyring: $wrappedKeyring\n wrappedRecovery: $wrappedRecovery\n ) {\n orgMember {\n id\n }\n }\n}": typeof types.ChangePasswordDocument, - "mutation RecoverKeyring($orgId: ID!, $authHash: String!, $identityKey: String!, $wrappedKeyring: String!, $wrappedRecovery: String!) {\n recoverAccountKeyring(\n orgId: $orgId\n authHash: $authHash\n identityKey: $identityKey\n wrappedKeyring: $wrappedKeyring\n wrappedRecovery: $wrappedRecovery\n ) {\n orgMember {\n id\n }\n }\n}": typeof types.RecoverKeyringDocument, "mutation CancelStripeSubscription($organisationId: ID!, $subscriptionId: String!) {\n cancelSubscription(\n organisationId: $organisationId\n subscriptionId: $subscriptionId\n ) {\n success\n }\n}": typeof types.CancelStripeSubscriptionDocument, "mutation CreateStripeSetupIntentOp($organisationId: ID!) {\n createSetupIntent(organisationId: $organisationId) {\n clientSecret\n }\n}": typeof types.CreateStripeSetupIntentOpDocument, "mutation DeleteStripePaymentMethod($organisationId: ID!, $paymentMethodId: String!) {\n deletePaymentMethod(\n organisationId: $organisationId\n paymentMethodId: $paymentMethodId\n ) {\n ok\n }\n}": typeof types.DeleteStripePaymentMethodDocument, @@ -65,16 +63,16 @@ type Documents = { "mutation UpdateDynamicSecret($dynamicSecretId: ID!, $organisationId: ID!, $path: String, $name: String!, $description: String, $defaultTtl: Int, $maxTtl: Int, $authenticationId: ID, $config: AWSConfigInput!, $keyMap: [KeyMapInput]!) {\n updateAwsDynamicSecret(\n organisationId: $organisationId\n dynamicSecretId: $dynamicSecretId\n path: $path\n name: $name\n description: $description\n defaultTtl: $defaultTtl\n maxTtl: $maxTtl\n authenticationId: $authenticationId\n config: $config\n keyMap: $keyMap\n ) {\n dynamicSecret {\n id\n name\n description\n provider\n createdAt\n updatedAt\n }\n }\n}": typeof types.UpdateDynamicSecretDocument, "mutation CreateSharedSecret($input: LockboxInput!) {\n createLockbox(input: $input) {\n lockbox {\n id\n allowedViews\n expiresAt\n }\n }\n}": typeof types.CreateSharedSecretDocument, "mutation UpdateEnvOrder($appId: ID!, $environmentOrder: [ID]!) {\n updateEnvironmentOrder(appId: $appId, environmentOrder: $environmentOrder) {\n ok\n }\n}": typeof types.UpdateEnvOrderDocument, - "mutation CreateExtIdentity($organisationId: ID!, $provider: String!, $name: String!, $description: String, $trustedPrincipals: String!, $signatureTtlSeconds: Int, $stsEndpoint: String, $tenantId: String, $resource: String, $tokenNamePattern: String, $defaultTtlSeconds: Int!, $maxTtlSeconds: Int!) {\n createIdentity(\n organisationId: $organisationId\n provider: $provider\n name: $name\n description: $description\n trustedPrincipals: $trustedPrincipals\n signatureTtlSeconds: $signatureTtlSeconds\n stsEndpoint: $stsEndpoint\n tenantId: $tenantId\n resource: $resource\n tokenNamePattern: $tokenNamePattern\n defaultTtlSeconds: $defaultTtlSeconds\n maxTtlSeconds: $maxTtlSeconds\n ) {\n identity {\n id\n provider\n name\n description\n config {\n ... on AwsIamConfigType {\n trustedPrincipals\n signatureTtlSeconds\n stsEndpoint\n }\n ... on AzureEntraConfigType {\n tenantId\n resource\n allowedServicePrincipalIds\n }\n }\n tokenNamePattern\n defaultTtlSeconds\n maxTtlSeconds\n }\n }\n}": typeof types.CreateExtIdentityDocument, + "mutation CreateExtIdentity($organisationId: ID!, $provider: String!, $name: String!, $description: String, $trustedPrincipals: String!, $signatureTtlSeconds: Int, $stsEndpoint: String, $tokenNamePattern: String, $defaultTtlSeconds: Int!, $maxTtlSeconds: Int!) {\n createIdentity(\n organisationId: $organisationId\n provider: $provider\n name: $name\n description: $description\n trustedPrincipals: $trustedPrincipals\n signatureTtlSeconds: $signatureTtlSeconds\n stsEndpoint: $stsEndpoint\n tokenNamePattern: $tokenNamePattern\n defaultTtlSeconds: $defaultTtlSeconds\n maxTtlSeconds: $maxTtlSeconds\n ) {\n identity {\n id\n provider\n name\n description\n config {\n ... on AwsIamConfigType {\n trustedPrincipals\n signatureTtlSeconds\n stsEndpoint\n }\n }\n tokenNamePattern\n defaultTtlSeconds\n maxTtlSeconds\n }\n }\n}": typeof types.CreateExtIdentityDocument, "mutation DeleteExtIdentity($id: ID!) {\n deleteIdentity(id: $id) {\n ok\n }\n}": typeof types.DeleteExtIdentityDocument, - "mutation UpdateExtIdentity($id: ID!, $name: String, $description: String, $trustedPrincipals: String, $signatureTtlSeconds: Int, $stsEndpoint: String, $tenantId: String, $resource: String, $tokenNamePattern: String, $defaultTtlSeconds: Int, $maxTtlSeconds: Int) {\n updateIdentity(\n id: $id\n name: $name\n description: $description\n trustedPrincipals: $trustedPrincipals\n signatureTtlSeconds: $signatureTtlSeconds\n stsEndpoint: $stsEndpoint\n tenantId: $tenantId\n resource: $resource\n tokenNamePattern: $tokenNamePattern\n defaultTtlSeconds: $defaultTtlSeconds\n maxTtlSeconds: $maxTtlSeconds\n ) {\n identity {\n id\n name\n description\n config {\n ... on AwsIamConfigType {\n trustedPrincipals\n signatureTtlSeconds\n stsEndpoint\n }\n ... on AzureEntraConfigType {\n tenantId\n resource\n allowedServicePrincipalIds\n }\n }\n tokenNamePattern\n defaultTtlSeconds\n maxTtlSeconds\n }\n }\n}": typeof types.UpdateExtIdentityDocument, + "mutation UpdateExtIdentity($id: ID!, $name: String, $description: String, $trustedPrincipals: String, $signatureTtlSeconds: Int, $stsEndpoint: String, $tokenNamePattern: String, $defaultTtlSeconds: Int, $maxTtlSeconds: Int) {\n updateIdentity(\n id: $id\n name: $name\n description: $description\n trustedPrincipals: $trustedPrincipals\n signatureTtlSeconds: $signatureTtlSeconds\n stsEndpoint: $stsEndpoint\n tokenNamePattern: $tokenNamePattern\n defaultTtlSeconds: $defaultTtlSeconds\n maxTtlSeconds: $maxTtlSeconds\n ) {\n identity {\n id\n name\n description\n config {\n ... on AwsIamConfigType {\n trustedPrincipals\n signatureTtlSeconds\n stsEndpoint\n }\n }\n tokenNamePattern\n defaultTtlSeconds\n maxTtlSeconds\n }\n }\n}": typeof types.UpdateExtIdentityDocument, "mutation AcceptOrganisationInvite($orgId: ID!, $identityKey: String!, $wrappedKeyring: String!, $wrappedRecovery: String!, $inviteId: ID!) {\n createOrganisationMember(\n orgId: $orgId\n identityKey: $identityKey\n wrappedKeyring: $wrappedKeyring\n wrappedRecovery: $wrappedRecovery\n inviteId: $inviteId\n ) {\n orgMember {\n id\n email\n createdAt\n role {\n name\n }\n }\n }\n}": typeof types.AcceptOrganisationInviteDocument, "mutation BulkInviteMembers($orgId: ID!, $invites: [InviteInput!]!) {\n bulkInviteOrganisationMembers(orgId: $orgId, invites: $invites) {\n invites {\n id\n inviteeEmail\n expiresAt\n }\n }\n}": typeof types.BulkInviteMembersDocument, "mutation DeleteOrgInvite($inviteId: ID!) {\n deleteInvitation(inviteId: $inviteId) {\n ok\n }\n}": typeof types.DeleteOrgInviteDocument, "mutation RemoveMember($memberId: ID!) {\n deleteOrganisationMember(memberId: $memberId) {\n ok\n }\n}": typeof types.RemoveMemberDocument, "mutation TransferOrgOwnership($organisationId: ID!, $newOwnerId: ID!, $billingEmail: String) {\n transferOrganisationOwnership(\n organisationId: $organisationId\n newOwnerId: $newOwnerId\n billingEmail: $billingEmail\n ) {\n ok\n }\n}": typeof types.TransferOrgOwnershipDocument, "mutation UpdateMemberRole($memberId: ID!, $roleId: ID!) {\n updateOrganisationMemberRole(memberId: $memberId, roleId: $roleId) {\n orgMember {\n id\n role {\n name\n }\n }\n }\n}": typeof types.UpdateMemberRoleDocument, - "mutation UpdateWrappedSecrets($orgId: ID!, $identityKey: String!, $wrappedKeyring: String!, $wrappedRecovery: String!) {\n updateMemberWrappedSecrets(\n orgId: $orgId\n identityKey: $identityKey\n wrappedKeyring: $wrappedKeyring\n wrappedRecovery: $wrappedRecovery\n ) {\n orgMember {\n id\n }\n }\n}": typeof types.UpdateWrappedSecretsDocument, + "mutation UpdateWrappedSecrets($orgId: ID!, $wrappedKeyring: String!, $wrappedRecovery: String!) {\n updateMemberWrappedSecrets(\n orgId: $orgId\n wrappedKeyring: $wrappedKeyring\n wrappedRecovery: $wrappedRecovery\n ) {\n orgMember {\n id\n }\n }\n}": typeof types.UpdateWrappedSecretsDocument, "mutation RotateAppKey($id: ID!, $appToken: String!, $wrappedKeyShare: String!) {\n rotateAppKeys(id: $id, appToken: $appToken, wrappedKeyShare: $wrappedKeyShare) {\n app {\n id\n }\n }\n}": typeof types.RotateAppKeyDocument, "mutation CreateServiceAccountOp($name: String!, $orgId: ID!, $roleId: ID!, $identityKey: String!, $handlers: [ServiceAccountHandlerInput], $serverWrappedKeyring: String, $serverWrappedRecovery: String) {\n createServiceAccount(\n name: $name\n organisationId: $orgId\n roleId: $roleId\n identityKey: $identityKey\n handlers: $handlers\n serverWrappedKeyring: $serverWrappedKeyring\n serverWrappedRecovery: $serverWrappedRecovery\n ) {\n serviceAccount {\n id\n }\n }\n}": typeof types.CreateServiceAccountOpDocument, "mutation CreateSAToken($serviceAccountId: ID!, $name: String!, $identityKey: String!, $token: String!, $wrappedKeyShare: String!, $expiry: BigInt) {\n createServiceAccountToken(\n serviceAccountId: $serviceAccountId\n name: $name\n identityKey: $identityKey\n token: $token\n wrappedKeyShare: $wrappedKeyShare\n expiry: $expiry\n ) {\n token {\n id\n }\n }\n}": typeof types.CreateSaTokenDocument, @@ -84,11 +82,6 @@ type Documents = { "mutation EnableSAServerKeyManagement($serviceAccountId: ID!, $serverWrappedKeyring: String!, $serverWrappedRecovery: String!) {\n enableServiceAccountServerSideKeyManagement(\n serviceAccountId: $serviceAccountId\n serverWrappedKeyring: $serverWrappedKeyring\n serverWrappedRecovery: $serverWrappedRecovery\n ) {\n serviceAccount {\n id\n name\n serverSideKeyManagementEnabled\n }\n }\n}": typeof types.EnableSaServerKeyManagementDocument, "mutation UpdateServiceAccountHandlerKeys($orgId: ID!, $handlers: [ServiceAccountHandlerInput]) {\n updateServiceAccountHandlers(organisationId: $orgId, handlers: $handlers) {\n ok\n }\n}": typeof types.UpdateServiceAccountHandlerKeysDocument, "mutation UpdateServiceAccountOp($serviceAccountId: ID!, $name: String!, $roleId: ID!, $identityIds: [ID!]) {\n updateServiceAccount(\n serviceAccountId: $serviceAccountId\n name: $name\n roleId: $roleId\n identityIds: $identityIds\n ) {\n serviceAccount {\n id\n name\n role {\n id\n name\n description\n permissions\n }\n identities {\n id\n name\n }\n }\n }\n}": typeof types.UpdateServiceAccountOpDocument, - "mutation CreateOrgSSOProvider($orgId: ID!, $providerType: String!, $name: String!, $config: JSONString!) {\n createOrganisationSsoProvider(\n orgId: $orgId\n providerType: $providerType\n name: $name\n config: $config\n ) {\n providerId\n }\n}": typeof types.CreateOrgSsoProviderDocument, - "mutation DeleteOrgSSOProvider($providerId: ID!) {\n deleteOrganisationSsoProvider(providerId: $providerId) {\n ok\n }\n}": typeof types.DeleteOrgSsoProviderDocument, - "mutation TestOrgSSOProvider($providerId: ID!) {\n testOrganisationSsoProvider(providerId: $providerId) {\n success\n error\n }\n}": typeof types.TestOrgSsoProviderDocument, - "mutation UpdateOrgSSOProvider($providerId: ID!, $name: String, $config: JSONString, $enabled: Boolean) {\n updateOrganisationSsoProvider(\n providerId: $providerId\n name: $name\n config: $config\n enabled: $enabled\n ) {\n ok\n }\n}": typeof types.UpdateOrgSsoProviderDocument, - "mutation UpdateOrgSecurity($orgId: ID!, $requireSso: Boolean!) {\n updateOrganisationSecurity(orgId: $orgId, requireSso: $requireSso) {\n ok\n sessionInvalidated\n }\n}": typeof types.UpdateOrgSecurityDocument, "mutation CreateNewAWSSecretsSync($envId: ID!, $path: String!, $credentialId: ID!, $secretName: String!, $kmsId: String) {\n createAwsSecretSync(\n envId: $envId\n path: $path\n credentialId: $credentialId\n secretName: $secretName\n kmsId: $kmsId\n ) {\n sync {\n id\n environment {\n id\n name\n envType\n }\n serviceInfo {\n name\n }\n isActive\n lastSync\n createdAt\n }\n }\n}": typeof types.CreateNewAwsSecretsSyncDocument, "mutation CreateNewAzureKeyVaultSync($envId: ID!, $path: String!, $credentialId: ID!, $vaultUri: String!, $syncMode: String!, $secretName: String) {\n createAzureKeyVaultSync(\n envId: $envId\n path: $path\n credentialId: $credentialId\n vaultUri: $vaultUri\n syncMode: $syncMode\n secretName: $secretName\n ) {\n sync {\n id\n environment {\n id\n name\n envType\n }\n serviceInfo {\n name\n }\n isActive\n lastSync\n createdAt\n }\n }\n}": typeof types.CreateNewAzureKeyVaultSyncDocument, "mutation CreateNewCfPagesSync($envId: ID!, $path: String!, $projectName: String!, $deploymentId: ID!, $projectEnv: String!, $credentialId: ID!) {\n createCloudflarePagesSync(\n envId: $envId\n path: $path\n projectName: $projectName\n deploymentId: $deploymentId\n projectEnv: $projectEnv\n credentialId: $credentialId\n ) {\n sync {\n id\n environment {\n id\n name\n envType\n }\n serviceInfo {\n id\n name\n }\n isActive\n lastSync\n createdAt\n }\n }\n}": typeof types.CreateNewCfPagesSyncDocument, @@ -109,6 +102,14 @@ type Documents = { "mutation UpdateSyncAuth($syncId: ID!, $credentialId: ID!) {\n updateSyncAuthentication(syncId: $syncId, credentialId: $credentialId) {\n sync {\n id\n status\n }\n }\n}": typeof types.UpdateSyncAuthDocument, "mutation CreateNewVaultSync($envId: ID!, $path: String!, $engine: String!, $vaultPath: String!, $credentialId: ID!) {\n createVaultSync(\n envId: $envId\n path: $path\n engine: $engine\n vaultPath: $vaultPath\n credentialId: $credentialId\n ) {\n sync {\n id\n environment {\n id\n name\n envType\n }\n serviceInfo {\n id\n name\n }\n isActive\n lastSync\n createdAt\n }\n }\n}": typeof types.CreateNewVaultSyncDocument, "mutation CreateNewVercelSync($envId: ID!, $path: String!, $credentialId: ID!, $projectId: String!, $projectName: String!, $teamId: String!, $teamName: String!, $environment: String!, $secretType: String!) {\n createVercelSync(\n envId: $envId\n path: $path\n credentialId: $credentialId\n projectId: $projectId\n projectName: $projectName\n teamId: $teamId\n teamName: $teamName\n environment: $environment\n secretType: $secretType\n ) {\n sync {\n id\n environment {\n id\n name\n envType\n }\n serviceInfo {\n id\n name\n }\n isActive\n lastSync\n createdAt\n }\n }\n}": typeof types.CreateNewVercelSyncDocument, + "mutation AddTeamAppsOp($teamId: ID!, $appEnvs: [AppEnvironmentInput!]!) {\n addTeamApps(teamId: $teamId, appEnvs: $appEnvs) {\n team {\n id\n }\n }\n}": typeof types.AddTeamAppsOpDocument, + "mutation AddTeamMembersOp($teamId: ID!, $memberIds: [ID!]!, $memberType: MemberType) {\n addTeamMembers(teamId: $teamId, memberIds: $memberIds, memberType: $memberType) {\n team {\n id\n }\n }\n}": typeof types.AddTeamMembersOpDocument, + "mutation CreateTeamOp($organisationId: ID!, $name: String!, $description: String, $memberRoleId: ID, $serviceAccountRoleId: ID) {\n createTeam(\n organisationId: $organisationId\n name: $name\n description: $description\n memberRoleId: $memberRoleId\n serviceAccountRoleId: $serviceAccountRoleId\n ) {\n team {\n id\n name\n }\n }\n}": typeof types.CreateTeamOpDocument, + "mutation DeleteTeamOp($teamId: ID!) {\n deleteTeam(teamId: $teamId) {\n ok\n }\n}": typeof types.DeleteTeamOpDocument, + "mutation RemoveTeamAppOp($teamId: ID!, $appId: ID!) {\n removeTeamApp(teamId: $teamId, appId: $appId) {\n team {\n id\n }\n }\n}": typeof types.RemoveTeamAppOpDocument, + "mutation RemoveTeamMemberOp($teamId: ID!, $memberId: ID!, $memberType: MemberType) {\n removeTeamMember(teamId: $teamId, memberId: $memberId, memberType: $memberType) {\n team {\n id\n }\n }\n}": typeof types.RemoveTeamMemberOpDocument, + "mutation UpdateTeamOp($teamId: ID!, $name: String, $description: String, $memberRoleId: ID, $serviceAccountRoleId: ID) {\n updateTeam(\n teamId: $teamId\n name: $name\n description: $description\n memberRoleId: $memberRoleId\n serviceAccountRoleId: $serviceAccountRoleId\n ) {\n team {\n id\n name\n }\n }\n}": typeof types.UpdateTeamOpDocument, + "mutation UpdateTeamAppEnvironmentsOp($teamId: ID!, $appId: ID!, $envIds: [ID!]!) {\n updateTeamAppEnvironments(teamId: $teamId, appId: $appId, envIds: $envIds) {\n team {\n id\n }\n }\n}": typeof types.UpdateTeamAppEnvironmentsOpDocument, "mutation CreateNewUserToken($orgId: ID!, $name: String!, $identityKey: String!, $token: String!, $wrappedKeyShare: String!, $expiry: BigInt) {\n createUserToken(\n orgId: $orgId\n name: $name\n identityKey: $identityKey\n token: $token\n wrappedKeyShare: $wrappedKeyShare\n expiry: $expiry\n ) {\n ok\n }\n}": typeof types.CreateNewUserTokenDocument, "mutation RevokeUserToken($tokenId: ID!) {\n deleteUserToken(tokenId: $tokenId) {\n ok\n }\n}": typeof types.RevokeUserTokenDocument, "query GetIP {\n clientIp\n}": typeof types.GetIpDocument, @@ -116,7 +117,6 @@ type Documents = { "query GetAppAccounts($appId: ID!) {\n appUsers(appId: $appId) {\n id\n identityKey\n email\n fullName\n avatarUrl\n createdAt\n role {\n id\n name\n description\n permissions\n color\n }\n }\n appServiceAccounts(appId: $appId) {\n id\n identityKey\n name\n createdAt\n role {\n id\n name\n description\n permissions\n color\n }\n tokens {\n id\n name\n }\n }\n}": typeof types.GetAppAccountsDocument, "query GetAppMembers($appId: ID!) {\n appUsers(appId: $appId) {\n id\n identityKey\n email\n fullName\n avatarUrl\n createdAt\n role {\n id\n name\n description\n permissions\n color\n }\n }\n}": typeof types.GetAppMembersDocument, "query GetAppServiceAccounts($appId: ID!) {\n appServiceAccounts(appId: $appId) {\n id\n identityKey\n name\n createdAt\n role {\n id\n name\n description\n permissions\n color\n }\n tokens {\n id\n name\n }\n }\n}": typeof types.GetAppServiceAccountsDocument, - "query VerifyPassword($authHash: String!) {\n verifyPassword(authHash: $authHash)\n}": typeof types.VerifyPasswordDocument, "query GetCheckoutDetails($stripeSessionId: String!) {\n stripeCheckoutDetails(stripeSessionId: $stripeSessionId) {\n paymentStatus\n customerEmail\n billingStartDate\n billingEndDate\n subscriptionId\n planName\n }\n}": typeof types.GetCheckoutDetailsDocument, "query GetCustomerPortalLink($organisationId: ID!) {\n stripeCustomerPortalUrl(organisationId: $organisationId)\n}": typeof types.GetCustomerPortalLinkDocument, "query GetSubscriptionDetails($organisationId: ID!) {\n stripeSubscriptionDetails(organisationId: $organisationId) {\n subscriptionId\n planName\n planType\n billingPeriod\n status\n nextPaymentAmount\n currentPeriodStart\n currentPeriodEnd\n renewalDate\n cancelAt\n cancelAtPeriodEnd\n paymentMethods {\n id\n brand\n last4\n expMonth\n expYear\n isDefault\n }\n }\n}": typeof types.GetSubscriptionDetailsDocument, @@ -126,10 +126,10 @@ type Documents = { "query GetAppKmsLogs($appId: ID!, $start: BigInt, $end: BigInt) {\n kmsLogs(appId: $appId, start: $start, end: $end) {\n logs {\n id\n timestamp\n phaseNode\n eventType\n ipAddress\n country\n city\n phSize\n }\n count\n }\n}": typeof types.GetAppKmsLogsDocument, "query GetApps($organisationId: ID!, $appId: ID) {\n apps(organisationId: $organisationId, appId: $appId) {\n id\n name\n description\n identityKey\n createdAt\n updatedAt\n sseEnabled\n members {\n id\n email\n fullName\n avatarUrl\n }\n serviceAccounts {\n id\n name\n }\n environments {\n id\n name\n envType\n syncs {\n id\n serviceInfo {\n id\n name\n provider {\n id\n name\n }\n }\n status\n }\n }\n }\n}": typeof types.GetAppsDocument, "query GetDashboard($organisationId: ID!) {\n apps(organisationId: $organisationId) {\n id\n name\n sseEnabled\n }\n userTokens(organisationId: $organisationId) {\n id\n }\n organisationInvites(orgId: $organisationId) {\n id\n }\n organisationMembers(organisationId: $organisationId, role: null) {\n id\n }\n savedCredentials(orgId: $organisationId) {\n id\n }\n syncs(orgId: $organisationId) {\n id\n }\n}": typeof types.GetDashboardDocument, - "query GetOrganisations {\n organisations {\n id\n name\n identityKey\n createdAt\n plan\n planDetail {\n name\n maxUsers\n maxApps\n maxEnvsPerApp\n seatsUsed {\n users\n serviceAccounts\n total\n }\n appCount\n }\n role {\n name\n description\n color\n permissions\n }\n memberId\n keyring\n recovery\n pricingVersion\n requireSso\n ssoProviders {\n name\n providerType\n enabled\n }\n }\n}": typeof types.GetOrganisationsDocument, + "query GetOrganisations {\n organisations {\n id\n name\n identityKey\n createdAt\n plan\n planDetail {\n name\n maxUsers\n maxApps\n maxEnvsPerApp\n seatsUsed {\n users\n serviceAccounts\n total\n }\n appCount\n }\n role {\n name\n description\n color\n permissions\n }\n memberId\n keyring\n recovery\n pricingVersion\n }\n}": typeof types.GetOrganisationsDocument, "query GetAwsStsEndpoints {\n awsStsEndpoints\n}": typeof types.GetAwsStsEndpointsDocument, - "query GetIdentityProviders {\n identityProviders {\n id\n name\n description\n iconId\n }\n}": typeof types.GetIdentityProvidersDocument, - "query GetOrganisationIdentities($organisationId: ID!) {\n identities(organisationId: $organisationId) {\n id\n provider\n name\n description\n config {\n ... on AwsIamConfigType {\n trustedPrincipals\n signatureTtlSeconds\n stsEndpoint\n }\n ... on AzureEntraConfigType {\n tenantId\n resource\n allowedServicePrincipalIds\n }\n }\n tokenNamePattern\n defaultTtlSeconds\n maxTtlSeconds\n createdAt\n }\n}": typeof types.GetOrganisationIdentitiesDocument, + "query GetIdentityProviders {\n identityProviders {\n id\n name\n description\n iconId\n supported\n }\n}": typeof types.GetIdentityProvidersDocument, + "query GetOrganisationIdentities($organisationId: ID!) {\n identities(organisationId: $organisationId) {\n id\n provider\n name\n description\n config {\n ... on AwsIamConfigType {\n trustedPrincipals\n signatureTtlSeconds\n stsEndpoint\n }\n }\n tokenNamePattern\n defaultTtlSeconds\n maxTtlSeconds\n createdAt\n }\n}": typeof types.GetOrganisationIdentitiesDocument, "query CheckOrganisationNameAvailability($name: String!) {\n organisationNameAvailable(name: $name)\n}": typeof types.CheckOrganisationNameAvailabilityDocument, "query GetGlobalAccessUsers($organisationId: ID!) {\n organisationGlobalAccessUsers(organisationId: $organisationId) {\n id\n role {\n name\n permissions\n }\n identityKey\n self\n }\n}": typeof types.GetGlobalAccessUsersDocument, "query GetInvites($orgId: ID!) {\n organisationInvites(orgId: $orgId) {\n id\n createdAt\n expiresAt\n invitedBy {\n email\n fullName\n self\n }\n inviteeEmail\n role {\n id\n name\n description\n color\n }\n }\n}": typeof types.GetInvitesDocument, @@ -154,11 +154,10 @@ type Documents = { "query GetSecretTags($orgId: ID!) {\n secretTags(orgId: $orgId) {\n id\n name\n color\n }\n}": typeof types.GetSecretTagsDocument, "query GetSecrets($appId: ID!, $envId: ID!, $path: String) {\n secrets(envId: $envId, path: $path) {\n id\n key\n value\n path\n type\n tags {\n id\n name\n color\n }\n comment\n createdAt\n updatedAt\n override {\n value\n isActive\n }\n environment {\n id\n app {\n id\n }\n }\n }\n folders(envId: $envId, path: $path) {\n id\n name\n path\n createdAt\n folderCount\n secretCount\n }\n appEnvironments(appId: $appId, environmentId: $envId) {\n id\n name\n envType\n identityKey\n app {\n id\n name\n sseEnabled\n }\n }\n environmentKeys(appId: $appId, environmentId: $envId) {\n id\n identityKey\n wrappedSeed\n wrappedSalt\n }\n envSyncs(envId: $envId) {\n id\n environment {\n id\n name\n envType\n }\n serviceInfo {\n id\n name\n }\n options\n isActive\n status\n lastSync\n createdAt\n }\n dynamicSecrets(envId: $envId, path: $path) {\n id\n name\n path\n description\n provider\n keyMap {\n id\n keyName\n masked\n }\n config {\n ... on AWSConfigType {\n usernameTemplate\n groups\n iamPath\n permissionBoundaryArn\n policyArns\n policyDocument\n }\n }\n defaultTtlSeconds\n maxTtlSeconds\n authentication {\n id\n name\n }\n createdAt\n }\n}": typeof types.GetSecretsDocument, "query GetServiceTokens($appId: ID!) {\n serviceTokens(appId: $appId) {\n id\n name\n createdAt\n createdBy {\n fullName\n avatarUrl\n self\n }\n expiresAt\n keys {\n id\n identityKey\n }\n }\n}": typeof types.GetServiceTokensDocument, - "query GetServiceAccountDetail($orgId: ID!, $id: ID) {\n serviceAccounts(orgId: $orgId, serviceAccountId: $id) {\n id\n name\n identityKey\n serverSideKeyManagementEnabled\n role {\n id\n name\n description\n color\n permissions\n }\n createdAt\n handlers {\n id\n wrappedKeyring\n wrappedRecovery\n user {\n self\n }\n }\n appMemberships {\n id\n name\n environments {\n id\n name\n }\n sseEnabled\n }\n networkPolicies {\n id\n name\n allowedIps\n isGlobal\n }\n identities {\n id\n provider\n name\n description\n }\n }\n}": typeof types.GetServiceAccountDetailDocument, + "query GetServiceAccountDetail($orgId: ID!, $id: ID) {\n serviceAccounts(orgId: $orgId, serviceAccountId: $id) {\n id\n name\n identityKey\n serverSideKeyManagementEnabled\n role {\n id\n name\n description\n color\n permissions\n }\n createdAt\n handlers {\n id\n wrappedKeyring\n wrappedRecovery\n user {\n self\n }\n }\n appMemberships {\n id\n name\n environments {\n id\n name\n }\n sseEnabled\n }\n networkPolicies {\n id\n name\n allowedIps\n isGlobal\n }\n identities {\n id\n name\n description\n }\n }\n}": typeof types.GetServiceAccountDetailDocument, "query GetServiceAccountHandlers($orgId: ID!) {\n serviceAccountHandlers(orgId: $orgId) {\n id\n email\n role {\n name\n permissions\n }\n identityKey\n self\n }\n}": typeof types.GetServiceAccountHandlersDocument, "query GetServiceAccountTokens($orgId: ID!, $id: ID) {\n serviceAccounts(orgId: $orgId, serviceAccountId: $id) {\n id\n tokens {\n id\n name\n createdAt\n expiresAt\n createdBy {\n fullName\n avatarUrl\n self\n }\n createdByServiceAccount {\n id\n name\n identityKey\n }\n lastUsed\n }\n }\n}": typeof types.GetServiceAccountTokensDocument, "query GetServiceAccounts($orgId: ID!, $id: ID) {\n serviceAccounts(orgId: $orgId, serviceAccountId: $id) {\n id\n name\n identityKey\n role {\n id\n name\n description\n color\n }\n handlers {\n id\n wrappedKeyring\n wrappedRecovery\n user {\n self\n }\n }\n createdAt\n }\n}": typeof types.GetServiceAccountsDocument, - "query GetOrgSSOProviders {\n organisations {\n id\n name\n requireSso\n ssoProviders {\n id\n providerType\n name\n publicConfig\n enabled\n createdAt\n createdBy {\n fullName\n avatarUrl\n self\n }\n updatedAt\n updatedBy {\n fullName\n avatarUrl\n self\n }\n }\n }\n serverPublicKey\n}": typeof types.GetOrgSsoProvidersDocument, "query GetOrganisationSyncs($orgId: ID!) {\n syncs(orgId: $orgId) {\n id\n environment {\n id\n name\n envType\n app {\n id\n name\n }\n }\n path\n serviceInfo {\n id\n name\n provider {\n id\n }\n }\n options\n isActive\n lastSync\n status\n authentication {\n id\n name\n credentials\n }\n createdAt\n history {\n id\n status\n createdAt\n completedAt\n meta\n }\n }\n savedCredentials(orgId: $orgId) {\n id\n name\n credentials\n createdAt\n provider {\n id\n name\n expectedCredentials\n optionalCredentials\n }\n syncCount\n }\n apps(organisationId: $orgId, appId: null) {\n id\n name\n identityKey\n createdAt\n sseEnabled\n members {\n id\n fullName\n avatarUrl\n email\n }\n serviceAccounts {\n id\n name\n }\n environments {\n id\n name\n syncs {\n id\n serviceInfo {\n id\n name\n provider {\n id\n name\n }\n }\n status\n }\n }\n }\n}": typeof types.GetOrganisationSyncsDocument, "query GetAwsSecrets($credentialId: ID!) {\n awsSecrets(credentialId: $credentialId) {\n name\n arn\n }\n}": typeof types.GetAwsSecretsDocument, "query ValidateAWSAssumeRoleAuth {\n validateAwsAssumeRoleAuth {\n valid\n message\n method\n error\n }\n}": typeof types.ValidateAwsAssumeRoleAuthDocument, @@ -180,6 +179,7 @@ type Documents = { "query GetRenderResources($credentialId: ID!) {\n renderServices(credentialId: $credentialId) {\n id\n name\n type\n }\n renderEnvgroups(credentialId: $credentialId) {\n id\n name\n }\n}": typeof types.GetRenderResourcesDocument, "query TestVaultAuth($credentialId: ID!) {\n testVaultCreds(credentialId: $credentialId)\n}": typeof types.TestVaultAuthDocument, "query GetVercelProjects($credentialId: ID!) {\n vercelProjects(credentialId: $credentialId) {\n id\n teamName\n projects {\n id\n name\n environments {\n id\n name\n slug\n type\n }\n }\n }\n}": typeof types.GetVercelProjectsDocument, + "query GetTeams($organisationId: ID!, $teamId: ID) {\n teams(organisationId: $organisationId, teamId: $teamId) {\n id\n name\n description\n memberRole {\n id\n name\n description\n color\n permissions\n }\n serviceAccountRole {\n id\n name\n description\n color\n permissions\n }\n isScimManaged\n createdBy {\n id\n fullName\n email\n avatarUrl\n }\n createdAt\n updatedAt\n memberCount\n members {\n id\n orgMember {\n id\n identityKey\n role {\n id\n name\n description\n color\n permissions\n }\n }\n serviceAccount {\n id\n name\n role {\n id\n name\n description\n color\n permissions\n }\n }\n email\n fullName\n avatarUrl\n createdAt\n }\n apps {\n id\n name\n sseEnabled\n }\n appEnvironments {\n id\n app {\n id\n name\n }\n environment {\n id\n name\n envType\n }\n createdAt\n }\n }\n}": typeof types.GetTeamsDocument, "query GetOrganisationMemberDetail($organisationId: ID!, $id: ID) {\n organisationMembers(organisationId: $organisationId, memberId: $id) {\n id\n role {\n id\n name\n description\n permissions\n color\n }\n identityKey\n email\n fullName\n avatarUrl\n createdAt\n lastLogin\n self\n appMemberships {\n id\n name\n sseEnabled\n environments {\n id\n name\n }\n }\n tokens {\n id\n name\n createdAt\n expiresAt\n }\n networkPolicies {\n id\n name\n allowedIps\n isGlobal\n }\n }\n}": typeof types.GetOrganisationMemberDetailDocument, "query GetUserTokens($organisationId: ID!) {\n userTokens(organisationId: $organisationId) {\n id\n name\n wrappedKeyShare\n createdAt\n expiresAt\n }\n}": typeof types.GetUserTokensDocument, }; @@ -196,8 +196,6 @@ const documents: Documents = { "mutation RemoveMemberFromApp($memberId: ID!, $memberType: MemberType, $appId: ID!) {\n removeAppMember(memberId: $memberId, memberType: $memberType, appId: $appId) {\n app {\n id\n }\n }\n}": types.RemoveMemberFromAppDocument, "mutation UpdateAppInfoOp($id: ID!, $name: String, $description: String) {\n updateAppInfo(id: $id, name: $name, description: $description) {\n app {\n id\n name\n description\n }\n }\n}": types.UpdateAppInfoOpDocument, "mutation UpdateEnvScope($memberId: ID!, $memberType: MemberType, $appId: ID!, $envKeys: [EnvironmentKeyInput]) {\n updateMemberEnvironmentScope(\n memberId: $memberId\n memberType: $memberType\n appId: $appId\n envKeys: $envKeys\n ) {\n app {\n id\n }\n }\n}": types.UpdateEnvScopeDocument, - "mutation ChangePassword($orgId: ID!, $currentAuthHash: String!, $newAuthHash: String!, $identityKey: String!, $wrappedKeyring: String!, $wrappedRecovery: String!) {\n changeAccountPassword(\n orgId: $orgId\n currentAuthHash: $currentAuthHash\n newAuthHash: $newAuthHash\n identityKey: $identityKey\n wrappedKeyring: $wrappedKeyring\n wrappedRecovery: $wrappedRecovery\n ) {\n orgMember {\n id\n }\n }\n}": types.ChangePasswordDocument, - "mutation RecoverKeyring($orgId: ID!, $authHash: String!, $identityKey: String!, $wrappedKeyring: String!, $wrappedRecovery: String!) {\n recoverAccountKeyring(\n orgId: $orgId\n authHash: $authHash\n identityKey: $identityKey\n wrappedKeyring: $wrappedKeyring\n wrappedRecovery: $wrappedRecovery\n ) {\n orgMember {\n id\n }\n }\n}": types.RecoverKeyringDocument, "mutation CancelStripeSubscription($organisationId: ID!, $subscriptionId: String!) {\n cancelSubscription(\n organisationId: $organisationId\n subscriptionId: $subscriptionId\n ) {\n success\n }\n}": types.CancelStripeSubscriptionDocument, "mutation CreateStripeSetupIntentOp($organisationId: ID!) {\n createSetupIntent(organisationId: $organisationId) {\n clientSecret\n }\n}": types.CreateStripeSetupIntentOpDocument, "mutation DeleteStripePaymentMethod($organisationId: ID!, $paymentMethodId: String!) {\n deletePaymentMethod(\n organisationId: $organisationId\n paymentMethodId: $paymentMethodId\n ) {\n ok\n }\n}": types.DeleteStripePaymentMethodDocument, @@ -235,16 +233,16 @@ const documents: Documents = { "mutation UpdateDynamicSecret($dynamicSecretId: ID!, $organisationId: ID!, $path: String, $name: String!, $description: String, $defaultTtl: Int, $maxTtl: Int, $authenticationId: ID, $config: AWSConfigInput!, $keyMap: [KeyMapInput]!) {\n updateAwsDynamicSecret(\n organisationId: $organisationId\n dynamicSecretId: $dynamicSecretId\n path: $path\n name: $name\n description: $description\n defaultTtl: $defaultTtl\n maxTtl: $maxTtl\n authenticationId: $authenticationId\n config: $config\n keyMap: $keyMap\n ) {\n dynamicSecret {\n id\n name\n description\n provider\n createdAt\n updatedAt\n }\n }\n}": types.UpdateDynamicSecretDocument, "mutation CreateSharedSecret($input: LockboxInput!) {\n createLockbox(input: $input) {\n lockbox {\n id\n allowedViews\n expiresAt\n }\n }\n}": types.CreateSharedSecretDocument, "mutation UpdateEnvOrder($appId: ID!, $environmentOrder: [ID]!) {\n updateEnvironmentOrder(appId: $appId, environmentOrder: $environmentOrder) {\n ok\n }\n}": types.UpdateEnvOrderDocument, - "mutation CreateExtIdentity($organisationId: ID!, $provider: String!, $name: String!, $description: String, $trustedPrincipals: String!, $signatureTtlSeconds: Int, $stsEndpoint: String, $tenantId: String, $resource: String, $tokenNamePattern: String, $defaultTtlSeconds: Int!, $maxTtlSeconds: Int!) {\n createIdentity(\n organisationId: $organisationId\n provider: $provider\n name: $name\n description: $description\n trustedPrincipals: $trustedPrincipals\n signatureTtlSeconds: $signatureTtlSeconds\n stsEndpoint: $stsEndpoint\n tenantId: $tenantId\n resource: $resource\n tokenNamePattern: $tokenNamePattern\n defaultTtlSeconds: $defaultTtlSeconds\n maxTtlSeconds: $maxTtlSeconds\n ) {\n identity {\n id\n provider\n name\n description\n config {\n ... on AwsIamConfigType {\n trustedPrincipals\n signatureTtlSeconds\n stsEndpoint\n }\n ... on AzureEntraConfigType {\n tenantId\n resource\n allowedServicePrincipalIds\n }\n }\n tokenNamePattern\n defaultTtlSeconds\n maxTtlSeconds\n }\n }\n}": types.CreateExtIdentityDocument, + "mutation CreateExtIdentity($organisationId: ID!, $provider: String!, $name: String!, $description: String, $trustedPrincipals: String!, $signatureTtlSeconds: Int, $stsEndpoint: String, $tokenNamePattern: String, $defaultTtlSeconds: Int!, $maxTtlSeconds: Int!) {\n createIdentity(\n organisationId: $organisationId\n provider: $provider\n name: $name\n description: $description\n trustedPrincipals: $trustedPrincipals\n signatureTtlSeconds: $signatureTtlSeconds\n stsEndpoint: $stsEndpoint\n tokenNamePattern: $tokenNamePattern\n defaultTtlSeconds: $defaultTtlSeconds\n maxTtlSeconds: $maxTtlSeconds\n ) {\n identity {\n id\n provider\n name\n description\n config {\n ... on AwsIamConfigType {\n trustedPrincipals\n signatureTtlSeconds\n stsEndpoint\n }\n }\n tokenNamePattern\n defaultTtlSeconds\n maxTtlSeconds\n }\n }\n}": types.CreateExtIdentityDocument, "mutation DeleteExtIdentity($id: ID!) {\n deleteIdentity(id: $id) {\n ok\n }\n}": types.DeleteExtIdentityDocument, - "mutation UpdateExtIdentity($id: ID!, $name: String, $description: String, $trustedPrincipals: String, $signatureTtlSeconds: Int, $stsEndpoint: String, $tenantId: String, $resource: String, $tokenNamePattern: String, $defaultTtlSeconds: Int, $maxTtlSeconds: Int) {\n updateIdentity(\n id: $id\n name: $name\n description: $description\n trustedPrincipals: $trustedPrincipals\n signatureTtlSeconds: $signatureTtlSeconds\n stsEndpoint: $stsEndpoint\n tenantId: $tenantId\n resource: $resource\n tokenNamePattern: $tokenNamePattern\n defaultTtlSeconds: $defaultTtlSeconds\n maxTtlSeconds: $maxTtlSeconds\n ) {\n identity {\n id\n name\n description\n config {\n ... on AwsIamConfigType {\n trustedPrincipals\n signatureTtlSeconds\n stsEndpoint\n }\n ... on AzureEntraConfigType {\n tenantId\n resource\n allowedServicePrincipalIds\n }\n }\n tokenNamePattern\n defaultTtlSeconds\n maxTtlSeconds\n }\n }\n}": types.UpdateExtIdentityDocument, + "mutation UpdateExtIdentity($id: ID!, $name: String, $description: String, $trustedPrincipals: String, $signatureTtlSeconds: Int, $stsEndpoint: String, $tokenNamePattern: String, $defaultTtlSeconds: Int, $maxTtlSeconds: Int) {\n updateIdentity(\n id: $id\n name: $name\n description: $description\n trustedPrincipals: $trustedPrincipals\n signatureTtlSeconds: $signatureTtlSeconds\n stsEndpoint: $stsEndpoint\n tokenNamePattern: $tokenNamePattern\n defaultTtlSeconds: $defaultTtlSeconds\n maxTtlSeconds: $maxTtlSeconds\n ) {\n identity {\n id\n name\n description\n config {\n ... on AwsIamConfigType {\n trustedPrincipals\n signatureTtlSeconds\n stsEndpoint\n }\n }\n tokenNamePattern\n defaultTtlSeconds\n maxTtlSeconds\n }\n }\n}": types.UpdateExtIdentityDocument, "mutation AcceptOrganisationInvite($orgId: ID!, $identityKey: String!, $wrappedKeyring: String!, $wrappedRecovery: String!, $inviteId: ID!) {\n createOrganisationMember(\n orgId: $orgId\n identityKey: $identityKey\n wrappedKeyring: $wrappedKeyring\n wrappedRecovery: $wrappedRecovery\n inviteId: $inviteId\n ) {\n orgMember {\n id\n email\n createdAt\n role {\n name\n }\n }\n }\n}": types.AcceptOrganisationInviteDocument, "mutation BulkInviteMembers($orgId: ID!, $invites: [InviteInput!]!) {\n bulkInviteOrganisationMembers(orgId: $orgId, invites: $invites) {\n invites {\n id\n inviteeEmail\n expiresAt\n }\n }\n}": types.BulkInviteMembersDocument, "mutation DeleteOrgInvite($inviteId: ID!) {\n deleteInvitation(inviteId: $inviteId) {\n ok\n }\n}": types.DeleteOrgInviteDocument, "mutation RemoveMember($memberId: ID!) {\n deleteOrganisationMember(memberId: $memberId) {\n ok\n }\n}": types.RemoveMemberDocument, "mutation TransferOrgOwnership($organisationId: ID!, $newOwnerId: ID!, $billingEmail: String) {\n transferOrganisationOwnership(\n organisationId: $organisationId\n newOwnerId: $newOwnerId\n billingEmail: $billingEmail\n ) {\n ok\n }\n}": types.TransferOrgOwnershipDocument, "mutation UpdateMemberRole($memberId: ID!, $roleId: ID!) {\n updateOrganisationMemberRole(memberId: $memberId, roleId: $roleId) {\n orgMember {\n id\n role {\n name\n }\n }\n }\n}": types.UpdateMemberRoleDocument, - "mutation UpdateWrappedSecrets($orgId: ID!, $identityKey: String!, $wrappedKeyring: String!, $wrappedRecovery: String!) {\n updateMemberWrappedSecrets(\n orgId: $orgId\n identityKey: $identityKey\n wrappedKeyring: $wrappedKeyring\n wrappedRecovery: $wrappedRecovery\n ) {\n orgMember {\n id\n }\n }\n}": types.UpdateWrappedSecretsDocument, + "mutation UpdateWrappedSecrets($orgId: ID!, $wrappedKeyring: String!, $wrappedRecovery: String!) {\n updateMemberWrappedSecrets(\n orgId: $orgId\n wrappedKeyring: $wrappedKeyring\n wrappedRecovery: $wrappedRecovery\n ) {\n orgMember {\n id\n }\n }\n}": types.UpdateWrappedSecretsDocument, "mutation RotateAppKey($id: ID!, $appToken: String!, $wrappedKeyShare: String!) {\n rotateAppKeys(id: $id, appToken: $appToken, wrappedKeyShare: $wrappedKeyShare) {\n app {\n id\n }\n }\n}": types.RotateAppKeyDocument, "mutation CreateServiceAccountOp($name: String!, $orgId: ID!, $roleId: ID!, $identityKey: String!, $handlers: [ServiceAccountHandlerInput], $serverWrappedKeyring: String, $serverWrappedRecovery: String) {\n createServiceAccount(\n name: $name\n organisationId: $orgId\n roleId: $roleId\n identityKey: $identityKey\n handlers: $handlers\n serverWrappedKeyring: $serverWrappedKeyring\n serverWrappedRecovery: $serverWrappedRecovery\n ) {\n serviceAccount {\n id\n }\n }\n}": types.CreateServiceAccountOpDocument, "mutation CreateSAToken($serviceAccountId: ID!, $name: String!, $identityKey: String!, $token: String!, $wrappedKeyShare: String!, $expiry: BigInt) {\n createServiceAccountToken(\n serviceAccountId: $serviceAccountId\n name: $name\n identityKey: $identityKey\n token: $token\n wrappedKeyShare: $wrappedKeyShare\n expiry: $expiry\n ) {\n token {\n id\n }\n }\n}": types.CreateSaTokenDocument, @@ -254,11 +252,6 @@ const documents: Documents = { "mutation EnableSAServerKeyManagement($serviceAccountId: ID!, $serverWrappedKeyring: String!, $serverWrappedRecovery: String!) {\n enableServiceAccountServerSideKeyManagement(\n serviceAccountId: $serviceAccountId\n serverWrappedKeyring: $serverWrappedKeyring\n serverWrappedRecovery: $serverWrappedRecovery\n ) {\n serviceAccount {\n id\n name\n serverSideKeyManagementEnabled\n }\n }\n}": types.EnableSaServerKeyManagementDocument, "mutation UpdateServiceAccountHandlerKeys($orgId: ID!, $handlers: [ServiceAccountHandlerInput]) {\n updateServiceAccountHandlers(organisationId: $orgId, handlers: $handlers) {\n ok\n }\n}": types.UpdateServiceAccountHandlerKeysDocument, "mutation UpdateServiceAccountOp($serviceAccountId: ID!, $name: String!, $roleId: ID!, $identityIds: [ID!]) {\n updateServiceAccount(\n serviceAccountId: $serviceAccountId\n name: $name\n roleId: $roleId\n identityIds: $identityIds\n ) {\n serviceAccount {\n id\n name\n role {\n id\n name\n description\n permissions\n }\n identities {\n id\n name\n }\n }\n }\n}": types.UpdateServiceAccountOpDocument, - "mutation CreateOrgSSOProvider($orgId: ID!, $providerType: String!, $name: String!, $config: JSONString!) {\n createOrganisationSsoProvider(\n orgId: $orgId\n providerType: $providerType\n name: $name\n config: $config\n ) {\n providerId\n }\n}": types.CreateOrgSsoProviderDocument, - "mutation DeleteOrgSSOProvider($providerId: ID!) {\n deleteOrganisationSsoProvider(providerId: $providerId) {\n ok\n }\n}": types.DeleteOrgSsoProviderDocument, - "mutation TestOrgSSOProvider($providerId: ID!) {\n testOrganisationSsoProvider(providerId: $providerId) {\n success\n error\n }\n}": types.TestOrgSsoProviderDocument, - "mutation UpdateOrgSSOProvider($providerId: ID!, $name: String, $config: JSONString, $enabled: Boolean) {\n updateOrganisationSsoProvider(\n providerId: $providerId\n name: $name\n config: $config\n enabled: $enabled\n ) {\n ok\n }\n}": types.UpdateOrgSsoProviderDocument, - "mutation UpdateOrgSecurity($orgId: ID!, $requireSso: Boolean!) {\n updateOrganisationSecurity(orgId: $orgId, requireSso: $requireSso) {\n ok\n sessionInvalidated\n }\n}": types.UpdateOrgSecurityDocument, "mutation CreateNewAWSSecretsSync($envId: ID!, $path: String!, $credentialId: ID!, $secretName: String!, $kmsId: String) {\n createAwsSecretSync(\n envId: $envId\n path: $path\n credentialId: $credentialId\n secretName: $secretName\n kmsId: $kmsId\n ) {\n sync {\n id\n environment {\n id\n name\n envType\n }\n serviceInfo {\n name\n }\n isActive\n lastSync\n createdAt\n }\n }\n}": types.CreateNewAwsSecretsSyncDocument, "mutation CreateNewAzureKeyVaultSync($envId: ID!, $path: String!, $credentialId: ID!, $vaultUri: String!, $syncMode: String!, $secretName: String) {\n createAzureKeyVaultSync(\n envId: $envId\n path: $path\n credentialId: $credentialId\n vaultUri: $vaultUri\n syncMode: $syncMode\n secretName: $secretName\n ) {\n sync {\n id\n environment {\n id\n name\n envType\n }\n serviceInfo {\n name\n }\n isActive\n lastSync\n createdAt\n }\n }\n}": types.CreateNewAzureKeyVaultSyncDocument, "mutation CreateNewCfPagesSync($envId: ID!, $path: String!, $projectName: String!, $deploymentId: ID!, $projectEnv: String!, $credentialId: ID!) {\n createCloudflarePagesSync(\n envId: $envId\n path: $path\n projectName: $projectName\n deploymentId: $deploymentId\n projectEnv: $projectEnv\n credentialId: $credentialId\n ) {\n sync {\n id\n environment {\n id\n name\n envType\n }\n serviceInfo {\n id\n name\n }\n isActive\n lastSync\n createdAt\n }\n }\n}": types.CreateNewCfPagesSyncDocument, @@ -279,6 +272,14 @@ const documents: Documents = { "mutation UpdateSyncAuth($syncId: ID!, $credentialId: ID!) {\n updateSyncAuthentication(syncId: $syncId, credentialId: $credentialId) {\n sync {\n id\n status\n }\n }\n}": types.UpdateSyncAuthDocument, "mutation CreateNewVaultSync($envId: ID!, $path: String!, $engine: String!, $vaultPath: String!, $credentialId: ID!) {\n createVaultSync(\n envId: $envId\n path: $path\n engine: $engine\n vaultPath: $vaultPath\n credentialId: $credentialId\n ) {\n sync {\n id\n environment {\n id\n name\n envType\n }\n serviceInfo {\n id\n name\n }\n isActive\n lastSync\n createdAt\n }\n }\n}": types.CreateNewVaultSyncDocument, "mutation CreateNewVercelSync($envId: ID!, $path: String!, $credentialId: ID!, $projectId: String!, $projectName: String!, $teamId: String!, $teamName: String!, $environment: String!, $secretType: String!) {\n createVercelSync(\n envId: $envId\n path: $path\n credentialId: $credentialId\n projectId: $projectId\n projectName: $projectName\n teamId: $teamId\n teamName: $teamName\n environment: $environment\n secretType: $secretType\n ) {\n sync {\n id\n environment {\n id\n name\n envType\n }\n serviceInfo {\n id\n name\n }\n isActive\n lastSync\n createdAt\n }\n }\n}": types.CreateNewVercelSyncDocument, + "mutation AddTeamAppsOp($teamId: ID!, $appEnvs: [AppEnvironmentInput!]!) {\n addTeamApps(teamId: $teamId, appEnvs: $appEnvs) {\n team {\n id\n }\n }\n}": types.AddTeamAppsOpDocument, + "mutation AddTeamMembersOp($teamId: ID!, $memberIds: [ID!]!, $memberType: MemberType) {\n addTeamMembers(teamId: $teamId, memberIds: $memberIds, memberType: $memberType) {\n team {\n id\n }\n }\n}": types.AddTeamMembersOpDocument, + "mutation CreateTeamOp($organisationId: ID!, $name: String!, $description: String, $memberRoleId: ID, $serviceAccountRoleId: ID) {\n createTeam(\n organisationId: $organisationId\n name: $name\n description: $description\n memberRoleId: $memberRoleId\n serviceAccountRoleId: $serviceAccountRoleId\n ) {\n team {\n id\n name\n }\n }\n}": types.CreateTeamOpDocument, + "mutation DeleteTeamOp($teamId: ID!) {\n deleteTeam(teamId: $teamId) {\n ok\n }\n}": types.DeleteTeamOpDocument, + "mutation RemoveTeamAppOp($teamId: ID!, $appId: ID!) {\n removeTeamApp(teamId: $teamId, appId: $appId) {\n team {\n id\n }\n }\n}": types.RemoveTeamAppOpDocument, + "mutation RemoveTeamMemberOp($teamId: ID!, $memberId: ID!, $memberType: MemberType) {\n removeTeamMember(teamId: $teamId, memberId: $memberId, memberType: $memberType) {\n team {\n id\n }\n }\n}": types.RemoveTeamMemberOpDocument, + "mutation UpdateTeamOp($teamId: ID!, $name: String, $description: String, $memberRoleId: ID, $serviceAccountRoleId: ID) {\n updateTeam(\n teamId: $teamId\n name: $name\n description: $description\n memberRoleId: $memberRoleId\n serviceAccountRoleId: $serviceAccountRoleId\n ) {\n team {\n id\n name\n }\n }\n}": types.UpdateTeamOpDocument, + "mutation UpdateTeamAppEnvironmentsOp($teamId: ID!, $appId: ID!, $envIds: [ID!]!) {\n updateTeamAppEnvironments(teamId: $teamId, appId: $appId, envIds: $envIds) {\n team {\n id\n }\n }\n}": types.UpdateTeamAppEnvironmentsOpDocument, "mutation CreateNewUserToken($orgId: ID!, $name: String!, $identityKey: String!, $token: String!, $wrappedKeyShare: String!, $expiry: BigInt) {\n createUserToken(\n orgId: $orgId\n name: $name\n identityKey: $identityKey\n token: $token\n wrappedKeyShare: $wrappedKeyShare\n expiry: $expiry\n ) {\n ok\n }\n}": types.CreateNewUserTokenDocument, "mutation RevokeUserToken($tokenId: ID!) {\n deleteUserToken(tokenId: $tokenId) {\n ok\n }\n}": types.RevokeUserTokenDocument, "query GetIP {\n clientIp\n}": types.GetIpDocument, @@ -286,7 +287,6 @@ const documents: Documents = { "query GetAppAccounts($appId: ID!) {\n appUsers(appId: $appId) {\n id\n identityKey\n email\n fullName\n avatarUrl\n createdAt\n role {\n id\n name\n description\n permissions\n color\n }\n }\n appServiceAccounts(appId: $appId) {\n id\n identityKey\n name\n createdAt\n role {\n id\n name\n description\n permissions\n color\n }\n tokens {\n id\n name\n }\n }\n}": types.GetAppAccountsDocument, "query GetAppMembers($appId: ID!) {\n appUsers(appId: $appId) {\n id\n identityKey\n email\n fullName\n avatarUrl\n createdAt\n role {\n id\n name\n description\n permissions\n color\n }\n }\n}": types.GetAppMembersDocument, "query GetAppServiceAccounts($appId: ID!) {\n appServiceAccounts(appId: $appId) {\n id\n identityKey\n name\n createdAt\n role {\n id\n name\n description\n permissions\n color\n }\n tokens {\n id\n name\n }\n }\n}": types.GetAppServiceAccountsDocument, - "query VerifyPassword($authHash: String!) {\n verifyPassword(authHash: $authHash)\n}": types.VerifyPasswordDocument, "query GetCheckoutDetails($stripeSessionId: String!) {\n stripeCheckoutDetails(stripeSessionId: $stripeSessionId) {\n paymentStatus\n customerEmail\n billingStartDate\n billingEndDate\n subscriptionId\n planName\n }\n}": types.GetCheckoutDetailsDocument, "query GetCustomerPortalLink($organisationId: ID!) {\n stripeCustomerPortalUrl(organisationId: $organisationId)\n}": types.GetCustomerPortalLinkDocument, "query GetSubscriptionDetails($organisationId: ID!) {\n stripeSubscriptionDetails(organisationId: $organisationId) {\n subscriptionId\n planName\n planType\n billingPeriod\n status\n nextPaymentAmount\n currentPeriodStart\n currentPeriodEnd\n renewalDate\n cancelAt\n cancelAtPeriodEnd\n paymentMethods {\n id\n brand\n last4\n expMonth\n expYear\n isDefault\n }\n }\n}": types.GetSubscriptionDetailsDocument, @@ -296,10 +296,10 @@ const documents: Documents = { "query GetAppKmsLogs($appId: ID!, $start: BigInt, $end: BigInt) {\n kmsLogs(appId: $appId, start: $start, end: $end) {\n logs {\n id\n timestamp\n phaseNode\n eventType\n ipAddress\n country\n city\n phSize\n }\n count\n }\n}": types.GetAppKmsLogsDocument, "query GetApps($organisationId: ID!, $appId: ID) {\n apps(organisationId: $organisationId, appId: $appId) {\n id\n name\n description\n identityKey\n createdAt\n updatedAt\n sseEnabled\n members {\n id\n email\n fullName\n avatarUrl\n }\n serviceAccounts {\n id\n name\n }\n environments {\n id\n name\n envType\n syncs {\n id\n serviceInfo {\n id\n name\n provider {\n id\n name\n }\n }\n status\n }\n }\n }\n}": types.GetAppsDocument, "query GetDashboard($organisationId: ID!) {\n apps(organisationId: $organisationId) {\n id\n name\n sseEnabled\n }\n userTokens(organisationId: $organisationId) {\n id\n }\n organisationInvites(orgId: $organisationId) {\n id\n }\n organisationMembers(organisationId: $organisationId, role: null) {\n id\n }\n savedCredentials(orgId: $organisationId) {\n id\n }\n syncs(orgId: $organisationId) {\n id\n }\n}": types.GetDashboardDocument, - "query GetOrganisations {\n organisations {\n id\n name\n identityKey\n createdAt\n plan\n planDetail {\n name\n maxUsers\n maxApps\n maxEnvsPerApp\n seatsUsed {\n users\n serviceAccounts\n total\n }\n appCount\n }\n role {\n name\n description\n color\n permissions\n }\n memberId\n keyring\n recovery\n pricingVersion\n requireSso\n ssoProviders {\n name\n providerType\n enabled\n }\n }\n}": types.GetOrganisationsDocument, + "query GetOrganisations {\n organisations {\n id\n name\n identityKey\n createdAt\n plan\n planDetail {\n name\n maxUsers\n maxApps\n maxEnvsPerApp\n seatsUsed {\n users\n serviceAccounts\n total\n }\n appCount\n }\n role {\n name\n description\n color\n permissions\n }\n memberId\n keyring\n recovery\n pricingVersion\n }\n}": types.GetOrganisationsDocument, "query GetAwsStsEndpoints {\n awsStsEndpoints\n}": types.GetAwsStsEndpointsDocument, - "query GetIdentityProviders {\n identityProviders {\n id\n name\n description\n iconId\n }\n}": types.GetIdentityProvidersDocument, - "query GetOrganisationIdentities($organisationId: ID!) {\n identities(organisationId: $organisationId) {\n id\n provider\n name\n description\n config {\n ... on AwsIamConfigType {\n trustedPrincipals\n signatureTtlSeconds\n stsEndpoint\n }\n ... on AzureEntraConfigType {\n tenantId\n resource\n allowedServicePrincipalIds\n }\n }\n tokenNamePattern\n defaultTtlSeconds\n maxTtlSeconds\n createdAt\n }\n}": types.GetOrganisationIdentitiesDocument, + "query GetIdentityProviders {\n identityProviders {\n id\n name\n description\n iconId\n supported\n }\n}": types.GetIdentityProvidersDocument, + "query GetOrganisationIdentities($organisationId: ID!) {\n identities(organisationId: $organisationId) {\n id\n provider\n name\n description\n config {\n ... on AwsIamConfigType {\n trustedPrincipals\n signatureTtlSeconds\n stsEndpoint\n }\n }\n tokenNamePattern\n defaultTtlSeconds\n maxTtlSeconds\n createdAt\n }\n}": types.GetOrganisationIdentitiesDocument, "query CheckOrganisationNameAvailability($name: String!) {\n organisationNameAvailable(name: $name)\n}": types.CheckOrganisationNameAvailabilityDocument, "query GetGlobalAccessUsers($organisationId: ID!) {\n organisationGlobalAccessUsers(organisationId: $organisationId) {\n id\n role {\n name\n permissions\n }\n identityKey\n self\n }\n}": types.GetGlobalAccessUsersDocument, "query GetInvites($orgId: ID!) {\n organisationInvites(orgId: $orgId) {\n id\n createdAt\n expiresAt\n invitedBy {\n email\n fullName\n self\n }\n inviteeEmail\n role {\n id\n name\n description\n color\n }\n }\n}": types.GetInvitesDocument, @@ -324,11 +324,10 @@ const documents: Documents = { "query GetSecretTags($orgId: ID!) {\n secretTags(orgId: $orgId) {\n id\n name\n color\n }\n}": types.GetSecretTagsDocument, "query GetSecrets($appId: ID!, $envId: ID!, $path: String) {\n secrets(envId: $envId, path: $path) {\n id\n key\n value\n path\n type\n tags {\n id\n name\n color\n }\n comment\n createdAt\n updatedAt\n override {\n value\n isActive\n }\n environment {\n id\n app {\n id\n }\n }\n }\n folders(envId: $envId, path: $path) {\n id\n name\n path\n createdAt\n folderCount\n secretCount\n }\n appEnvironments(appId: $appId, environmentId: $envId) {\n id\n name\n envType\n identityKey\n app {\n id\n name\n sseEnabled\n }\n }\n environmentKeys(appId: $appId, environmentId: $envId) {\n id\n identityKey\n wrappedSeed\n wrappedSalt\n }\n envSyncs(envId: $envId) {\n id\n environment {\n id\n name\n envType\n }\n serviceInfo {\n id\n name\n }\n options\n isActive\n status\n lastSync\n createdAt\n }\n dynamicSecrets(envId: $envId, path: $path) {\n id\n name\n path\n description\n provider\n keyMap {\n id\n keyName\n masked\n }\n config {\n ... on AWSConfigType {\n usernameTemplate\n groups\n iamPath\n permissionBoundaryArn\n policyArns\n policyDocument\n }\n }\n defaultTtlSeconds\n maxTtlSeconds\n authentication {\n id\n name\n }\n createdAt\n }\n}": types.GetSecretsDocument, "query GetServiceTokens($appId: ID!) {\n serviceTokens(appId: $appId) {\n id\n name\n createdAt\n createdBy {\n fullName\n avatarUrl\n self\n }\n expiresAt\n keys {\n id\n identityKey\n }\n }\n}": types.GetServiceTokensDocument, - "query GetServiceAccountDetail($orgId: ID!, $id: ID) {\n serviceAccounts(orgId: $orgId, serviceAccountId: $id) {\n id\n name\n identityKey\n serverSideKeyManagementEnabled\n role {\n id\n name\n description\n color\n permissions\n }\n createdAt\n handlers {\n id\n wrappedKeyring\n wrappedRecovery\n user {\n self\n }\n }\n appMemberships {\n id\n name\n environments {\n id\n name\n }\n sseEnabled\n }\n networkPolicies {\n id\n name\n allowedIps\n isGlobal\n }\n identities {\n id\n provider\n name\n description\n }\n }\n}": types.GetServiceAccountDetailDocument, + "query GetServiceAccountDetail($orgId: ID!, $id: ID) {\n serviceAccounts(orgId: $orgId, serviceAccountId: $id) {\n id\n name\n identityKey\n serverSideKeyManagementEnabled\n role {\n id\n name\n description\n color\n permissions\n }\n createdAt\n handlers {\n id\n wrappedKeyring\n wrappedRecovery\n user {\n self\n }\n }\n appMemberships {\n id\n name\n environments {\n id\n name\n }\n sseEnabled\n }\n networkPolicies {\n id\n name\n allowedIps\n isGlobal\n }\n identities {\n id\n name\n description\n }\n }\n}": types.GetServiceAccountDetailDocument, "query GetServiceAccountHandlers($orgId: ID!) {\n serviceAccountHandlers(orgId: $orgId) {\n id\n email\n role {\n name\n permissions\n }\n identityKey\n self\n }\n}": types.GetServiceAccountHandlersDocument, "query GetServiceAccountTokens($orgId: ID!, $id: ID) {\n serviceAccounts(orgId: $orgId, serviceAccountId: $id) {\n id\n tokens {\n id\n name\n createdAt\n expiresAt\n createdBy {\n fullName\n avatarUrl\n self\n }\n createdByServiceAccount {\n id\n name\n identityKey\n }\n lastUsed\n }\n }\n}": types.GetServiceAccountTokensDocument, "query GetServiceAccounts($orgId: ID!, $id: ID) {\n serviceAccounts(orgId: $orgId, serviceAccountId: $id) {\n id\n name\n identityKey\n role {\n id\n name\n description\n color\n }\n handlers {\n id\n wrappedKeyring\n wrappedRecovery\n user {\n self\n }\n }\n createdAt\n }\n}": types.GetServiceAccountsDocument, - "query GetOrgSSOProviders {\n organisations {\n id\n name\n requireSso\n ssoProviders {\n id\n providerType\n name\n publicConfig\n enabled\n createdAt\n createdBy {\n fullName\n avatarUrl\n self\n }\n updatedAt\n updatedBy {\n fullName\n avatarUrl\n self\n }\n }\n }\n serverPublicKey\n}": types.GetOrgSsoProvidersDocument, "query GetOrganisationSyncs($orgId: ID!) {\n syncs(orgId: $orgId) {\n id\n environment {\n id\n name\n envType\n app {\n id\n name\n }\n }\n path\n serviceInfo {\n id\n name\n provider {\n id\n }\n }\n options\n isActive\n lastSync\n status\n authentication {\n id\n name\n credentials\n }\n createdAt\n history {\n id\n status\n createdAt\n completedAt\n meta\n }\n }\n savedCredentials(orgId: $orgId) {\n id\n name\n credentials\n createdAt\n provider {\n id\n name\n expectedCredentials\n optionalCredentials\n }\n syncCount\n }\n apps(organisationId: $orgId, appId: null) {\n id\n name\n identityKey\n createdAt\n sseEnabled\n members {\n id\n fullName\n avatarUrl\n email\n }\n serviceAccounts {\n id\n name\n }\n environments {\n id\n name\n syncs {\n id\n serviceInfo {\n id\n name\n provider {\n id\n name\n }\n }\n status\n }\n }\n }\n}": types.GetOrganisationSyncsDocument, "query GetAwsSecrets($credentialId: ID!) {\n awsSecrets(credentialId: $credentialId) {\n name\n arn\n }\n}": types.GetAwsSecretsDocument, "query ValidateAWSAssumeRoleAuth {\n validateAwsAssumeRoleAuth {\n valid\n message\n method\n error\n }\n}": types.ValidateAwsAssumeRoleAuthDocument, @@ -350,6 +349,7 @@ const documents: Documents = { "query GetRenderResources($credentialId: ID!) {\n renderServices(credentialId: $credentialId) {\n id\n name\n type\n }\n renderEnvgroups(credentialId: $credentialId) {\n id\n name\n }\n}": types.GetRenderResourcesDocument, "query TestVaultAuth($credentialId: ID!) {\n testVaultCreds(credentialId: $credentialId)\n}": types.TestVaultAuthDocument, "query GetVercelProjects($credentialId: ID!) {\n vercelProjects(credentialId: $credentialId) {\n id\n teamName\n projects {\n id\n name\n environments {\n id\n name\n slug\n type\n }\n }\n }\n}": types.GetVercelProjectsDocument, + "query GetTeams($organisationId: ID!, $teamId: ID) {\n teams(organisationId: $organisationId, teamId: $teamId) {\n id\n name\n description\n memberRole {\n id\n name\n description\n color\n permissions\n }\n serviceAccountRole {\n id\n name\n description\n color\n permissions\n }\n isScimManaged\n createdBy {\n id\n fullName\n email\n avatarUrl\n }\n createdAt\n updatedAt\n memberCount\n members {\n id\n orgMember {\n id\n identityKey\n role {\n id\n name\n description\n color\n permissions\n }\n }\n serviceAccount {\n id\n name\n role {\n id\n name\n description\n color\n permissions\n }\n }\n email\n fullName\n avatarUrl\n createdAt\n }\n apps {\n id\n name\n sseEnabled\n }\n appEnvironments {\n id\n app {\n id\n name\n }\n environment {\n id\n name\n envType\n }\n createdAt\n }\n }\n}": types.GetTeamsDocument, "query GetOrganisationMemberDetail($organisationId: ID!, $id: ID) {\n organisationMembers(organisationId: $organisationId, memberId: $id) {\n id\n role {\n id\n name\n description\n permissions\n color\n }\n identityKey\n email\n fullName\n avatarUrl\n createdAt\n lastLogin\n self\n appMemberships {\n id\n name\n sseEnabled\n environments {\n id\n name\n }\n }\n tokens {\n id\n name\n createdAt\n expiresAt\n }\n networkPolicies {\n id\n name\n allowedIps\n isGlobal\n }\n }\n}": types.GetOrganisationMemberDetailDocument, "query GetUserTokens($organisationId: ID!) {\n userTokens(organisationId: $organisationId) {\n id\n name\n wrappedKeyShare\n createdAt\n expiresAt\n }\n}": types.GetUserTokensDocument, }; @@ -416,14 +416,6 @@ export function graphql(source: "mutation UpdateAppInfoOp($id: ID!, $name: Strin * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ export function graphql(source: "mutation UpdateEnvScope($memberId: ID!, $memberType: MemberType, $appId: ID!, $envKeys: [EnvironmentKeyInput]) {\n updateMemberEnvironmentScope(\n memberId: $memberId\n memberType: $memberType\n appId: $appId\n envKeys: $envKeys\n ) {\n app {\n id\n }\n }\n}"): (typeof documents)["mutation UpdateEnvScope($memberId: ID!, $memberType: MemberType, $appId: ID!, $envKeys: [EnvironmentKeyInput]) {\n updateMemberEnvironmentScope(\n memberId: $memberId\n memberType: $memberType\n appId: $appId\n envKeys: $envKeys\n ) {\n app {\n id\n }\n }\n}"]; -/** - * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. - */ -export function graphql(source: "mutation ChangePassword($orgId: ID!, $currentAuthHash: String!, $newAuthHash: String!, $identityKey: String!, $wrappedKeyring: String!, $wrappedRecovery: String!) {\n changeAccountPassword(\n orgId: $orgId\n currentAuthHash: $currentAuthHash\n newAuthHash: $newAuthHash\n identityKey: $identityKey\n wrappedKeyring: $wrappedKeyring\n wrappedRecovery: $wrappedRecovery\n ) {\n orgMember {\n id\n }\n }\n}"): (typeof documents)["mutation ChangePassword($orgId: ID!, $currentAuthHash: String!, $newAuthHash: String!, $identityKey: String!, $wrappedKeyring: String!, $wrappedRecovery: String!) {\n changeAccountPassword(\n orgId: $orgId\n currentAuthHash: $currentAuthHash\n newAuthHash: $newAuthHash\n identityKey: $identityKey\n wrappedKeyring: $wrappedKeyring\n wrappedRecovery: $wrappedRecovery\n ) {\n orgMember {\n id\n }\n }\n}"]; -/** - * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. - */ -export function graphql(source: "mutation RecoverKeyring($orgId: ID!, $authHash: String!, $identityKey: String!, $wrappedKeyring: String!, $wrappedRecovery: String!) {\n recoverAccountKeyring(\n orgId: $orgId\n authHash: $authHash\n identityKey: $identityKey\n wrappedKeyring: $wrappedKeyring\n wrappedRecovery: $wrappedRecovery\n ) {\n orgMember {\n id\n }\n }\n}"): (typeof documents)["mutation RecoverKeyring($orgId: ID!, $authHash: String!, $identityKey: String!, $wrappedKeyring: String!, $wrappedRecovery: String!) {\n recoverAccountKeyring(\n orgId: $orgId\n authHash: $authHash\n identityKey: $identityKey\n wrappedKeyring: $wrappedKeyring\n wrappedRecovery: $wrappedRecovery\n ) {\n orgMember {\n id\n }\n }\n}"]; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ @@ -575,7 +567,7 @@ export function graphql(source: "mutation UpdateEnvOrder($appId: ID!, $environme /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "mutation CreateExtIdentity($organisationId: ID!, $provider: String!, $name: String!, $description: String, $trustedPrincipals: String!, $signatureTtlSeconds: Int, $stsEndpoint: String, $tenantId: String, $resource: String, $tokenNamePattern: String, $defaultTtlSeconds: Int!, $maxTtlSeconds: Int!) {\n createIdentity(\n organisationId: $organisationId\n provider: $provider\n name: $name\n description: $description\n trustedPrincipals: $trustedPrincipals\n signatureTtlSeconds: $signatureTtlSeconds\n stsEndpoint: $stsEndpoint\n tenantId: $tenantId\n resource: $resource\n tokenNamePattern: $tokenNamePattern\n defaultTtlSeconds: $defaultTtlSeconds\n maxTtlSeconds: $maxTtlSeconds\n ) {\n identity {\n id\n provider\n name\n description\n config {\n ... on AwsIamConfigType {\n trustedPrincipals\n signatureTtlSeconds\n stsEndpoint\n }\n ... on AzureEntraConfigType {\n tenantId\n resource\n allowedServicePrincipalIds\n }\n }\n tokenNamePattern\n defaultTtlSeconds\n maxTtlSeconds\n }\n }\n}"): (typeof documents)["mutation CreateExtIdentity($organisationId: ID!, $provider: String!, $name: String!, $description: String, $trustedPrincipals: String!, $signatureTtlSeconds: Int, $stsEndpoint: String, $tenantId: String, $resource: String, $tokenNamePattern: String, $defaultTtlSeconds: Int!, $maxTtlSeconds: Int!) {\n createIdentity(\n organisationId: $organisationId\n provider: $provider\n name: $name\n description: $description\n trustedPrincipals: $trustedPrincipals\n signatureTtlSeconds: $signatureTtlSeconds\n stsEndpoint: $stsEndpoint\n tenantId: $tenantId\n resource: $resource\n tokenNamePattern: $tokenNamePattern\n defaultTtlSeconds: $defaultTtlSeconds\n maxTtlSeconds: $maxTtlSeconds\n ) {\n identity {\n id\n provider\n name\n description\n config {\n ... on AwsIamConfigType {\n trustedPrincipals\n signatureTtlSeconds\n stsEndpoint\n }\n ... on AzureEntraConfigType {\n tenantId\n resource\n allowedServicePrincipalIds\n }\n }\n tokenNamePattern\n defaultTtlSeconds\n maxTtlSeconds\n }\n }\n}"]; +export function graphql(source: "mutation CreateExtIdentity($organisationId: ID!, $provider: String!, $name: String!, $description: String, $trustedPrincipals: String!, $signatureTtlSeconds: Int, $stsEndpoint: String, $tokenNamePattern: String, $defaultTtlSeconds: Int!, $maxTtlSeconds: Int!) {\n createIdentity(\n organisationId: $organisationId\n provider: $provider\n name: $name\n description: $description\n trustedPrincipals: $trustedPrincipals\n signatureTtlSeconds: $signatureTtlSeconds\n stsEndpoint: $stsEndpoint\n tokenNamePattern: $tokenNamePattern\n defaultTtlSeconds: $defaultTtlSeconds\n maxTtlSeconds: $maxTtlSeconds\n ) {\n identity {\n id\n provider\n name\n description\n config {\n ... on AwsIamConfigType {\n trustedPrincipals\n signatureTtlSeconds\n stsEndpoint\n }\n }\n tokenNamePattern\n defaultTtlSeconds\n maxTtlSeconds\n }\n }\n}"): (typeof documents)["mutation CreateExtIdentity($organisationId: ID!, $provider: String!, $name: String!, $description: String, $trustedPrincipals: String!, $signatureTtlSeconds: Int, $stsEndpoint: String, $tokenNamePattern: String, $defaultTtlSeconds: Int!, $maxTtlSeconds: Int!) {\n createIdentity(\n organisationId: $organisationId\n provider: $provider\n name: $name\n description: $description\n trustedPrincipals: $trustedPrincipals\n signatureTtlSeconds: $signatureTtlSeconds\n stsEndpoint: $stsEndpoint\n tokenNamePattern: $tokenNamePattern\n defaultTtlSeconds: $defaultTtlSeconds\n maxTtlSeconds: $maxTtlSeconds\n ) {\n identity {\n id\n provider\n name\n description\n config {\n ... on AwsIamConfigType {\n trustedPrincipals\n signatureTtlSeconds\n stsEndpoint\n }\n }\n tokenNamePattern\n defaultTtlSeconds\n maxTtlSeconds\n }\n }\n}"]; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ @@ -583,7 +575,7 @@ export function graphql(source: "mutation DeleteExtIdentity($id: ID!) {\n delet /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "mutation UpdateExtIdentity($id: ID!, $name: String, $description: String, $trustedPrincipals: String, $signatureTtlSeconds: Int, $stsEndpoint: String, $tenantId: String, $resource: String, $tokenNamePattern: String, $defaultTtlSeconds: Int, $maxTtlSeconds: Int) {\n updateIdentity(\n id: $id\n name: $name\n description: $description\n trustedPrincipals: $trustedPrincipals\n signatureTtlSeconds: $signatureTtlSeconds\n stsEndpoint: $stsEndpoint\n tenantId: $tenantId\n resource: $resource\n tokenNamePattern: $tokenNamePattern\n defaultTtlSeconds: $defaultTtlSeconds\n maxTtlSeconds: $maxTtlSeconds\n ) {\n identity {\n id\n name\n description\n config {\n ... on AwsIamConfigType {\n trustedPrincipals\n signatureTtlSeconds\n stsEndpoint\n }\n ... on AzureEntraConfigType {\n tenantId\n resource\n allowedServicePrincipalIds\n }\n }\n tokenNamePattern\n defaultTtlSeconds\n maxTtlSeconds\n }\n }\n}"): (typeof documents)["mutation UpdateExtIdentity($id: ID!, $name: String, $description: String, $trustedPrincipals: String, $signatureTtlSeconds: Int, $stsEndpoint: String, $tenantId: String, $resource: String, $tokenNamePattern: String, $defaultTtlSeconds: Int, $maxTtlSeconds: Int) {\n updateIdentity(\n id: $id\n name: $name\n description: $description\n trustedPrincipals: $trustedPrincipals\n signatureTtlSeconds: $signatureTtlSeconds\n stsEndpoint: $stsEndpoint\n tenantId: $tenantId\n resource: $resource\n tokenNamePattern: $tokenNamePattern\n defaultTtlSeconds: $defaultTtlSeconds\n maxTtlSeconds: $maxTtlSeconds\n ) {\n identity {\n id\n name\n description\n config {\n ... on AwsIamConfigType {\n trustedPrincipals\n signatureTtlSeconds\n stsEndpoint\n }\n ... on AzureEntraConfigType {\n tenantId\n resource\n allowedServicePrincipalIds\n }\n }\n tokenNamePattern\n defaultTtlSeconds\n maxTtlSeconds\n }\n }\n}"]; +export function graphql(source: "mutation UpdateExtIdentity($id: ID!, $name: String, $description: String, $trustedPrincipals: String, $signatureTtlSeconds: Int, $stsEndpoint: String, $tokenNamePattern: String, $defaultTtlSeconds: Int, $maxTtlSeconds: Int) {\n updateIdentity(\n id: $id\n name: $name\n description: $description\n trustedPrincipals: $trustedPrincipals\n signatureTtlSeconds: $signatureTtlSeconds\n stsEndpoint: $stsEndpoint\n tokenNamePattern: $tokenNamePattern\n defaultTtlSeconds: $defaultTtlSeconds\n maxTtlSeconds: $maxTtlSeconds\n ) {\n identity {\n id\n name\n description\n config {\n ... on AwsIamConfigType {\n trustedPrincipals\n signatureTtlSeconds\n stsEndpoint\n }\n }\n tokenNamePattern\n defaultTtlSeconds\n maxTtlSeconds\n }\n }\n}"): (typeof documents)["mutation UpdateExtIdentity($id: ID!, $name: String, $description: String, $trustedPrincipals: String, $signatureTtlSeconds: Int, $stsEndpoint: String, $tokenNamePattern: String, $defaultTtlSeconds: Int, $maxTtlSeconds: Int) {\n updateIdentity(\n id: $id\n name: $name\n description: $description\n trustedPrincipals: $trustedPrincipals\n signatureTtlSeconds: $signatureTtlSeconds\n stsEndpoint: $stsEndpoint\n tokenNamePattern: $tokenNamePattern\n defaultTtlSeconds: $defaultTtlSeconds\n maxTtlSeconds: $maxTtlSeconds\n ) {\n identity {\n id\n name\n description\n config {\n ... on AwsIamConfigType {\n trustedPrincipals\n signatureTtlSeconds\n stsEndpoint\n }\n }\n tokenNamePattern\n defaultTtlSeconds\n maxTtlSeconds\n }\n }\n}"]; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ @@ -611,7 +603,7 @@ export function graphql(source: "mutation UpdateMemberRole($memberId: ID!, $role /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "mutation UpdateWrappedSecrets($orgId: ID!, $identityKey: String!, $wrappedKeyring: String!, $wrappedRecovery: String!) {\n updateMemberWrappedSecrets(\n orgId: $orgId\n identityKey: $identityKey\n wrappedKeyring: $wrappedKeyring\n wrappedRecovery: $wrappedRecovery\n ) {\n orgMember {\n id\n }\n }\n}"): (typeof documents)["mutation UpdateWrappedSecrets($orgId: ID!, $identityKey: String!, $wrappedKeyring: String!, $wrappedRecovery: String!) {\n updateMemberWrappedSecrets(\n orgId: $orgId\n identityKey: $identityKey\n wrappedKeyring: $wrappedKeyring\n wrappedRecovery: $wrappedRecovery\n ) {\n orgMember {\n id\n }\n }\n}"]; +export function graphql(source: "mutation UpdateWrappedSecrets($orgId: ID!, $wrappedKeyring: String!, $wrappedRecovery: String!) {\n updateMemberWrappedSecrets(\n orgId: $orgId\n wrappedKeyring: $wrappedKeyring\n wrappedRecovery: $wrappedRecovery\n ) {\n orgMember {\n id\n }\n }\n}"): (typeof documents)["mutation UpdateWrappedSecrets($orgId: ID!, $wrappedKeyring: String!, $wrappedRecovery: String!) {\n updateMemberWrappedSecrets(\n orgId: $orgId\n wrappedKeyring: $wrappedKeyring\n wrappedRecovery: $wrappedRecovery\n ) {\n orgMember {\n id\n }\n }\n}"]; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ @@ -648,26 +640,6 @@ export function graphql(source: "mutation UpdateServiceAccountHandlerKeys($orgId * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ export function graphql(source: "mutation UpdateServiceAccountOp($serviceAccountId: ID!, $name: String!, $roleId: ID!, $identityIds: [ID!]) {\n updateServiceAccount(\n serviceAccountId: $serviceAccountId\n name: $name\n roleId: $roleId\n identityIds: $identityIds\n ) {\n serviceAccount {\n id\n name\n role {\n id\n name\n description\n permissions\n }\n identities {\n id\n name\n }\n }\n }\n}"): (typeof documents)["mutation UpdateServiceAccountOp($serviceAccountId: ID!, $name: String!, $roleId: ID!, $identityIds: [ID!]) {\n updateServiceAccount(\n serviceAccountId: $serviceAccountId\n name: $name\n roleId: $roleId\n identityIds: $identityIds\n ) {\n serviceAccount {\n id\n name\n role {\n id\n name\n description\n permissions\n }\n identities {\n id\n name\n }\n }\n }\n}"]; -/** - * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. - */ -export function graphql(source: "mutation CreateOrgSSOProvider($orgId: ID!, $providerType: String!, $name: String!, $config: JSONString!) {\n createOrganisationSsoProvider(\n orgId: $orgId\n providerType: $providerType\n name: $name\n config: $config\n ) {\n providerId\n }\n}"): (typeof documents)["mutation CreateOrgSSOProvider($orgId: ID!, $providerType: String!, $name: String!, $config: JSONString!) {\n createOrganisationSsoProvider(\n orgId: $orgId\n providerType: $providerType\n name: $name\n config: $config\n ) {\n providerId\n }\n}"]; -/** - * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. - */ -export function graphql(source: "mutation DeleteOrgSSOProvider($providerId: ID!) {\n deleteOrganisationSsoProvider(providerId: $providerId) {\n ok\n }\n}"): (typeof documents)["mutation DeleteOrgSSOProvider($providerId: ID!) {\n deleteOrganisationSsoProvider(providerId: $providerId) {\n ok\n }\n}"]; -/** - * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. - */ -export function graphql(source: "mutation TestOrgSSOProvider($providerId: ID!) {\n testOrganisationSsoProvider(providerId: $providerId) {\n success\n error\n }\n}"): (typeof documents)["mutation TestOrgSSOProvider($providerId: ID!) {\n testOrganisationSsoProvider(providerId: $providerId) {\n success\n error\n }\n}"]; -/** - * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. - */ -export function graphql(source: "mutation UpdateOrgSSOProvider($providerId: ID!, $name: String, $config: JSONString, $enabled: Boolean) {\n updateOrganisationSsoProvider(\n providerId: $providerId\n name: $name\n config: $config\n enabled: $enabled\n ) {\n ok\n }\n}"): (typeof documents)["mutation UpdateOrgSSOProvider($providerId: ID!, $name: String, $config: JSONString, $enabled: Boolean) {\n updateOrganisationSsoProvider(\n providerId: $providerId\n name: $name\n config: $config\n enabled: $enabled\n ) {\n ok\n }\n}"]; -/** - * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. - */ -export function graphql(source: "mutation UpdateOrgSecurity($orgId: ID!, $requireSso: Boolean!) {\n updateOrganisationSecurity(orgId: $orgId, requireSso: $requireSso) {\n ok\n sessionInvalidated\n }\n}"): (typeof documents)["mutation UpdateOrgSecurity($orgId: ID!, $requireSso: Boolean!) {\n updateOrganisationSecurity(orgId: $orgId, requireSso: $requireSso) {\n ok\n sessionInvalidated\n }\n}"]; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ @@ -748,6 +720,38 @@ export function graphql(source: "mutation CreateNewVaultSync($envId: ID!, $path: * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ export function graphql(source: "mutation CreateNewVercelSync($envId: ID!, $path: String!, $credentialId: ID!, $projectId: String!, $projectName: String!, $teamId: String!, $teamName: String!, $environment: String!, $secretType: String!) {\n createVercelSync(\n envId: $envId\n path: $path\n credentialId: $credentialId\n projectId: $projectId\n projectName: $projectName\n teamId: $teamId\n teamName: $teamName\n environment: $environment\n secretType: $secretType\n ) {\n sync {\n id\n environment {\n id\n name\n envType\n }\n serviceInfo {\n id\n name\n }\n isActive\n lastSync\n createdAt\n }\n }\n}"): (typeof documents)["mutation CreateNewVercelSync($envId: ID!, $path: String!, $credentialId: ID!, $projectId: String!, $projectName: String!, $teamId: String!, $teamName: String!, $environment: String!, $secretType: String!) {\n createVercelSync(\n envId: $envId\n path: $path\n credentialId: $credentialId\n projectId: $projectId\n projectName: $projectName\n teamId: $teamId\n teamName: $teamName\n environment: $environment\n secretType: $secretType\n ) {\n sync {\n id\n environment {\n id\n name\n envType\n }\n serviceInfo {\n id\n name\n }\n isActive\n lastSync\n createdAt\n }\n }\n}"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "mutation AddTeamAppsOp($teamId: ID!, $appEnvs: [AppEnvironmentInput!]!) {\n addTeamApps(teamId: $teamId, appEnvs: $appEnvs) {\n team {\n id\n }\n }\n}"): (typeof documents)["mutation AddTeamAppsOp($teamId: ID!, $appEnvs: [AppEnvironmentInput!]!) {\n addTeamApps(teamId: $teamId, appEnvs: $appEnvs) {\n team {\n id\n }\n }\n}"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "mutation AddTeamMembersOp($teamId: ID!, $memberIds: [ID!]!, $memberType: MemberType) {\n addTeamMembers(teamId: $teamId, memberIds: $memberIds, memberType: $memberType) {\n team {\n id\n }\n }\n}"): (typeof documents)["mutation AddTeamMembersOp($teamId: ID!, $memberIds: [ID!]!, $memberType: MemberType) {\n addTeamMembers(teamId: $teamId, memberIds: $memberIds, memberType: $memberType) {\n team {\n id\n }\n }\n}"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "mutation CreateTeamOp($organisationId: ID!, $name: String!, $description: String, $memberRoleId: ID, $serviceAccountRoleId: ID) {\n createTeam(\n organisationId: $organisationId\n name: $name\n description: $description\n memberRoleId: $memberRoleId\n serviceAccountRoleId: $serviceAccountRoleId\n ) {\n team {\n id\n name\n }\n }\n}"): (typeof documents)["mutation CreateTeamOp($organisationId: ID!, $name: String!, $description: String, $memberRoleId: ID, $serviceAccountRoleId: ID) {\n createTeam(\n organisationId: $organisationId\n name: $name\n description: $description\n memberRoleId: $memberRoleId\n serviceAccountRoleId: $serviceAccountRoleId\n ) {\n team {\n id\n name\n }\n }\n}"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "mutation DeleteTeamOp($teamId: ID!) {\n deleteTeam(teamId: $teamId) {\n ok\n }\n}"): (typeof documents)["mutation DeleteTeamOp($teamId: ID!) {\n deleteTeam(teamId: $teamId) {\n ok\n }\n}"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "mutation RemoveTeamAppOp($teamId: ID!, $appId: ID!) {\n removeTeamApp(teamId: $teamId, appId: $appId) {\n team {\n id\n }\n }\n}"): (typeof documents)["mutation RemoveTeamAppOp($teamId: ID!, $appId: ID!) {\n removeTeamApp(teamId: $teamId, appId: $appId) {\n team {\n id\n }\n }\n}"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "mutation RemoveTeamMemberOp($teamId: ID!, $memberId: ID!, $memberType: MemberType) {\n removeTeamMember(teamId: $teamId, memberId: $memberId, memberType: $memberType) {\n team {\n id\n }\n }\n}"): (typeof documents)["mutation RemoveTeamMemberOp($teamId: ID!, $memberId: ID!, $memberType: MemberType) {\n removeTeamMember(teamId: $teamId, memberId: $memberId, memberType: $memberType) {\n team {\n id\n }\n }\n}"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "mutation UpdateTeamOp($teamId: ID!, $name: String, $description: String, $memberRoleId: ID, $serviceAccountRoleId: ID) {\n updateTeam(\n teamId: $teamId\n name: $name\n description: $description\n memberRoleId: $memberRoleId\n serviceAccountRoleId: $serviceAccountRoleId\n ) {\n team {\n id\n name\n }\n }\n}"): (typeof documents)["mutation UpdateTeamOp($teamId: ID!, $name: String, $description: String, $memberRoleId: ID, $serviceAccountRoleId: ID) {\n updateTeam(\n teamId: $teamId\n name: $name\n description: $description\n memberRoleId: $memberRoleId\n serviceAccountRoleId: $serviceAccountRoleId\n ) {\n team {\n id\n name\n }\n }\n}"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "mutation UpdateTeamAppEnvironmentsOp($teamId: ID!, $appId: ID!, $envIds: [ID!]!) {\n updateTeamAppEnvironments(teamId: $teamId, appId: $appId, envIds: $envIds) {\n team {\n id\n }\n }\n}"): (typeof documents)["mutation UpdateTeamAppEnvironmentsOp($teamId: ID!, $appId: ID!, $envIds: [ID!]!) {\n updateTeamAppEnvironments(teamId: $teamId, appId: $appId, envIds: $envIds) {\n team {\n id\n }\n }\n}"]; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ @@ -776,10 +780,6 @@ export function graphql(source: "query GetAppMembers($appId: ID!) {\n appUsers( * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ export function graphql(source: "query GetAppServiceAccounts($appId: ID!) {\n appServiceAccounts(appId: $appId) {\n id\n identityKey\n name\n createdAt\n role {\n id\n name\n description\n permissions\n color\n }\n tokens {\n id\n name\n }\n }\n}"): (typeof documents)["query GetAppServiceAccounts($appId: ID!) {\n appServiceAccounts(appId: $appId) {\n id\n identityKey\n name\n createdAt\n role {\n id\n name\n description\n permissions\n color\n }\n tokens {\n id\n name\n }\n }\n}"]; -/** - * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. - */ -export function graphql(source: "query VerifyPassword($authHash: String!) {\n verifyPassword(authHash: $authHash)\n}"): (typeof documents)["query VerifyPassword($authHash: String!) {\n verifyPassword(authHash: $authHash)\n}"]; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ @@ -819,7 +819,7 @@ export function graphql(source: "query GetDashboard($organisationId: ID!) {\n a /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "query GetOrganisations {\n organisations {\n id\n name\n identityKey\n createdAt\n plan\n planDetail {\n name\n maxUsers\n maxApps\n maxEnvsPerApp\n seatsUsed {\n users\n serviceAccounts\n total\n }\n appCount\n }\n role {\n name\n description\n color\n permissions\n }\n memberId\n keyring\n recovery\n pricingVersion\n requireSso\n ssoProviders {\n name\n providerType\n enabled\n }\n }\n}"): (typeof documents)["query GetOrganisations {\n organisations {\n id\n name\n identityKey\n createdAt\n plan\n planDetail {\n name\n maxUsers\n maxApps\n maxEnvsPerApp\n seatsUsed {\n users\n serviceAccounts\n total\n }\n appCount\n }\n role {\n name\n description\n color\n permissions\n }\n memberId\n keyring\n recovery\n pricingVersion\n requireSso\n ssoProviders {\n name\n providerType\n enabled\n }\n }\n}"]; +export function graphql(source: "query GetOrganisations {\n organisations {\n id\n name\n identityKey\n createdAt\n plan\n planDetail {\n name\n maxUsers\n maxApps\n maxEnvsPerApp\n seatsUsed {\n users\n serviceAccounts\n total\n }\n appCount\n }\n role {\n name\n description\n color\n permissions\n }\n memberId\n keyring\n recovery\n pricingVersion\n }\n}"): (typeof documents)["query GetOrganisations {\n organisations {\n id\n name\n identityKey\n createdAt\n plan\n planDetail {\n name\n maxUsers\n maxApps\n maxEnvsPerApp\n seatsUsed {\n users\n serviceAccounts\n total\n }\n appCount\n }\n role {\n name\n description\n color\n permissions\n }\n memberId\n keyring\n recovery\n pricingVersion\n }\n}"]; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ @@ -827,11 +827,11 @@ export function graphql(source: "query GetAwsStsEndpoints {\n awsStsEndpoints\n /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "query GetIdentityProviders {\n identityProviders {\n id\n name\n description\n iconId\n }\n}"): (typeof documents)["query GetIdentityProviders {\n identityProviders {\n id\n name\n description\n iconId\n }\n}"]; +export function graphql(source: "query GetIdentityProviders {\n identityProviders {\n id\n name\n description\n iconId\n supported\n }\n}"): (typeof documents)["query GetIdentityProviders {\n identityProviders {\n id\n name\n description\n iconId\n supported\n }\n}"]; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "query GetOrganisationIdentities($organisationId: ID!) {\n identities(organisationId: $organisationId) {\n id\n provider\n name\n description\n config {\n ... on AwsIamConfigType {\n trustedPrincipals\n signatureTtlSeconds\n stsEndpoint\n }\n ... on AzureEntraConfigType {\n tenantId\n resource\n allowedServicePrincipalIds\n }\n }\n tokenNamePattern\n defaultTtlSeconds\n maxTtlSeconds\n createdAt\n }\n}"): (typeof documents)["query GetOrganisationIdentities($organisationId: ID!) {\n identities(organisationId: $organisationId) {\n id\n provider\n name\n description\n config {\n ... on AwsIamConfigType {\n trustedPrincipals\n signatureTtlSeconds\n stsEndpoint\n }\n ... on AzureEntraConfigType {\n tenantId\n resource\n allowedServicePrincipalIds\n }\n }\n tokenNamePattern\n defaultTtlSeconds\n maxTtlSeconds\n createdAt\n }\n}"]; +export function graphql(source: "query GetOrganisationIdentities($organisationId: ID!) {\n identities(organisationId: $organisationId) {\n id\n provider\n name\n description\n config {\n ... on AwsIamConfigType {\n trustedPrincipals\n signatureTtlSeconds\n stsEndpoint\n }\n }\n tokenNamePattern\n defaultTtlSeconds\n maxTtlSeconds\n createdAt\n }\n}"): (typeof documents)["query GetOrganisationIdentities($organisationId: ID!) {\n identities(organisationId: $organisationId) {\n id\n provider\n name\n description\n config {\n ... on AwsIamConfigType {\n trustedPrincipals\n signatureTtlSeconds\n stsEndpoint\n }\n }\n tokenNamePattern\n defaultTtlSeconds\n maxTtlSeconds\n createdAt\n }\n}"]; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ @@ -931,7 +931,7 @@ export function graphql(source: "query GetServiceTokens($appId: ID!) {\n servic /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ -export function graphql(source: "query GetServiceAccountDetail($orgId: ID!, $id: ID) {\n serviceAccounts(orgId: $orgId, serviceAccountId: $id) {\n id\n name\n identityKey\n serverSideKeyManagementEnabled\n role {\n id\n name\n description\n color\n permissions\n }\n createdAt\n handlers {\n id\n wrappedKeyring\n wrappedRecovery\n user {\n self\n }\n }\n appMemberships {\n id\n name\n environments {\n id\n name\n }\n sseEnabled\n }\n networkPolicies {\n id\n name\n allowedIps\n isGlobal\n }\n identities {\n id\n provider\n name\n description\n }\n }\n}"): (typeof documents)["query GetServiceAccountDetail($orgId: ID!, $id: ID) {\n serviceAccounts(orgId: $orgId, serviceAccountId: $id) {\n id\n name\n identityKey\n serverSideKeyManagementEnabled\n role {\n id\n name\n description\n color\n permissions\n }\n createdAt\n handlers {\n id\n wrappedKeyring\n wrappedRecovery\n user {\n self\n }\n }\n appMemberships {\n id\n name\n environments {\n id\n name\n }\n sseEnabled\n }\n networkPolicies {\n id\n name\n allowedIps\n isGlobal\n }\n identities {\n id\n provider\n name\n description\n }\n }\n}"]; +export function graphql(source: "query GetServiceAccountDetail($orgId: ID!, $id: ID) {\n serviceAccounts(orgId: $orgId, serviceAccountId: $id) {\n id\n name\n identityKey\n serverSideKeyManagementEnabled\n role {\n id\n name\n description\n color\n permissions\n }\n createdAt\n handlers {\n id\n wrappedKeyring\n wrappedRecovery\n user {\n self\n }\n }\n appMemberships {\n id\n name\n environments {\n id\n name\n }\n sseEnabled\n }\n networkPolicies {\n id\n name\n allowedIps\n isGlobal\n }\n identities {\n id\n name\n description\n }\n }\n}"): (typeof documents)["query GetServiceAccountDetail($orgId: ID!, $id: ID) {\n serviceAccounts(orgId: $orgId, serviceAccountId: $id) {\n id\n name\n identityKey\n serverSideKeyManagementEnabled\n role {\n id\n name\n description\n color\n permissions\n }\n createdAt\n handlers {\n id\n wrappedKeyring\n wrappedRecovery\n user {\n self\n }\n }\n appMemberships {\n id\n name\n environments {\n id\n name\n }\n sseEnabled\n }\n networkPolicies {\n id\n name\n allowedIps\n isGlobal\n }\n identities {\n id\n name\n description\n }\n }\n}"]; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ @@ -944,10 +944,6 @@ export function graphql(source: "query GetServiceAccountTokens($orgId: ID!, $id: * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ export function graphql(source: "query GetServiceAccounts($orgId: ID!, $id: ID) {\n serviceAccounts(orgId: $orgId, serviceAccountId: $id) {\n id\n name\n identityKey\n role {\n id\n name\n description\n color\n }\n handlers {\n id\n wrappedKeyring\n wrappedRecovery\n user {\n self\n }\n }\n createdAt\n }\n}"): (typeof documents)["query GetServiceAccounts($orgId: ID!, $id: ID) {\n serviceAccounts(orgId: $orgId, serviceAccountId: $id) {\n id\n name\n identityKey\n role {\n id\n name\n description\n color\n }\n handlers {\n id\n wrappedKeyring\n wrappedRecovery\n user {\n self\n }\n }\n createdAt\n }\n}"]; -/** - * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. - */ -export function graphql(source: "query GetOrgSSOProviders {\n organisations {\n id\n name\n requireSso\n ssoProviders {\n id\n providerType\n name\n publicConfig\n enabled\n createdAt\n createdBy {\n fullName\n avatarUrl\n self\n }\n updatedAt\n updatedBy {\n fullName\n avatarUrl\n self\n }\n }\n }\n serverPublicKey\n}"): (typeof documents)["query GetOrgSSOProviders {\n organisations {\n id\n name\n requireSso\n ssoProviders {\n id\n providerType\n name\n publicConfig\n enabled\n createdAt\n createdBy {\n fullName\n avatarUrl\n self\n }\n updatedAt\n updatedBy {\n fullName\n avatarUrl\n self\n }\n }\n }\n serverPublicKey\n}"]; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ @@ -1032,6 +1028,10 @@ export function graphql(source: "query TestVaultAuth($credentialId: ID!) {\n te * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ export function graphql(source: "query GetVercelProjects($credentialId: ID!) {\n vercelProjects(credentialId: $credentialId) {\n id\n teamName\n projects {\n id\n name\n environments {\n id\n name\n slug\n type\n }\n }\n }\n}"): (typeof documents)["query GetVercelProjects($credentialId: ID!) {\n vercelProjects(credentialId: $credentialId) {\n id\n teamName\n projects {\n id\n name\n environments {\n id\n name\n slug\n type\n }\n }\n }\n}"]; +/** + * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. + */ +export function graphql(source: "query GetTeams($organisationId: ID!, $teamId: ID) {\n teams(organisationId: $organisationId, teamId: $teamId) {\n id\n name\n description\n memberRole {\n id\n name\n description\n color\n permissions\n }\n serviceAccountRole {\n id\n name\n description\n color\n permissions\n }\n isScimManaged\n createdBy {\n id\n fullName\n email\n avatarUrl\n }\n createdAt\n updatedAt\n memberCount\n members {\n id\n orgMember {\n id\n identityKey\n role {\n id\n name\n description\n color\n permissions\n }\n }\n serviceAccount {\n id\n name\n role {\n id\n name\n description\n color\n permissions\n }\n }\n email\n fullName\n avatarUrl\n createdAt\n }\n apps {\n id\n name\n sseEnabled\n }\n appEnvironments {\n id\n app {\n id\n name\n }\n environment {\n id\n name\n envType\n }\n createdAt\n }\n }\n}"): (typeof documents)["query GetTeams($organisationId: ID!, $teamId: ID) {\n teams(organisationId: $organisationId, teamId: $teamId) {\n id\n name\n description\n memberRole {\n id\n name\n description\n color\n permissions\n }\n serviceAccountRole {\n id\n name\n description\n color\n permissions\n }\n isScimManaged\n createdBy {\n id\n fullName\n email\n avatarUrl\n }\n createdAt\n updatedAt\n memberCount\n members {\n id\n orgMember {\n id\n identityKey\n role {\n id\n name\n description\n color\n permissions\n }\n }\n serviceAccount {\n id\n name\n role {\n id\n name\n description\n color\n permissions\n }\n }\n email\n fullName\n avatarUrl\n createdAt\n }\n apps {\n id\n name\n sseEnabled\n }\n appEnvironments {\n id\n app {\n id\n name\n }\n environment {\n id\n name\n envType\n }\n createdAt\n }\n }\n}"]; /** * The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. */ diff --git a/frontend/apollo/graphql.ts b/frontend/apollo/graphql.ts index 9d6f58b1c..d94b25fa8 100644 --- a/frontend/apollo/graphql.ts +++ b/frontend/apollo/graphql.ts @@ -115,6 +115,16 @@ export type AddAppMemberMutation = { app?: Maybe; }; +export type AddTeamAppsMutation = { + __typename?: 'AddTeamAppsMutation'; + team?: Maybe; +}; + +export type AddTeamMembersMutation = { + __typename?: 'AddTeamMembersMutation'; + team?: Maybe; +}; + /** An enumeration. */ export enum ApiActivatedPhaseLicensePlanChoices { /** Enterprise */ @@ -209,14 +219,6 @@ export enum ApiOrganisationPlanChoices { Pr = 'PR' } -/** An enumeration. */ -export enum ApiOrganisationSsoProviderProviderTypeChoices { - /** Microsoft Entra ID */ - EntraId = 'ENTRA_ID', - /** Okta */ - Okta = 'OKTA' -} - /** An enumeration. */ export enum ApiSecretEventEventTypeChoices { /** Create */ @@ -249,6 +251,11 @@ export enum ApiSecretTypeChoices { Secret = 'SECRET' } +export type AppEnvironmentInput = { + appId: Scalars['ID']['input']; + envIds: Array; +}; + export type AppMemberInputType = { envKeys: Array>; memberId: Scalars['ID']['input']; @@ -295,13 +302,6 @@ export type AwsIamConfigType = { trustedPrincipals?: Maybe>>; }; -export type AzureEntraConfigType = { - __typename?: 'AzureEntraConfigType'; - allowedServicePrincipalIds?: Maybe>>; - resource?: Maybe; - tenantId?: Maybe; -}; - export type AzureKeyVaultSecretType = { __typename?: 'AzureKeyVaultSecretType'; contentType?: Maybe; @@ -339,32 +339,6 @@ export type BulkInviteOrganisationMembersMutation = { invites?: Maybe>>; }; -/** - * Rotate the user's account password and rewrap the active org's - * keyring with the new deviceKey. Used by the in-session change-password - * dialog where the user supplies their current password, a new password, - * and the org's recovery mnemonic. - * - * Three server-side proofs are required: - * 1. current_auth_hash matches user.password — proves the caller - * knows the current login password. - * 2. identity_key matches the org's stored identity_key — proves the - * caller derived the keyring from the right mnemonic. - * 3. user is a member of the org. - * - * On success: user.password is set to new_auth_hash, the org's - * wrapped_keyring + wrapped_recovery are replaced, and the session is - * refreshed so the post-rotation HASH_SESSION_KEY stays valid. - * - * Only the active org's keyring is rewrapped. Other orgs the user - * belongs to remain encrypted with the old deviceKey; they'll fall - * through to per-org recovery on next access. - */ -export type ChangeAccountPasswordMutation = { - __typename?: 'ChangeAccountPasswordMutation'; - orgMember?: Maybe; -}; - export type ChartDataPointType = { __typename?: 'ChartDataPointType'; data?: Maybe; @@ -480,11 +454,6 @@ export type CreateOrganisationMutation = { organisation?: Maybe; }; -export type CreateOrganisationSsoProviderMutation = { - __typename?: 'CreateOrganisationSSOProviderMutation'; - providerId?: Maybe; -}; - export type CreatePersonalSecretMutation = { __typename?: 'CreatePersonalSecretMutation'; override?: Maybe; @@ -545,6 +514,11 @@ export type CreateSubscriptionCheckoutSession = { clientSecret?: Maybe; }; +export type CreateTeamMutation = { + __typename?: 'CreateTeamMutation'; + team?: Maybe; +}; + export type CreateUserTokenMutation = { __typename?: 'CreateUserTokenMutation'; ok?: Maybe; @@ -601,11 +575,6 @@ export type DeleteOrganisationMemberMutation = { ok?: Maybe; }; -export type DeleteOrganisationSsoProviderMutation = { - __typename?: 'DeleteOrganisationSSOProviderMutation'; - ok?: Maybe; -}; - export type DeletePaymentMethodMutation = { __typename?: 'DeletePaymentMethodMutation'; ok?: Maybe; @@ -651,6 +620,11 @@ export type DeleteSync = { ok?: Maybe; }; +export type DeleteTeamMutation = { + __typename?: 'DeleteTeamMutation'; + ok?: Maybe; +}; + export type DeleteUserTokenMutation = { __typename?: 'DeleteUserTokenMutation'; ok?: Maybe; @@ -891,7 +865,7 @@ export type GitLabProjectType = { webUrl?: Maybe; }; -export type IdentityConfigUnion = AwsIamConfigType | AzureEntraConfigType; +export type IdentityConfigUnion = AwsIamConfigType; export type IdentityProviderType = { __typename?: 'IdentityProviderType'; @@ -899,6 +873,7 @@ export type IdentityProviderType = { iconId: Scalars['String']['output']; id: Scalars['String']['output']; name: Scalars['String']['output']; + supported: Scalars['Boolean']['output']; }; export type IdentityType = { @@ -1002,31 +977,11 @@ export type MigratePricingMutation = { export type Mutation = { __typename?: 'Mutation'; addAppMember?: Maybe; + addTeamApps?: Maybe; + addTeamMembers?: Maybe; bulkAddAppMembers?: Maybe; bulkInviteOrganisationMembers?: Maybe; cancelSubscription?: Maybe; - /** - * Rotate the user's account password and rewrap the active org's - * keyring with the new deviceKey. Used by the in-session change-password - * dialog where the user supplies their current password, a new password, - * and the org's recovery mnemonic. - * - * Three server-side proofs are required: - * 1. current_auth_hash matches user.password — proves the caller - * knows the current login password. - * 2. identity_key matches the org's stored identity_key — proves the - * caller derived the keyring from the right mnemonic. - * 3. user is a member of the org. - * - * On success: user.password is set to new_auth_hash, the org's - * wrapped_keyring + wrapped_recovery are replaced, and the session is - * refreshed so the post-rotation HASH_SESSION_KEY stays valid. - * - * Only the active org's keyring is rewrapped. Other orgs the user - * belongs to remain encrypted with the old deviceKey; they'll fall - * through to per-org recovery on next access. - */ - changeAccountPassword?: Maybe; createApp?: Maybe; createAwsDynamicSecret?: Maybe; createAwsSecretSync?: Maybe; @@ -1047,7 +1002,6 @@ export type Mutation = { createNomadSync?: Maybe; createOrganisation?: Maybe; createOrganisationMember?: Maybe; - createOrganisationSsoProvider?: Maybe; createOverride?: Maybe; createProviderCredentials?: Maybe; createRailwaySync?: Maybe; @@ -1061,6 +1015,7 @@ export type Mutation = { createServiceToken?: Maybe; createSetupIntent?: Maybe; createSubscriptionCheckoutSession?: Maybe; + createTeam?: Maybe; createUserToken?: Maybe; createVaultSync?: Maybe; createVercelSync?: Maybe; @@ -1073,7 +1028,6 @@ export type Mutation = { deleteInvitation?: Maybe; deleteNetworkAccessPolicy?: Maybe; deleteOrganisationMember?: Maybe; - deleteOrganisationSsoProvider?: Maybe; deletePaymentMethod?: Maybe; deleteProviderCredentials?: Maybe; deleteSecret?: Maybe; @@ -1082,6 +1036,7 @@ export type Mutation = { deleteServiceAccount?: Maybe; deleteServiceAccountToken?: Maybe; deleteServiceToken?: Maybe; + deleteTeam?: Maybe; deleteUserToken?: Maybe; editSecret?: Maybe; editSecrets?: Maybe; @@ -1091,33 +1046,16 @@ export type Mutation = { migratePricing?: Maybe; modifySubscription?: Maybe; readSecret?: Maybe; - /** - * Rewrap THIS org's keyring with a deviceKey derived from the user's - * account password. Used by the recovery flow when the local keyring - * has been lost (cleared cache, new device) but the user still - * remembers their password. - * - * Two server-side proofs are required: - * 1. identity_key matches the org's stored identity_key — proves the - * caller derived the keyring from the right mnemonic. - * 2. auth_hash matches user.password — proves the password the user - * is wrapping the keyring with is also their account login auth. - * - * The mutation does NOT change user.password. The auth_hash check is a - * guardrail to keep auth and wrap passwords unified; if it fails, the - * user is trying to wrap the keyring with a password that doesn't - * authenticate them, which we never persist. - */ - recoverAccountKeyring?: Maybe; removeAppMember?: Maybe; removeOverride?: Maybe; + removeTeamApp?: Maybe; + removeTeamMember?: Maybe; renameEnvironment?: Maybe; renewDynamicSecretLease?: Maybe; resumeSubscription?: Maybe; revokeDynamicSecretLease?: Maybe; rotateAppKeys?: Maybe; setDefaultPaymentMethod?: Maybe; - testOrganisationSsoProvider?: Maybe; toggleSyncActive?: Maybe; /** * Transfer organisation ownership from the current owner to another member. @@ -1132,27 +1070,15 @@ export type Mutation = { updateEnvironmentOrder?: Maybe; updateIdentity?: Maybe; updateMemberEnvironmentScope?: Maybe; - /** - * Re-wrap THIS org's keyring after the caller proves they hold the - * recovery mnemonic. Used by SSO recovery (where there's no login - * password to verify against, so identity is proven via the mnemonic - * alone). - * - * Requires identity_key matching the org's stored identity_key — proves - * the caller derived the keyring from the right mnemonic. Without this - * proof, an authenticated user (or session-cookie holder) could - * overwrite their own wrapped_keyring with arbitrary garbage and lock - * themselves out of the org permanently. - */ updateMemberWrappedSecrets?: Maybe; updateNetworkAccessPolicy?: Maybe; updateOrganisationMemberRole?: Maybe; - updateOrganisationSecurity?: Maybe; - updateOrganisationSsoProvider?: Maybe; updateProviderCredentials?: Maybe; updateServiceAccount?: Maybe; updateServiceAccountHandlers?: Maybe; updateSyncAuthentication?: Maybe; + updateTeam?: Maybe; + updateTeamAppEnvironments?: Maybe; }; @@ -1164,6 +1090,19 @@ export type MutationAddAppMemberArgs = { }; +export type MutationAddTeamAppsArgs = { + appEnvs: Array; + teamId: Scalars['ID']['input']; +}; + + +export type MutationAddTeamMembersArgs = { + memberIds: Array; + memberType?: InputMaybe; + teamId: Scalars['ID']['input']; +}; + + export type MutationBulkAddAppMembersArgs = { appId: Scalars['ID']['input']; members: Array>; @@ -1182,16 +1121,6 @@ export type MutationCancelSubscriptionArgs = { }; -export type MutationChangeAccountPasswordArgs = { - currentAuthHash: Scalars['String']['input']; - identityKey: Scalars['String']['input']; - newAuthHash: Scalars['String']['input']; - orgId: Scalars['ID']['input']; - wrappedKeyring: Scalars['String']['input']; - wrappedRecovery: Scalars['String']['input']; -}; - - export type MutationCreateAppArgs = { appSeed: Scalars['String']['input']; appToken: Scalars['String']['input']; @@ -1339,10 +1268,8 @@ export type MutationCreateIdentityArgs = { name: Scalars['String']['input']; organisationId: Scalars['ID']['input']; provider: Scalars['String']['input']; - resource?: InputMaybe; signatureTtlSeconds?: InputMaybe; stsEndpoint?: InputMaybe; - tenantId?: InputMaybe; tokenNamePattern?: InputMaybe; trustedPrincipals: Scalars['String']['input']; }; @@ -1388,14 +1315,6 @@ export type MutationCreateOrganisationMemberArgs = { }; -export type MutationCreateOrganisationSsoProviderArgs = { - config: Scalars['JSONString']['input']; - name: Scalars['String']['input']; - orgId: Scalars['ID']['input']; - providerType: Scalars['String']['input']; -}; - - export type MutationCreateOverrideArgs = { overrideData?: InputMaybe; }; @@ -1498,6 +1417,15 @@ export type MutationCreateSubscriptionCheckoutSessionArgs = { }; +export type MutationCreateTeamArgs = { + description?: InputMaybe; + memberRoleId?: InputMaybe; + name: Scalars['String']['input']; + organisationId: Scalars['ID']['input']; + serviceAccountRoleId?: InputMaybe; +}; + + export type MutationCreateUserTokenArgs = { expiry?: InputMaybe; identityKey: Scalars['String']['input']; @@ -1575,11 +1503,6 @@ export type MutationDeleteOrganisationMemberArgs = { }; -export type MutationDeleteOrganisationSsoProviderArgs = { - providerId: Scalars['ID']['input']; -}; - - export type MutationDeletePaymentMethodArgs = { organisationId?: InputMaybe; paymentMethodId?: InputMaybe; @@ -1621,6 +1544,11 @@ export type MutationDeleteServiceTokenArgs = { }; +export type MutationDeleteTeamArgs = { + teamId: Scalars['ID']['input']; +}; + + export type MutationDeleteUserTokenArgs = { tokenId: Scalars['ID']['input']; }; @@ -1673,15 +1601,6 @@ export type MutationReadSecretArgs = { }; -export type MutationRecoverAccountKeyringArgs = { - authHash: Scalars['String']['input']; - identityKey: Scalars['String']['input']; - orgId: Scalars['ID']['input']; - wrappedKeyring: Scalars['String']['input']; - wrappedRecovery: Scalars['String']['input']; -}; - - export type MutationRemoveAppMemberArgs = { appId?: InputMaybe; memberId?: InputMaybe; @@ -1694,6 +1613,19 @@ export type MutationRemoveOverrideArgs = { }; +export type MutationRemoveTeamAppArgs = { + appId: Scalars['ID']['input']; + teamId: Scalars['ID']['input']; +}; + + +export type MutationRemoveTeamMemberArgs = { + memberId: Scalars['ID']['input']; + memberType?: InputMaybe; + teamId: Scalars['ID']['input']; +}; + + export type MutationRenameEnvironmentArgs = { environmentId: Scalars['ID']['input']; name: Scalars['String']['input']; @@ -1730,11 +1662,6 @@ export type MutationSetDefaultPaymentMethodArgs = { }; -export type MutationTestOrganisationSsoProviderArgs = { - providerId: Scalars['ID']['input']; -}; - - export type MutationToggleSyncActiveArgs = { syncId?: InputMaybe; }; @@ -1800,10 +1727,8 @@ export type MutationUpdateIdentityArgs = { id: Scalars['ID']['input']; maxTtlSeconds?: InputMaybe; name?: InputMaybe; - resource?: InputMaybe; signatureTtlSeconds?: InputMaybe; stsEndpoint?: InputMaybe; - tenantId?: InputMaybe; tokenNamePattern?: InputMaybe; trustedPrincipals?: InputMaybe; }; @@ -1818,7 +1743,7 @@ export type MutationUpdateMemberEnvironmentScopeArgs = { export type MutationUpdateMemberWrappedSecretsArgs = { - identityKey: Scalars['String']['input']; + identityKey?: InputMaybe; orgId: Scalars['ID']['input']; wrappedKeyring: Scalars['String']['input']; wrappedRecovery: Scalars['String']['input']; @@ -1836,20 +1761,6 @@ export type MutationUpdateOrganisationMemberRoleArgs = { }; -export type MutationUpdateOrganisationSecurityArgs = { - orgId: Scalars['ID']['input']; - requireSso: Scalars['Boolean']['input']; -}; - - -export type MutationUpdateOrganisationSsoProviderArgs = { - config?: InputMaybe; - enabled?: InputMaybe; - name?: InputMaybe; - providerId: Scalars['ID']['input']; -}; - - export type MutationUpdateProviderCredentialsArgs = { credentialId?: InputMaybe; credentials?: InputMaybe; @@ -1876,6 +1787,22 @@ export type MutationUpdateSyncAuthenticationArgs = { syncId?: InputMaybe; }; + +export type MutationUpdateTeamArgs = { + description?: InputMaybe; + memberRoleId?: InputMaybe; + name?: InputMaybe; + serviceAccountRoleId?: InputMaybe; + teamId: Scalars['ID']['input']; +}; + + +export type MutationUpdateTeamAppEnvironmentsArgs = { + appId: Scalars['ID']['input']; + envIds: Array; + teamId: Scalars['ID']['input']; +}; + export type NamespaceType = { __typename?: 'NamespaceType'; fullPath?: Maybe; @@ -1951,19 +1878,6 @@ export type OrganisationPlanType = { seatsUsed?: Maybe; }; -export type OrganisationSsoProviderType = { - __typename?: 'OrganisationSSOProviderType'; - createdAt: Scalars['DateTime']['output']; - createdBy?: Maybe; - enabled: Scalars['Boolean']['output']; - id: Scalars['String']['output']; - name: Scalars['String']['output']; - providerType: ApiOrganisationSsoProviderProviderTypeChoices; - publicConfig?: Maybe; - updatedAt: Scalars['DateTime']['output']; - updatedBy?: Maybe; -}; - export type OrganisationType = { __typename?: 'OrganisationType'; createdAt?: Maybe; @@ -1976,9 +1890,7 @@ export type OrganisationType = { planDetail?: Maybe; pricingVersion: Scalars['Int']['output']; recovery?: Maybe; - requireSso: Scalars['Boolean']['output']; role?: Maybe; - ssoProviders?: Maybe>>; }; export type PaymentMethodDetails = { @@ -2113,6 +2025,7 @@ export type Query = { stripeCustomerPortalUrl?: Maybe; stripeSubscriptionDetails?: Maybe; syncs?: Maybe>>; + teams?: Maybe>>; testNomadCreds?: Maybe; testVaultCreds?: Maybe; testVercelCreds?: Maybe; @@ -2121,7 +2034,6 @@ export type Query = { validateAwsAssumeRoleCredentials?: Maybe; validateInvite?: Maybe; vercelProjects?: Maybe>>; - verifyPassword?: Maybe; }; @@ -2388,6 +2300,12 @@ export type QuerySyncsArgs = { }; +export type QueryTeamsArgs = { + organisationId?: InputMaybe; + teamId?: InputMaybe; +}; + + export type QueryTestNomadCredsArgs = { credentialId?: InputMaybe; }; @@ -2424,11 +2342,6 @@ export type QueryVercelProjectsArgs = { credentialId?: InputMaybe; }; - -export type QueryVerifyPasswordArgs = { - authHash: Scalars['String']['input']; -}; - export type RailwayEnvironmentType = { __typename?: 'RailwayEnvironmentType'; id: Scalars['ID']['output']; @@ -2460,33 +2373,21 @@ export type ReadSecretMutation = { ok?: Maybe; }; -/** - * Rewrap THIS org's keyring with a deviceKey derived from the user's - * account password. Used by the recovery flow when the local keyring - * has been lost (cleared cache, new device) but the user still - * remembers their password. - * - * Two server-side proofs are required: - * 1. identity_key matches the org's stored identity_key — proves the - * caller derived the keyring from the right mnemonic. - * 2. auth_hash matches user.password — proves the password the user - * is wrapping the keyring with is also their account login auth. - * - * The mutation does NOT change user.password. The auth_hash check is a - * guardrail to keep auth and wrap passwords unified; if it fails, the - * user is trying to wrap the keyring with a password that doesn't - * authenticate them, which we never persist. - */ -export type RecoverAccountKeyringMutation = { - __typename?: 'RecoverAccountKeyringMutation'; - orgMember?: Maybe; -}; - export type RemoveAppMemberMutation = { __typename?: 'RemoveAppMemberMutation'; app?: Maybe; }; +export type RemoveTeamAppMutation = { + __typename?: 'RemoveTeamAppMutation'; + team?: Maybe; +}; + +export type RemoveTeamMemberMutation = { + __typename?: 'RemoveTeamMemberMutation'; + team?: Maybe; +}; + export type RenameEnvironmentMutation = { __typename?: 'RenameEnvironmentMutation'; environment?: Maybe; @@ -2750,10 +2651,40 @@ export type StripeSubscriptionDetails = { subscriptionId?: Maybe; }; -export type TestOrganisationSsoProviderMutation = { - __typename?: 'TestOrganisationSSOProviderMutation'; - error?: Maybe; - success?: Maybe; +export type TeamAppEnvironmentType = { + __typename?: 'TeamAppEnvironmentType'; + app: AppMembershipType; + createdAt?: Maybe; + environment: EnvironmentType; + id: Scalars['String']['output']; +}; + +export type TeamMembershipType = { + __typename?: 'TeamMembershipType'; + avatarUrl?: Maybe; + createdAt?: Maybe; + email?: Maybe; + fullName?: Maybe; + id: Scalars['String']['output']; + orgMember?: Maybe; + serviceAccount?: Maybe; +}; + +export type TeamType = { + __typename?: 'TeamType'; + appEnvironments?: Maybe>; + apps?: Maybe>; + createdAt?: Maybe; + createdBy?: Maybe; + description?: Maybe; + id: Scalars['String']['output']; + isScimManaged: Scalars['Boolean']['output']; + memberCount?: Maybe; + memberRole?: Maybe; + members?: Maybe>; + name: Scalars['String']['output']; + serviceAccountRole?: Maybe; + updatedAt: Scalars['DateTime']['output']; }; export enum TimeRange { @@ -2829,17 +2760,6 @@ export type UpdateOrganisationMemberRole = { orgMember?: Maybe; }; -export type UpdateOrganisationSsoProviderMutation = { - __typename?: 'UpdateOrganisationSSOProviderMutation'; - ok?: Maybe; -}; - -export type UpdateOrganisationSecurityMutation = { - __typename?: 'UpdateOrganisationSecurityMutation'; - ok?: Maybe; - sessionInvalidated?: Maybe; -}; - export type UpdatePolicyInput = { allowedIps?: InputMaybe; id: Scalars['ID']['input']; @@ -2875,18 +2795,16 @@ export type UpdateSyncAuthentication = { sync?: Maybe; }; -/** - * Re-wrap THIS org's keyring after the caller proves they hold the - * recovery mnemonic. Used by SSO recovery (where there's no login - * password to verify against, so identity is proven via the mnemonic - * alone). - * - * Requires identity_key matching the org's stored identity_key — proves - * the caller derived the keyring from the right mnemonic. Without this - * proof, an authenticated user (or session-cookie holder) could - * overwrite their own wrapped_keyring with arbitrary garbage and lock - * themselves out of the org permanently. - */ +export type UpdateTeamAppEnvironmentsMutation = { + __typename?: 'UpdateTeamAppEnvironmentsMutation'; + team?: Maybe; +}; + +export type UpdateTeamMutation = { + __typename?: 'UpdateTeamMutation'; + team?: Maybe; +}; + export type UpdateUserWrappedSecretsMutation = { __typename?: 'UpdateUserWrappedSecretsMutation'; orgMember?: Maybe; @@ -3035,29 +2953,6 @@ export type UpdateEnvScopeMutationVariables = Exact<{ export type UpdateEnvScopeMutation = { __typename?: 'Mutation', updateMemberEnvironmentScope?: { __typename?: 'UpdateMemberEnvScopeMutation', app?: { __typename?: 'AppType', id: string } | null } | null }; -export type ChangePasswordMutationVariables = Exact<{ - orgId: Scalars['ID']['input']; - currentAuthHash: Scalars['String']['input']; - newAuthHash: Scalars['String']['input']; - identityKey: Scalars['String']['input']; - wrappedKeyring: Scalars['String']['input']; - wrappedRecovery: Scalars['String']['input']; -}>; - - -export type ChangePasswordMutation = { __typename?: 'Mutation', changeAccountPassword?: { __typename?: 'ChangeAccountPasswordMutation', orgMember?: { __typename?: 'OrganisationMemberType', id: string } | null } | null }; - -export type RecoverKeyringMutationVariables = Exact<{ - orgId: Scalars['ID']['input']; - authHash: Scalars['String']['input']; - identityKey: Scalars['String']['input']; - wrappedKeyring: Scalars['String']['input']; - wrappedRecovery: Scalars['String']['input']; -}>; - - -export type RecoverKeyringMutation = { __typename?: 'Mutation', recoverAccountKeyring?: { __typename?: 'RecoverAccountKeyringMutation', orgMember?: { __typename?: 'OrganisationMemberType', id: string } | null } | null }; - export type CancelStripeSubscriptionMutationVariables = Exact<{ organisationId: Scalars['ID']['input']; subscriptionId: Scalars['String']['input']; @@ -3397,18 +3292,13 @@ export type CreateExtIdentityMutationVariables = Exact<{ trustedPrincipals: Scalars['String']['input']; signatureTtlSeconds?: InputMaybe; stsEndpoint?: InputMaybe; - tenantId?: InputMaybe; - resource?: InputMaybe; tokenNamePattern?: InputMaybe; defaultTtlSeconds: Scalars['Int']['input']; maxTtlSeconds: Scalars['Int']['input']; }>; -export type CreateExtIdentityMutation = { __typename?: 'Mutation', createIdentity?: { __typename?: 'CreateIdentityMutation', identity?: { __typename?: 'IdentityType', id: string, provider: string, name: string, description?: string | null, tokenNamePattern?: string | null, defaultTtlSeconds: number, maxTtlSeconds: number, config?: - | { __typename?: 'AwsIamConfigType', trustedPrincipals?: Array | null, signatureTtlSeconds?: number | null, stsEndpoint?: string | null } - | { __typename?: 'AzureEntraConfigType', tenantId?: string | null, resource?: string | null, allowedServicePrincipalIds?: Array | null } - | null } | null } | null }; +export type CreateExtIdentityMutation = { __typename?: 'Mutation', createIdentity?: { __typename?: 'CreateIdentityMutation', identity?: { __typename?: 'IdentityType', id: string, provider: string, name: string, description?: string | null, tokenNamePattern?: string | null, defaultTtlSeconds: number, maxTtlSeconds: number, config?: { __typename?: 'AwsIamConfigType', trustedPrincipals?: Array | null, signatureTtlSeconds?: number | null, stsEndpoint?: string | null } | null } | null } | null }; export type DeleteExtIdentityMutationVariables = Exact<{ id: Scalars['ID']['input']; @@ -3424,18 +3314,13 @@ export type UpdateExtIdentityMutationVariables = Exact<{ trustedPrincipals?: InputMaybe; signatureTtlSeconds?: InputMaybe; stsEndpoint?: InputMaybe; - tenantId?: InputMaybe; - resource?: InputMaybe; tokenNamePattern?: InputMaybe; defaultTtlSeconds?: InputMaybe; maxTtlSeconds?: InputMaybe; }>; -export type UpdateExtIdentityMutation = { __typename?: 'Mutation', updateIdentity?: { __typename?: 'UpdateIdentityMutation', identity?: { __typename?: 'IdentityType', id: string, name: string, description?: string | null, tokenNamePattern?: string | null, defaultTtlSeconds: number, maxTtlSeconds: number, config?: - | { __typename?: 'AwsIamConfigType', trustedPrincipals?: Array | null, signatureTtlSeconds?: number | null, stsEndpoint?: string | null } - | { __typename?: 'AzureEntraConfigType', tenantId?: string | null, resource?: string | null, allowedServicePrincipalIds?: Array | null } - | null } | null } | null }; +export type UpdateExtIdentityMutation = { __typename?: 'Mutation', updateIdentity?: { __typename?: 'UpdateIdentityMutation', identity?: { __typename?: 'IdentityType', id: string, name: string, description?: string | null, tokenNamePattern?: string | null, defaultTtlSeconds: number, maxTtlSeconds: number, config?: { __typename?: 'AwsIamConfigType', trustedPrincipals?: Array | null, signatureTtlSeconds?: number | null, stsEndpoint?: string | null } | null } | null } | null }; export type AcceptOrganisationInviteMutationVariables = Exact<{ orgId: Scalars['ID']['input']; @@ -3489,7 +3374,6 @@ export type UpdateMemberRoleMutation = { __typename?: 'Mutation', updateOrganisa export type UpdateWrappedSecretsMutationVariables = Exact<{ orgId: Scalars['ID']['input']; - identityKey: Scalars['String']['input']; wrappedKeyring: Scalars['String']['input']; wrappedRecovery: Scalars['String']['input']; }>; @@ -3579,48 +3463,6 @@ export type UpdateServiceAccountOpMutationVariables = Exact<{ export type UpdateServiceAccountOpMutation = { __typename?: 'Mutation', updateServiceAccount?: { __typename?: 'UpdateServiceAccountMutation', serviceAccount?: { __typename?: 'ServiceAccountType', id: string, name: string, role?: { __typename?: 'RoleType', id: string, name?: string | null, description?: string | null, permissions?: any | null } | null, identities?: Array<{ __typename?: 'IdentityType', id: string, name: string }> | null } | null } | null }; -export type CreateOrgSsoProviderMutationVariables = Exact<{ - orgId: Scalars['ID']['input']; - providerType: Scalars['String']['input']; - name: Scalars['String']['input']; - config: Scalars['JSONString']['input']; -}>; - - -export type CreateOrgSsoProviderMutation = { __typename?: 'Mutation', createOrganisationSsoProvider?: { __typename?: 'CreateOrganisationSSOProviderMutation', providerId?: string | null } | null }; - -export type DeleteOrgSsoProviderMutationVariables = Exact<{ - providerId: Scalars['ID']['input']; -}>; - - -export type DeleteOrgSsoProviderMutation = { __typename?: 'Mutation', deleteOrganisationSsoProvider?: { __typename?: 'DeleteOrganisationSSOProviderMutation', ok?: boolean | null } | null }; - -export type TestOrgSsoProviderMutationVariables = Exact<{ - providerId: Scalars['ID']['input']; -}>; - - -export type TestOrgSsoProviderMutation = { __typename?: 'Mutation', testOrganisationSsoProvider?: { __typename?: 'TestOrganisationSSOProviderMutation', success?: boolean | null, error?: string | null } | null }; - -export type UpdateOrgSsoProviderMutationVariables = Exact<{ - providerId: Scalars['ID']['input']; - name?: InputMaybe; - config?: InputMaybe; - enabled?: InputMaybe; -}>; - - -export type UpdateOrgSsoProviderMutation = { __typename?: 'Mutation', updateOrganisationSsoProvider?: { __typename?: 'UpdateOrganisationSSOProviderMutation', ok?: boolean | null } | null }; - -export type UpdateOrgSecurityMutationVariables = Exact<{ - orgId: Scalars['ID']['input']; - requireSso: Scalars['Boolean']['input']; -}>; - - -export type UpdateOrgSecurityMutation = { __typename?: 'Mutation', updateOrganisationSecurity?: { __typename?: 'UpdateOrganisationSecurityMutation', ok?: boolean | null, sessionInvalidated?: boolean | null } | null }; - export type CreateNewAwsSecretsSyncMutationVariables = Exact<{ envId: Scalars['ID']['input']; path: Scalars['String']['input']; @@ -3832,6 +3674,78 @@ export type CreateNewVercelSyncMutationVariables = Exact<{ export type CreateNewVercelSyncMutation = { __typename?: 'Mutation', createVercelSync?: { __typename?: 'CreateVercelSync', sync?: { __typename?: 'EnvironmentSyncType', id: string, isActive: boolean, lastSync?: any | null, createdAt?: any | null, environment: { __typename?: 'EnvironmentType', id: string, name: string, envType: ApiEnvironmentEnvTypeChoices }, serviceInfo?: { __typename?: 'ServiceType', id?: string | null, name?: string | null } | null } | null } | null }; +export type AddTeamAppsOpMutationVariables = Exact<{ + teamId: Scalars['ID']['input']; + appEnvs: Array | AppEnvironmentInput; +}>; + + +export type AddTeamAppsOpMutation = { __typename?: 'Mutation', addTeamApps?: { __typename?: 'AddTeamAppsMutation', team?: { __typename?: 'TeamType', id: string } | null } | null }; + +export type AddTeamMembersOpMutationVariables = Exact<{ + teamId: Scalars['ID']['input']; + memberIds: Array | Scalars['ID']['input']; + memberType?: InputMaybe; +}>; + + +export type AddTeamMembersOpMutation = { __typename?: 'Mutation', addTeamMembers?: { __typename?: 'AddTeamMembersMutation', team?: { __typename?: 'TeamType', id: string } | null } | null }; + +export type CreateTeamOpMutationVariables = Exact<{ + organisationId: Scalars['ID']['input']; + name: Scalars['String']['input']; + description?: InputMaybe; + memberRoleId?: InputMaybe; + serviceAccountRoleId?: InputMaybe; +}>; + + +export type CreateTeamOpMutation = { __typename?: 'Mutation', createTeam?: { __typename?: 'CreateTeamMutation', team?: { __typename?: 'TeamType', id: string, name: string } | null } | null }; + +export type DeleteTeamOpMutationVariables = Exact<{ + teamId: Scalars['ID']['input']; +}>; + + +export type DeleteTeamOpMutation = { __typename?: 'Mutation', deleteTeam?: { __typename?: 'DeleteTeamMutation', ok?: boolean | null } | null }; + +export type RemoveTeamAppOpMutationVariables = Exact<{ + teamId: Scalars['ID']['input']; + appId: Scalars['ID']['input']; +}>; + + +export type RemoveTeamAppOpMutation = { __typename?: 'Mutation', removeTeamApp?: { __typename?: 'RemoveTeamAppMutation', team?: { __typename?: 'TeamType', id: string } | null } | null }; + +export type RemoveTeamMemberOpMutationVariables = Exact<{ + teamId: Scalars['ID']['input']; + memberId: Scalars['ID']['input']; + memberType?: InputMaybe; +}>; + + +export type RemoveTeamMemberOpMutation = { __typename?: 'Mutation', removeTeamMember?: { __typename?: 'RemoveTeamMemberMutation', team?: { __typename?: 'TeamType', id: string } | null } | null }; + +export type UpdateTeamOpMutationVariables = Exact<{ + teamId: Scalars['ID']['input']; + name?: InputMaybe; + description?: InputMaybe; + memberRoleId?: InputMaybe; + serviceAccountRoleId?: InputMaybe; +}>; + + +export type UpdateTeamOpMutation = { __typename?: 'Mutation', updateTeam?: { __typename?: 'UpdateTeamMutation', team?: { __typename?: 'TeamType', id: string, name: string } | null } | null }; + +export type UpdateTeamAppEnvironmentsOpMutationVariables = Exact<{ + teamId: Scalars['ID']['input']; + appId: Scalars['ID']['input']; + envIds: Array | Scalars['ID']['input']; +}>; + + +export type UpdateTeamAppEnvironmentsOpMutation = { __typename?: 'Mutation', updateTeamAppEnvironments?: { __typename?: 'UpdateTeamAppEnvironmentsMutation', team?: { __typename?: 'TeamType', id: string } | null } | null }; + export type CreateNewUserTokenMutationVariables = Exact<{ orgId: Scalars['ID']['input']; name: Scalars['String']['input']; @@ -3884,13 +3798,6 @@ export type GetAppServiceAccountsQueryVariables = Exact<{ export type GetAppServiceAccountsQuery = { __typename?: 'Query', appServiceAccounts?: Array<{ __typename?: 'ServiceAccountType', id: string, identityKey?: string | null, name: string, createdAt?: any | null, role?: { __typename?: 'RoleType', id: string, name?: string | null, description?: string | null, permissions?: any | null, color?: string | null } | null, tokens?: Array<{ __typename?: 'ServiceAccountTokenType', id: string, name: string } | null> | null } | null> | null }; -export type VerifyPasswordQueryVariables = Exact<{ - authHash: Scalars['String']['input']; -}>; - - -export type VerifyPasswordQuery = { __typename?: 'Query', verifyPassword?: boolean | null }; - export type GetCheckoutDetailsQueryVariables = Exact<{ stripeSessionId: Scalars['String']['input']; }>; @@ -3965,7 +3872,7 @@ export type GetDashboardQuery = { __typename?: 'Query', apps?: Array<{ __typenam export type GetOrganisationsQueryVariables = Exact<{ [key: string]: never; }>; -export type GetOrganisationsQuery = { __typename?: 'Query', organisations?: Array<{ __typename?: 'OrganisationType', id: string, name: string, identityKey: string, createdAt?: any | null, plan: ApiOrganisationPlanChoices, memberId?: string | null, keyring?: string | null, recovery?: string | null, pricingVersion: number, requireSso: boolean, planDetail?: { __typename?: 'OrganisationPlanType', name?: string | null, maxUsers?: number | null, maxApps?: number | null, maxEnvsPerApp?: number | null, appCount?: number | null, seatsUsed?: { __typename?: 'SeatsUsed', users?: number | null, serviceAccounts?: number | null, total?: number | null } | null } | null, role?: { __typename?: 'RoleType', name?: string | null, description?: string | null, color?: string | null, permissions?: any | null } | null, ssoProviders?: Array<{ __typename?: 'OrganisationSSOProviderType', name: string, providerType: ApiOrganisationSsoProviderProviderTypeChoices, enabled: boolean } | null> | null } | null> | null }; +export type GetOrganisationsQuery = { __typename?: 'Query', organisations?: Array<{ __typename?: 'OrganisationType', id: string, name: string, identityKey: string, createdAt?: any | null, plan: ApiOrganisationPlanChoices, memberId?: string | null, keyring?: string | null, recovery?: string | null, pricingVersion: number, planDetail?: { __typename?: 'OrganisationPlanType', name?: string | null, maxUsers?: number | null, maxApps?: number | null, maxEnvsPerApp?: number | null, appCount?: number | null, seatsUsed?: { __typename?: 'SeatsUsed', users?: number | null, serviceAccounts?: number | null, total?: number | null } | null } | null, role?: { __typename?: 'RoleType', name?: string | null, description?: string | null, color?: string | null, permissions?: any | null } | null } | null> | null }; export type GetAwsStsEndpointsQueryVariables = Exact<{ [key: string]: never; }>; @@ -3975,17 +3882,14 @@ export type GetAwsStsEndpointsQuery = { __typename?: 'Query', awsStsEndpoints?: export type GetIdentityProvidersQueryVariables = Exact<{ [key: string]: never; }>; -export type GetIdentityProvidersQuery = { __typename?: 'Query', identityProviders?: Array<{ __typename?: 'IdentityProviderType', id: string, name: string, description: string, iconId: string } | null> | null }; +export type GetIdentityProvidersQuery = { __typename?: 'Query', identityProviders?: Array<{ __typename?: 'IdentityProviderType', id: string, name: string, description: string, iconId: string, supported: boolean } | null> | null }; export type GetOrganisationIdentitiesQueryVariables = Exact<{ organisationId: Scalars['ID']['input']; }>; -export type GetOrganisationIdentitiesQuery = { __typename?: 'Query', identities?: Array<{ __typename?: 'IdentityType', id: string, provider: string, name: string, description?: string | null, tokenNamePattern?: string | null, defaultTtlSeconds: number, maxTtlSeconds: number, createdAt?: any | null, config?: - | { __typename?: 'AwsIamConfigType', trustedPrincipals?: Array | null, signatureTtlSeconds?: number | null, stsEndpoint?: string | null } - | { __typename?: 'AzureEntraConfigType', tenantId?: string | null, resource?: string | null, allowedServicePrincipalIds?: Array | null } - | null } | null> | null }; +export type GetOrganisationIdentitiesQuery = { __typename?: 'Query', identities?: Array<{ __typename?: 'IdentityType', id: string, provider: string, name: string, description?: string | null, tokenNamePattern?: string | null, defaultTtlSeconds: number, maxTtlSeconds: number, createdAt?: any | null, config?: { __typename?: 'AwsIamConfigType', trustedPrincipals?: Array | null, signatureTtlSeconds?: number | null, stsEndpoint?: string | null } | null } | null> | null }; export type CheckOrganisationNameAvailabilityQueryVariables = Exact<{ name: Scalars['String']['input']; @@ -4179,7 +4083,7 @@ export type GetServiceAccountDetailQueryVariables = Exact<{ }>; -export type GetServiceAccountDetailQuery = { __typename?: 'Query', serviceAccounts?: Array<{ __typename?: 'ServiceAccountType', id: string, name: string, identityKey?: string | null, serverSideKeyManagementEnabled?: boolean | null, createdAt?: any | null, role?: { __typename?: 'RoleType', id: string, name?: string | null, description?: string | null, color?: string | null, permissions?: any | null } | null, handlers?: Array<{ __typename?: 'ServiceAccountHandlerType', id: string, wrappedKeyring: string, wrappedRecovery: string, user: { __typename?: 'OrganisationMemberType', self?: boolean | null } } | null> | null, appMemberships?: Array<{ __typename?: 'AppMembershipType', id: string, name: string, sseEnabled: boolean, environments: Array<{ __typename?: 'EnvironmentType', id: string, name: string } | null> }> | null, networkPolicies?: Array<{ __typename?: 'NetworkAccessPolicyType', id: string, name: string, allowedIps: string, isGlobal: boolean }> | null, identities?: Array<{ __typename?: 'IdentityType', id: string, provider: string, name: string, description?: string | null }> | null } | null> | null }; +export type GetServiceAccountDetailQuery = { __typename?: 'Query', serviceAccounts?: Array<{ __typename?: 'ServiceAccountType', id: string, name: string, identityKey?: string | null, serverSideKeyManagementEnabled?: boolean | null, createdAt?: any | null, role?: { __typename?: 'RoleType', id: string, name?: string | null, description?: string | null, color?: string | null, permissions?: any | null } | null, handlers?: Array<{ __typename?: 'ServiceAccountHandlerType', id: string, wrappedKeyring: string, wrappedRecovery: string, user: { __typename?: 'OrganisationMemberType', self?: boolean | null } } | null> | null, appMemberships?: Array<{ __typename?: 'AppMembershipType', id: string, name: string, sseEnabled: boolean, environments: Array<{ __typename?: 'EnvironmentType', id: string, name: string } | null> }> | null, networkPolicies?: Array<{ __typename?: 'NetworkAccessPolicyType', id: string, name: string, allowedIps: string, isGlobal: boolean }> | null, identities?: Array<{ __typename?: 'IdentityType', id: string, name: string, description?: string | null }> | null } | null> | null }; export type GetServiceAccountHandlersQueryVariables = Exact<{ orgId: Scalars['ID']['input']; @@ -4204,11 +4108,6 @@ export type GetServiceAccountsQueryVariables = Exact<{ export type GetServiceAccountsQuery = { __typename?: 'Query', serviceAccounts?: Array<{ __typename?: 'ServiceAccountType', id: string, name: string, identityKey?: string | null, createdAt?: any | null, role?: { __typename?: 'RoleType', id: string, name?: string | null, description?: string | null, color?: string | null } | null, handlers?: Array<{ __typename?: 'ServiceAccountHandlerType', id: string, wrappedKeyring: string, wrappedRecovery: string, user: { __typename?: 'OrganisationMemberType', self?: boolean | null } } | null> | null } | null> | null }; -export type GetOrgSsoProvidersQueryVariables = Exact<{ [key: string]: never; }>; - - -export type GetOrgSsoProvidersQuery = { __typename?: 'Query', serverPublicKey?: string | null, organisations?: Array<{ __typename?: 'OrganisationType', id: string, name: string, requireSso: boolean, ssoProviders?: Array<{ __typename?: 'OrganisationSSOProviderType', id: string, providerType: ApiOrganisationSsoProviderProviderTypeChoices, name: string, publicConfig?: any | null, enabled: boolean, createdAt: any, updatedAt: any, createdBy?: { __typename?: 'OrganisationMemberType', fullName?: string | null, avatarUrl?: string | null, self?: boolean | null } | null, updatedBy?: { __typename?: 'OrganisationMemberType', fullName?: string | null, avatarUrl?: string | null, self?: boolean | null } | null } | null> | null } | null> | null }; - export type GetOrganisationSyncsQueryVariables = Exact<{ orgId: Scalars['ID']['input']; }>; @@ -4353,6 +4252,14 @@ export type GetVercelProjectsQueryVariables = Exact<{ export type GetVercelProjectsQuery = { __typename?: 'Query', vercelProjects?: Array<{ __typename?: 'VercelTeamProjectsType', id: string, teamName: string, projects?: Array<{ __typename?: 'VercelProjectType', id: string, name: string, environments?: Array<{ __typename?: 'VercelEnvironmentType', id: string, name: string, slug: string, type?: string | null } | null> | null } | null> | null } | null> | null }; +export type GetTeamsQueryVariables = Exact<{ + organisationId: Scalars['ID']['input']; + teamId?: InputMaybe; +}>; + + +export type GetTeamsQuery = { __typename?: 'Query', teams?: Array<{ __typename?: 'TeamType', id: string, name: string, description?: string | null, isScimManaged: boolean, createdAt?: any | null, updatedAt: any, memberCount?: number | null, memberRole?: { __typename?: 'RoleType', id: string, name?: string | null, description?: string | null, color?: string | null, permissions?: any | null } | null, serviceAccountRole?: { __typename?: 'RoleType', id: string, name?: string | null, description?: string | null, color?: string | null, permissions?: any | null } | null, createdBy?: { __typename?: 'OrganisationMemberType', id: string, fullName?: string | null, email?: string | null, avatarUrl?: string | null } | null, members?: Array<{ __typename?: 'TeamMembershipType', id: string, email?: string | null, fullName?: string | null, avatarUrl?: string | null, createdAt?: any | null, orgMember?: { __typename?: 'OrganisationMemberType', id: string, identityKey?: string | null, role?: { __typename?: 'RoleType', id: string, name?: string | null, description?: string | null, color?: string | null, permissions?: any | null } | null } | null, serviceAccount?: { __typename?: 'ServiceAccountType', id: string, name: string, role?: { __typename?: 'RoleType', id: string, name?: string | null, description?: string | null, color?: string | null, permissions?: any | null } | null } | null }> | null, apps?: Array<{ __typename?: 'AppType', id: string, name: string, sseEnabled: boolean }> | null, appEnvironments?: Array<{ __typename?: 'TeamAppEnvironmentType', id: string, createdAt?: any | null, app: { __typename?: 'AppMembershipType', id: string, name: string }, environment: { __typename?: 'EnvironmentType', id: string, name: string, envType: ApiEnvironmentEnvTypeChoices } }> | null } | null> | null }; + export type GetOrganisationMemberDetailQueryVariables = Exact<{ organisationId: Scalars['ID']['input']; id?: InputMaybe; @@ -4381,8 +4288,6 @@ export const BulkAddMembersToAppDocument = {"kind":"Document","definitions":[{"k export const RemoveMemberFromAppDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"RemoveMemberFromApp"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"memberId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"memberType"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"MemberType"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"appId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"removeAppMember"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"memberId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"memberId"}}},{"kind":"Argument","name":{"kind":"Name","value":"memberType"},"value":{"kind":"Variable","name":{"kind":"Name","value":"memberType"}}},{"kind":"Argument","name":{"kind":"Name","value":"appId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"appId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"app"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}}]} as unknown as DocumentNode; export const UpdateAppInfoOpDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateAppInfoOp"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"name"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"description"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateAppInfo"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}},{"kind":"Argument","name":{"kind":"Name","value":"name"},"value":{"kind":"Variable","name":{"kind":"Name","value":"name"}}},{"kind":"Argument","name":{"kind":"Name","value":"description"},"value":{"kind":"Variable","name":{"kind":"Name","value":"description"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"app"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}}]}}]}}]}}]} as unknown as DocumentNode; export const UpdateEnvScopeDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateEnvScope"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"memberId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"memberType"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"MemberType"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"appId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"envKeys"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"EnvironmentKeyInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateMemberEnvironmentScope"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"memberId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"memberId"}}},{"kind":"Argument","name":{"kind":"Name","value":"memberType"},"value":{"kind":"Variable","name":{"kind":"Name","value":"memberType"}}},{"kind":"Argument","name":{"kind":"Name","value":"appId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"appId"}}},{"kind":"Argument","name":{"kind":"Name","value":"envKeys"},"value":{"kind":"Variable","name":{"kind":"Name","value":"envKeys"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"app"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}}]} as unknown as DocumentNode; -export const ChangePasswordDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"ChangePassword"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"currentAuthHash"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"newAuthHash"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"identityKey"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"wrappedKeyring"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"wrappedRecovery"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"changeAccountPassword"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"orgId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}}},{"kind":"Argument","name":{"kind":"Name","value":"currentAuthHash"},"value":{"kind":"Variable","name":{"kind":"Name","value":"currentAuthHash"}}},{"kind":"Argument","name":{"kind":"Name","value":"newAuthHash"},"value":{"kind":"Variable","name":{"kind":"Name","value":"newAuthHash"}}},{"kind":"Argument","name":{"kind":"Name","value":"identityKey"},"value":{"kind":"Variable","name":{"kind":"Name","value":"identityKey"}}},{"kind":"Argument","name":{"kind":"Name","value":"wrappedKeyring"},"value":{"kind":"Variable","name":{"kind":"Name","value":"wrappedKeyring"}}},{"kind":"Argument","name":{"kind":"Name","value":"wrappedRecovery"},"value":{"kind":"Variable","name":{"kind":"Name","value":"wrappedRecovery"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"orgMember"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}}]} as unknown as DocumentNode; -export const RecoverKeyringDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"RecoverKeyring"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"authHash"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"identityKey"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"wrappedKeyring"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"wrappedRecovery"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"recoverAccountKeyring"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"orgId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}}},{"kind":"Argument","name":{"kind":"Name","value":"authHash"},"value":{"kind":"Variable","name":{"kind":"Name","value":"authHash"}}},{"kind":"Argument","name":{"kind":"Name","value":"identityKey"},"value":{"kind":"Variable","name":{"kind":"Name","value":"identityKey"}}},{"kind":"Argument","name":{"kind":"Name","value":"wrappedKeyring"},"value":{"kind":"Variable","name":{"kind":"Name","value":"wrappedKeyring"}}},{"kind":"Argument","name":{"kind":"Name","value":"wrappedRecovery"},"value":{"kind":"Variable","name":{"kind":"Name","value":"wrappedRecovery"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"orgMember"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}}]} as unknown as DocumentNode; export const CancelStripeSubscriptionDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CancelStripeSubscription"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"subscriptionId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"cancelSubscription"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"organisationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}}},{"kind":"Argument","name":{"kind":"Name","value":"subscriptionId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"subscriptionId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"success"}}]}}]}}]} as unknown as DocumentNode; export const CreateStripeSetupIntentOpDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateStripeSetupIntentOp"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createSetupIntent"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"organisationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"clientSecret"}}]}}]}}]} as unknown as DocumentNode; export const DeleteStripePaymentMethodDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"DeleteStripePaymentMethod"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"paymentMethodId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deletePaymentMethod"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"organisationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}}},{"kind":"Argument","name":{"kind":"Name","value":"paymentMethodId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"paymentMethodId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"ok"}}]}}]}}]} as unknown as DocumentNode; @@ -4420,16 +4325,16 @@ export const RevokeDynamicSecretLeaseOpDocument = {"kind":"Document","definition export const UpdateDynamicSecretDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateDynamicSecret"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"dynamicSecretId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"path"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"name"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"description"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"defaultTtl"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"maxTtl"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"authenticationId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"config"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"AWSConfigInput"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"keyMap"}},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"KeyMapInput"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateAwsDynamicSecret"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"organisationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}}},{"kind":"Argument","name":{"kind":"Name","value":"dynamicSecretId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"dynamicSecretId"}}},{"kind":"Argument","name":{"kind":"Name","value":"path"},"value":{"kind":"Variable","name":{"kind":"Name","value":"path"}}},{"kind":"Argument","name":{"kind":"Name","value":"name"},"value":{"kind":"Variable","name":{"kind":"Name","value":"name"}}},{"kind":"Argument","name":{"kind":"Name","value":"description"},"value":{"kind":"Variable","name":{"kind":"Name","value":"description"}}},{"kind":"Argument","name":{"kind":"Name","value":"defaultTtl"},"value":{"kind":"Variable","name":{"kind":"Name","value":"defaultTtl"}}},{"kind":"Argument","name":{"kind":"Name","value":"maxTtl"},"value":{"kind":"Variable","name":{"kind":"Name","value":"maxTtl"}}},{"kind":"Argument","name":{"kind":"Name","value":"authenticationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"authenticationId"}}},{"kind":"Argument","name":{"kind":"Name","value":"config"},"value":{"kind":"Variable","name":{"kind":"Name","value":"config"}}},{"kind":"Argument","name":{"kind":"Name","value":"keyMap"},"value":{"kind":"Variable","name":{"kind":"Name","value":"keyMap"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"dynamicSecret"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"provider"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}}]}}]}}]}}]} as unknown as DocumentNode; export const CreateSharedSecretDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateSharedSecret"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"LockboxInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createLockbox"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"lockbox"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"allowedViews"}},{"kind":"Field","name":{"kind":"Name","value":"expiresAt"}}]}}]}}]}}]} as unknown as DocumentNode; export const UpdateEnvOrderDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateEnvOrder"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"appId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"environmentOrder"}},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateEnvironmentOrder"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"appId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"appId"}}},{"kind":"Argument","name":{"kind":"Name","value":"environmentOrder"},"value":{"kind":"Variable","name":{"kind":"Name","value":"environmentOrder"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"ok"}}]}}]}}]} as unknown as DocumentNode; -export const CreateExtIdentityDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateExtIdentity"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"provider"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"name"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"description"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"trustedPrincipals"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"signatureTtlSeconds"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"stsEndpoint"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"tenantId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"resource"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"tokenNamePattern"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"defaultTtlSeconds"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"maxTtlSeconds"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createIdentity"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"organisationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}}},{"kind":"Argument","name":{"kind":"Name","value":"provider"},"value":{"kind":"Variable","name":{"kind":"Name","value":"provider"}}},{"kind":"Argument","name":{"kind":"Name","value":"name"},"value":{"kind":"Variable","name":{"kind":"Name","value":"name"}}},{"kind":"Argument","name":{"kind":"Name","value":"description"},"value":{"kind":"Variable","name":{"kind":"Name","value":"description"}}},{"kind":"Argument","name":{"kind":"Name","value":"trustedPrincipals"},"value":{"kind":"Variable","name":{"kind":"Name","value":"trustedPrincipals"}}},{"kind":"Argument","name":{"kind":"Name","value":"signatureTtlSeconds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"signatureTtlSeconds"}}},{"kind":"Argument","name":{"kind":"Name","value":"stsEndpoint"},"value":{"kind":"Variable","name":{"kind":"Name","value":"stsEndpoint"}}},{"kind":"Argument","name":{"kind":"Name","value":"tenantId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"tenantId"}}},{"kind":"Argument","name":{"kind":"Name","value":"resource"},"value":{"kind":"Variable","name":{"kind":"Name","value":"resource"}}},{"kind":"Argument","name":{"kind":"Name","value":"tokenNamePattern"},"value":{"kind":"Variable","name":{"kind":"Name","value":"tokenNamePattern"}}},{"kind":"Argument","name":{"kind":"Name","value":"defaultTtlSeconds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"defaultTtlSeconds"}}},{"kind":"Argument","name":{"kind":"Name","value":"maxTtlSeconds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"maxTtlSeconds"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"identity"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"provider"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"config"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AwsIamConfigType"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"trustedPrincipals"}},{"kind":"Field","name":{"kind":"Name","value":"signatureTtlSeconds"}},{"kind":"Field","name":{"kind":"Name","value":"stsEndpoint"}}]}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AzureEntraConfigType"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"tenantId"}},{"kind":"Field","name":{"kind":"Name","value":"resource"}},{"kind":"Field","name":{"kind":"Name","value":"allowedServicePrincipalIds"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"tokenNamePattern"}},{"kind":"Field","name":{"kind":"Name","value":"defaultTtlSeconds"}},{"kind":"Field","name":{"kind":"Name","value":"maxTtlSeconds"}}]}}]}}]}}]} as unknown as DocumentNode; +export const CreateExtIdentityDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateExtIdentity"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"provider"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"name"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"description"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"trustedPrincipals"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"signatureTtlSeconds"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"stsEndpoint"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"tokenNamePattern"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"defaultTtlSeconds"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"maxTtlSeconds"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createIdentity"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"organisationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}}},{"kind":"Argument","name":{"kind":"Name","value":"provider"},"value":{"kind":"Variable","name":{"kind":"Name","value":"provider"}}},{"kind":"Argument","name":{"kind":"Name","value":"name"},"value":{"kind":"Variable","name":{"kind":"Name","value":"name"}}},{"kind":"Argument","name":{"kind":"Name","value":"description"},"value":{"kind":"Variable","name":{"kind":"Name","value":"description"}}},{"kind":"Argument","name":{"kind":"Name","value":"trustedPrincipals"},"value":{"kind":"Variable","name":{"kind":"Name","value":"trustedPrincipals"}}},{"kind":"Argument","name":{"kind":"Name","value":"signatureTtlSeconds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"signatureTtlSeconds"}}},{"kind":"Argument","name":{"kind":"Name","value":"stsEndpoint"},"value":{"kind":"Variable","name":{"kind":"Name","value":"stsEndpoint"}}},{"kind":"Argument","name":{"kind":"Name","value":"tokenNamePattern"},"value":{"kind":"Variable","name":{"kind":"Name","value":"tokenNamePattern"}}},{"kind":"Argument","name":{"kind":"Name","value":"defaultTtlSeconds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"defaultTtlSeconds"}}},{"kind":"Argument","name":{"kind":"Name","value":"maxTtlSeconds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"maxTtlSeconds"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"identity"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"provider"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"config"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AwsIamConfigType"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"trustedPrincipals"}},{"kind":"Field","name":{"kind":"Name","value":"signatureTtlSeconds"}},{"kind":"Field","name":{"kind":"Name","value":"stsEndpoint"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"tokenNamePattern"}},{"kind":"Field","name":{"kind":"Name","value":"defaultTtlSeconds"}},{"kind":"Field","name":{"kind":"Name","value":"maxTtlSeconds"}}]}}]}}]}}]} as unknown as DocumentNode; export const DeleteExtIdentityDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"DeleteExtIdentity"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deleteIdentity"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"ok"}}]}}]}}]} as unknown as DocumentNode; -export const UpdateExtIdentityDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateExtIdentity"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"name"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"description"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"trustedPrincipals"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"signatureTtlSeconds"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"stsEndpoint"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"tenantId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"resource"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"tokenNamePattern"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"defaultTtlSeconds"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"maxTtlSeconds"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateIdentity"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}},{"kind":"Argument","name":{"kind":"Name","value":"name"},"value":{"kind":"Variable","name":{"kind":"Name","value":"name"}}},{"kind":"Argument","name":{"kind":"Name","value":"description"},"value":{"kind":"Variable","name":{"kind":"Name","value":"description"}}},{"kind":"Argument","name":{"kind":"Name","value":"trustedPrincipals"},"value":{"kind":"Variable","name":{"kind":"Name","value":"trustedPrincipals"}}},{"kind":"Argument","name":{"kind":"Name","value":"signatureTtlSeconds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"signatureTtlSeconds"}}},{"kind":"Argument","name":{"kind":"Name","value":"stsEndpoint"},"value":{"kind":"Variable","name":{"kind":"Name","value":"stsEndpoint"}}},{"kind":"Argument","name":{"kind":"Name","value":"tenantId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"tenantId"}}},{"kind":"Argument","name":{"kind":"Name","value":"resource"},"value":{"kind":"Variable","name":{"kind":"Name","value":"resource"}}},{"kind":"Argument","name":{"kind":"Name","value":"tokenNamePattern"},"value":{"kind":"Variable","name":{"kind":"Name","value":"tokenNamePattern"}}},{"kind":"Argument","name":{"kind":"Name","value":"defaultTtlSeconds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"defaultTtlSeconds"}}},{"kind":"Argument","name":{"kind":"Name","value":"maxTtlSeconds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"maxTtlSeconds"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"identity"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"config"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AwsIamConfigType"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"trustedPrincipals"}},{"kind":"Field","name":{"kind":"Name","value":"signatureTtlSeconds"}},{"kind":"Field","name":{"kind":"Name","value":"stsEndpoint"}}]}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AzureEntraConfigType"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"tenantId"}},{"kind":"Field","name":{"kind":"Name","value":"resource"}},{"kind":"Field","name":{"kind":"Name","value":"allowedServicePrincipalIds"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"tokenNamePattern"}},{"kind":"Field","name":{"kind":"Name","value":"defaultTtlSeconds"}},{"kind":"Field","name":{"kind":"Name","value":"maxTtlSeconds"}}]}}]}}]}}]} as unknown as DocumentNode; +export const UpdateExtIdentityDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateExtIdentity"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"name"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"description"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"trustedPrincipals"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"signatureTtlSeconds"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"stsEndpoint"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"tokenNamePattern"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"defaultTtlSeconds"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"maxTtlSeconds"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateIdentity"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}},{"kind":"Argument","name":{"kind":"Name","value":"name"},"value":{"kind":"Variable","name":{"kind":"Name","value":"name"}}},{"kind":"Argument","name":{"kind":"Name","value":"description"},"value":{"kind":"Variable","name":{"kind":"Name","value":"description"}}},{"kind":"Argument","name":{"kind":"Name","value":"trustedPrincipals"},"value":{"kind":"Variable","name":{"kind":"Name","value":"trustedPrincipals"}}},{"kind":"Argument","name":{"kind":"Name","value":"signatureTtlSeconds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"signatureTtlSeconds"}}},{"kind":"Argument","name":{"kind":"Name","value":"stsEndpoint"},"value":{"kind":"Variable","name":{"kind":"Name","value":"stsEndpoint"}}},{"kind":"Argument","name":{"kind":"Name","value":"tokenNamePattern"},"value":{"kind":"Variable","name":{"kind":"Name","value":"tokenNamePattern"}}},{"kind":"Argument","name":{"kind":"Name","value":"defaultTtlSeconds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"defaultTtlSeconds"}}},{"kind":"Argument","name":{"kind":"Name","value":"maxTtlSeconds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"maxTtlSeconds"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"identity"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"config"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AwsIamConfigType"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"trustedPrincipals"}},{"kind":"Field","name":{"kind":"Name","value":"signatureTtlSeconds"}},{"kind":"Field","name":{"kind":"Name","value":"stsEndpoint"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"tokenNamePattern"}},{"kind":"Field","name":{"kind":"Name","value":"defaultTtlSeconds"}},{"kind":"Field","name":{"kind":"Name","value":"maxTtlSeconds"}}]}}]}}]}}]} as unknown as DocumentNode; export const AcceptOrganisationInviteDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"AcceptOrganisationInvite"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"identityKey"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"wrappedKeyring"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"wrappedRecovery"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"inviteId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createOrganisationMember"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"orgId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}}},{"kind":"Argument","name":{"kind":"Name","value":"identityKey"},"value":{"kind":"Variable","name":{"kind":"Name","value":"identityKey"}}},{"kind":"Argument","name":{"kind":"Name","value":"wrappedKeyring"},"value":{"kind":"Variable","name":{"kind":"Name","value":"wrappedKeyring"}}},{"kind":"Argument","name":{"kind":"Name","value":"wrappedRecovery"},"value":{"kind":"Variable","name":{"kind":"Name","value":"wrappedRecovery"}}},{"kind":"Argument","name":{"kind":"Name","value":"inviteId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"inviteId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"orgMember"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"role"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]}}]} as unknown as DocumentNode; export const BulkInviteMembersDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"BulkInviteMembers"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"invites"}},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"InviteInput"}}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"bulkInviteOrganisationMembers"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"orgId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}}},{"kind":"Argument","name":{"kind":"Name","value":"invites"},"value":{"kind":"Variable","name":{"kind":"Name","value":"invites"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"invites"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"inviteeEmail"}},{"kind":"Field","name":{"kind":"Name","value":"expiresAt"}}]}}]}}]}}]} as unknown as DocumentNode; export const DeleteOrgInviteDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"DeleteOrgInvite"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"inviteId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deleteInvitation"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"inviteId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"inviteId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"ok"}}]}}]}}]} as unknown as DocumentNode; export const RemoveMemberDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"RemoveMember"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"memberId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deleteOrganisationMember"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"memberId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"memberId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"ok"}}]}}]}}]} as unknown as DocumentNode; export const TransferOrgOwnershipDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"TransferOrgOwnership"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"newOwnerId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"billingEmail"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"transferOrganisationOwnership"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"organisationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}}},{"kind":"Argument","name":{"kind":"Name","value":"newOwnerId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"newOwnerId"}}},{"kind":"Argument","name":{"kind":"Name","value":"billingEmail"},"value":{"kind":"Variable","name":{"kind":"Name","value":"billingEmail"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"ok"}}]}}]}}]} as unknown as DocumentNode; export const UpdateMemberRoleDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateMemberRole"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"memberId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roleId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateOrganisationMemberRole"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"memberId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"memberId"}}},{"kind":"Argument","name":{"kind":"Name","value":"roleId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roleId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"orgMember"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"role"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]}}]} as unknown as DocumentNode; -export const UpdateWrappedSecretsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateWrappedSecrets"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"identityKey"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"wrappedKeyring"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"wrappedRecovery"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateMemberWrappedSecrets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"orgId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}}},{"kind":"Argument","name":{"kind":"Name","value":"identityKey"},"value":{"kind":"Variable","name":{"kind":"Name","value":"identityKey"}}},{"kind":"Argument","name":{"kind":"Name","value":"wrappedKeyring"},"value":{"kind":"Variable","name":{"kind":"Name","value":"wrappedKeyring"}}},{"kind":"Argument","name":{"kind":"Name","value":"wrappedRecovery"},"value":{"kind":"Variable","name":{"kind":"Name","value":"wrappedRecovery"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"orgMember"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}}]} as unknown as DocumentNode; +export const UpdateWrappedSecretsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateWrappedSecrets"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"wrappedKeyring"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"wrappedRecovery"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateMemberWrappedSecrets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"orgId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}}},{"kind":"Argument","name":{"kind":"Name","value":"wrappedKeyring"},"value":{"kind":"Variable","name":{"kind":"Name","value":"wrappedKeyring"}}},{"kind":"Argument","name":{"kind":"Name","value":"wrappedRecovery"},"value":{"kind":"Variable","name":{"kind":"Name","value":"wrappedRecovery"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"orgMember"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}}]} as unknown as DocumentNode; export const RotateAppKeyDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"RotateAppKey"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"appToken"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"wrappedKeyShare"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"rotateAppKeys"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}},{"kind":"Argument","name":{"kind":"Name","value":"appToken"},"value":{"kind":"Variable","name":{"kind":"Name","value":"appToken"}}},{"kind":"Argument","name":{"kind":"Name","value":"wrappedKeyShare"},"value":{"kind":"Variable","name":{"kind":"Name","value":"wrappedKeyShare"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"app"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}}]} as unknown as DocumentNode; export const CreateServiceAccountOpDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateServiceAccountOp"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"name"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roleId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"identityKey"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"handlers"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ServiceAccountHandlerInput"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"serverWrappedKeyring"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"serverWrappedRecovery"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createServiceAccount"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"name"},"value":{"kind":"Variable","name":{"kind":"Name","value":"name"}}},{"kind":"Argument","name":{"kind":"Name","value":"organisationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}}},{"kind":"Argument","name":{"kind":"Name","value":"roleId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roleId"}}},{"kind":"Argument","name":{"kind":"Name","value":"identityKey"},"value":{"kind":"Variable","name":{"kind":"Name","value":"identityKey"}}},{"kind":"Argument","name":{"kind":"Name","value":"handlers"},"value":{"kind":"Variable","name":{"kind":"Name","value":"handlers"}}},{"kind":"Argument","name":{"kind":"Name","value":"serverWrappedKeyring"},"value":{"kind":"Variable","name":{"kind":"Name","value":"serverWrappedKeyring"}}},{"kind":"Argument","name":{"kind":"Name","value":"serverWrappedRecovery"},"value":{"kind":"Variable","name":{"kind":"Name","value":"serverWrappedRecovery"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"serviceAccount"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}}]} as unknown as DocumentNode; export const CreateSaTokenDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateSAToken"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"serviceAccountId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"name"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"identityKey"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"token"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"wrappedKeyShare"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"expiry"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"BigInt"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createServiceAccountToken"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"serviceAccountId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"serviceAccountId"}}},{"kind":"Argument","name":{"kind":"Name","value":"name"},"value":{"kind":"Variable","name":{"kind":"Name","value":"name"}}},{"kind":"Argument","name":{"kind":"Name","value":"identityKey"},"value":{"kind":"Variable","name":{"kind":"Name","value":"identityKey"}}},{"kind":"Argument","name":{"kind":"Name","value":"token"},"value":{"kind":"Variable","name":{"kind":"Name","value":"token"}}},{"kind":"Argument","name":{"kind":"Name","value":"wrappedKeyShare"},"value":{"kind":"Variable","name":{"kind":"Name","value":"wrappedKeyShare"}}},{"kind":"Argument","name":{"kind":"Name","value":"expiry"},"value":{"kind":"Variable","name":{"kind":"Name","value":"expiry"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"token"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}}]} as unknown as DocumentNode; @@ -4439,11 +4344,6 @@ export const EnableSaClientKeyManagementDocument = {"kind":"Document","definitio export const EnableSaServerKeyManagementDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"EnableSAServerKeyManagement"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"serviceAccountId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"serverWrappedKeyring"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"serverWrappedRecovery"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"enableServiceAccountServerSideKeyManagement"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"serviceAccountId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"serviceAccountId"}}},{"kind":"Argument","name":{"kind":"Name","value":"serverWrappedKeyring"},"value":{"kind":"Variable","name":{"kind":"Name","value":"serverWrappedKeyring"}}},{"kind":"Argument","name":{"kind":"Name","value":"serverWrappedRecovery"},"value":{"kind":"Variable","name":{"kind":"Name","value":"serverWrappedRecovery"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"serviceAccount"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"serverSideKeyManagementEnabled"}}]}}]}}]}}]} as unknown as DocumentNode; export const UpdateServiceAccountHandlerKeysDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateServiceAccountHandlerKeys"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"handlers"}},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ServiceAccountHandlerInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateServiceAccountHandlers"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"organisationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}}},{"kind":"Argument","name":{"kind":"Name","value":"handlers"},"value":{"kind":"Variable","name":{"kind":"Name","value":"handlers"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"ok"}}]}}]}}]} as unknown as DocumentNode; export const UpdateServiceAccountOpDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateServiceAccountOp"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"serviceAccountId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"name"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"roleId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"identityIds"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateServiceAccount"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"serviceAccountId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"serviceAccountId"}}},{"kind":"Argument","name":{"kind":"Name","value":"name"},"value":{"kind":"Variable","name":{"kind":"Name","value":"name"}}},{"kind":"Argument","name":{"kind":"Name","value":"roleId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"roleId"}}},{"kind":"Argument","name":{"kind":"Name","value":"identityIds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"identityIds"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"serviceAccount"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"role"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"permissions"}}]}},{"kind":"Field","name":{"kind":"Name","value":"identities"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]}}]} as unknown as DocumentNode; -export const CreateOrgSsoProviderDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateOrgSSOProvider"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"providerType"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"name"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"config"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSONString"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createOrganisationSsoProvider"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"orgId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}}},{"kind":"Argument","name":{"kind":"Name","value":"providerType"},"value":{"kind":"Variable","name":{"kind":"Name","value":"providerType"}}},{"kind":"Argument","name":{"kind":"Name","value":"name"},"value":{"kind":"Variable","name":{"kind":"Name","value":"name"}}},{"kind":"Argument","name":{"kind":"Name","value":"config"},"value":{"kind":"Variable","name":{"kind":"Name","value":"config"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"providerId"}}]}}]}}]} as unknown as DocumentNode; -export const DeleteOrgSsoProviderDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"DeleteOrgSSOProvider"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"providerId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deleteOrganisationSsoProvider"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"providerId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"providerId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"ok"}}]}}]}}]} as unknown as DocumentNode; -export const TestOrgSsoProviderDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"TestOrgSSOProvider"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"providerId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"testOrganisationSsoProvider"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"providerId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"providerId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"success"}},{"kind":"Field","name":{"kind":"Name","value":"error"}}]}}]}}]} as unknown as DocumentNode; -export const UpdateOrgSsoProviderDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateOrgSSOProvider"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"providerId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"name"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"config"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"JSONString"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"enabled"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateOrganisationSsoProvider"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"providerId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"providerId"}}},{"kind":"Argument","name":{"kind":"Name","value":"name"},"value":{"kind":"Variable","name":{"kind":"Name","value":"name"}}},{"kind":"Argument","name":{"kind":"Name","value":"config"},"value":{"kind":"Variable","name":{"kind":"Name","value":"config"}}},{"kind":"Argument","name":{"kind":"Name","value":"enabled"},"value":{"kind":"Variable","name":{"kind":"Name","value":"enabled"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"ok"}}]}}]}}]} as unknown as DocumentNode; -export const UpdateOrgSecurityDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateOrgSecurity"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"requireSso"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateOrganisationSecurity"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"orgId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}}},{"kind":"Argument","name":{"kind":"Name","value":"requireSso"},"value":{"kind":"Variable","name":{"kind":"Name","value":"requireSso"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"ok"}},{"kind":"Field","name":{"kind":"Name","value":"sessionInvalidated"}}]}}]}}]} as unknown as DocumentNode; export const CreateNewAwsSecretsSyncDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateNewAWSSecretsSync"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"envId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"path"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"credentialId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"secretName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"kmsId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createAwsSecretSync"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"envId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"envId"}}},{"kind":"Argument","name":{"kind":"Name","value":"path"},"value":{"kind":"Variable","name":{"kind":"Name","value":"path"}}},{"kind":"Argument","name":{"kind":"Name","value":"credentialId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"credentialId"}}},{"kind":"Argument","name":{"kind":"Name","value":"secretName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"secretName"}}},{"kind":"Argument","name":{"kind":"Name","value":"kmsId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"kmsId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"sync"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"environment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"envType"}}]}},{"kind":"Field","name":{"kind":"Name","value":"serviceInfo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"lastSync"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}}]}}]}}]}}]} as unknown as DocumentNode; export const CreateNewAzureKeyVaultSyncDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateNewAzureKeyVaultSync"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"envId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"path"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"credentialId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"vaultUri"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"syncMode"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"secretName"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createAzureKeyVaultSync"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"envId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"envId"}}},{"kind":"Argument","name":{"kind":"Name","value":"path"},"value":{"kind":"Variable","name":{"kind":"Name","value":"path"}}},{"kind":"Argument","name":{"kind":"Name","value":"credentialId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"credentialId"}}},{"kind":"Argument","name":{"kind":"Name","value":"vaultUri"},"value":{"kind":"Variable","name":{"kind":"Name","value":"vaultUri"}}},{"kind":"Argument","name":{"kind":"Name","value":"syncMode"},"value":{"kind":"Variable","name":{"kind":"Name","value":"syncMode"}}},{"kind":"Argument","name":{"kind":"Name","value":"secretName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"secretName"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"sync"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"environment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"envType"}}]}},{"kind":"Field","name":{"kind":"Name","value":"serviceInfo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"lastSync"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}}]}}]}}]}}]} as unknown as DocumentNode; export const CreateNewCfPagesSyncDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateNewCfPagesSync"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"envId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"path"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"projectName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"deploymentId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"projectEnv"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"credentialId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createCloudflarePagesSync"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"envId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"envId"}}},{"kind":"Argument","name":{"kind":"Name","value":"path"},"value":{"kind":"Variable","name":{"kind":"Name","value":"path"}}},{"kind":"Argument","name":{"kind":"Name","value":"projectName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"projectName"}}},{"kind":"Argument","name":{"kind":"Name","value":"deploymentId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"deploymentId"}}},{"kind":"Argument","name":{"kind":"Name","value":"projectEnv"},"value":{"kind":"Variable","name":{"kind":"Name","value":"projectEnv"}}},{"kind":"Argument","name":{"kind":"Name","value":"credentialId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"credentialId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"sync"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"environment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"envType"}}]}},{"kind":"Field","name":{"kind":"Name","value":"serviceInfo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"lastSync"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}}]}}]}}]}}]} as unknown as DocumentNode; @@ -4464,6 +4364,14 @@ export const UpdateProviderCredsDocument = {"kind":"Document","definitions":[{"k export const UpdateSyncAuthDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateSyncAuth"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"syncId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"credentialId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateSyncAuthentication"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"syncId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"syncId"}}},{"kind":"Argument","name":{"kind":"Name","value":"credentialId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"credentialId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"sync"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}}]}}]}}]}}]} as unknown as DocumentNode; export const CreateNewVaultSyncDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateNewVaultSync"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"envId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"path"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"engine"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"vaultPath"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"credentialId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createVaultSync"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"envId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"envId"}}},{"kind":"Argument","name":{"kind":"Name","value":"path"},"value":{"kind":"Variable","name":{"kind":"Name","value":"path"}}},{"kind":"Argument","name":{"kind":"Name","value":"engine"},"value":{"kind":"Variable","name":{"kind":"Name","value":"engine"}}},{"kind":"Argument","name":{"kind":"Name","value":"vaultPath"},"value":{"kind":"Variable","name":{"kind":"Name","value":"vaultPath"}}},{"kind":"Argument","name":{"kind":"Name","value":"credentialId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"credentialId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"sync"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"environment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"envType"}}]}},{"kind":"Field","name":{"kind":"Name","value":"serviceInfo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"lastSync"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}}]}}]}}]}}]} as unknown as DocumentNode; export const CreateNewVercelSyncDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateNewVercelSync"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"envId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"path"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"credentialId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"projectId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"projectName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"teamId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"teamName"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"environment"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"secretType"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createVercelSync"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"envId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"envId"}}},{"kind":"Argument","name":{"kind":"Name","value":"path"},"value":{"kind":"Variable","name":{"kind":"Name","value":"path"}}},{"kind":"Argument","name":{"kind":"Name","value":"credentialId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"credentialId"}}},{"kind":"Argument","name":{"kind":"Name","value":"projectId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"projectId"}}},{"kind":"Argument","name":{"kind":"Name","value":"projectName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"projectName"}}},{"kind":"Argument","name":{"kind":"Name","value":"teamId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"teamId"}}},{"kind":"Argument","name":{"kind":"Name","value":"teamName"},"value":{"kind":"Variable","name":{"kind":"Name","value":"teamName"}}},{"kind":"Argument","name":{"kind":"Name","value":"environment"},"value":{"kind":"Variable","name":{"kind":"Name","value":"environment"}}},{"kind":"Argument","name":{"kind":"Name","value":"secretType"},"value":{"kind":"Variable","name":{"kind":"Name","value":"secretType"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"sync"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"environment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"envType"}}]}},{"kind":"Field","name":{"kind":"Name","value":"serviceInfo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"lastSync"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}}]}}]}}]}}]} as unknown as DocumentNode; +export const AddTeamAppsOpDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"AddTeamAppsOp"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"teamId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"appEnvs"}},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"AppEnvironmentInput"}}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"addTeamApps"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"teamId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"teamId"}}},{"kind":"Argument","name":{"kind":"Name","value":"appEnvs"},"value":{"kind":"Variable","name":{"kind":"Name","value":"appEnvs"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"team"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}}]} as unknown as DocumentNode; +export const AddTeamMembersOpDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"AddTeamMembersOp"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"teamId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"memberIds"}},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"memberType"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"MemberType"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"addTeamMembers"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"teamId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"teamId"}}},{"kind":"Argument","name":{"kind":"Name","value":"memberIds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"memberIds"}}},{"kind":"Argument","name":{"kind":"Name","value":"memberType"},"value":{"kind":"Variable","name":{"kind":"Name","value":"memberType"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"team"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}}]} as unknown as DocumentNode; +export const CreateTeamOpDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateTeamOp"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"name"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"description"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"memberRoleId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"serviceAccountRoleId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createTeam"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"organisationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}}},{"kind":"Argument","name":{"kind":"Name","value":"name"},"value":{"kind":"Variable","name":{"kind":"Name","value":"name"}}},{"kind":"Argument","name":{"kind":"Name","value":"description"},"value":{"kind":"Variable","name":{"kind":"Name","value":"description"}}},{"kind":"Argument","name":{"kind":"Name","value":"memberRoleId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"memberRoleId"}}},{"kind":"Argument","name":{"kind":"Name","value":"serviceAccountRoleId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"serviceAccountRoleId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"team"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]} as unknown as DocumentNode; +export const DeleteTeamOpDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"DeleteTeamOp"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"teamId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deleteTeam"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"teamId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"teamId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"ok"}}]}}]}}]} as unknown as DocumentNode; +export const RemoveTeamAppOpDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"RemoveTeamAppOp"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"teamId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"appId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"removeTeamApp"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"teamId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"teamId"}}},{"kind":"Argument","name":{"kind":"Name","value":"appId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"appId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"team"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}}]} as unknown as DocumentNode; +export const RemoveTeamMemberOpDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"RemoveTeamMemberOp"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"teamId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"memberId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"memberType"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"MemberType"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"removeTeamMember"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"teamId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"teamId"}}},{"kind":"Argument","name":{"kind":"Name","value":"memberId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"memberId"}}},{"kind":"Argument","name":{"kind":"Name","value":"memberType"},"value":{"kind":"Variable","name":{"kind":"Name","value":"memberType"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"team"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}}]} as unknown as DocumentNode; +export const UpdateTeamOpDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateTeamOp"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"teamId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"name"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"description"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"memberRoleId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"serviceAccountRoleId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateTeam"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"teamId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"teamId"}}},{"kind":"Argument","name":{"kind":"Name","value":"name"},"value":{"kind":"Variable","name":{"kind":"Name","value":"name"}}},{"kind":"Argument","name":{"kind":"Name","value":"description"},"value":{"kind":"Variable","name":{"kind":"Name","value":"description"}}},{"kind":"Argument","name":{"kind":"Name","value":"memberRoleId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"memberRoleId"}}},{"kind":"Argument","name":{"kind":"Name","value":"serviceAccountRoleId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"serviceAccountRoleId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"team"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]} as unknown as DocumentNode; +export const UpdateTeamAppEnvironmentsOpDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateTeamAppEnvironmentsOp"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"teamId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"appId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"envIds"}},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateTeamAppEnvironments"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"teamId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"teamId"}}},{"kind":"Argument","name":{"kind":"Name","value":"appId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"appId"}}},{"kind":"Argument","name":{"kind":"Name","value":"envIds"},"value":{"kind":"Variable","name":{"kind":"Name","value":"envIds"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"team"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}}]} as unknown as DocumentNode; export const CreateNewUserTokenDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"CreateNewUserToken"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"name"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"identityKey"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"token"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"wrappedKeyShare"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"expiry"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"BigInt"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createUserToken"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"orgId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}}},{"kind":"Argument","name":{"kind":"Name","value":"name"},"value":{"kind":"Variable","name":{"kind":"Name","value":"name"}}},{"kind":"Argument","name":{"kind":"Name","value":"identityKey"},"value":{"kind":"Variable","name":{"kind":"Name","value":"identityKey"}}},{"kind":"Argument","name":{"kind":"Name","value":"token"},"value":{"kind":"Variable","name":{"kind":"Name","value":"token"}}},{"kind":"Argument","name":{"kind":"Name","value":"wrappedKeyShare"},"value":{"kind":"Variable","name":{"kind":"Name","value":"wrappedKeyShare"}}},{"kind":"Argument","name":{"kind":"Name","value":"expiry"},"value":{"kind":"Variable","name":{"kind":"Name","value":"expiry"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"ok"}}]}}]}}]} as unknown as DocumentNode; export const RevokeUserTokenDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"RevokeUserToken"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"tokenId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"deleteUserToken"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"tokenId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"tokenId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"ok"}}]}}]}}]} as unknown as DocumentNode; export const GetIpDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetIP"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"clientIp"}}]}}]} as unknown as DocumentNode; @@ -4471,7 +4379,6 @@ export const GetNetworkPoliciesDocument = {"kind":"Document","definitions":[{"ki export const GetAppAccountsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetAppAccounts"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"appId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"appUsers"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"appId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"appId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"identityKey"}},{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"fullName"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"role"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"permissions"}},{"kind":"Field","name":{"kind":"Name","value":"color"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"appServiceAccounts"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"appId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"appId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"identityKey"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"role"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"permissions"}},{"kind":"Field","name":{"kind":"Name","value":"color"}}]}},{"kind":"Field","name":{"kind":"Name","value":"tokens"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]} as unknown as DocumentNode; export const GetAppMembersDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetAppMembers"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"appId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"appUsers"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"appId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"appId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"identityKey"}},{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"fullName"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"role"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"permissions"}},{"kind":"Field","name":{"kind":"Name","value":"color"}}]}}]}}]}}]} as unknown as DocumentNode; export const GetAppServiceAccountsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetAppServiceAccounts"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"appId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"appServiceAccounts"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"appId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"appId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"identityKey"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"role"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"permissions"}},{"kind":"Field","name":{"kind":"Name","value":"color"}}]}},{"kind":"Field","name":{"kind":"Name","value":"tokens"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]}}]} as unknown as DocumentNode; -export const VerifyPasswordDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"VerifyPassword"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"authHash"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"verifyPassword"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"authHash"},"value":{"kind":"Variable","name":{"kind":"Name","value":"authHash"}}}]}]}}]} as unknown as DocumentNode; export const GetCheckoutDetailsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetCheckoutDetails"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"stripeSessionId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"stripeCheckoutDetails"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"stripeSessionId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"stripeSessionId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"paymentStatus"}},{"kind":"Field","name":{"kind":"Name","value":"customerEmail"}},{"kind":"Field","name":{"kind":"Name","value":"billingStartDate"}},{"kind":"Field","name":{"kind":"Name","value":"billingEndDate"}},{"kind":"Field","name":{"kind":"Name","value":"subscriptionId"}},{"kind":"Field","name":{"kind":"Name","value":"planName"}}]}}]}}]} as unknown as DocumentNode; export const GetCustomerPortalLinkDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetCustomerPortalLink"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"stripeCustomerPortalUrl"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"organisationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}}}]}]}}]} as unknown as DocumentNode; export const GetSubscriptionDetailsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetSubscriptionDetails"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"stripeSubscriptionDetails"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"organisationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"subscriptionId"}},{"kind":"Field","name":{"kind":"Name","value":"planName"}},{"kind":"Field","name":{"kind":"Name","value":"planType"}},{"kind":"Field","name":{"kind":"Name","value":"billingPeriod"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"nextPaymentAmount"}},{"kind":"Field","name":{"kind":"Name","value":"currentPeriodStart"}},{"kind":"Field","name":{"kind":"Name","value":"currentPeriodEnd"}},{"kind":"Field","name":{"kind":"Name","value":"renewalDate"}},{"kind":"Field","name":{"kind":"Name","value":"cancelAt"}},{"kind":"Field","name":{"kind":"Name","value":"cancelAtPeriodEnd"}},{"kind":"Field","name":{"kind":"Name","value":"paymentMethods"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"brand"}},{"kind":"Field","name":{"kind":"Name","value":"last4"}},{"kind":"Field","name":{"kind":"Name","value":"expMonth"}},{"kind":"Field","name":{"kind":"Name","value":"expYear"}},{"kind":"Field","name":{"kind":"Name","value":"isDefault"}}]}}]}}]}}]} as unknown as DocumentNode; @@ -4481,10 +4388,10 @@ export const GetAppDetailDocument = {"kind":"Document","definitions":[{"kind":"O export const GetAppKmsLogsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetAppKmsLogs"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"appId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"start"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"BigInt"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"end"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"BigInt"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"kmsLogs"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"appId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"appId"}}},{"kind":"Argument","name":{"kind":"Name","value":"start"},"value":{"kind":"Variable","name":{"kind":"Name","value":"start"}}},{"kind":"Argument","name":{"kind":"Name","value":"end"},"value":{"kind":"Variable","name":{"kind":"Name","value":"end"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"logs"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"timestamp"}},{"kind":"Field","name":{"kind":"Name","value":"phaseNode"}},{"kind":"Field","name":{"kind":"Name","value":"eventType"}},{"kind":"Field","name":{"kind":"Name","value":"ipAddress"}},{"kind":"Field","name":{"kind":"Name","value":"country"}},{"kind":"Field","name":{"kind":"Name","value":"city"}},{"kind":"Field","name":{"kind":"Name","value":"phSize"}}]}},{"kind":"Field","name":{"kind":"Name","value":"count"}}]}}]}}]} as unknown as DocumentNode; export const GetAppsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetApps"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"appId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"apps"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"organisationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}}},{"kind":"Argument","name":{"kind":"Name","value":"appId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"appId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"identityKey"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"sseEnabled"}},{"kind":"Field","name":{"kind":"Name","value":"members"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"fullName"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"serviceAccounts"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"environments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"envType"}},{"kind":"Field","name":{"kind":"Name","value":"syncs"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"serviceInfo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"provider"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"status"}}]}}]}}]}}]}}]} as unknown as DocumentNode; export const GetDashboardDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetDashboard"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"apps"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"organisationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"sseEnabled"}}]}},{"kind":"Field","name":{"kind":"Name","value":"userTokens"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"organisationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisationInvites"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"orgId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"organisationMembers"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"organisationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}}},{"kind":"Argument","name":{"kind":"Name","value":"role"},"value":{"kind":"NullValue"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"savedCredentials"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"orgId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"syncs"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"orgId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode; -export const GetOrganisationsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetOrganisations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organisations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"identityKey"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"plan"}},{"kind":"Field","name":{"kind":"Name","value":"planDetail"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"maxUsers"}},{"kind":"Field","name":{"kind":"Name","value":"maxApps"}},{"kind":"Field","name":{"kind":"Name","value":"maxEnvsPerApp"}},{"kind":"Field","name":{"kind":"Name","value":"seatsUsed"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"users"}},{"kind":"Field","name":{"kind":"Name","value":"serviceAccounts"}},{"kind":"Field","name":{"kind":"Name","value":"total"}}]}},{"kind":"Field","name":{"kind":"Name","value":"appCount"}}]}},{"kind":"Field","name":{"kind":"Name","value":"role"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"color"}},{"kind":"Field","name":{"kind":"Name","value":"permissions"}}]}},{"kind":"Field","name":{"kind":"Name","value":"memberId"}},{"kind":"Field","name":{"kind":"Name","value":"keyring"}},{"kind":"Field","name":{"kind":"Name","value":"recovery"}},{"kind":"Field","name":{"kind":"Name","value":"pricingVersion"}},{"kind":"Field","name":{"kind":"Name","value":"requireSso"}},{"kind":"Field","name":{"kind":"Name","value":"ssoProviders"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"providerType"}},{"kind":"Field","name":{"kind":"Name","value":"enabled"}}]}}]}}]}}]} as unknown as DocumentNode; +export const GetOrganisationsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetOrganisations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organisations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"identityKey"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"plan"}},{"kind":"Field","name":{"kind":"Name","value":"planDetail"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"maxUsers"}},{"kind":"Field","name":{"kind":"Name","value":"maxApps"}},{"kind":"Field","name":{"kind":"Name","value":"maxEnvsPerApp"}},{"kind":"Field","name":{"kind":"Name","value":"seatsUsed"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"users"}},{"kind":"Field","name":{"kind":"Name","value":"serviceAccounts"}},{"kind":"Field","name":{"kind":"Name","value":"total"}}]}},{"kind":"Field","name":{"kind":"Name","value":"appCount"}}]}},{"kind":"Field","name":{"kind":"Name","value":"role"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"color"}},{"kind":"Field","name":{"kind":"Name","value":"permissions"}}]}},{"kind":"Field","name":{"kind":"Name","value":"memberId"}},{"kind":"Field","name":{"kind":"Name","value":"keyring"}},{"kind":"Field","name":{"kind":"Name","value":"recovery"}},{"kind":"Field","name":{"kind":"Name","value":"pricingVersion"}}]}}]}}]} as unknown as DocumentNode; export const GetAwsStsEndpointsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetAwsStsEndpoints"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"awsStsEndpoints"}}]}}]} as unknown as DocumentNode; -export const GetIdentityProvidersDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetIdentityProviders"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"identityProviders"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"iconId"}}]}}]}}]} as unknown as DocumentNode; -export const GetOrganisationIdentitiesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetOrganisationIdentities"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"identities"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"organisationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"provider"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"config"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AwsIamConfigType"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"trustedPrincipals"}},{"kind":"Field","name":{"kind":"Name","value":"signatureTtlSeconds"}},{"kind":"Field","name":{"kind":"Name","value":"stsEndpoint"}}]}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AzureEntraConfigType"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"tenantId"}},{"kind":"Field","name":{"kind":"Name","value":"resource"}},{"kind":"Field","name":{"kind":"Name","value":"allowedServicePrincipalIds"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"tokenNamePattern"}},{"kind":"Field","name":{"kind":"Name","value":"defaultTtlSeconds"}},{"kind":"Field","name":{"kind":"Name","value":"maxTtlSeconds"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}}]}}]}}]} as unknown as DocumentNode; +export const GetIdentityProvidersDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetIdentityProviders"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"identityProviders"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"iconId"}},{"kind":"Field","name":{"kind":"Name","value":"supported"}}]}}]}}]} as unknown as DocumentNode; +export const GetOrganisationIdentitiesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetOrganisationIdentities"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"identities"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"organisationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"provider"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"config"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AwsIamConfigType"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"trustedPrincipals"}},{"kind":"Field","name":{"kind":"Name","value":"signatureTtlSeconds"}},{"kind":"Field","name":{"kind":"Name","value":"stsEndpoint"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"tokenNamePattern"}},{"kind":"Field","name":{"kind":"Name","value":"defaultTtlSeconds"}},{"kind":"Field","name":{"kind":"Name","value":"maxTtlSeconds"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}}]}}]}}]} as unknown as DocumentNode; export const CheckOrganisationNameAvailabilityDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"CheckOrganisationNameAvailability"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"name"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organisationNameAvailable"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"name"},"value":{"kind":"Variable","name":{"kind":"Name","value":"name"}}}]}]}}]} as unknown as DocumentNode; export const GetGlobalAccessUsersDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetGlobalAccessUsers"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organisationGlobalAccessUsers"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"organisationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"role"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"permissions"}}]}},{"kind":"Field","name":{"kind":"Name","value":"identityKey"}},{"kind":"Field","name":{"kind":"Name","value":"self"}}]}}]}}]} as unknown as DocumentNode; export const GetInvitesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetInvites"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organisationInvites"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"orgId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"expiresAt"}},{"kind":"Field","name":{"kind":"Name","value":"invitedBy"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"fullName"}},{"kind":"Field","name":{"kind":"Name","value":"self"}}]}},{"kind":"Field","name":{"kind":"Name","value":"inviteeEmail"}},{"kind":"Field","name":{"kind":"Name","value":"role"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"color"}}]}}]}}]}}]} as unknown as DocumentNode; @@ -4509,11 +4416,10 @@ export const GetEnvSecretsKvDocument = {"kind":"Document","definitions":[{"kind" export const GetSecretTagsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetSecretTags"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"secretTags"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"orgId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"color"}}]}}]}}]} as unknown as DocumentNode; export const GetSecretsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetSecrets"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"appId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"envId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"path"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"secrets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"envId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"envId"}}},{"kind":"Argument","name":{"kind":"Name","value":"path"},"value":{"kind":"Variable","name":{"kind":"Name","value":"path"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"value"}},{"kind":"Field","name":{"kind":"Name","value":"path"}},{"kind":"Field","name":{"kind":"Name","value":"type"}},{"kind":"Field","name":{"kind":"Name","value":"tags"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"color"}}]}},{"kind":"Field","name":{"kind":"Name","value":"comment"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"override"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"value"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}}]}},{"kind":"Field","name":{"kind":"Name","value":"environment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"app"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"folders"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"envId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"envId"}}},{"kind":"Argument","name":{"kind":"Name","value":"path"},"value":{"kind":"Variable","name":{"kind":"Name","value":"path"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"path"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"folderCount"}},{"kind":"Field","name":{"kind":"Name","value":"secretCount"}}]}},{"kind":"Field","name":{"kind":"Name","value":"appEnvironments"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"appId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"appId"}}},{"kind":"Argument","name":{"kind":"Name","value":"environmentId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"envId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"envType"}},{"kind":"Field","name":{"kind":"Name","value":"identityKey"}},{"kind":"Field","name":{"kind":"Name","value":"app"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"sseEnabled"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"environmentKeys"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"appId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"appId"}}},{"kind":"Argument","name":{"kind":"Name","value":"environmentId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"envId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"identityKey"}},{"kind":"Field","name":{"kind":"Name","value":"wrappedSeed"}},{"kind":"Field","name":{"kind":"Name","value":"wrappedSalt"}}]}},{"kind":"Field","name":{"kind":"Name","value":"envSyncs"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"envId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"envId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"environment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"envType"}}]}},{"kind":"Field","name":{"kind":"Name","value":"serviceInfo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"options"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"lastSync"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}}]}},{"kind":"Field","name":{"kind":"Name","value":"dynamicSecrets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"envId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"envId"}}},{"kind":"Argument","name":{"kind":"Name","value":"path"},"value":{"kind":"Variable","name":{"kind":"Name","value":"path"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"path"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"provider"}},{"kind":"Field","name":{"kind":"Name","value":"keyMap"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"keyName"}},{"kind":"Field","name":{"kind":"Name","value":"masked"}}]}},{"kind":"Field","name":{"kind":"Name","value":"config"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"AWSConfigType"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"usernameTemplate"}},{"kind":"Field","name":{"kind":"Name","value":"groups"}},{"kind":"Field","name":{"kind":"Name","value":"iamPath"}},{"kind":"Field","name":{"kind":"Name","value":"permissionBoundaryArn"}},{"kind":"Field","name":{"kind":"Name","value":"policyArns"}},{"kind":"Field","name":{"kind":"Name","value":"policyDocument"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"defaultTtlSeconds"}},{"kind":"Field","name":{"kind":"Name","value":"maxTtlSeconds"}},{"kind":"Field","name":{"kind":"Name","value":"authentication"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}}]}}]}}]} as unknown as DocumentNode; export const GetServiceTokensDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetServiceTokens"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"appId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"serviceTokens"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"appId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"appId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"createdBy"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"fullName"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"self"}}]}},{"kind":"Field","name":{"kind":"Name","value":"expiresAt"}},{"kind":"Field","name":{"kind":"Name","value":"keys"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"identityKey"}}]}}]}}]}}]} as unknown as DocumentNode; -export const GetServiceAccountDetailDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetServiceAccountDetail"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"serviceAccounts"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"orgId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}}},{"kind":"Argument","name":{"kind":"Name","value":"serviceAccountId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"identityKey"}},{"kind":"Field","name":{"kind":"Name","value":"serverSideKeyManagementEnabled"}},{"kind":"Field","name":{"kind":"Name","value":"role"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"color"}},{"kind":"Field","name":{"kind":"Name","value":"permissions"}}]}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"handlers"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"wrappedKeyring"}},{"kind":"Field","name":{"kind":"Name","value":"wrappedRecovery"}},{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"self"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"appMemberships"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"environments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"sseEnabled"}}]}},{"kind":"Field","name":{"kind":"Name","value":"networkPolicies"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"allowedIps"}},{"kind":"Field","name":{"kind":"Name","value":"isGlobal"}}]}},{"kind":"Field","name":{"kind":"Name","value":"identities"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"provider"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}}]}}]}}]}}]} as unknown as DocumentNode; +export const GetServiceAccountDetailDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetServiceAccountDetail"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"serviceAccounts"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"orgId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}}},{"kind":"Argument","name":{"kind":"Name","value":"serviceAccountId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"identityKey"}},{"kind":"Field","name":{"kind":"Name","value":"serverSideKeyManagementEnabled"}},{"kind":"Field","name":{"kind":"Name","value":"role"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"color"}},{"kind":"Field","name":{"kind":"Name","value":"permissions"}}]}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"handlers"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"wrappedKeyring"}},{"kind":"Field","name":{"kind":"Name","value":"wrappedRecovery"}},{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"self"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"appMemberships"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"environments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"sseEnabled"}}]}},{"kind":"Field","name":{"kind":"Name","value":"networkPolicies"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"allowedIps"}},{"kind":"Field","name":{"kind":"Name","value":"isGlobal"}}]}},{"kind":"Field","name":{"kind":"Name","value":"identities"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}}]}}]}}]}}]} as unknown as DocumentNode; export const GetServiceAccountHandlersDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetServiceAccountHandlers"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"serviceAccountHandlers"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"orgId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"role"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"permissions"}}]}},{"kind":"Field","name":{"kind":"Name","value":"identityKey"}},{"kind":"Field","name":{"kind":"Name","value":"self"}}]}}]}}]} as unknown as DocumentNode; export const GetServiceAccountTokensDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetServiceAccountTokens"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"serviceAccounts"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"orgId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}}},{"kind":"Argument","name":{"kind":"Name","value":"serviceAccountId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"tokens"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"expiresAt"}},{"kind":"Field","name":{"kind":"Name","value":"createdBy"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"fullName"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"self"}}]}},{"kind":"Field","name":{"kind":"Name","value":"createdByServiceAccount"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"identityKey"}}]}},{"kind":"Field","name":{"kind":"Name","value":"lastUsed"}}]}}]}}]}}]} as unknown as DocumentNode; export const GetServiceAccountsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetServiceAccounts"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"serviceAccounts"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"orgId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}}},{"kind":"Argument","name":{"kind":"Name","value":"serviceAccountId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"identityKey"}},{"kind":"Field","name":{"kind":"Name","value":"role"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"color"}}]}},{"kind":"Field","name":{"kind":"Name","value":"handlers"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"wrappedKeyring"}},{"kind":"Field","name":{"kind":"Name","value":"wrappedRecovery"}},{"kind":"Field","name":{"kind":"Name","value":"user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"self"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}}]}}]}}]} as unknown as DocumentNode; -export const GetOrgSsoProvidersDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetOrgSSOProviders"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organisations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"requireSso"}},{"kind":"Field","name":{"kind":"Name","value":"ssoProviders"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"providerType"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"publicConfig"}},{"kind":"Field","name":{"kind":"Name","value":"enabled"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"createdBy"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"fullName"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"self"}}]}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedBy"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"fullName"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"self"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"serverPublicKey"}}]}}]} as unknown as DocumentNode; export const GetOrganisationSyncsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetOrganisationSyncs"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"syncs"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"orgId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"environment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"envType"}},{"kind":"Field","name":{"kind":"Name","value":"app"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"path"}},{"kind":"Field","name":{"kind":"Name","value":"serviceInfo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"provider"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"options"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"lastSync"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"authentication"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"credentials"}}]}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"history"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"completedAt"}},{"kind":"Field","name":{"kind":"Name","value":"meta"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"savedCredentials"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"orgId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"credentials"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"provider"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"expectedCredentials"}},{"kind":"Field","name":{"kind":"Name","value":"optionalCredentials"}}]}},{"kind":"Field","name":{"kind":"Name","value":"syncCount"}}]}},{"kind":"Field","name":{"kind":"Name","value":"apps"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"organisationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"orgId"}}},{"kind":"Argument","name":{"kind":"Name","value":"appId"},"value":{"kind":"NullValue"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"identityKey"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"sseEnabled"}},{"kind":"Field","name":{"kind":"Name","value":"members"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"fullName"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"email"}}]}},{"kind":"Field","name":{"kind":"Name","value":"serviceAccounts"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"environments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"syncs"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"serviceInfo"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"provider"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"status"}}]}}]}}]}}]}}]} as unknown as DocumentNode; export const GetAwsSecretsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetAwsSecrets"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"credentialId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"awsSecrets"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"credentialId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"credentialId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"arn"}}]}}]}}]} as unknown as DocumentNode; export const ValidateAwsAssumeRoleAuthDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ValidateAWSAssumeRoleAuth"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"validateAwsAssumeRoleAuth"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"valid"}},{"kind":"Field","name":{"kind":"Name","value":"message"}},{"kind":"Field","name":{"kind":"Name","value":"method"}},{"kind":"Field","name":{"kind":"Name","value":"error"}}]}}]}}]} as unknown as DocumentNode; @@ -4535,5 +4441,6 @@ export const GetRailwayProjectsDocument = {"kind":"Document","definitions":[{"ki export const GetRenderResourcesDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetRenderResources"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"credentialId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"renderServices"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"credentialId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"credentialId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"renderEnvgroups"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"credentialId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"credentialId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]} as unknown as DocumentNode; export const TestVaultAuthDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"TestVaultAuth"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"credentialId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"testVaultCreds"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"credentialId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"credentialId"}}}]}]}}]} as unknown as DocumentNode; export const GetVercelProjectsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetVercelProjects"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"credentialId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"vercelProjects"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"credentialId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"credentialId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"teamName"}},{"kind":"Field","name":{"kind":"Name","value":"projects"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"environments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}}]}}]}}]}}]} as unknown as DocumentNode; +export const GetTeamsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetTeams"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"teamId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"teams"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"organisationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}}},{"kind":"Argument","name":{"kind":"Name","value":"teamId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"teamId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"memberRole"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"color"}},{"kind":"Field","name":{"kind":"Name","value":"permissions"}}]}},{"kind":"Field","name":{"kind":"Name","value":"serviceAccountRole"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"color"}},{"kind":"Field","name":{"kind":"Name","value":"permissions"}}]}},{"kind":"Field","name":{"kind":"Name","value":"isScimManaged"}},{"kind":"Field","name":{"kind":"Name","value":"createdBy"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"fullName"}},{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}}]}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"memberCount"}},{"kind":"Field","name":{"kind":"Name","value":"members"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"orgMember"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"identityKey"}},{"kind":"Field","name":{"kind":"Name","value":"role"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"color"}},{"kind":"Field","name":{"kind":"Name","value":"permissions"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"serviceAccount"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"role"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"color"}},{"kind":"Field","name":{"kind":"Name","value":"permissions"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"fullName"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}}]}},{"kind":"Field","name":{"kind":"Name","value":"apps"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"sseEnabled"}}]}},{"kind":"Field","name":{"kind":"Name","value":"appEnvironments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"app"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"environment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"envType"}}]}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}}]}}]}}]}}]} as unknown as DocumentNode; export const GetOrganisationMemberDetailDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetOrganisationMemberDetail"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"id"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"organisationMembers"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"organisationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}}},{"kind":"Argument","name":{"kind":"Name","value":"memberId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"id"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"role"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"permissions"}},{"kind":"Field","name":{"kind":"Name","value":"color"}}]}},{"kind":"Field","name":{"kind":"Name","value":"identityKey"}},{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"fullName"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"lastLogin"}},{"kind":"Field","name":{"kind":"Name","value":"self"}},{"kind":"Field","name":{"kind":"Name","value":"appMemberships"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"sseEnabled"}},{"kind":"Field","name":{"kind":"Name","value":"environments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"tokens"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"expiresAt"}}]}},{"kind":"Field","name":{"kind":"Name","value":"networkPolicies"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"allowedIps"}},{"kind":"Field","name":{"kind":"Name","value":"isGlobal"}}]}}]}}]}}]} as unknown as DocumentNode; export const GetUserTokensDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetUserTokens"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"userTokens"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"organisationId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"organisationId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"wrappedKeyShare"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"expiresAt"}}]}}]}}]} as unknown as DocumentNode; \ No newline at end of file diff --git a/frontend/apollo/schema.graphql b/frontend/apollo/schema.graphql index 831f3fd45..a6f8aaf57 100644 --- a/frontend/apollo/schema.graphql +++ b/frontend/apollo/schema.graphql @@ -4,8 +4,8 @@ type Query { roles(orgId: ID): [RoleType] networkAccessPolicies(organisationId: ID): [NetworkAccessPolicyType] identities(organisationId: ID): [IdentityType] + teams(organisationId: ID, teamId: ID): [TeamType] organisationNameAvailable(name: String): Boolean - verifyPassword(authHash: String!): Boolean license: PhaseLicenseType organisationLicense(organisationId: ID): ActivatedPhaseLicenseType organisationPlan(organisationId: ID): OrganisationPlanType @@ -72,13 +72,11 @@ type OrganisationType { createdAt: DateTime plan: ApiOrganisationPlanChoices! pricingVersion: Int! - requireSso: Boolean! role: RoleType memberId: ID keyring: String recovery: String planDetail: OrganisationPlanType - ssoProviders: [OrganisationSSOProviderType] } """ @@ -133,25 +131,23 @@ type SeatsUsed { total: Int } -type OrganisationSSOProviderType { +type NetworkAccessPolicyType { id: String! - providerType: ApiOrganisationSSOProviderProviderTypeChoices! name: String! - enabled: Boolean! + organisation: OrganisationType! + + """ + Comma-separated list of IP addresses or CIDR ranges (e.g. 192.168.1.1, 10.0.0.0/24) + """ + allowedIps: String! + isGlobal: Boolean! createdAt: DateTime! - updatedAt: DateTime! - publicConfig: JSONString createdBy: OrganisationMemberType + updatedAt: DateTime! updatedBy: OrganisationMemberType -} - -"""An enumeration.""" -enum ApiOrganisationSSOProviderProviderTypeChoices { - """Microsoft Entra ID""" - ENTRA_ID - - """Okta""" - OKTA + members: [OrganisationMemberType!]! + serviceAccounts: [ServiceAccountType!] + organisationMembers: [OrganisationMemberType!] } type OrganisationMemberType { @@ -347,25 +343,6 @@ type ServiceAccountTokenType { lastUsed: DateTime } -type NetworkAccessPolicyType { - id: String! - name: String! - organisation: OrganisationType! - - """ - Comma-separated list of IP addresses or CIDR ranges (e.g. 192.168.1.1, 10.0.0.0/24) - """ - allowedIps: String! - isGlobal: Boolean! - createdAt: DateTime! - createdBy: OrganisationMemberType - updatedAt: DateTime! - updatedBy: OrganisationMemberType - members: [OrganisationMemberType!]! - serviceAccounts: [ServiceAccountType!] - organisationMembers: [OrganisationMemberType!] -} - type IdentityType { id: String! organisation: OrganisationType! @@ -382,7 +359,7 @@ type IdentityType { serviceAccounts: [ServiceAccountType!]! } -union IdentityConfigUnion = AwsIamConfigType | AzureEntraConfigType +union IdentityConfigUnion = AwsIamConfigType type AwsIamConfigType { trustedPrincipals: [String] @@ -390,12 +367,6 @@ type AwsIamConfigType { stsEndpoint: String } -type AzureEntraConfigType { - tenantId: String - resource: String - allowedServicePrincipalIds: [String] -} - """An enumeration.""" enum ApiSecretEventTypeChoices { """Secret""" @@ -654,6 +625,56 @@ type UserTokenType { createdBy: OrganisationMemberType } +type TeamType { + id: String! + name: String! + description: String + memberRole: RoleType + serviceAccountRole: RoleType + isScimManaged: Boolean! + createdBy: OrganisationMemberType + createdAt: DateTime + updatedAt: DateTime! + members: [TeamMembershipType!] + apps: [AppType!] + appEnvironments: [TeamAppEnvironmentType!] + memberCount: Int +} + +type TeamMembershipType { + id: String! + orgMember: OrganisationMemberType + serviceAccount: ServiceAccountType + createdAt: DateTime + email: String + fullName: String + avatarUrl: String +} + +type AppType { + id: String! + name: String! + description: String + identityKey: String! + appVersion: Int! + appToken: String! + appSeed: String! + wrappedKeyShare: String! + createdAt: DateTime + updatedAt: DateTime! + sseEnabled: Boolean! + serviceAccounts: [ServiceAccountType]! + environments: [EnvironmentType]! + members: [OrganisationMemberType]! +} + +type TeamAppEnvironmentType { + id: String! + app: AppMembershipType! + environment: EnvironmentType! + createdAt: DateTime +} + type PhaseLicenseType { id: String customerName: String @@ -725,23 +746,6 @@ type OrganisationMemberInviteType { expiresAt: DateTime! } -type AppType { - id: String! - name: String! - description: String - identityKey: String! - appVersion: Int! - appToken: String! - appSeed: String! - wrappedKeyShare: String! - createdAt: DateTime - updatedAt: DateTime! - sseEnabled: Boolean! - serviceAccounts: [ServiceAccountType]! - environments: [EnvironmentType]! - members: [OrganisationMemberType]! -} - type KMSLogsResponseType { logs: [KMSLogType] count: Int @@ -827,6 +831,7 @@ type IdentityProviderType { name: String! description: String! iconId: String! + supported: Boolean! } type CloudFlarePagesType { @@ -1049,62 +1054,7 @@ type Mutation { The new owner must have global access (Admin role) to ensure they have all necessary keys. """ transferOrganisationOwnership(billingEmail: String, newOwnerId: ID!, organisationId: ID!): TransferOrganisationOwnershipMutation - - """ - Re-wrap THIS org's keyring after the caller proves they hold the - recovery mnemonic. Used by SSO recovery (where there's no login - password to verify against, so identity is proven via the mnemonic - alone). - - Requires identity_key matching the org's stored identity_key — proves - the caller derived the keyring from the right mnemonic. Without this - proof, an authenticated user (or session-cookie holder) could - overwrite their own wrapped_keyring with arbitrary garbage and lock - themselves out of the org permanently. - """ - updateMemberWrappedSecrets(identityKey: String!, orgId: ID!, wrappedKeyring: String!, wrappedRecovery: String!): UpdateUserWrappedSecretsMutation - - """ - Rewrap THIS org's keyring with a deviceKey derived from the user's - account password. Used by the recovery flow when the local keyring - has been lost (cleared cache, new device) but the user still - remembers their password. - - Two server-side proofs are required: - 1. identity_key matches the org's stored identity_key — proves the - caller derived the keyring from the right mnemonic. - 2. auth_hash matches user.password — proves the password the user - is wrapping the keyring with is also their account login auth. - - The mutation does NOT change user.password. The auth_hash check is a - guardrail to keep auth and wrap passwords unified; if it fails, the - user is trying to wrap the keyring with a password that doesn't - authenticate them, which we never persist. - """ - recoverAccountKeyring(authHash: String!, identityKey: String!, orgId: ID!, wrappedKeyring: String!, wrappedRecovery: String!): RecoverAccountKeyringMutation - - """ - Rotate the user's account password and rewrap the active org's - keyring with the new deviceKey. Used by the in-session change-password - dialog where the user supplies their current password, a new password, - and the org's recovery mnemonic. - - Three server-side proofs are required: - 1. current_auth_hash matches user.password — proves the caller - knows the current login password. - 2. identity_key matches the org's stored identity_key — proves the - caller derived the keyring from the right mnemonic. - 3. user is a member of the org. - - On success: user.password is set to new_auth_hash, the org's - wrapped_keyring + wrapped_recovery are replaced, and the session is - refreshed so the post-rotation HASH_SESSION_KEY stays valid. - - Only the active org's keyring is rewrapped. Other orgs the user - belongs to remain encrypted with the old deviceKey; they'll fall - through to per-org recovery on next access. - """ - changeAccountPassword(currentAuthHash: String!, identityKey: String!, newAuthHash: String!, orgId: ID!, wrappedKeyring: String!, wrappedRecovery: String!): ChangeAccountPasswordMutation + updateMemberWrappedSecrets(identityKey: String, orgId: ID!, wrappedKeyring: String!, wrappedRecovery: String!): UpdateUserWrappedSecretsMutation deleteInvitation(inviteId: ID!): DeleteInviteMutation createApp(appSeed: String!, appToken: String!, appVersion: Int!, id: ID!, identityKey: String!, name: String!, organisationId: ID!, wrappedKeyShare: String!): CreateAppMutation rotateAppKeys(appToken: String!, id: ID!, wrappedKeyShare: String!): RotateAppKeysMutation @@ -1127,14 +1077,17 @@ type Mutation { updateNetworkAccessPolicy(policyInputs: [UpdatePolicyInput]): UpdateNetworkAccessPolicyMutation deleteNetworkAccessPolicy(id: ID!): DeleteNetworkAccessPolicyMutation updateAccountNetworkAccessPolicies(accountInputs: [AccountPolicyInput], organisationId: ID!): UpdateAccountNetworkAccessPolicies - createIdentity(defaultTtlSeconds: Int!, description: String, maxTtlSeconds: Int!, name: String!, organisationId: ID!, provider: String!, resource: String, signatureTtlSeconds: Int, stsEndpoint: String, tenantId: String, tokenNamePattern: String, trustedPrincipals: String!): CreateIdentityMutation - updateIdentity(defaultTtlSeconds: Int, description: String, id: ID!, maxTtlSeconds: Int, name: String, resource: String, signatureTtlSeconds: Int, stsEndpoint: String, tenantId: String, tokenNamePattern: String, trustedPrincipals: String): UpdateIdentityMutation + createIdentity(defaultTtlSeconds: Int!, description: String, maxTtlSeconds: Int!, name: String!, organisationId: ID!, provider: String!, signatureTtlSeconds: Int, stsEndpoint: String, tokenNamePattern: String, trustedPrincipals: String!): CreateIdentityMutation + updateIdentity(defaultTtlSeconds: Int, description: String, id: ID!, maxTtlSeconds: Int, name: String, signatureTtlSeconds: Int, stsEndpoint: String, tokenNamePattern: String, trustedPrincipals: String): UpdateIdentityMutation deleteIdentity(id: ID!): DeleteIdentityMutation - createOrganisationSsoProvider(config: JSONString!, name: String!, orgId: ID!, providerType: String!): CreateOrganisationSSOProviderMutation - updateOrganisationSsoProvider(config: JSONString, enabled: Boolean, name: String, providerId: ID!): UpdateOrganisationSSOProviderMutation - deleteOrganisationSsoProvider(providerId: ID!): DeleteOrganisationSSOProviderMutation - testOrganisationSsoProvider(providerId: ID!): TestOrganisationSSOProviderMutation - updateOrganisationSecurity(orgId: ID!, requireSso: Boolean!): UpdateOrganisationSecurityMutation + createTeam(description: String, memberRoleId: ID, name: String!, organisationId: ID!, serviceAccountRoleId: ID): CreateTeamMutation + updateTeam(description: String, memberRoleId: ID, name: String, serviceAccountRoleId: ID, teamId: ID!): UpdateTeamMutation + deleteTeam(teamId: ID!): DeleteTeamMutation + addTeamMembers(memberIds: [ID!]!, memberType: MemberType = USER, teamId: ID!): AddTeamMembersMutation + removeTeamMember(memberId: ID!, memberType: MemberType = USER, teamId: ID!): RemoveTeamMemberMutation + addTeamApps(appEnvs: [AppEnvironmentInput!]!, teamId: ID!): AddTeamAppsMutation + removeTeamApp(appId: ID!, teamId: ID!): RemoveTeamAppMutation + updateTeamAppEnvironments(appId: ID!, envIds: [ID!]!, teamId: ID!): UpdateTeamAppEnvironmentsMutation createServiceAccount(handlers: [ServiceAccountHandlerInput], identityKey: String, name: String, organisationId: ID, roleId: ID, serverWrappedKeyring: String, serverWrappedRecovery: String): CreateServiceAccountMutation enableServiceAccountServerSideKeyManagement(serverWrappedKeyring: String, serverWrappedRecovery: String, serviceAccountId: ID): EnableServiceAccountServerSideKeyManagementMutation enableServiceAccountClientSideKeyManagement(serviceAccountId: ID): EnableServiceAccountClientSideKeyManagementMutation @@ -1235,68 +1188,10 @@ type TransferOrganisationOwnershipMutation { ok: Boolean } -""" -Re-wrap THIS org's keyring after the caller proves they hold the -recovery mnemonic. Used by SSO recovery (where there's no login -password to verify against, so identity is proven via the mnemonic -alone). - -Requires identity_key matching the org's stored identity_key — proves -the caller derived the keyring from the right mnemonic. Without this -proof, an authenticated user (or session-cookie holder) could -overwrite their own wrapped_keyring with arbitrary garbage and lock -themselves out of the org permanently. -""" type UpdateUserWrappedSecretsMutation { orgMember: OrganisationMemberType } -""" -Rewrap THIS org's keyring with a deviceKey derived from the user's -account password. Used by the recovery flow when the local keyring -has been lost (cleared cache, new device) but the user still -remembers their password. - -Two server-side proofs are required: - 1. identity_key matches the org's stored identity_key — proves the - caller derived the keyring from the right mnemonic. - 2. auth_hash matches user.password — proves the password the user - is wrapping the keyring with is also their account login auth. - -The mutation does NOT change user.password. The auth_hash check is a -guardrail to keep auth and wrap passwords unified; if it fails, the -user is trying to wrap the keyring with a password that doesn't -authenticate them, which we never persist. -""" -type RecoverAccountKeyringMutation { - orgMember: OrganisationMemberType -} - -""" -Rotate the user's account password and rewrap the active org's -keyring with the new deviceKey. Used by the in-session change-password -dialog where the user supplies their current password, a new password, -and the org's recovery mnemonic. - -Three server-side proofs are required: - 1. current_auth_hash matches user.password — proves the caller - knows the current login password. - 2. identity_key matches the org's stored identity_key — proves the - caller derived the keyring from the right mnemonic. - 3. user is a member of the org. - -On success: user.password is set to new_auth_hash, the org's -wrapped_keyring + wrapped_recovery are replaced, and the session is -refreshed so the post-rotation HASH_SESSION_KEY stays valid. - -Only the active org's keyring is rewrapped. Other orgs the user -belongs to remain encrypted with the old deviceKey; they'll fall -through to per-org recovery on next access. -""" -type ChangeAccountPasswordMutation { - orgMember: OrganisationMemberType -} - type DeleteInviteMutation { ok: Boolean } @@ -1438,26 +1333,41 @@ type DeleteIdentityMutation { ok: Boolean } -type CreateOrganisationSSOProviderMutation { - providerId: ID +type CreateTeamMutation { + team: TeamType } -type UpdateOrganisationSSOProviderMutation { - ok: Boolean +type UpdateTeamMutation { + team: TeamType } -type DeleteOrganisationSSOProviderMutation { +type DeleteTeamMutation { ok: Boolean } -type TestOrganisationSSOProviderMutation { - success: Boolean - error: String +type AddTeamMembersMutation { + team: TeamType } -type UpdateOrganisationSecurityMutation { - ok: Boolean - sessionInvalidated: Boolean +type RemoveTeamMemberMutation { + team: TeamType +} + +type AddTeamAppsMutation { + team: TeamType +} + +input AppEnvironmentInput { + appId: ID! + envIds: [ID!]! +} + +type RemoveTeamAppMutation { + team: TeamType +} + +type UpdateTeamAppEnvironmentsMutation { + team: TeamType } type CreateServiceAccountMutation { diff --git a/frontend/graphql/mutations/teams/addTeamApps.gql b/frontend/graphql/mutations/teams/addTeamApps.gql new file mode 100644 index 000000000..b46f18f5b --- /dev/null +++ b/frontend/graphql/mutations/teams/addTeamApps.gql @@ -0,0 +1,7 @@ +mutation AddTeamAppsOp($teamId: ID!, $appEnvs: [AppEnvironmentInput!]!) { + addTeamApps(teamId: $teamId, appEnvs: $appEnvs) { + team { + id + } + } +} diff --git a/frontend/graphql/mutations/teams/addTeamMembers.gql b/frontend/graphql/mutations/teams/addTeamMembers.gql new file mode 100644 index 000000000..d0cbbbc3a --- /dev/null +++ b/frontend/graphql/mutations/teams/addTeamMembers.gql @@ -0,0 +1,7 @@ +mutation AddTeamMembersOp($teamId: ID!, $memberIds: [ID!]!, $memberType: MemberType) { + addTeamMembers(teamId: $teamId, memberIds: $memberIds, memberType: $memberType) { + team { + id + } + } +} diff --git a/frontend/graphql/mutations/teams/createTeam.gql b/frontend/graphql/mutations/teams/createTeam.gql new file mode 100644 index 000000000..7c1e1d051 --- /dev/null +++ b/frontend/graphql/mutations/teams/createTeam.gql @@ -0,0 +1,20 @@ +mutation CreateTeamOp( + $organisationId: ID! + $name: String! + $description: String + $memberRoleId: ID + $serviceAccountRoleId: ID +) { + createTeam( + organisationId: $organisationId + name: $name + description: $description + memberRoleId: $memberRoleId + serviceAccountRoleId: $serviceAccountRoleId + ) { + team { + id + name + } + } +} diff --git a/frontend/graphql/mutations/teams/deleteTeam.gql b/frontend/graphql/mutations/teams/deleteTeam.gql new file mode 100644 index 000000000..120122120 --- /dev/null +++ b/frontend/graphql/mutations/teams/deleteTeam.gql @@ -0,0 +1,5 @@ +mutation DeleteTeamOp($teamId: ID!) { + deleteTeam(teamId: $teamId) { + ok + } +} diff --git a/frontend/graphql/mutations/teams/removeTeamApp.gql b/frontend/graphql/mutations/teams/removeTeamApp.gql new file mode 100644 index 000000000..08c5a31a6 --- /dev/null +++ b/frontend/graphql/mutations/teams/removeTeamApp.gql @@ -0,0 +1,7 @@ +mutation RemoveTeamAppOp($teamId: ID!, $appId: ID!) { + removeTeamApp(teamId: $teamId, appId: $appId) { + team { + id + } + } +} diff --git a/frontend/graphql/mutations/teams/removeTeamMember.gql b/frontend/graphql/mutations/teams/removeTeamMember.gql new file mode 100644 index 000000000..af6dd2fda --- /dev/null +++ b/frontend/graphql/mutations/teams/removeTeamMember.gql @@ -0,0 +1,7 @@ +mutation RemoveTeamMemberOp($teamId: ID!, $memberId: ID!, $memberType: MemberType) { + removeTeamMember(teamId: $teamId, memberId: $memberId, memberType: $memberType) { + team { + id + } + } +} diff --git a/frontend/graphql/mutations/teams/updateTeam.gql b/frontend/graphql/mutations/teams/updateTeam.gql new file mode 100644 index 000000000..a103737f6 --- /dev/null +++ b/frontend/graphql/mutations/teams/updateTeam.gql @@ -0,0 +1,20 @@ +mutation UpdateTeamOp( + $teamId: ID! + $name: String + $description: String + $memberRoleId: ID + $serviceAccountRoleId: ID +) { + updateTeam( + teamId: $teamId + name: $name + description: $description + memberRoleId: $memberRoleId + serviceAccountRoleId: $serviceAccountRoleId + ) { + team { + id + name + } + } +} diff --git a/frontend/graphql/mutations/teams/updateTeamAppEnvironments.gql b/frontend/graphql/mutations/teams/updateTeamAppEnvironments.gql new file mode 100644 index 000000000..45e3bffa6 --- /dev/null +++ b/frontend/graphql/mutations/teams/updateTeamAppEnvironments.gql @@ -0,0 +1,7 @@ +mutation UpdateTeamAppEnvironmentsOp($teamId: ID!, $appId: ID!, $envIds: [ID!]!) { + updateTeamAppEnvironments(teamId: $teamId, appId: $appId, envIds: $envIds) { + team { + id + } + } +} diff --git a/frontend/graphql/queries/teams/getTeams.gql b/frontend/graphql/queries/teams/getTeams.gql new file mode 100644 index 000000000..d8cd06e24 --- /dev/null +++ b/frontend/graphql/queries/teams/getTeams.gql @@ -0,0 +1,78 @@ +query GetTeams($organisationId: ID!, $teamId: ID) { + teams(organisationId: $organisationId, teamId: $teamId) { + id + name + description + memberRole { + id + name + description + color + permissions + } + serviceAccountRole { + id + name + description + color + permissions + } + isScimManaged + createdBy { + id + fullName + email + avatarUrl + } + createdAt + updatedAt + memberCount + members { + id + orgMember { + id + identityKey + role { + id + name + description + color + permissions + } + } + serviceAccount { + id + name + role { + id + name + description + color + permissions + } + } + email + fullName + avatarUrl + createdAt + } + apps { + id + name + sseEnabled + } + appEnvironments { + id + app { + id + name + } + environment { + id + name + envType + } + createdAt + } + } +} From 7f9bac16d016e8107629c20ebc11726230fa3c6a Mon Sep 17 00:00:00 2001 From: rohan Date: Tue, 31 Mar 2026 15:26:39 +0530 Subject: [PATCH 007/118] feat: add org-level teams list and detail pages with CRUD dialogs --- .../_components/AddTeamAppsDialog.tsx | 271 +++++++++++++ .../_components/AddTeamMembersDialog.tsx | 325 +++++++++++++++ .../_components/RemoveTeamMemberDialog.tsx | 73 ++++ .../[teamId]/_components/UpdateTeamDialog.tsx | 205 ++++++++++ .../app/[team]/access/teams/[teamId]/page.tsx | 370 ++++++++++++++++++ .../teams/_components/CreateTeamDialog.tsx | 204 ++++++++++ .../teams/_components/DeleteTeamDialog.tsx | 86 ++++ frontend/app/[team]/access/teams/page.tsx | 323 +++++++++++++++ 8 files changed, 1857 insertions(+) create mode 100644 frontend/app/[team]/access/teams/[teamId]/_components/AddTeamAppsDialog.tsx create mode 100644 frontend/app/[team]/access/teams/[teamId]/_components/AddTeamMembersDialog.tsx create mode 100644 frontend/app/[team]/access/teams/[teamId]/_components/RemoveTeamMemberDialog.tsx create mode 100644 frontend/app/[team]/access/teams/[teamId]/_components/UpdateTeamDialog.tsx create mode 100644 frontend/app/[team]/access/teams/[teamId]/page.tsx create mode 100644 frontend/app/[team]/access/teams/_components/CreateTeamDialog.tsx create mode 100644 frontend/app/[team]/access/teams/_components/DeleteTeamDialog.tsx create mode 100644 frontend/app/[team]/access/teams/page.tsx diff --git a/frontend/app/[team]/access/teams/[teamId]/_components/AddTeamAppsDialog.tsx b/frontend/app/[team]/access/teams/[teamId]/_components/AddTeamAppsDialog.tsx new file mode 100644 index 000000000..9f7bc2dc1 --- /dev/null +++ b/frontend/app/[team]/access/teams/[teamId]/_components/AddTeamAppsDialog.tsx @@ -0,0 +1,271 @@ +'use client' + +import { AppType, TeamType } from '@/apollo/graphql' +import GenericDialog from '@/components/common/GenericDialog' +import { Button } from '@/components/common/Button' +import { ToggleSwitch } from '@/components/common/ToggleSwitch' +import { organisationContext } from '@/contexts/organisationContext' +import { GetApps } from '@/graphql/queries/getApps.gql' +import { GetTeams } from '@/graphql/queries/teams/getTeams.gql' +import { AddTeamAppsOp } from '@/graphql/mutations/teams/addTeamApps.gql' +import { useMutation, useQuery } from '@apollo/client' +import { useContext, useRef, useState } from 'react' +import { useParams } from 'next/navigation' +import Link from 'next/link' +import { FaExclamationTriangle, FaSearch, FaTimesCircle, FaChevronDown } from 'react-icons/fa' +import clsx from 'clsx' +import { toast } from 'react-toastify' +import { Disclosure } from '@headlessui/react' +import { FaCubes } from 'react-icons/fa6' + +export const AddTeamAppsDialog = ({ team }: { team: TeamType }) => { + const { activeOrganisation: organisation } = useContext(organisationContext) + const params = useParams<{ team: string }>() + + const { data: appsData } = useQuery(GetApps, { + variables: { organisationId: organisation?.id }, + skip: !organisation, + }) + + const [addApps, { loading }] = useMutation(AddTeamAppsOp) + + const dialogRef = useRef<{ closeModal: () => void }>(null) + const [selectedEnvs, setSelectedEnvs] = useState>>({}) + const [searchQuery, setSearchQuery] = useState('') + + const existingAppIds = new Set(team.apps?.map((a) => a!.id) || []) + + const allApps: AppType[] = + appsData?.apps?.filter((app: AppType) => !existingAppIds.has(app.id)) || [] + + const sseApps = allApps.filter((app) => app.sseEnabled) + const nonSseApps = allApps.filter((app) => !app.sseEnabled) + + const filteredSseApps = + searchQuery !== '' + ? sseApps.filter((app) => app.name?.toLowerCase().includes(searchQuery.toLowerCase())) + : sseApps + + const filteredNonSseApps = + searchQuery !== '' + ? nonSseApps.filter((app) => app.name?.toLowerCase().includes(searchQuery.toLowerCase())) + : nonSseApps + + const toggleEnv = (appId: string, envId: string) => { + setSelectedEnvs((prev) => { + const next = { ...prev } + if (!next[appId]) next[appId] = new Set() + else next[appId] = new Set(next[appId]) + + if (next[appId].has(envId)) next[appId].delete(envId) + else next[appId].add(envId) + + if (next[appId].size === 0) delete next[appId] + return next + }) + } + + const toggleAllEnvs = (appId: string, envIds: string[]) => { + setSelectedEnvs((prev) => { + const next = { ...prev } + const current = next[appId] || new Set() + const allSelected = envIds.every((id) => current.has(id)) + + if (allSelected) { + delete next[appId] + } else { + next[appId] = new Set(envIds) + } + return next + }) + } + + const selectedCount = Object.keys(selectedEnvs).length + + const handleSubmit = async () => { + if (selectedCount === 0) return + try { + const appEnvs = Object.entries(selectedEnvs).map(([appId, envIds]) => ({ + appId, + envIds: Array.from(envIds), + })) + await addApps({ + variables: { + teamId: team.id, + appEnvs, + }, + refetchQueries: [ + { + query: GetTeams, + variables: { organisationId: organisation!.id, teamId: team.id }, + }, + ], + }) + toast.success(`Granted access to ${selectedCount} app${selectedCount !== 1 ? 's' : ''}`) + reset() + dialogRef.current?.closeModal() + } catch (err: any) { + toast.error(err.message) + } + } + + const reset = () => { + setSelectedEnvs({}) + setSearchQuery('') + } + + return ( + + Manage app Access + + } + buttonVariant="primary" + ref={dialogRef} + size="lg" + onClose={reset} + > +
+

+ Grant this team access to apps and environments. Only SSE-enabled apps can be assigned to + teams. +

+ +
+ + setSearchQuery(e.target.value)} + /> + setSearchQuery('')} + /> +
+ + {filteredSseApps.length === 0 && filteredNonSseApps.length === 0 ? ( +

+ {searchQuery + ? 'No apps match your search' + : 'No available apps. All SSE-enabled apps are already assigned to this team.'} +

+ ) : ( +
+ {filteredSseApps.map((app: AppType) => { + const envIds = app.environments?.filter(Boolean).map((e) => e!.id) || [] + const appSelected = selectedEnvs[app.id] + const allEnvsSelected = appSelected && envIds.every((id) => appSelected.has(id)) + + return ( + + {({ open }) => ( +
+ +
+ {app.name} + {appSelected && ( + + {appSelected.size} env{appSelected.size !== 1 ? 's' : ''} + + )} +
+ +
+ +
toggleAllEnvs(app.id, envIds)} + > + All environments + toggleAllEnvs(app.id, envIds)} + /> +
+
+ {app.environments?.map((env) => { + if (!env) return null + const isSelected = !!appSelected?.has(env.id) + return ( +
toggleEnv(app.id, env.id)} + > + {env.name} + toggleEnv(app.id, env.id)} + /> +
+ ) + })} +
+
+
+ )} +
+ ) + })} + + {filteredNonSseApps.length > 0 && ( +
+
+ + These apps need SSE enabled in settings before they can be assigned: +
+

+ {filteredNonSseApps.map((app: AppType, i: number) => ( + + + {app.name} + + {i < filteredNonSseApps.length - 1 && ', '} + + ))} +

+
+ )} +
+ )} + +
+ + {selectedCount} app{selectedCount !== 1 ? 's' : ''} selected + + +
+
+
+ ) +} diff --git a/frontend/app/[team]/access/teams/[teamId]/_components/AddTeamMembersDialog.tsx b/frontend/app/[team]/access/teams/[teamId]/_components/AddTeamMembersDialog.tsx new file mode 100644 index 000000000..620d4fa96 --- /dev/null +++ b/frontend/app/[team]/access/teams/[teamId]/_components/AddTeamMembersDialog.tsx @@ -0,0 +1,325 @@ +'use client' + +import { + OrganisationMemberType, + ServiceAccountType, + TeamMembershipType, +} from '@/apollo/graphql' +import GenericDialog from '@/components/common/GenericDialog' +import { Button } from '@/components/common/Button' +import { Avatar } from '@/components/common/Avatar' +import { ToggleSwitch } from '@/components/common/ToggleSwitch' +import { organisationContext } from '@/contexts/organisationContext' +import GetOrganisationMembers from '@/graphql/queries/organisation/getOrganisationMembers.gql' +import { GetServiceAccounts } from '@/graphql/queries/service-accounts/getServiceAccounts.gql' +import { GetTeams } from '@/graphql/queries/teams/getTeams.gql' +import { AddTeamMembersOp } from '@/graphql/mutations/teams/addTeamMembers.gql' +import { useApolloClient, useMutation, useQuery } from '@apollo/client' +import { useContext, useRef, useState } from 'react' +import { FaPlus, FaSearch, FaTimesCircle, FaUsers, FaRobot } from 'react-icons/fa' +import clsx from 'clsx' +import { toast } from 'react-toastify' +import { Tab } from '@headlessui/react' + +export const AddTeamMembersDialog = ({ + teamId, + existingMembers, +}: { + teamId: string + existingMembers: TeamMembershipType[] +}) => { + const { activeOrganisation: organisation } = useContext(organisationContext) + + const { data: membersData } = useQuery(GetOrganisationMembers, { + variables: { organisationId: organisation?.id, role: null }, + skip: !organisation, + }) + + const { data: saData } = useQuery(GetServiceAccounts, { + variables: { orgId: organisation?.id }, + skip: !organisation, + }) + + const client = useApolloClient() + const [addMembers, { loading }] = useMutation(AddTeamMembersOp) + + const dialogRef = useRef<{ closeModal: () => void }>(null) + const [selectedMembers, setSelectedMembers] = useState>(new Set()) + const [selectedSAs, setSelectedSAs] = useState>(new Set()) + const [searchQuery, setSearchQuery] = useState('') + + const existingMemberIds = new Set( + existingMembers.filter((m) => m.orgMember).map((m) => m.orgMember!.id) + ) + + const existingSaIds = new Set( + existingMembers.filter((m) => m.serviceAccount).map((m) => m.serviceAccount!.id) + ) + + const availableMembers: OrganisationMemberType[] = + membersData?.organisationMembers?.filter( + (m: OrganisationMemberType) => !existingMemberIds.has(m.id) + ) || [] + + const availableSAs: ServiceAccountType[] = + saData?.serviceAccounts?.filter( + (sa: ServiceAccountType) => !existingSaIds.has(sa.id) + ) || [] + + const filteredMembers = + searchQuery !== '' + ? availableMembers.filter( + (m) => + m.fullName?.toLowerCase().includes(searchQuery.toLowerCase()) || + m.email?.toLowerCase().includes(searchQuery.toLowerCase()) + ) + : availableMembers + + const filteredSAs = + searchQuery !== '' + ? availableSAs.filter((sa) => + sa.name?.toLowerCase().includes(searchQuery.toLowerCase()) + ) + : availableSAs + + const toggleMember = (id: string) => { + setSelectedMembers((prev) => { + const next = new Set(prev) + if (next.has(id)) next.delete(id) + else next.add(id) + return next + }) + } + + const toggleSA = (id: string) => { + setSelectedSAs((prev) => { + const next = new Set(prev) + if (next.has(id)) next.delete(id) + else next.add(id) + return next + }) + } + + const totalSelected = selectedMembers.size + selectedSAs.size + + const handleSubmit = async () => { + if (totalSelected === 0) return + try { + const promises: Promise[] = [] + + if (selectedMembers.size > 0) { + promises.push( + addMembers({ + variables: { + teamId, + memberIds: Array.from(selectedMembers), + memberType: 'USER', + }, + }) + ) + } + + if (selectedSAs.size > 0) { + promises.push( + addMembers({ + variables: { + teamId, + memberIds: Array.from(selectedSAs), + memberType: 'SERVICE', + }, + }) + ) + } + + await Promise.all(promises) + + await client.refetchQueries({ + include: [GetTeams], + }) + + const parts: string[] = [] + if (selectedMembers.size > 0) + parts.push(`${selectedMembers.size} member${selectedMembers.size !== 1 ? 's' : ''}`) + if (selectedSAs.size > 0) + parts.push( + `${selectedSAs.size} service account${selectedSAs.size !== 1 ? 's' : ''}` + ) + toast.success(`Added ${parts.join(' and ')} to team`) + reset() + dialogRef.current?.closeModal() + } catch (err: any) { + toast.error(err.message) + } + } + + const reset = () => { + setSelectedMembers(new Set()) + setSelectedSAs(new Set()) + setSearchQuery('') + } + + const selectedSummary = () => { + const parts: string[] = [] + if (selectedMembers.size > 0) + parts.push(`${selectedMembers.size} member${selectedMembers.size !== 1 ? 's' : ''}`) + if (selectedSAs.size > 0) + parts.push(`${selectedSAs.size} SA${selectedSAs.size !== 1 ? 's' : ''}`) + return parts.length > 0 ? parts.join(', ') : '0 selected' + } + + return ( + + Add Members + + } + buttonVariant="primary" + ref={dialogRef} + onClose={reset} + > +
+ { + setSearchQuery('') + }} + > + + + clsx( + 'p-2 text-xs font-medium border-b -mb-px focus:outline-none transition ease flex items-center gap-1.5', + selected + ? 'border-emerald-500 font-semibold text-zinc-900 dark:text-zinc-100' + : 'border-transparent text-zinc-600 dark:text-zinc-400 hover:text-zinc-900 dark:hover:text-zinc-100' + ) + } + > + Members + {selectedMembers.size > 0 && ( + + {selectedMembers.size} + + )} + + + clsx( + 'p-2 text-xs font-medium border-b -mb-px focus:outline-none transition ease flex items-center gap-1.5', + selected + ? 'border-emerald-500 font-semibold text-zinc-900 dark:text-zinc-100' + : 'border-transparent text-zinc-600 dark:text-zinc-400 hover:text-zinc-900 dark:hover:text-zinc-100' + ) + } + > + Service Accounts + {selectedSAs.size > 0 && ( + + {selectedSAs.size} + + )} + + + +
+ + setSearchQuery(e.target.value)} + /> + setSearchQuery('')} + /> +
+ + + + {filteredMembers.length === 0 ? ( +

+ {availableMembers.length === 0 + ? 'All organisation members are already in this team' + : 'No members match your search'} +

+ ) : ( + filteredMembers.map((member: OrganisationMemberType) => ( +
toggleMember(member.id)} + > +
+ +
+
+ {member.fullName || member.email} +
+ {member.fullName && ( +
{member.email}
+ )} +
+
+ toggleMember(member.id)} + /> +
+ )) + )} +
+ + {filteredSAs.length === 0 ? ( +

+ {availableSAs.length === 0 + ? 'All service accounts are already in this team' + : 'No service accounts match your search'} +

+ ) : ( + filteredSAs.map((sa: ServiceAccountType) => ( +
toggleSA(sa.id)} + > +
+ +
+
{sa.name}
+
{sa.id}
+
+
+ toggleSA(sa.id)} + /> +
+ )) + )} +
+
+
+ +
+ {selectedSummary()} + +
+
+
+ ) +} diff --git a/frontend/app/[team]/access/teams/[teamId]/_components/RemoveTeamMemberDialog.tsx b/frontend/app/[team]/access/teams/[teamId]/_components/RemoveTeamMemberDialog.tsx new file mode 100644 index 000000000..6a77e5526 --- /dev/null +++ b/frontend/app/[team]/access/teams/[teamId]/_components/RemoveTeamMemberDialog.tsx @@ -0,0 +1,73 @@ +'use client' + +import GenericDialog from '@/components/common/GenericDialog' +import { Button } from '@/components/common/Button' +import { organisationContext } from '@/contexts/organisationContext' +import { GetTeams } from '@/graphql/queries/teams/getTeams.gql' +import { RemoveTeamMemberOp } from '@/graphql/mutations/teams/removeTeamMember.gql' +import { useMutation } from '@apollo/client' +import { useContext, useRef } from 'react' +import { FaTimes } from 'react-icons/fa' +import { toast } from 'react-toastify' + +export const RemoveTeamMemberDialog = ({ + teamId, + memberId, + memberName, + memberType = 'USER', +}: { + teamId: string + memberId: string + memberName: string + memberType?: string +}) => { + const { activeOrganisation: organisation } = useContext(organisationContext) + + const [removeMember, { loading }] = useMutation(RemoveTeamMemberOp) + + const dialogRef = useRef<{ closeModal: () => void }>(null) + + const handleRemove = async () => { + try { + await removeMember({ + variables: { + teamId, + memberId, + memberType, + }, + refetchQueries: [ + { + query: GetTeams, + variables: { organisationId: organisation!.id, teamId }, + }, + ], + }) + toast.success(`Removed ${memberName} from team`) + dialogRef.current?.closeModal() + } catch (err: any) { + toast.error(err.message) + } + } + + return ( + Remove from team} + buttonVariant="danger" + ref={dialogRef} + size="sm" + > +
+

+ Remove {memberName} from this team? Their team-based environment key + grants will be revoked. +

+
+ +
+
+
+ ) +} diff --git a/frontend/app/[team]/access/teams/[teamId]/_components/UpdateTeamDialog.tsx b/frontend/app/[team]/access/teams/[teamId]/_components/UpdateTeamDialog.tsx new file mode 100644 index 000000000..21f30d8f2 --- /dev/null +++ b/frontend/app/[team]/access/teams/[teamId]/_components/UpdateTeamDialog.tsx @@ -0,0 +1,205 @@ +'use client' + +import { RoleType, TeamType } from '@/apollo/graphql' +import GenericDialog from '@/components/common/GenericDialog' +import { Button } from '@/components/common/Button' +import { Input } from '@/components/common/Input' +import { RoleLabel } from '@/components/users/RoleLabel' +import { organisationContext } from '@/contexts/organisationContext' +import { GetTeams } from '@/graphql/queries/teams/getTeams.gql' +import { GetRoles } from '@/graphql/queries/organisation/getRoles.gql' +import { UpdateTeamOp } from '@/graphql/mutations/teams/updateTeam.gql' +import { useMutation, useQuery } from '@apollo/client' +import { Fragment, useContext, useRef, useState } from 'react' +import { FaCog, FaChevronDown, FaUserShield, FaRobot } from 'react-icons/fa' +import { Listbox } from '@headlessui/react' +import clsx from 'clsx' +import { toast } from 'react-toastify' + +const RoleSelector = ({ + value, + onChange, + options, + icon, + title, + subtitle, +}: { + value: RoleType | null + onChange: (v: RoleType | null) => void + options: RoleType[] + icon: React.ReactNode + title: string + subtitle: string +}) => ( +
+
+
{icon}
+
+ +

{subtitle}

+
+ + {({ open }) => ( + <> + +
+ {value ? ( + + ) : ( + None (use org role) + )} + +
+
+ + + {({ active }) => ( +
+ None (use org role) +
+ )} +
+ {options.map((role: RoleType) => ( + + {({ active }) => ( +
+ +
+ )} +
+ ))} +
+ + )} +
+
+
+
+
+) + +export const UpdateTeamDialog = ({ team }: { team: TeamType }) => { + const { activeOrganisation: organisation } = useContext(organisationContext) + + const { data: roleData } = useQuery(GetRoles, { + variables: { orgId: organisation?.id }, + skip: !organisation, + }) + + const [updateTeam, { loading }] = useMutation(UpdateTeamOp) + + const dialogRef = useRef<{ closeModal: () => void }>(null) + + const [name, setName] = useState(team.name) + const [description, setDescription] = useState(team.description || '') + const [memberRole, setMemberRole] = useState( + (team.memberRole as RoleType) || null + ) + const [saRole, setSaRole] = useState( + (team.serviceAccountRole as RoleType) || null + ) + + const roleOptions = roleData?.roles || [] + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault() + try { + await updateTeam({ + variables: { + teamId: team.id, + name, + description: description || null, + memberRoleId: memberRole?.id || '', + serviceAccountRoleId: saRole?.id || '', + }, + refetchQueries: [ + { + query: GetTeams, + variables: { organisationId: organisation!.id, teamId: team.id }, + }, + ], + }) + toast.success('Team updated') + dialogRef.current?.closeModal() + } catch (err: any) { + toast.error(err.message) + } + } + + return ( + + Settings + + } + buttonVariant="secondary" + ref={dialogRef} + onClose={() => { + setName(team.name) + setDescription(team.description || '') + setMemberRole((team.memberRole as RoleType) || null) + setSaRole((team.serviceAccountRole as RoleType) || null) + }} + > +
+ + +
+ +