{"version":3,"sources":["../src/core/errors.ts","../src/core/config.ts","../src/core/version.ts","../src/core/graphql-client.ts","../src/generated/graphql.ts","../src/sandbox/errors.ts","../src/sandbox/engine.ts","../src/sandbox/template.ts","../src/sandbox/sandbox.ts"],"names":["print","engine","info"],"mappings":"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","file":"index.cjs","sourcesContent":["export interface RailwayGraphQLErrorItem {\n  message: string;\n  path?: readonly (string | number)[];\n  extensions?: Record<string, unknown>;\n  [key: string]: unknown;\n}\n\nexport class RailwayError extends Error {\n  constructor(message: string, options?: ErrorOptions) {\n    super(message, options);\n    this.name = new.target.name;\n  }\n}\n\nexport class RailwayAuthError extends RailwayError {\n  readonly variable: string;\n\n  constructor(variable: string) {\n    super(\n      `Missing Railway credential. Set ${variable} or pass it explicitly.`,\n    );\n    this.variable = variable;\n  }\n}\n\nexport class RailwayGraphQLError extends RailwayError {\n  readonly status: number;\n  readonly errors: readonly RailwayGraphQLErrorItem[];\n  readonly responseBody: unknown;\n\n  constructor(args: {\n    message: string;\n    status: number;\n    errors?: readonly RailwayGraphQLErrorItem[];\n    responseBody?: unknown;\n  }) {\n    super(args.message);\n    this.status = args.status;\n    this.errors = args.errors ?? [];\n    this.responseBody = args.responseBody;\n  }\n}\n","import { RailwayAuthError } from \"./errors.js\";\n\nexport const DEFAULT_RAILWAY_GRAPHQL_ENDPOINT =\n  \"https://backboard.railway.com/graphql/v2\";\n\nconst RAILWAY_TOKEN_ENV = \"RAILWAY_API_TOKEN\";\nconst RAILWAY_ENVIRONMENT_ENV = \"RAILWAY_ENVIRONMENT_ID\";\nconst RAILWAY_ENDPOINT_ENV = \"RAILWAY_GRAPHQL_ENDPOINT\";\n\nexport interface RailwayClientConfig {\n  token?: string;\n  endpoint?: string;\n  fetch?: typeof fetch;\n}\n\nexport interface NormalizedRailwayClientConfig {\n  token: string;\n  endpoint: string;\n  fetch: typeof fetch;\n}\n\n/**\n * Resolves credentials and transport with explicit values winning over\n * environment variables. Reading from env keeps the happy path config-free;\n * passing an explicit value lets callers source it from any variable they like.\n */\nexport function normalizeRailwayClientConfig(\n  config: RailwayClientConfig = {},\n): NormalizedRailwayClientConfig {\n  const token = firstNonEmpty(config.token, readEnv(RAILWAY_TOKEN_ENV));\n  if (!token) throw new RailwayAuthError(RAILWAY_TOKEN_ENV);\n\n  const fetchImpl = config.fetch ?? globalThis.fetch;\n  if (!fetchImpl) {\n    throw new Error(\"No fetch implementation found. Pass `fetch` in the config.\");\n  }\n\n  const endpoint =\n    firstNonEmpty(config.endpoint, readEnv(RAILWAY_ENDPOINT_ENV)) ??\n    DEFAULT_RAILWAY_GRAPHQL_ENDPOINT;\n\n  return { token, endpoint, fetch: fetchImpl };\n}\n\nexport function resolveEnvironmentId(explicit?: string): string {\n  const environmentId = firstNonEmpty(\n    explicit,\n    readEnv(RAILWAY_ENVIRONMENT_ENV),\n  );\n  if (!environmentId) throw new RailwayAuthError(RAILWAY_ENVIRONMENT_ENV);\n  return environmentId;\n}\n\n/**\n * Reads an environment variable without assuming a Node runtime, so the SDK is\n * safe to import in browsers, Deno, and edge runtimes where `process` is absent.\n */\nfunction readEnv(name: string): string | undefined {\n  if (typeof process === \"undefined\") return undefined;\n  return process.env?.[name];\n}\n\nfunction firstNonEmpty(...values: (string | undefined)[]): string | undefined {\n  for (const value of values) {\n    if (value !== undefined && value.trim().length > 0) return value;\n  }\n  return undefined;\n}\n","// Injected by tsup at build time from package.json; falls back when running\n// unbundled (vitest/tsx).\ndeclare const __RAILWAY_SDK_VERSION__: string | undefined;\n\nexport const SDK_VERSION =\n  typeof __RAILWAY_SDK_VERSION__ !== \"undefined\"\n    ? __RAILWAY_SDK_VERSION__\n    : \"0.0.0-dev\";\n\nexport const USER_AGENT = `railway-ts-sdk/${SDK_VERSION}`;\n","import type { TypedDocumentNode } from \"@graphql-typed-document-node/core\";\nimport { print, type DocumentNode } from \"graphql\";\n\nimport type { NormalizedRailwayClientConfig } from \"./config.js\";\nimport {\n  RailwayGraphQLError,\n  type RailwayGraphQLErrorItem,\n} from \"./errors.js\";\nimport { USER_AGENT } from \"./version.js\";\n\ninterface GraphQLResponse<TResult> {\n  data?: TResult;\n  errors?: RailwayGraphQLErrorItem[];\n}\n\nexport async function requestGraphQL<TResult, TVariables>(\n  config: NormalizedRailwayClientConfig,\n  document: TypedDocumentNode<TResult, TVariables>,\n  variables: TVariables,\n): Promise<TResult> {\n  const response = await config.fetch(config.endpoint, {\n    method: \"POST\",\n    headers: {\n      Accept: \"application/json\",\n      Authorization: `Bearer ${config.token}`,\n      \"Content-Type\": \"application/json\",\n      \"User-Agent\": USER_AGENT,\n    },\n    body: JSON.stringify({\n      query: print(document as DocumentNode),\n      variables,\n    }),\n  });\n\n  const body = await parseGraphQLResponse<TResult>(response);\n  const errors = body?.errors ?? [];\n\n  if (!response.ok || errors.length > 0) {\n    throw new RailwayGraphQLError({\n      message:\n        errors[0]?.message ??\n        `Railway GraphQL request failed with HTTP ${response.status}.`,\n      status: response.status,\n      errors,\n      responseBody: body,\n    });\n  }\n\n  if (!body?.data) {\n    throw new RailwayGraphQLError({\n      message: \"Railway GraphQL response did not include data.\",\n      status: response.status,\n      responseBody: body,\n    });\n  }\n\n  return body.data;\n}\n\nasync function parseGraphQLResponse<TResult>(\n  response: Response,\n): Promise<GraphQLResponse<TResult> | undefined> {\n  try {\n    return (await response.json()) as GraphQLResponse<TResult>;\n  } catch {\n    return undefined;\n  }\n}\n","import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';\nexport type Maybe<T> = T | null;\nexport type InputMaybe<T> = Maybe<T>;\nexport type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };\nexport type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> };\nexport type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> };\nexport type MakeEmpty<T extends { [key: string]: unknown }, K extends keyof T> = { [_ in K]?: never };\nexport type Incremental<T> = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never };\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n  ID: { input: string; output: string; }\n  String: { input: string; output: string; }\n  Boolean: { input: boolean; output: boolean; }\n  Int: { input: number; output: number; }\n  Float: { input: number; output: number; }\n  /** The `BigInt` scalar type represents non-fractional signed whole numeric values. */\n  BigInt: { input: string; output: string; }\n  CanvasConfig: { input: any; output: any; }\n  /** A date-time string at UTC, such as 2007-12-03T10:15:30Z, compliant with the `date-time` format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar. */\n  DateTime: { input: string; output: string; }\n  DeploymentDiagnosis: { input: any; output: any; }\n  DeploymentMeta: { input: any; output: any; }\n  DisplayConfig: { input: any; output: any; }\n  /**\n   *\n   * EnvironmentConfig is a custom scalar type that represents the serializedConfig for an environment.\n   * JSON Schema: https://backboard.railway-develop.com/schema/environment.schema.json\n   *\n   */\n  EnvironmentConfig: { input: any; output: any; }\n  EnvironmentPatchMeta: { input: any; output: any; }\n  /** EnvironmentVariables is a custom scalar type that represents a map of environment variables. */\n  EnvironmentVariables: { input: any; output: any; }\n  EventProperties: { input: any; output: any; }\n  ImageUpdateStatus: { input: any; output: any; }\n  /** The `JSON` scalar type represents JSON values as specified by [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf). */\n  JSON: { input: unknown; output: unknown; }\n  NodePositions: { input: any; output: any; }\n  NotificationChannelConfig: { input: any; output: any; }\n  NotificationPayload: { input: any; output: any; }\n  PasskeyAuthenticationCredentialJSON: { input: any; output: any; }\n  PasskeyAuthenticationOptionsJSON: { input: any; output: any; }\n  PasskeyRegistrationCredentialJSON: { input: any; output: any; }\n  PasskeyRegistrationOptionsJSON: { input: any; output: any; }\n  ProvidedEnvironmentVariables: { input: any; output: any; }\n  RailpackInfo: { input: any; output: any; }\n  /** RepoAnalysisMonorepoServices is a custom scalar type that represents a map of service names to their monorepo metadata. */\n  RepoAnalysisMonorepoServices: { input: any; output: any; }\n  /**\n   *\n   * SerializedTemplateConfig is a custom scalar type that represents the serializedConfig for a template.\n   * JSON Schema: https://backboard.railway-develop.com/schema/template.schema.json\n   *\n   */\n  SerializedTemplateConfig: { input: any; output: any; }\n  ServiceInstanceLimit: { input: any; output: any; }\n  SkippedResourceIds: { input: any; output: any; }\n  SpendCommitmentFeatureId: { input: any; output: any; }\n  SubscriptionPlanLimit: { input: any; output: any; }\n  /**\n   *\n   * Support Health Metrics for Template Support Bonus Calculation..\n   * Contains metrics calculated from community support thread performance:\n   * - solved: Percentage (0-100) of solved threads\n   * - csat: Percentage (0-100) of threads with positive customer satisfaction\n   * - aggregateHealth: Average of solved and csat when both available, otherwise just solved percentage\n   * Templates with aggregateHealth >= 80 qualify for support bonus (additional 10% kickback).\n   *\n   */\n  SupportHealthMetrics: { input: any; output: any; }\n  TemplateConfig: { input: any; output: any; }\n  TemplateMetadata: { input: any; output: any; }\n  TemplateServiceConfig: { input: any; output: any; }\n  TemplateVolume: { input: any; output: any; }\n  /** The `Upload` scalar type represents a file upload. */\n  Upload: { input: any; output: any; }\n};\n\nexport type AccessRule = {\n  __typename?: 'AccessRule';\n  disallowed?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ActiveFeatureFlag =\n  | 'CHAT_SANDBOX'\n  | 'DEBUG_SMART_DIAGNOSIS'\n  | 'EDGE_CONFIG'\n  | 'IN_DASHBOARD_SUPPORT'\n  | 'MAGIC_CONFIG'\n  | 'POSTGRES_PGBOUNCER'\n  | 'POSTGRES_PITR'\n  | 'PRIORITY_BOARDING'\n  | 'PROJECT_SANDBOXES'\n  | 'SERVICE_SHELL';\n\nexport type ActivePlatformFlag =\n  | 'BAN_APPEAL_FORM'\n  | 'CHAT_SANDBOX'\n  | 'CTRD_IMAGE_STORE_ROLLOUT'\n  | 'DEMO_PERCENTAGE_ROLLOUT'\n  | 'HA_STATIC_EGRESS_SELF_SERVICE'\n  | 'INLINE_NOTIFICATION_PROCESSING'\n  | 'IN_DASHBOARD_SUPPORT'\n  | 'KAFKA_DEPLOYMENT_STATUS_CHANGES'\n  | 'NEW_STRIPE_WEBHOOK_VERSION_ROLLOUT'\n  | 'OAUTH_DCR_KILLSWITCH'\n  | 'RADAR_AUTO_EVALUATE'\n  | 'SERVICEINSTANCE_DATALOADER_FOR_STATIC_URL'\n  | 'SPLIT_USAGE_QUERIES'\n  | 'STRIPE_METERS_NEW_ACCOUNTS'\n  | 'STRIPE_METERS_SHADOW_ENABLED'\n  | 'UPDATED_VM_QUERIES';\n\nexport type ActiveProjectFeatureFlag =\n  | 'PLACEHOLDER';\n\nexport type ActiveServiceFeatureFlag =\n  | 'COPY_VOLUME_TO_ENVIRONMENT'\n  | 'ENABLE_DOCKER_EXTENSION'\n  | 'PLACEHOLDER'\n  | 'SKIPPED_BUILDS'\n  | 'USE_EXPRESS_DEPLOY'\n  | 'USE_HA_STATIC_EGRESS'\n  | 'USE_VM_RUNTIME';\n\nexport type AdminDebugInstallationResult = {\n  __typename?: 'AdminDebugInstallationResult';\n  accessible: Scalars['Boolean']['output'];\n  accountLogin?: Maybe<Scalars['String']['output']>;\n  accountType?: Maybe<Scalars['String']['output']>;\n  createdAt?: Maybe<Scalars['DateTime']['output']>;\n  error?: Maybe<Scalars['String']['output']>;\n  missingMembersWarning?: Maybe<Scalars['String']['output']>;\n  permissionChecks: Array<AdminInstallationPermissionCheck>;\n  permissionsUpdateUrl?: Maybe<Scalars['String']['output']>;\n  rawResponse?: Maybe<Scalars['String']['output']>;\n  updatedAt?: Maybe<Scalars['DateTime']['output']>;\n};\n\nexport type AdminDeploymentListInput = {\n  createdAfter?: InputMaybe<Scalars['String']['input']>;\n  createdBefore?: InputMaybe<Scalars['String']['input']>;\n  filter?: InputMaybe<Scalars['String']['input']>;\n  status?: InputMaybe<DeploymentStatus>;\n};\n\nexport type AdminEmailTemplate = {\n  __typename?: 'AdminEmailTemplate';\n  id: Scalars['Int']['output'];\n  name: Scalars['String']['output'];\n  updatedAt: Scalars['Int']['output'];\n};\n\nexport type AdminGiftProSubscriptionInput = {\n  couponName: Scalars['String']['input'];\n  reason: Scalars['String']['input'];\n  workspaceId: Scalars['String']['input'];\n};\n\nexport type AdminInstallationPermissionCheck = {\n  __typename?: 'AdminInstallationPermissionCheck';\n  actual?: Maybe<Scalars['String']['output']>;\n  isApplicable: Scalars['Boolean']['output'];\n  isMissing: Scalars['Boolean']['output'];\n  permission: Scalars['String']['output'];\n  required: Scalars['String']['output'];\n};\n\nexport type AdminOAuthClient = Node & {\n  __typename?: 'AdminOAuthClient';\n  activeGrantCount: Scalars['Int']['output'];\n  applicationType: Scalars['String']['output'];\n  clientId: Scalars['String']['output'];\n  createdAt: Scalars['DateTime']['output'];\n  deletedAt?: Maybe<Scalars['DateTime']['output']>;\n  description?: Maybe<Scalars['String']['output']>;\n  id: Scalars['ID']['output'];\n  isDynamic: Scalars['Boolean']['output'];\n  logoUrl?: Maybe<Scalars['String']['output']>;\n  name: Scalars['String']['output'];\n  redirectUris?: Maybe<Array<Scalars['String']['output']>>;\n  secrets: Array<OAuthClientSecret>;\n  updatedAt: Scalars['DateTime']['output'];\n  workspace?: Maybe<Workspace>;\n};\n\nexport type AdminProjectOverview = {\n  __typename?: 'AdminProjectOverview';\n  owner: AdminProjectOwner;\n};\n\nexport type AdminProjectOwner = {\n  __typename?: 'AdminProjectOwner';\n  adoptionLevel?: Maybe<Scalars['Float']['output']>;\n  createdAt?: Maybe<Scalars['DateTime']['output']>;\n  directSupport?: Maybe<Scalars['Boolean']['output']>;\n  featureFlags: Array<ActiveFeatureFlag>;\n  /** @deprecated Deprecated in favour of the SpendCommitment schema. */\n  hasBAA?: Maybe<Scalars['Boolean']['output']>;\n  id?: Maybe<Scalars['String']['output']>;\n  lifetimeUsage?: Maybe<Scalars['Float']['output']>;\n  name: Scalars['String']['output'];\n  riskLevel?: Maybe<Scalars['Float']['output']>;\n  slackChannelId?: Maybe<Scalars['String']['output']>;\n  spendCommitmentFeatures?: Maybe<Array<Scalars['SpendCommitmentFeatureId']['output']>>;\n  subscriptionType?: Maybe<SubscriptionPlanType>;\n};\n\nexport type AdminReferralCode = Node & {\n  __typename?: 'AdminReferralCode';\n  code: Scalars['String']['output'];\n  createdAt: Scalars['DateTime']['output'];\n  creator: User;\n  creditAmountCents: Scalars['Int']['output'];\n  expiresAt?: Maybe<Scalars['DateTime']['output']>;\n  id: Scalars['ID']['output'];\n  isAtLimit: Scalars['Boolean']['output'];\n  isExpired: Scalars['Boolean']['output'];\n  maxUses?: Maybe<Scalars['Int']['output']>;\n  redemptions: AdminReferralCodeRedemptionsConnection;\n  updatedAt: Scalars['DateTime']['output'];\n  usageCount: Scalars['Int']['output'];\n};\n\n\nexport type AdminReferralCodeRedemptionsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type AdminReferralCodeCreateInput = {\n  code: Scalars['String']['input'];\n  creditAmountCents: Scalars['Int']['input'];\n  expiresAt?: InputMaybe<Scalars['DateTime']['input']>;\n  maxUses?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type AdminReferralCodeRedemption = Node & {\n  __typename?: 'AdminReferralCodeRedemption';\n  couponApplicationCount: Scalars['Int']['output'];\n  createdAt: Scalars['DateTime']['output'];\n  id: Scalars['ID']['output'];\n  totalCouponApplications: Scalars['Int']['output'];\n  workspace: Workspace;\n};\n\nexport type AdminReferralCodeRedemptionsConnection = {\n  __typename?: 'AdminReferralCodeRedemptionsConnection';\n  edges: Array<AdminReferralCodeRedemptionsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type AdminReferralCodeRedemptionsConnectionEdge = {\n  __typename?: 'AdminReferralCodeRedemptionsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: AdminReferralCodeRedemption;\n};\n\nexport type AdminReferralCodeUpdateInput = {\n  creditAmountCents?: InputMaybe<Scalars['Int']['input']>;\n  expiresAt?: InputMaybe<Scalars['DateTime']['input']>;\n  id: Scalars['String']['input'];\n  maxUses?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type AdminRepo = Node & {\n  __typename?: 'AdminRepo';\n  createdAt: Scalars['DateTime']['output'];\n  defaultBranch: Scalars['String']['output'];\n  description?: Maybe<Scalars['String']['output']>;\n  fullName: Scalars['String']['output'];\n  githubId: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  installationId?: Maybe<Scalars['String']['output']>;\n  isArchived: Scalars['Boolean']['output'];\n  isDisabled: Scalars['Boolean']['output'];\n  isFork: Scalars['Boolean']['output'];\n  name: Scalars['String']['output'];\n  ownerAvatarUrl?: Maybe<Scalars['String']['output']>;\n  ownerId: Scalars['String']['output'];\n  ownerLogin: Scalars['String']['output'];\n  refs: Array<Scalars['String']['output']>;\n  updatedAt: Scalars['DateTime']['output'];\n  visibility: Scalars['String']['output'];\n};\n\nexport type AdminSendNotificationInput = {\n  channelConfig: Scalars['NotificationChannelConfig']['input'];\n  deliveryMethods: Array<NotificationDeliveryType>;\n  deploymentId?: InputMaybe<Scalars['String']['input']>;\n  description: Scalars['String']['input'];\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  projectId?: InputMaybe<Scalars['String']['input']>;\n  serviceId?: InputMaybe<Scalars['String']['input']>;\n  severity: NotificationSeverity;\n  title: Scalars['String']['input'];\n  workspaceId?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type AdminSpendCommitmentUpsertInput = {\n  customerId: Scalars['String']['input'];\n  features: Array<Scalars['SpendCommitmentFeatureId']['input']>;\n  minSpendAmountCents: Scalars['Int']['input'];\n};\n\nexport type AdminStats = {\n  __typename?: 'AdminStats';\n  deploysFailedLastHour: Scalars['Int']['output'];\n  deploysInProgressHour: Scalars['Int']['output'];\n  deploysSuccessfulLastHour: Scalars['Int']['output'];\n  latestDeploys: Array<Deployment>;\n  latestWorkspaces: Array<Workspace>;\n  numHobby: Scalars['Int']['output'];\n  numPro: Scalars['Int']['output'];\n  totalPlatformUsage?: Maybe<TotalUsage>;\n};\n\nexport type AdminUnsubscribeEmailResult = {\n  __typename?: 'AdminUnsubscribeEmailResult';\n  cioProfilesAffected: Scalars['Int']['output'];\n  email: Scalars['String']['output'];\n  preferencesUpdated: Scalars['Boolean']['output'];\n  railwayUserId?: Maybe<Scalars['ID']['output']>;\n};\n\nexport type AdminVolumeMountTriage = {\n  __typename?: 'AdminVolumeMountTriage';\n  environmentId: Scalars['String']['output'];\n  recommendedDetachVolumeInstanceIds: Array<Scalars['String']['output']>;\n  recommendedKeepVolumeInstanceId?: Maybe<Scalars['String']['output']>;\n  runningDeploymentInstanceId?: Maybe<Scalars['String']['output']>;\n  runningDeploymentInstanceStatus?: Maybe<Scalars['String']['output']>;\n  runningStacker?: Maybe<Scalars['String']['output']>;\n  runningStackerVolumeExternalIds: Array<Scalars['String']['output']>;\n  serviceId: Scalars['String']['output'];\n  serviceName: Scalars['String']['output'];\n  unresolvedReason?: Maybe<Scalars['String']['output']>;\n  volumes: Array<AdminVolumeMountTriageVolume>;\n};\n\nexport type AdminVolumeMountTriageVolume = {\n  __typename?: 'AdminVolumeMountTriageVolume';\n  createdAt: Scalars['DateTime']['output'];\n  externalId: Scalars['String']['output'];\n  isOnRunningStacker: Scalars['Boolean']['output'];\n  mountPath: Scalars['String']['output'];\n  region?: Maybe<Scalars['String']['output']>;\n  stacker?: Maybe<Scalars['String']['output']>;\n  stackerByZfsId?: Maybe<Scalars['String']['output']>;\n  state?: Maybe<Scalars['String']['output']>;\n  volumeId: Scalars['String']['output'];\n  volumeInstanceId: Scalars['String']['output'];\n  volumeName: Scalars['String']['output'];\n};\n\nexport type AdoptionInfo = Node & {\n  __typename?: 'AdoptionInfo';\n  adoptionLevel?: Maybe<Scalars['Float']['output']>;\n  createdAt: Scalars['DateTime']['output'];\n  deltaLevel?: Maybe<Scalars['Float']['output']>;\n  id: Scalars['ID']['output'];\n  matchedIcpEmail?: Maybe<Scalars['String']['output']>;\n  monthlyEstimatedUsage?: Maybe<Scalars['Float']['output']>;\n  numConfigFile: Scalars['Int']['output'];\n  numCronSchedule: Scalars['Int']['output'];\n  numDeploys: Scalars['Int']['output'];\n  numEnvs: Scalars['Int']['output'];\n  numFailedDeploys: Scalars['Int']['output'];\n  numHealthcheck: Scalars['Int']['output'];\n  numIconConfig: Scalars['Int']['output'];\n  numRegion: Scalars['Int']['output'];\n  numReplicas: Scalars['Int']['output'];\n  numRootDirectory: Scalars['Int']['output'];\n  numSeats: Scalars['Int']['output'];\n  numServices: Scalars['Int']['output'];\n  numVariables: Scalars['Int']['output'];\n  numWatchPatterns: Scalars['Int']['output'];\n  totalCores?: Maybe<Scalars['Float']['output']>;\n  totalDisk?: Maybe<Scalars['Float']['output']>;\n  totalNetwork?: Maybe<Scalars['Float']['output']>;\n  updatedAt: Scalars['DateTime']['output'];\n  workspace: Workspace;\n};\n\nexport type AgentAbortedEvent = {\n  __typename?: 'AgentAbortedEvent';\n  abortedAt: Scalars['String']['output'];\n  agentName: Scalars['String']['output'];\n  agentRunId: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  reason?: Maybe<Scalars['String']['output']>;\n  type: Scalars['String']['output'];\n};\n\nexport type AgentChunkEvent = {\n  __typename?: 'AgentChunkEvent';\n  agentName: Scalars['String']['output'];\n  agentRunId: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  text: Scalars['String']['output'];\n  type: Scalars['String']['output'];\n};\n\nexport type AgentCompletedEvent = {\n  __typename?: 'AgentCompletedEvent';\n  agentName: Scalars['String']['output'];\n  agentRunId: Scalars['String']['output'];\n  completedAt: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  result: AgentResult;\n  type: Scalars['String']['output'];\n};\n\nexport type AgentErrorEvent = {\n  __typename?: 'AgentErrorEvent';\n  agentName: Scalars['String']['output'];\n  agentRunId: Scalars['String']['output'];\n  error: Scalars['String']['output'];\n  failedAt: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  type: Scalars['String']['output'];\n};\n\nexport type AgentMessage = {\n  __typename?: 'AgentMessage';\n  content: Scalars['String']['output'];\n  role: Scalars['String']['output'];\n};\n\nexport type AgentResult = {\n  __typename?: 'AgentResult';\n  finishReason?: Maybe<Scalars['String']['output']>;\n  steps: Array<Scalars['JSON']['output']>;\n  text: Scalars['String']['output'];\n  usage?: Maybe<AgentTokenUsage>;\n};\n\nexport type AgentStartedEvent = {\n  __typename?: 'AgentStartedEvent';\n  agentName: Scalars['String']['output'];\n  agentRunId: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  startedAt: Scalars['String']['output'];\n  type: Scalars['String']['output'];\n};\n\nexport type AgentStepFinish = {\n  __typename?: 'AgentStepFinish';\n  finishReason?: Maybe<Scalars['String']['output']>;\n  text: Scalars['String']['output'];\n  toolCalls?: Maybe<Array<AgentToolCallChunk>>;\n  toolResults?: Maybe<Array<AgentToolResultChunk>>;\n  usage?: Maybe<AgentTokenUsage>;\n};\n\nexport type AgentStepFinishEvent = {\n  __typename?: 'AgentStepFinishEvent';\n  agentName: Scalars['String']['output'];\n  agentRunId: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  step: AgentStepFinish;\n  type: Scalars['String']['output'];\n};\n\nexport type AgentStreamEvent = AgentAbortedEvent | AgentChunkEvent | AgentCompletedEvent | AgentErrorEvent | AgentStartedEvent | AgentStepFinishEvent | AgentSubagentCompleteEvent | AgentSubagentStartEvent | AgentSuggestionsEvent | AgentToolCallDeltaEvent | AgentToolCallReadyEvent | AgentToolCallStreamingStartEvent | AgentToolExecutionCompleteEvent | AgentToolExecutionStartEvent | AgentToolOutputDeltaEvent | AgentWorkflowCompletedEvent | AgentWorkflowStartedEvent;\n\nexport type AgentSubagentCompleteEvent = {\n  __typename?: 'AgentSubagentCompleteEvent';\n  agentName: Scalars['String']['output'];\n  agentRunId: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  result?: Maybe<Scalars['String']['output']>;\n  type: Scalars['String']['output'];\n};\n\nexport type AgentSubagentStartEvent = {\n  __typename?: 'AgentSubagentStartEvent';\n  agentName: Scalars['String']['output'];\n  agentRunId: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  parentAgentName: Scalars['String']['output'];\n  type: Scalars['String']['output'];\n};\n\nexport type AgentSuggestionsEvent = {\n  __typename?: 'AgentSuggestionsEvent';\n  id: Scalars['String']['output'];\n  suggestions: Array<ChatSuggestion>;\n  type: Scalars['String']['output'];\n};\n\nexport type AgentTokenUsage = {\n  __typename?: 'AgentTokenUsage';\n  cachedInputTokens?: Maybe<Scalars['Int']['output']>;\n  inputTokens?: Maybe<Scalars['Int']['output']>;\n  outputTokens?: Maybe<Scalars['Int']['output']>;\n  reasoningTokens?: Maybe<Scalars['Int']['output']>;\n  totalTokens?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type AgentToolCallChunk = {\n  __typename?: 'AgentToolCallChunk';\n  from: Scalars['String']['output'];\n  payload: AgentToolCallPayload;\n  runId: Scalars['String']['output'];\n  type: Scalars['String']['output'];\n};\n\nexport type AgentToolCallDeltaEvent = {\n  __typename?: 'AgentToolCallDeltaEvent';\n  agentName: Scalars['String']['output'];\n  agentRunId: Scalars['String']['output'];\n  argsTextDelta: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  toolCallId: Scalars['String']['output'];\n  type: Scalars['String']['output'];\n};\n\nexport type AgentToolCallPayload = {\n  __typename?: 'AgentToolCallPayload';\n  args?: Maybe<Scalars['JSON']['output']>;\n  dynamic?: Maybe<Scalars['Boolean']['output']>;\n  output?: Maybe<Scalars['JSON']['output']>;\n  toolCallId: Scalars['String']['output'];\n  toolName: Scalars['String']['output'];\n};\n\nexport type AgentToolCallReadyEvent = {\n  __typename?: 'AgentToolCallReadyEvent';\n  agentName: Scalars['String']['output'];\n  agentRunId: Scalars['String']['output'];\n  args?: Maybe<Scalars['JSON']['output']>;\n  id: Scalars['String']['output'];\n  toolCallId: Scalars['String']['output'];\n  toolName: Scalars['String']['output'];\n  type: Scalars['String']['output'];\n};\n\nexport type AgentToolCallStreamingStartEvent = {\n  __typename?: 'AgentToolCallStreamingStartEvent';\n  agentName: Scalars['String']['output'];\n  agentRunId: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  toolCallId: Scalars['String']['output'];\n  toolName: Scalars['String']['output'];\n  type: Scalars['String']['output'];\n};\n\nexport type AgentToolExecutionCompleteEvent = {\n  __typename?: 'AgentToolExecutionCompleteEvent';\n  agentName: Scalars['String']['output'];\n  agentRunId: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  isError?: Maybe<Scalars['Boolean']['output']>;\n  result?: Maybe<Scalars['JSON']['output']>;\n  toolCallId: Scalars['String']['output'];\n  toolName: Scalars['String']['output'];\n  type: Scalars['String']['output'];\n};\n\nexport type AgentToolExecutionStartEvent = {\n  __typename?: 'AgentToolExecutionStartEvent';\n  agentName: Scalars['String']['output'];\n  agentRunId: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  toolCallId: Scalars['String']['output'];\n  toolName: Scalars['String']['output'];\n  type: Scalars['String']['output'];\n};\n\nexport type AgentToolOutputDeltaEvent = {\n  __typename?: 'AgentToolOutputDeltaEvent';\n  agentName: Scalars['String']['output'];\n  agentRunId: Scalars['String']['output'];\n  delta?: Maybe<Scalars['JSON']['output']>;\n  id: Scalars['String']['output'];\n  toolCallId: Scalars['String']['output'];\n  type: Scalars['String']['output'];\n};\n\nexport type AgentToolResultChunk = {\n  __typename?: 'AgentToolResultChunk';\n  from: Scalars['String']['output'];\n  payload: AgentToolResultPayload;\n  runId: Scalars['String']['output'];\n  type: Scalars['String']['output'];\n};\n\nexport type AgentToolResultPayload = {\n  __typename?: 'AgentToolResultPayload';\n  args?: Maybe<Scalars['JSON']['output']>;\n  dynamic?: Maybe<Scalars['Boolean']['output']>;\n  isError?: Maybe<Scalars['Boolean']['output']>;\n  result?: Maybe<Scalars['JSON']['output']>;\n  toolCallId: Scalars['String']['output'];\n  toolName: Scalars['String']['output'];\n};\n\nexport type AgentUsageLimitSetInput = {\n  hardLimitCents: Scalars['Int']['input'];\n  softLimitCents?: InputMaybe<Scalars['Int']['input']>;\n  workspaceId: Scalars['String']['input'];\n};\n\nexport type AgentUsageSummary = {\n  __typename?: 'AgentUsageSummary';\n  billingPeriodEnd: Scalars['DateTime']['output'];\n  hardLimitCents?: Maybe<Scalars['Int']['output']>;\n  softLimitCents?: Maybe<Scalars['Int']['output']>;\n  totalUsedCents: Scalars['Int']['output'];\n  usageRemaining?: Maybe<Scalars['Float']['output']>;\n};\n\nexport type AgentWorkflowCompletedEvent = {\n  __typename?: 'AgentWorkflowCompletedEvent';\n  completedAt: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  type: Scalars['String']['output'];\n};\n\nexport type AgentWorkflowStartedEvent = {\n  __typename?: 'AgentWorkflowStartedEvent';\n  id: Scalars['String']['output'];\n  startedAt: Scalars['String']['output'];\n  type: Scalars['String']['output'];\n};\n\n/** The aggregated usage of a single measurement. */\nexport type AggregatedUsage = {\n  __typename?: 'AggregatedUsage';\n  /** The measurement that was aggregated. */\n  measurement: MetricMeasurement;\n  /** The tags that were used to group the metric. Only the tags that were used in the `groupBy` will be present. */\n  tags: MetricTags;\n  /** The aggregated value. */\n  value: Scalars['Float']['output'];\n};\n\nexport type AllDomains = {\n  __typename?: 'AllDomains';\n  customDomains: Array<CustomDomain>;\n  serviceDomains: Array<ServiceDomain>;\n};\n\nexport type ApiToken = Node & {\n  __typename?: 'ApiToken';\n  displayToken: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  name: Scalars['String']['output'];\n  workspaceId?: Maybe<Scalars['String']['output']>;\n};\n\n/** Information about the current API token and its accessible workspaces. */\nexport type ApiTokenContext = {\n  __typename?: 'ApiTokenContext';\n  /** Workspaces this subject can operate on via this token or session. */\n  workspaces: Array<ApiTokenWorkspace>;\n};\n\nexport type ApiTokenCreateInput = {\n  name: Scalars['String']['input'];\n  workspaceId?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type ApiTokenRateLimit = {\n  __typename?: 'ApiTokenRateLimit';\n  remainingPoints: Scalars['Int']['output'];\n  resetsAt: Scalars['String']['output'];\n};\n\nexport type ApiTokenWorkspace = {\n  __typename?: 'ApiTokenWorkspace';\n  id: Scalars['String']['output'];\n  name: Scalars['String']['output'];\n};\n\nexport type ApplicationTracingState =\n  | 'disabled'\n  | 'enabled';\n\nexport type AppliedByMember = {\n  __typename?: 'AppliedByMember';\n  avatar?: Maybe<Scalars['String']['output']>;\n  email: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  name?: Maybe<Scalars['String']['output']>;\n  username?: Maybe<Scalars['String']['output']>;\n};\n\nexport type AuditLog = Node & {\n  __typename?: 'AuditLog';\n  context?: Maybe<Scalars['JSON']['output']>;\n  createdAt: Scalars['DateTime']['output'];\n  environment?: Maybe<Environment>;\n  environmentId?: Maybe<Scalars['String']['output']>;\n  eventType: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  payload?: Maybe<Scalars['JSON']['output']>;\n  project?: Maybe<Project>;\n  projectId?: Maybe<Scalars['String']['output']>;\n  workspaceId?: Maybe<Scalars['String']['output']>;\n};\n\nexport type AuditLogEventTypeInfo = {\n  __typename?: 'AuditLogEventTypeInfo';\n  description: Scalars['String']['output'];\n  eventType: Scalars['String']['output'];\n};\n\nexport type AuditLogFilterInput = {\n  /** Filter events created on or before this date */\n  endDate?: InputMaybe<Scalars['DateTime']['input']>;\n  /** Filter events for a single environment */\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  /** List of event types to filter by */\n  eventTypes?: InputMaybe<Array<Scalars['String']['input']>>;\n  /** Filter events for a single project */\n  projectId?: InputMaybe<Scalars['String']['input']>;\n  /** Filter events created on or after this date */\n  startDate?: InputMaybe<Scalars['DateTime']['input']>;\n};\n\nexport type AutoRefundSettings = {\n  __typename?: 'AutoRefundSettings';\n  hobbyThreshold: Scalars['Int']['output'];\n  proThreshold: Scalars['Int']['output'];\n};\n\nexport type BackupUpdate = {\n  __typename?: 'BackupUpdate';\n  deletedAt?: Maybe<Scalars['DateTime']['output']>;\n  error?: Maybe<Scalars['String']['output']>;\n  id: Scalars['String']['output'];\n  isRestoration?: Maybe<Scalars['Boolean']['output']>;\n  name?: Maybe<Scalars['String']['output']>;\n  restoredVolumeInstanceId?: Maybe<Scalars['String']['output']>;\n};\n\nexport type BanAppealFormInput = {\n  attestation: Scalars['Boolean']['input'];\n  message: Scalars['String']['input'];\n  type: BanAppealType;\n  workspaceId: Scalars['String']['input'];\n};\n\nexport type BanAppealType =\n  | 'USER'\n  | 'WORKSPACE';\n\nexport type BanReasonHistory = Node & {\n  __typename?: 'BanReasonHistory';\n  actor?: Maybe<User>;\n  banReason?: Maybe<Scalars['String']['output']>;\n  createdAt: Scalars['DateTime']['output'];\n  id: Scalars['ID']['output'];\n};\n\nexport type BannedImage = Node & {\n  __typename?: 'BannedImage';\n  bannedByUser: User;\n  createdAt: Scalars['DateTime']['output'];\n  id: Scalars['ID']['output'];\n  image: Scalars['String']['output'];\n  reason: Scalars['String']['output'];\n  updatedAt: Scalars['DateTime']['output'];\n  workspaces: Array<BannedImageWorkspace>;\n  workspacesCount: Scalars['Int']['output'];\n};\n\n\nexport type BannedImageWorkspacesArgs = {\n  limit?: InputMaybe<Scalars['Int']['input']>;\n  offset?: InputMaybe<Scalars['Int']['input']>;\n  unbannedOnly?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n\nexport type BannedImageWorkspacesCountArgs = {\n  unbannedOnly?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\nexport type BannedImageWorkspace = {\n  __typename?: 'BannedImageWorkspace';\n  banReason?: Maybe<Scalars['String']['output']>;\n  id: Scalars['String']['output'];\n  name: Scalars['String']['output'];\n};\n\nexport type BaseEnvironmentOverrideInput = {\n  baseEnvironmentOverrideId?: InputMaybe<Scalars['String']['input']>;\n};\n\n/** The billing period for a customers subscription. */\nexport type BillingPeriod = {\n  __typename?: 'BillingPeriod';\n  end: Scalars['DateTime']['output'];\n  start: Scalars['DateTime']['output'];\n};\n\nexport type Bucket = Node & {\n  __typename?: 'Bucket';\n  createdAt: Scalars['DateTime']['output'];\n  id: Scalars['ID']['output'];\n  name: Scalars['String']['output'];\n  project: Project;\n  projectId: Scalars['String']['output'];\n  updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type BucketCreateInput = {\n  /** [unimplemented] The environment to deploy the bucket instances into. If `null`, the bucket will not be deployed to any environment. `undefined` will deploy to all environments. */\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  /** The name of the bucket */\n  name?: InputMaybe<Scalars['String']['input']>;\n  /** The project to create the bucket in */\n  projectId: Scalars['String']['input'];\n};\n\nexport type BucketInstance = Node & {\n  __typename?: 'BucketInstance';\n  bucket: Bucket;\n  bucketId: Scalars['String']['output'];\n  createdAt: Scalars['DateTime']['output'];\n  environment: Environment;\n  environmentId: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  region?: Maybe<Scalars['String']['output']>;\n  sizeBytes?: Maybe<Scalars['BigInt']['output']>;\n};\n\nexport type BucketInstanceDetails = {\n  __typename?: 'BucketInstanceDetails';\n  objectCount: Scalars['BigInt']['output'];\n  sizeBytes: Scalars['BigInt']['output'];\n};\n\nexport type BucketS3CompatibleCredentials = {\n  __typename?: 'BucketS3CompatibleCredentials';\n  accessKeyId: Scalars['String']['output'];\n  bucketName: Scalars['String']['output'];\n  createdAt: Scalars['DateTime']['output'];\n  endpoint: Scalars['String']['output'];\n  region: Scalars['String']['output'];\n  secretAccessKey: Scalars['String']['output'];\n  urlStyle: Scalars['String']['output'];\n};\n\nexport type BucketUpdateInput = {\n  name: Scalars['String']['input'];\n};\n\n/** The combined usage of all buckets. */\nexport type BucketUsage = {\n  __typename?: 'BucketUsage';\n  gbMonths: Scalars['Int']['output'];\n};\n\nexport type Builder =\n  | 'HEROKU'\n  | 'NIXPACKS'\n  | 'PAKETO'\n  | 'RAILPACK';\n\nexport type CdnProvider =\n  | 'DETECTED_CDN_PROVIDER_CLOUDFLARE'\n  | 'DETECTED_CDN_PROVIDER_UNSPECIFIED'\n  | 'UNRECOGNIZED';\n\nexport type CanvasViewMergePreview = {\n  __typename?: 'CanvasViewMergePreview';\n  mutations: Array<Scalars['JSON']['output']>;\n  state: Scalars['JSON']['output'];\n};\n\n/** The type of error that occurred during certificate issuance */\nexport type CertificateErrorType =\n  | 'CERTIFICATE_ERROR_TYPE_AUTHORIZATION_FAILED'\n  | 'CERTIFICATE_ERROR_TYPE_DNS_VALIDATION'\n  | 'CERTIFICATE_ERROR_TYPE_INTERNAL'\n  | 'CERTIFICATE_ERROR_TYPE_KEY_GENERATION'\n  | 'CERTIFICATE_ERROR_TYPE_ORDER_CREATION'\n  | 'CERTIFICATE_ERROR_TYPE_RATE_LIMIT'\n  | 'CERTIFICATE_ERROR_TYPE_UNSPECIFIED'\n  | 'UNRECOGNIZED';\n\nexport type CertificatePublicData = {\n  __typename?: 'CertificatePublicData';\n  domainNames: Array<Scalars['String']['output']>;\n  expiresAt?: Maybe<Scalars['DateTime']['output']>;\n  fingerprintSha256: Scalars['String']['output'];\n  issuedAt?: Maybe<Scalars['DateTime']['output']>;\n  keyType: KeyType;\n};\n\nexport type CertificateStatus =\n  | 'CERTIFICATE_STATUS_TYPE_ISSUE_FAILED'\n  | 'CERTIFICATE_STATUS_TYPE_ISSUING'\n  | 'CERTIFICATE_STATUS_TYPE_UNSPECIFIED'\n  | 'CERTIFICATE_STATUS_TYPE_VALID'\n  | 'CERTIFICATE_STATUS_TYPE_VALIDATING_OWNERSHIP'\n  | 'UNRECOGNIZED';\n\nexport type CertificateStatusDetailed =\n  | 'CERTIFICATE_STATUS_TYPE_DETAILED_CLEANING_UP'\n  | 'CERTIFICATE_STATUS_TYPE_DETAILED_COMPLETE'\n  | 'CERTIFICATE_STATUS_TYPE_DETAILED_CREATING_ORDER'\n  | 'CERTIFICATE_STATUS_TYPE_DETAILED_DOWNLOADING_CERTIFICATE'\n  | 'CERTIFICATE_STATUS_TYPE_DETAILED_FAILED'\n  | 'CERTIFICATE_STATUS_TYPE_DETAILED_FETCHING_AUTHORIZATIONS'\n  | 'CERTIFICATE_STATUS_TYPE_DETAILED_FINALIZING_ORDER'\n  | 'CERTIFICATE_STATUS_TYPE_DETAILED_GENERATING_KEYS'\n  | 'CERTIFICATE_STATUS_TYPE_DETAILED_INITIATING_CHALLENGES'\n  | 'CERTIFICATE_STATUS_TYPE_DETAILED_POLLING_AUTHORIZATIONS'\n  | 'CERTIFICATE_STATUS_TYPE_DETAILED_PRESENTING_CHALLENGES'\n  | 'CERTIFICATE_STATUS_TYPE_DETAILED_UNSPECIFIED'\n  | 'UNRECOGNIZED';\n\nexport type ChangelogSendInput = {\n  changelogId: Scalars['String']['input'];\n  changelogSlug: Scalars['String']['input'];\n  changelogTitle: Scalars['String']['input'];\n  isTestEmail: Scalars['Boolean']['input'];\n};\n\nexport type ChatAttachmentInput = {\n  content: Scalars['String']['input'];\n  mimeType: Scalars['String']['input'];\n  name: Scalars['String']['input'];\n};\n\nexport type ChatMessage = {\n  __typename?: 'ChatMessage';\n  content: Scalars['String']['output'];\n  createdAt: Scalars['DateTime']['output'];\n  id: Scalars['String']['output'];\n  parts: Array<ChatMessagePart>;\n  role: ChatMessageRole;\n};\n\nexport type ChatMessageAttachmentPart = {\n  __typename?: 'ChatMessageAttachmentPart';\n  content: Scalars['String']['output'];\n  mimeType: Scalars['String']['output'];\n  name: Scalars['String']['output'];\n  type: Scalars['String']['output'];\n};\n\nexport type ChatMessagePart = ChatMessageAttachmentPart | ChatMessageTextPart | ChatMessageToolCallPart;\n\nexport type ChatMessageRole =\n  | 'assistant'\n  | 'system'\n  | 'tool'\n  | 'user';\n\nexport type ChatMessageTextPart = {\n  __typename?: 'ChatMessageTextPart';\n  content: Scalars['String']['output'];\n  type: Scalars['String']['output'];\n};\n\nexport type ChatMessageToolCallPart = {\n  __typename?: 'ChatMessageToolCallPart';\n  args?: Maybe<Scalars['JSON']['output']>;\n  id: Scalars['String']['output'];\n  isError?: Maybe<Scalars['Boolean']['output']>;\n  result?: Maybe<Scalars['JSON']['output']>;\n  toolName: Scalars['String']['output'];\n  type: Scalars['String']['output'];\n};\n\nexport type ChatSendMessageResponse = {\n  __typename?: 'ChatSendMessageResponse';\n  streamId: Scalars['String']['output'];\n  threadId: Scalars['String']['output'];\n};\n\nexport type ChatSuggestion = {\n  __typename?: 'ChatSuggestion';\n  label: Scalars['String']['output'];\n  message: Scalars['String']['output'];\n};\n\nexport type ChatThread = {\n  __typename?: 'ChatThread';\n  createdAt: Scalars['DateTime']['output'];\n  id: Scalars['String']['output'];\n  resourceId: Scalars['String']['output'];\n  title?: Maybe<Scalars['String']['output']>;\n  updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type ClearDomainTrafficLimitInput = {\n  domainName: Scalars['String']['input'];\n};\n\nexport type CliEventTrackInput = {\n  agentSessionId?: InputMaybe<Scalars['String']['input']>;\n  arch: Scalars['String']['input'];\n  caller?: InputMaybe<Scalars['String']['input']>;\n  cliVersion: Scalars['String']['input'];\n  command: Scalars['String']['input'];\n  durationMs: Scalars['Int']['input'];\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  errorClass?: InputMaybe<Scalars['String']['input']>;\n  errorMessage?: InputMaybe<Scalars['String']['input']>;\n  installRequestId?: InputMaybe<Scalars['String']['input']>;\n  isCi: Scalars['Boolean']['input'];\n  os: Scalars['String']['input'];\n  projectId?: InputMaybe<Scalars['String']['input']>;\n  serviceId?: InputMaybe<Scalars['String']['input']>;\n  sessionId?: InputMaybe<Scalars['String']['input']>;\n  subCommand?: InputMaybe<Scalars['String']['input']>;\n  success: Scalars['Boolean']['input'];\n  workspaceId?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type ClickhouseBackpressureStatus = {\n  __typename?: 'ClickhouseBackpressureStatus';\n  billingEnabled: Scalars['Boolean']['output'];\n  billingMaxConcurrent: Scalars['Int']['output'];\n  logsMaxConcurrent: Scalars['Int']['output'];\n  metricsMaxConcurrent: Scalars['Int']['output'];\n};\n\nexport type Cluster = {\n  __typename?: 'Cluster';\n  id: Scalars['String']['output'];\n  label?: Maybe<Scalars['String']['output']>;\n  namespace: Scalars['String']['output'];\n  overlayHIDPrefix: Scalars['Int']['output'];\n  regionId: Scalars['String']['output'];\n};\n\nexport type CnameCheck = {\n  __typename?: 'CnameCheck';\n  link?: Maybe<Scalars['String']['output']>;\n  message: Scalars['String']['output'];\n  status: CnameCheckStatus;\n};\n\nexport type CnameCheckStatus =\n  | 'ERROR'\n  | 'INFO'\n  | 'INVALID'\n  | 'VALID'\n  | 'WAITING';\n\nexport type ComplianceAgreementsInfo = {\n  __typename?: 'ComplianceAgreementsInfo';\n  /** Whether the workspace has a signed Business Associate Agreement (HIPAA) */\n  hasBAA: Scalars['Boolean']['output'];\n  /** Whether the workspace has a Data Processing Agreement (GDPR) */\n  hasDPA: Scalars['Boolean']['output'];\n};\n\nexport type CompositeScore = {\n  __typename?: 'CompositeScore';\n  accountScore: Scalars['Float']['output'];\n  clashingSessionsScore: Scalars['Float']['output'];\n  compositeScore: Scalars['Float']['output'];\n  contributionsScore: Scalars['Float']['output'];\n  flaggedRepos: Array<Scalars['String']['output']>;\n  networkScore: Scalars['Float']['output'];\n  profileScore: Scalars['Float']['output'];\n  repoScore: Scalars['Float']['output'];\n  totalRepos: Scalars['Int']['output'];\n};\n\nexport type ComputeRuntime =\n  | 'COMPUTE_RUNTIME_CONTAINERD'\n  | 'COMPUTE_RUNTIME_DOCKER'\n  | 'COMPUTE_RUNTIME_GVISOR'\n  | 'COMPUTE_RUNTIME_KVM'\n  | 'COMPUTE_RUNTIME_PODMAN'\n  | 'COMPUTE_RUNTIME_UNKNOWN'\n  | 'UNRECOGNIZED';\n\nexport type ConnectedServiceInstance = {\n  __typename?: 'ConnectedServiceInstance';\n  environmentId: Scalars['String']['output'];\n  projectId: Scalars['String']['output'];\n  serviceId: Scalars['String']['output'];\n  serviceName?: Maybe<Scalars['String']['output']>;\n};\n\nexport type Container = Node & {\n  __typename?: 'Container';\n  archiveUrl?: Maybe<Scalars['String']['output']>;\n  createdAt: Scalars['DateTime']['output'];\n  deletedAt?: Maybe<Scalars['DateTime']['output']>;\n  environment: Environment;\n  environmentId: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  migratedAt?: Maybe<Scalars['DateTime']['output']>;\n  plugin: Plugin;\n  pluginId: Scalars['String']['output'];\n};\n\nexport type ContainerInfo = {\n  __typename?: 'ContainerInfo';\n  host: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  image: Scalars['String']['output'];\n  labels: Array<ContainerLabel>;\n  runtime: ComputeRuntime;\n  status: Scalars['String']['output'];\n};\n\nexport type ContainerInstance = {\n  __typename?: 'ContainerInstance';\n  containerId: Scalars['String']['output'];\n  hostname: Scalars['String']['output'];\n  image: Scalars['String']['output'];\n  labels: Scalars['JSON']['output'];\n  projectId?: Maybe<Scalars['String']['output']>;\n  runtime: ComputeRuntime;\n  status: Scalars['String']['output'];\n  type: ContainerType;\n};\n\nexport type ContainerLabel = {\n  __typename?: 'ContainerLabel';\n  key: Scalars['String']['output'];\n  value: Scalars['String']['output'];\n};\n\nexport type ContainerType =\n  | 'PLUGIN'\n  | 'SERVICE'\n  | 'UNKNOWN';\n\nexport type CreateNotificationRuleInput = {\n  channelConfigs: Array<Scalars['NotificationChannelConfig']['input']>;\n  ephemeralEnvironments?: InputMaybe<Scalars['Boolean']['input']>;\n  eventTypes: Array<Scalars['String']['input']>;\n  projectId?: InputMaybe<Scalars['String']['input']>;\n  severities?: InputMaybe<Array<NotificationSeverity>>;\n  workspaceId: Scalars['String']['input'];\n};\n\nexport type CreateSupportThreadInput = {\n  body: Scalars['String']['input'];\n  subject: Scalars['String']['input'];\n  topicSlug: Scalars['String']['input'];\n};\n\nexport type CreateWithdrawalAccountInput = {\n  country: Scalars['String']['input'];\n  customerId: Scalars['String']['input'];\n};\n\nexport type Credit = Node & {\n  __typename?: 'Credit';\n  amount: Scalars['Float']['output'];\n  createdAt: Scalars['DateTime']['output'];\n  customerId: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  memo?: Maybe<Scalars['String']['output']>;\n  type: CreditType;\n  updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type CreditType =\n  | 'APPLIED'\n  | 'CREDIT'\n  | 'DEBIT'\n  | 'STRIPE'\n  | 'TRANSFER'\n  | 'WAIVED';\n\nexport type CreditWithdrawalInfo = {\n  __typename?: 'CreditWithdrawalInfo';\n  amount: Scalars['Float']['output'];\n  createdAt: Scalars['DateTime']['output'];\n};\n\nexport type CryptominerDetection = {\n  __typename?: 'CryptominerDetection';\n  containerId: Scalars['String']['output'];\n  deploymentId: Scalars['String']['output'];\n  deploymentInstanceId: Scalars['String']['output'];\n  detectionMethods: Array<Scalars['String']['output']>;\n  environmentId: Scalars['String']['output'];\n  hostname: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  processes: Array<DetectedProcess>;\n  projectId: Scalars['String']['output'];\n  receivedAt: Scalars['Float']['output'];\n  service?: Maybe<CryptominerDetectionServiceInfo>;\n  serviceId: Scalars['String']['output'];\n  timestamp: Scalars['String']['output'];\n};\n\nexport type CryptominerDetectionServiceInfo = {\n  __typename?: 'CryptominerDetectionServiceInfo';\n  icon?: Maybe<Scalars['String']['output']>;\n  name: Scalars['String']['output'];\n  projectName: Scalars['String']['output'];\n  workspaceBanned: Scalars['Boolean']['output'];\n  workspaceId: Scalars['String']['output'];\n  workspaceName: Scalars['String']['output'];\n};\n\nexport type CustomDomain = Domain & {\n  __typename?: 'CustomDomain';\n  adminService?: Maybe<Service>;\n  /** @deprecated Removed; always null. */\n  cdnMode?: Maybe<Scalars['String']['output']>;\n  /** @deprecated Use the `status` field instead. */\n  cnameCheck: CnameCheck;\n  createdAt?: Maybe<Scalars['DateTime']['output']>;\n  deletedAt?: Maybe<Scalars['DateTime']['output']>;\n  domain: Scalars['String']['output'];\n  edgeId?: Maybe<Scalars['String']['output']>;\n  environmentId: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  isRailwayDomain: Scalars['Boolean']['output'];\n  projectId?: Maybe<Scalars['String']['output']>;\n  serviceId: Scalars['String']['output'];\n  status: CustomDomainStatus;\n  syncStatus: CustomDomainSyncStatus;\n  targetPort?: Maybe<Scalars['Int']['output']>;\n  updatedAt?: Maybe<Scalars['DateTime']['output']>;\n};\n\nexport type CustomDomainCreateInput = {\n  domain: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n  targetPort?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type CustomDomainStatus = {\n  __typename?: 'CustomDomainStatus';\n  cdnProvider?: Maybe<CdnProvider>;\n  /** Human-readable error message when certificate issuance fails */\n  certificateErrorMessage?: Maybe<Scalars['String']['output']>;\n  /** Structured error type for programmatic handling */\n  certificateErrorType?: Maybe<CertificateErrorType>;\n  /** Whether the certificate issuance can be retried */\n  certificateRetryable?: Maybe<Scalars['Boolean']['output']>;\n  certificateStatus: CertificateStatus;\n  certificateStatusDetailed?: Maybe<CertificateStatusDetailed>;\n  certificates?: Maybe<Array<CertificatePublicData>>;\n  dnsRecords: Array<DnsRecords>;\n  /** Domain Connect support information for one-click DNS setup */\n  domainConnect?: Maybe<DomainConnectInfo>;\n  verificationDnsHost?: Maybe<Scalars['String']['output']>;\n  verificationToken?: Maybe<Scalars['String']['output']>;\n  verified: Scalars['Boolean']['output'];\n};\n\nexport type CustomDomainSyncStatus =\n  | 'ACTIVE'\n  | 'CREATING'\n  | 'DELETED'\n  | 'DELETING'\n  | 'UNSPECIFIED'\n  | 'UPDATING';\n\nexport type Customer = Node & {\n  __typename?: 'Customer';\n  /** The total amount of credits that have been applied during the current billing period. */\n  appliedCredits: Scalars['Float']['output'];\n  billingAddress?: Maybe<CustomerAddress>;\n  billingEmail?: Maybe<Scalars['String']['output']>;\n  billingPeriod: BillingPeriod;\n  /** The total amount of unused credits for the customer. */\n  creditBalance: Scalars['Float']['output'];\n  credits: CustomerCreditsConnection;\n  /** The current usage for the customer. This value is cached and may not be up to date. */\n  currentUsage: Scalars['Float']['output'];\n  defaultPaymentMethod?: Maybe<PaymentMethod>;\n  defaultPaymentMethodId?: Maybe<Scalars['String']['output']>;\n  /** Whether this workspace was referred via an admin referral code. */\n  hasAdminReferralCredit: Scalars['Boolean']['output'];\n  hasExhaustedFreePlan: Scalars['Boolean']['output'];\n  id: Scalars['ID']['output'];\n  invoices: Array<CustomerInvoice>;\n  isPrepaying: Scalars['Boolean']['output'];\n  isTrialing: Scalars['Boolean']['output'];\n  isUsageSubscriber: Scalars['Boolean']['output'];\n  isWithdrawingToCredits: Scalars['Boolean']['output'];\n  /** The monthly discount amount for the customer's referral code. */\n  monthlyReferralCodeDiscount?: Maybe<MonthlyReferralCodeDiscount>;\n  planLimitOverride?: Maybe<PlanLimitOverride>;\n  remainingUsageCreditBalance: Scalars['Float']['output'];\n  spendCommitment?: Maybe<SpendCommitment>;\n  state: SubscriptionState;\n  stripeCustomerId: Scalars['String']['output'];\n  subscriptionResolutionWorkflowId?: Maybe<Scalars['String']['output']>;\n  subscriptions: Array<CustomerSubscription>;\n  supportedWithdrawalPlatforms: Array<WithdrawalPlatformTypes>;\n  taxIds: Array<CustomerTaxId>;\n  trialDaysRemaining: Scalars['Int']['output'];\n  usageLimit?: Maybe<UsageLimit>;\n  volumeDeletionScheduledAt?: Maybe<Scalars['DateTime']['output']>;\n  workspace: Workspace;\n};\n\n\nexport type CustomerCreditsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type CustomerAddress = {\n  __typename?: 'CustomerAddress';\n  city?: Maybe<Scalars['String']['output']>;\n  country?: Maybe<Scalars['String']['output']>;\n  line1?: Maybe<Scalars['String']['output']>;\n  line2?: Maybe<Scalars['String']['output']>;\n  name?: Maybe<Scalars['String']['output']>;\n  postalCode?: Maybe<Scalars['String']['output']>;\n  state?: Maybe<Scalars['String']['output']>;\n};\n\nexport type CustomerApplyCreditInput = {\n  amountDollars: Scalars['Float']['input'];\n  memo: Scalars['String']['input'];\n};\n\nexport type CustomerBillingAddressInput = {\n  city: Scalars['String']['input'];\n  country: Scalars['String']['input'];\n  line1: Scalars['String']['input'];\n  line2?: InputMaybe<Scalars['String']['input']>;\n  name?: InputMaybe<Scalars['String']['input']>;\n  postalCode: Scalars['String']['input'];\n  state?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type CustomerCancelIncompletePaymentIntentInput = {\n  paymentIntentId: Scalars['String']['input'];\n};\n\nexport type CustomerCancelIncompleteSubscriptionInput = {\n  isFreePlanUpgrade?: InputMaybe<Scalars['Boolean']['input']>;\n  revertToPlan?: InputMaybe<Plan>;\n  subscriptionId: Scalars['String']['input'];\n};\n\nexport type CustomerCompleteSpendCommitmentSubscriptionInput = {\n  invoiceId: Scalars['String']['input'];\n};\n\nexport type CustomerCompleteUsageSubscriptionV2Input = {\n  plan: Plan;\n  posthogSessionId?: InputMaybe<Scalars['String']['input']>;\n  subscriptionId: Scalars['String']['input'];\n};\n\nexport type CustomerCreateBillingPortalInput = {\n  redirectUrl: Scalars['String']['input'];\n};\n\nexport type CustomerCreateUsageSubscriptionV2Input = {\n  paymentMethodId: Scalars['String']['input'];\n  plan: Plan;\n  posthogSessionId?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type CustomerCreateUsageSubscriptionV2Response = {\n  __typename?: 'CustomerCreateUsageSubscriptionV2Response';\n  isFreePlanUpgrade?: Maybe<Scalars['Boolean']['output']>;\n  paymentIntentClientSecret?: Maybe<Scalars['String']['output']>;\n  subscriptionId: Scalars['String']['output'];\n  subscriptionStatus: StripeSubscriptionStatus;\n};\n\nexport type CustomerCreditsConnection = {\n  __typename?: 'CustomerCreditsConnection';\n  edges: Array<CustomerCreditsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type CustomerCreditsConnectionEdge = {\n  __typename?: 'CustomerCreditsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Credit;\n};\n\nexport type CustomerInvoice = {\n  __typename?: 'CustomerInvoice';\n  amountDue: Scalars['Float']['output'];\n  amountPaid: Scalars['Float']['output'];\n  hostedURL?: Maybe<Scalars['String']['output']>;\n  invoiceId: Scalars['String']['output'];\n  items: Array<SubscriptionItem>;\n  lastPaymentError?: Maybe<Scalars['String']['output']>;\n  paymentIntentStatus?: Maybe<Scalars['String']['output']>;\n  pdfURL?: Maybe<Scalars['String']['output']>;\n  periodEnd: Scalars['String']['output'];\n  periodStart: Scalars['String']['output'];\n  reissuedInvoiceFrom?: Maybe<Scalars['String']['output']>;\n  reissuedInvoiceOf?: Maybe<Scalars['String']['output']>;\n  spendCommitmentPrepayment?: Maybe<Scalars['Boolean']['output']>;\n  status?: Maybe<Scalars['String']['output']>;\n  subscriptionId?: Maybe<Scalars['String']['output']>;\n  subscriptionStatus?: Maybe<Scalars['String']['output']>;\n  total: Scalars['Int']['output'];\n};\n\nexport type CustomerPurchaseCreditsInput = {\n  amountDollars: Scalars['Int']['input'];\n  paymentMethodId?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type CustomerReplacePaymentMethodInput = {\n  paymentMethodId: Scalars['String']['input'];\n  validateWithHold: Scalars['Boolean']['input'];\n};\n\nexport type CustomerReplacePaymentMethodResponse = {\n  __typename?: 'CustomerReplacePaymentMethodResponse';\n  paymentIntentClientSecret?: Maybe<Scalars['String']['output']>;\n  paymentIntentStatus: StripePaymentIntentStatus;\n};\n\nexport type CustomerSubscribeToSpendCommitmentInput = {\n  minSpendAmountCents: Scalars['Int']['input'];\n};\n\nexport type CustomerSubscribeToSpendCommitmentResponse = {\n  __typename?: 'CustomerSubscribeToSpendCommitmentResponse';\n  invoiceId: Scalars['String']['output'];\n  paymentIntentClientSecret?: Maybe<Scalars['String']['output']>;\n  success: Scalars['Boolean']['output'];\n};\n\nexport type CustomerSubscription = {\n  __typename?: 'CustomerSubscription';\n  billingCycleAnchor: Scalars['DateTime']['output'];\n  cancelAt?: Maybe<Scalars['String']['output']>;\n  cancelAtPeriodEnd: Scalars['Boolean']['output'];\n  couponId?: Maybe<Scalars['String']['output']>;\n  discounts: Array<SubscriptionDiscount>;\n  id: Scalars['String']['output'];\n  items: Array<SubscriptionItem>;\n  latestInvoiceId: Scalars['String']['output'];\n  nextInvoiceCurrentTotal: Scalars['Int']['output'];\n  nextInvoiceDate: Scalars['String']['output'];\n  status: Scalars['String']['output'];\n};\n\nexport type CustomerTaxId = {\n  __typename?: 'CustomerTaxId';\n  id: Scalars['String']['output'];\n  type: Scalars['String']['output'];\n  value: Scalars['String']['output'];\n};\n\nexport type CustomerTransferCreditInput = {\n  amountDollars: Scalars['Int']['input'];\n  memo: Scalars['String']['input'];\n};\n\nexport type CustomerUpdateBillingDetailsInput = {\n  billingAddress?: InputMaybe<CustomerBillingAddressInput>;\n  taxId?: InputMaybe<TaxIdInput>;\n};\n\nexport type CustomerUpdateBillingEmailInput = {\n  email: Scalars['String']['input'];\n};\n\nexport type CustomerVoidIncompleteSpendCommitmentInvoiceInput = {\n  invoiceId: Scalars['String']['input'];\n};\n\nexport type DnsRecordPurpose =\n  | 'DNS_RECORD_PURPOSE_ACME_DNS01_CHALLENGE'\n  | 'DNS_RECORD_PURPOSE_TRAFFIC_ROUTE'\n  | 'DNS_RECORD_PURPOSE_UNSPECIFIED'\n  | 'UNRECOGNIZED';\n\nexport type DnsRecordStatus =\n  | 'DNS_RECORD_STATUS_PROPAGATED'\n  | 'DNS_RECORD_STATUS_REQUIRES_UPDATE'\n  | 'DNS_RECORD_STATUS_UNSPECIFIED'\n  | 'UNRECOGNIZED';\n\nexport type DnsRecordType =\n  | 'DNS_RECORD_TYPE_A'\n  | 'DNS_RECORD_TYPE_CNAME'\n  | 'DNS_RECORD_TYPE_NS'\n  | 'DNS_RECORD_TYPE_TXT'\n  | 'DNS_RECORD_TYPE_UNSPECIFIED'\n  | 'UNRECOGNIZED';\n\nexport type DnsRecords = {\n  __typename?: 'DNSRecords';\n  currentValue: Scalars['String']['output'];\n  fqdn: Scalars['String']['output'];\n  hostlabel: Scalars['String']['output'];\n  purpose: DnsRecordPurpose;\n  recordType: DnsRecordType;\n  requiredValue: Scalars['String']['output'];\n  status: DnsRecordStatus;\n  zone: Scalars['String']['output'];\n};\n\nexport type DatabasePasswordResetInput = {\n  databaseType: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\nexport type DatabasePasswordResetResponse = {\n  __typename?: 'DatabasePasswordResetResponse';\n  newPassword: Scalars['String']['output'];\n  updatedVariables: Scalars['JSON']['output'];\n};\n\nexport type DeployReferenceStats = {\n  __typename?: 'DeployReferenceStats';\n  avgSuccessfulThisHour: Scalars['Int']['output'];\n};\n\nexport type Deployment = Node & {\n  __typename?: 'Deployment';\n  canRedeploy: Scalars['Boolean']['output'];\n  canRollback: Scalars['Boolean']['output'];\n  createdAt: Scalars['DateTime']['output'];\n  creator?: Maybe<DeploymentCreator>;\n  /** Check if a deployment's instances have all stopped */\n  deploymentStopped: Scalars['Boolean']['output'];\n  diagnosis?: Maybe<Scalars['DeploymentDiagnosis']['output']>;\n  environment: Environment;\n  environmentId: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  instances: Array<DeploymentDeploymentInstance>;\n  meta?: Maybe<Scalars['DeploymentMeta']['output']>;\n  projectId: Scalars['String']['output'];\n  replicaStatus?: Maybe<DeploymentReplicaStatus>;\n  service: Service;\n  serviceId?: Maybe<Scalars['String']['output']>;\n  snapshotId?: Maybe<Scalars['String']['output']>;\n  sockets: Array<DeploymentSocket>;\n  staticUrl?: Maybe<Scalars['String']['output']>;\n  status: DeploymentStatus;\n  statusUpdatedAt?: Maybe<Scalars['DateTime']['output']>;\n  suggestAddServiceDomain: Scalars['Boolean']['output'];\n  updatedAt: Scalars['DateTime']['output'];\n  url?: Maybe<Scalars['String']['output']>;\n};\n\nexport type DeploymentAssignmentState =\n  | 'DEPLOYMENT_ASSIGNMENT_STATE_ASSIGNED'\n  | 'DEPLOYMENT_ASSIGNMENT_STATE_PLACED'\n  | 'DEPLOYMENT_ASSIGNMENT_STATE_UNKNOWN'\n  | 'UNRECOGNIZED';\n\nexport type DeploymentByDomain = {\n  __typename?: 'DeploymentByDomain';\n  activeDeployment?: Maybe<Deployment>;\n  latestDeployment?: Maybe<Deployment>;\n  projectId?: Maybe<Scalars['String']['output']>;\n};\n\nexport type DeploymentCreator = {\n  __typename?: 'DeploymentCreator';\n  avatar?: Maybe<Scalars['String']['output']>;\n  email: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  name?: Maybe<Scalars['String']['output']>;\n};\n\nexport type DeploymentDeploymentInstance = {\n  __typename?: 'DeploymentDeploymentInstance';\n  id: Scalars['String']['output'];\n  status: DeploymentInstanceStatus;\n};\n\nexport type DeploymentEvent = Node & {\n  __typename?: 'DeploymentEvent';\n  completedAt?: Maybe<Scalars['DateTime']['output']>;\n  createdAt: Scalars['DateTime']['output'];\n  id: Scalars['ID']['output'];\n  payload?: Maybe<DeploymentEventPayload>;\n  step: DeploymentEventStep;\n};\n\nexport type DeploymentEventPayload = {\n  __typename?: 'DeploymentEventPayload';\n  error?: Maybe<Scalars['String']['output']>;\n};\n\nexport type DeploymentEventStep =\n  | 'BUILD_IMAGE'\n  | 'CONFIGURE_NETWORK'\n  | 'CREATE_CONTAINER'\n  | 'DRAIN_INSTANCES'\n  | 'HEALTHCHECK'\n  | 'MIGRATE_VOLUMES'\n  | 'PRE_DEPLOY_COMMAND'\n  | 'PUBLISH_IMAGE'\n  | 'SNAPSHOT_CODE'\n  | 'WAIT_FOR_DEPENDENCIES';\n\nexport type DeploymentInstanceAssignment = {\n  __typename?: 'DeploymentInstanceAssignment';\n  assignedAt: Scalars['String']['output'];\n  computeNodeId: Scalars['String']['output'];\n  containerId?: Maybe<Scalars['String']['output']>;\n  deploymentId: Scalars['String']['output'];\n  instanceId: Scalars['String']['output'];\n  placedAt?: Maybe<Scalars['String']['output']>;\n  port?: Maybe<Scalars['Int']['output']>;\n  stacker?: Maybe<Stacker>;\n  state: DeploymentAssignmentState;\n};\n\nexport type DeploymentInstanceExecution = Node & {\n  __typename?: 'DeploymentInstanceExecution';\n  completedAt?: Maybe<Scalars['DateTime']['output']>;\n  createdAt: Scalars['DateTime']['output'];\n  deploymentId: Scalars['String']['output'];\n  deploymentMeta: Scalars['DeploymentMeta']['output'];\n  id: Scalars['ID']['output'];\n  status: DeploymentInstanceStatus;\n  updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type DeploymentInstanceExecutionCreateInput = {\n  serviceInstanceId: Scalars['String']['input'];\n};\n\nexport type DeploymentInstanceExecutionInput = {\n  deploymentId: Scalars['String']['input'];\n};\n\nexport type DeploymentInstanceExecutionListInput = {\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\nexport type DeploymentInstanceStatus =\n  | 'CRASHED'\n  | 'CREATED'\n  | 'EXITED'\n  | 'INITIALIZING'\n  | 'REMOVED'\n  | 'REMOVING'\n  | 'RESTARTING'\n  | 'RUNNING'\n  | 'SKIPPED'\n  | 'STOPPED';\n\nexport type DeploymentListInput = {\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  includeDeleted?: InputMaybe<Scalars['Boolean']['input']>;\n  projectId?: InputMaybe<Scalars['String']['input']>;\n  serviceId?: InputMaybe<Scalars['String']['input']>;\n  status?: InputMaybe<DeploymentStatusInput>;\n};\n\nexport type DeploymentReplicaStatus = {\n  __typename?: 'DeploymentReplicaStatus';\n  crashed: Scalars['Int']['output'];\n  exited: Scalars['Int']['output'];\n  running: Scalars['Int']['output'];\n  stopped: Scalars['Boolean']['output'];\n  total: Scalars['Int']['output'];\n};\n\nexport type DeploymentSnapshot = Node & {\n  __typename?: 'DeploymentSnapshot';\n  createdAt: Scalars['DateTime']['output'];\n  id: Scalars['ID']['output'];\n  updatedAt: Scalars['DateTime']['output'];\n  variables: Scalars['EnvironmentVariables']['output'];\n};\n\nexport type DeploymentSocket = {\n  __typename?: 'DeploymentSocket';\n  ipv6: Scalars['Boolean']['output'];\n  port: Scalars['Int']['output'];\n  processName: Scalars['String']['output'];\n  updatedAt: Scalars['Int']['output'];\n};\n\nexport type DeploymentStatus =\n  | 'BUILDING'\n  | 'CRASHED'\n  | 'DEPLOYING'\n  | 'FAILED'\n  | 'INITIALIZING'\n  | 'NEEDS_APPROVAL'\n  | 'QUEUED'\n  | 'REMOVED'\n  | 'REMOVING'\n  | 'SKIPPED'\n  | 'SLEEPING'\n  | 'SUCCESS'\n  | 'WAITING';\n\nexport type DeploymentStatusInput = {\n  in?: InputMaybe<Array<DeploymentStatus>>;\n  notIn?: InputMaybe<Array<DeploymentStatus>>;\n};\n\nexport type DeploymentTrigger = Node & {\n  __typename?: 'DeploymentTrigger';\n  baseEnvironmentOverrideId?: Maybe<Scalars['String']['output']>;\n  branch: Scalars['String']['output'];\n  checkSuites: Scalars['Boolean']['output'];\n  environmentId: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  projectId: Scalars['String']['output'];\n  provider: Scalars['String']['output'];\n  repository: Scalars['String']['output'];\n  serviceId?: Maybe<Scalars['String']['output']>;\n  validCheckSuites: Scalars['Int']['output'];\n};\n\nexport type DeploymentTriggerCreateInput = {\n  branch: Scalars['String']['input'];\n  checkSuites?: InputMaybe<Scalars['Boolean']['input']>;\n  environmentId: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n  provider: Scalars['String']['input'];\n  repository: Scalars['String']['input'];\n  rootDirectory?: InputMaybe<Scalars['String']['input']>;\n  serviceId: Scalars['String']['input'];\n};\n\nexport type DeploymentTriggerUpdateInput = {\n  branch?: InputMaybe<Scalars['String']['input']>;\n  checkSuites?: InputMaybe<Scalars['Boolean']['input']>;\n  repository?: InputMaybe<Scalars['String']['input']>;\n  rootDirectory?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type DeploymentsNeedApproval =\n  | 'ALWAYS'\n  | 'DEFAULT'\n  | 'NEVER';\n\nexport type DetectedProcess = {\n  __typename?: 'DetectedProcess';\n  cmdline: Scalars['String']['output'];\n  comm: Scalars['String']['output'];\n  cpuPercent: Scalars['Float']['output'];\n  detectionMethod: Scalars['String']['output'];\n  exe: Scalars['String']['output'];\n  matchedSignatures: Array<Scalars['String']['output']>;\n  pid: Scalars['String']['output'];\n};\n\nexport type DisableServiceCdnInput = {\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\nexport type DockerComposeImport = {\n  __typename?: 'DockerComposeImport';\n  errors: Array<Scalars['String']['output']>;\n  patch?: Maybe<Scalars['EnvironmentConfig']['output']>;\n};\n\nexport type Domain = {\n  adminService?: Maybe<Service>;\n  /** @deprecated Removed; always null. */\n  cdnMode?: Maybe<Scalars['String']['output']>;\n  createdAt?: Maybe<Scalars['DateTime']['output']>;\n  deletedAt?: Maybe<Scalars['DateTime']['output']>;\n  domain: Scalars['String']['output'];\n  edgeId?: Maybe<Scalars['String']['output']>;\n  environmentId: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  projectId?: Maybe<Scalars['String']['output']>;\n  serviceId: Scalars['String']['output'];\n  targetPort?: Maybe<Scalars['Int']['output']>;\n  updatedAt?: Maybe<Scalars['DateTime']['output']>;\n};\n\nexport type DomainAvailable = {\n  __typename?: 'DomainAvailable';\n  available: Scalars['Boolean']['output'];\n  message: Scalars['String']['output'];\n};\n\n/** Information about Domain Connect support for a domain */\nexport type DomainConnectInfo = {\n  __typename?: 'DomainConnectInfo';\n  providerLogoUrl?: Maybe<Scalars['String']['output']>;\n  providerName?: Maybe<Scalars['String']['output']>;\n  supported: Scalars['Boolean']['output'];\n};\n\n/** Result from verifying Domain Connect state */\nexport type DomainConnectStateVerifyResult = {\n  __typename?: 'DomainConnectStateVerifyResult';\n  /** The domain ID if valid */\n  domainId?: Maybe<Scalars['String']['output']>;\n  /** URL to redirect user back to */\n  returnUrl?: Maybe<Scalars['String']['output']>;\n  /** Whether the state is valid */\n  valid: Scalars['Boolean']['output'];\n};\n\n/** Result from generating a Domain Connect URL */\nexport type DomainConnectUrlResult = {\n  __typename?: 'DomainConnectURLResult';\n  /** The URL to redirect the user to for DNS configuration */\n  applyUrl: Scalars['String']['output'];\n};\n\nexport type DomainTrafficLimitInput = {\n  domainName: Scalars['String']['input'];\n  maxConnections: Scalars['Int']['input'];\n  maxHttpRequestsPerSecond: Scalars['Int']['input'];\n  maxRequestsPerConnection: Scalars['Int']['input'];\n};\n\nexport type DomainWithStatus = {\n  __typename?: 'DomainWithStatus';\n  cdnProvider?: Maybe<CdnProvider>;\n  /** Human-readable error message when certificate issuance fails */\n  certificateErrorMessage?: Maybe<Scalars['String']['output']>;\n  /** Structured error type for programmatic handling */\n  certificateErrorType?: Maybe<CertificateErrorType>;\n  /** Whether the certificate issuance can be retried */\n  certificateRetryable?: Maybe<Scalars['Boolean']['output']>;\n  certificateStatus: CertificateStatus;\n  certificateStatusDetailed?: Maybe<CertificateStatusDetailed>;\n  certificates?: Maybe<Array<CertificatePublicData>>;\n  dnsRecords: Array<DnsRecords>;\n  domain?: Maybe<Domain>;\n};\n\nexport type DrainInstanceResult = {\n  __typename?: 'DrainInstanceResult';\n  deleted?: Maybe<Scalars['Boolean']['output']>;\n  id: Scalars['String']['output'];\n  migrated: Scalars['Boolean']['output'];\n  newRegion?: Maybe<Scalars['String']['output']>;\n  newRuntime?: Maybe<Scalars['String']['output']>;\n  oldRuntime?: Maybe<Scalars['String']['output']>;\n};\n\nexport type DrainPayloadsType =\n  | 'DEPLOYMENT_INSTANCES'\n  | 'DETACHED_VOLUME_INSTANCES';\n\nexport type DrainStackerFilters = {\n  __typename?: 'DrainStackerFilters';\n  allowStaticIPs?: Maybe<Scalars['Boolean']['output']>;\n  allowedPlans: Array<Scalars['String']['output']>;\n  allowedRuntimes: Array<Scalars['String']['output']>;\n  cron?: Maybe<Scalars['Boolean']['output']>;\n  drainPayloadsType: DrainPayloadsType;\n  stateless?: Maybe<Scalars['Boolean']['output']>;\n};\n\nexport type DrainStackerOptions = {\n  __typename?: 'DrainStackerOptions';\n  batchSize?: Maybe<Scalars['Int']['output']>;\n  forceRepushExistingImages?: Maybe<Scalars['Boolean']['output']>;\n  newRegion?: Maybe<Scalars['String']['output']>;\n  selectedIDs?: Maybe<Array<Scalars['String']['output']>>;\n};\n\nexport type DrainStackerOptionsInput = {\n  batchSize?: InputMaybe<Scalars['Int']['input']>;\n  forceRepushExistingImages?: InputMaybe<Scalars['Boolean']['input']>;\n  newRegion?: InputMaybe<Scalars['String']['input']>;\n  selectedIDs?: InputMaybe<Array<Scalars['String']['input']>>;\n};\n\nexport type DrainStackerProgress = {\n  __typename?: 'DrainStackerProgress';\n  awaitingConfirmationTime?: Maybe<Scalars['BigInt']['output']>;\n  drainOptions?: Maybe<DrainStackerOptions>;\n  draining: Scalars['Boolean']['output'];\n  excludedDeploymentInstances: Array<ExcludedDeploymentInstance>;\n  excludedVolumeInstances: Array<ExcludedVolumeInstance>;\n  filters: DrainStackerFilters;\n  matchingDeploymentInstances: Array<MatchingDeploymentInstance>;\n  matchingVolumeInstances: Array<MatchingVolumeInstance>;\n  migrationResults: Array<Maybe<DrainInstanceResult>>;\n  migrationsCompleted: Array<Scalars['String']['output']>;\n  migrationsSkipped: Array<Scalars['String']['output']>;\n  migrationsTimedOut: Array<Scalars['String']['output']>;\n  migrationsTriggered: Array<Scalars['String']['output']>;\n  migrationsTriggeredFailed: Array<Scalars['String']['output']>;\n  scannedDeploymentInstances: Scalars['Int']['output'];\n  scannedVolumeInstances: Scalars['Int']['output'];\n  searching: Scalars['Boolean']['output'];\n  startTime: Scalars['BigInt']['output'];\n  totalStackerDeploymentInstanceCount: Scalars['Int']['output'];\n  totalStackerVolumeInstanceCount: Scalars['Int']['output'];\n};\n\nexport type DrainStackerWorkflowInfo = {\n  __typename?: 'DrainStackerWorkflowInfo';\n  stackerId: Scalars['String']['output'];\n  workflowId: Scalars['String']['output'];\n};\n\nexport type EarningDetails = {\n  __typename?: 'EarningDetails';\n  availableBalance: Scalars['Float']['output'];\n  bountyEarnings30d: Scalars['Float']['output'];\n  bountyEarningsLifetime: Scalars['Float']['output'];\n  lifetimeCashWithdrawals: Scalars['Float']['output'];\n  lifetimeCreditWithdrawals: Scalars['Float']['output'];\n  lifetimeEarnings: Scalars['Float']['output'];\n  referralEarnings30d: Scalars['Float']['output'];\n  referralEarningsLifetime: Scalars['Float']['output'];\n  templateEarnings30d: Scalars['Float']['output'];\n  templateEarningsLifetime: Scalars['Float']['output'];\n  threadEarnings30d: Scalars['Float']['output'];\n  threadEarningsLifetime: Scalars['Float']['output'];\n};\n\nexport type EdgeCachingConfig = {\n  __typename?: 'EdgeCachingConfig';\n  defaultTtlSeconds: Scalars['Int']['output'];\n  htmlCaching: Scalars['String']['output'];\n  mode: Scalars['String']['output'];\n  purgeOnDeploy: PurgeOnDeploy;\n  staleWhileRevalidate: StaleWhileRevalidateConfig;\n};\n\nexport type EdgeCachingConfigInput = {\n  defaultTtlSeconds?: InputMaybe<Scalars['Int']['input']>;\n  htmlCaching?: InputMaybe<Scalars['String']['input']>;\n  mode?: InputMaybe<Scalars['String']['input']>;\n  purgeOnDeploy?: InputMaybe<PurgeOnDeploy>;\n  staleWhileRevalidate?: InputMaybe<StaleWhileRevalidateInput>;\n};\n\nexport type EdgeConfig = {\n  __typename?: 'EdgeConfig';\n  caching?: Maybe<EdgeCachingConfig>;\n  enabled: Scalars['Boolean']['output'];\n  id: Scalars['String']['output'];\n  purgeEpoch: Scalars['Int']['output'];\n  purgeEpochByKind: Scalars['JSON']['output'];\n};\n\nexport type EdgeConfigInput = {\n  caching?: InputMaybe<EdgeCachingConfigInput>;\n};\n\nexport type EdgeEntrypoint = {\n  __typename?: 'EdgeEntrypoint';\n  /** The capabilities of the edge entrypoint. */\n  capabilities: Array<EdgeEntrypointCapability>;\n  description?: Maybe<Scalars['String']['output']>;\n  name: Scalars['String']['output'];\n  publicID: Scalars['String']['output'];\n};\n\n/** The capabilities of an edge entrypoint. */\nexport type EdgeEntrypointCapability =\n  | 'EDGE_ENTRYPOINT_CAPABILITY_TARGET_PORTS'\n  | 'EDGE_ENTRYPOINT_CAPABILITY_UNSPECIFIED'\n  | 'UNRECOGNIZED';\n\nexport type EgressGateway = {\n  __typename?: 'EgressGateway';\n  ipv4: Scalars['String']['output'];\n  region: Scalars['String']['output'];\n  zone?: Maybe<Scalars['String']['output']>;\n};\n\nexport type EgressGatewayCreateInput = {\n  environmentId: Scalars['String']['input'];\n  region?: InputMaybe<Scalars['String']['input']>;\n  serviceId: Scalars['String']['input'];\n};\n\nexport type EgressGatewayServiceTargetInput = {\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\nexport type EnableServiceCdnInput = {\n  config?: InputMaybe<EdgeConfigInput>;\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\nexport type EnrichedDeploymentInstance = {\n  __typename?: 'EnrichedDeploymentInstance';\n  deploymentId: Scalars['String']['output'];\n  environmentId: Scalars['String']['output'];\n  hasStaticIp: Scalars['Boolean']['output'];\n  id: Scalars['String']['output'];\n  isCron: Scalars['Boolean']['output'];\n  isDeleted: Scalars['Boolean']['output'];\n  isStateless: Scalars['Boolean']['output'];\n  plan: SubscriptionPlanType;\n  projectId: Scalars['String']['output'];\n  replicas: Scalars['Int']['output'];\n  runtime: Scalars['String']['output'];\n  serviceId: Scalars['String']['output'];\n  serviceInstanceId: Scalars['String']['output'];\n  volumeInstanceId?: Maybe<Scalars['String']['output']>;\n};\n\nexport type EnterpriseDemoRequestInput = {\n  attribution?: InputMaybe<Scalars['String']['input']>;\n  email: Scalars['String']['input'];\n  name: Scalars['String']['input'];\n  spend?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type Environment = Node & {\n  __typename?: 'Environment';\n  access: EnvironmentAccess;\n  bucketInstances: EnvironmentBucketInstancesConnection;\n  canAccess: Scalars['Boolean']['output'];\n  config: Scalars['EnvironmentConfig']['output'];\n  createdAt: Scalars['DateTime']['output'];\n  deletedAt?: Maybe<Scalars['DateTime']['output']>;\n  deploymentTriggers: EnvironmentDeploymentTriggersConnection;\n  deployments: EnvironmentDeploymentsConnection;\n  id: Scalars['ID']['output'];\n  isEphemeral: Scalars['Boolean']['output'];\n  latestCommittedPatch?: Maybe<EnvironmentPatch>;\n  meta?: Maybe<EnvironmentMeta>;\n  name: Scalars['String']['output'];\n  patches: EnvironmentPatchesConnection;\n  projectId: Scalars['String']['output'];\n  serviceInstances: EnvironmentServiceInstancesConnection;\n  /** Count of online vs crashed services in this environment */\n  serviceStatus?: Maybe<ServiceStatus>;\n  sourceEnvironment?: Maybe<Environment>;\n  unmergedChangesCount?: Maybe<Scalars['Int']['output']>;\n  updatedAt: Scalars['DateTime']['output'];\n  variables: EnvironmentVariablesConnection;\n  volumeInstances: EnvironmentVolumeInstancesConnection;\n};\n\n\nexport type EnvironmentBucketInstancesArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type EnvironmentConfigArgs = {\n  decryptVariables?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n\nexport type EnvironmentDeploymentTriggersArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type EnvironmentDeploymentsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type EnvironmentPatchesArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n  status?: InputMaybe<EnvironmentPatchStatus>;\n};\n\n\nexport type EnvironmentServiceInstancesArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type EnvironmentVariablesArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type EnvironmentVolumeInstancesArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type EnvironmentAccess =\n  | 'RESTRICTED'\n  | 'UNRESTRICTED';\n\nexport type EnvironmentBucketInstancesConnection = {\n  __typename?: 'EnvironmentBucketInstancesConnection';\n  edges: Array<EnvironmentBucketInstancesConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type EnvironmentBucketInstancesConnectionEdge = {\n  __typename?: 'EnvironmentBucketInstancesConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: BucketInstance;\n};\n\nexport type EnvironmentCreateInput = {\n  /** If true, the changes will be applied in the background and the mutation will return immediately. If false, the mutation will wait for the changes to be applied before returning. */\n  applyChangesInBackground?: InputMaybe<Scalars['Boolean']['input']>;\n  ephemeral?: InputMaybe<Scalars['Boolean']['input']>;\n  name: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n  /** When committing the changes immediately, skip any initial deployments. */\n  skipInitialDeploys?: InputMaybe<Scalars['Boolean']['input']>;\n  /** Create the environment with all of the services, volumes, configuration, and variables from this source environment. */\n  sourceEnvironmentId?: InputMaybe<Scalars['String']['input']>;\n  /** Stage the initial changes for the environment. If false (default), the changes will be committed immediately. */\n  stageInitialChanges?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\nexport type EnvironmentDeploymentTriggersConnection = {\n  __typename?: 'EnvironmentDeploymentTriggersConnection';\n  edges: Array<EnvironmentDeploymentTriggersConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type EnvironmentDeploymentTriggersConnectionEdge = {\n  __typename?: 'EnvironmentDeploymentTriggersConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: DeploymentTrigger;\n};\n\nexport type EnvironmentDeploymentsConnection = {\n  __typename?: 'EnvironmentDeploymentsConnection';\n  edges: Array<EnvironmentDeploymentsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type EnvironmentDeploymentsConnectionEdge = {\n  __typename?: 'EnvironmentDeploymentsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Deployment;\n};\n\nexport type EnvironmentMeta = {\n  __typename?: 'EnvironmentMeta';\n  baseBranch?: Maybe<Scalars['String']['output']>;\n  branch?: Maybe<Scalars['String']['output']>;\n  latestSuccessfulGitHubDeploymentId?: Maybe<Scalars['Int']['output']>;\n  prCommentId?: Maybe<Scalars['Int']['output']>;\n  prNumber?: Maybe<Scalars['Int']['output']>;\n  prRepo?: Maybe<Scalars['String']['output']>;\n  prTitle?: Maybe<Scalars['String']['output']>;\n  skippedResourceIds?: Maybe<Scalars['SkippedResourceIds']['output']>;\n};\n\nexport type EnvironmentPatch = Node & {\n  __typename?: 'EnvironmentPatch';\n  appliedAt?: Maybe<Scalars['DateTime']['output']>;\n  appliedBy?: Maybe<AppliedByMember>;\n  createdAt: Scalars['DateTime']['output'];\n  environment: Environment;\n  environmentId: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  lastAppliedError?: Maybe<Scalars['String']['output']>;\n  message?: Maybe<Scalars['String']['output']>;\n  meta?: Maybe<Scalars['EnvironmentPatchMeta']['output']>;\n  patch: Scalars['EnvironmentConfig']['output'];\n  previousEnvironmentConfig: Scalars['EnvironmentConfig']['output'];\n  status: EnvironmentPatchStatus;\n  updatedAt: Scalars['DateTime']['output'];\n};\n\n\nexport type EnvironmentPatchPatchArgs = {\n  decryptVariables?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n\nexport type EnvironmentPatchPreviousEnvironmentConfigArgs = {\n  decryptVariables?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\nexport type EnvironmentPatchProgress = {\n  __typename?: 'EnvironmentPatchProgress';\n  message: Scalars['String']['output'];\n  patchId: Scalars['String']['output'];\n  resourceId?: Maybe<Scalars['String']['output']>;\n  resourceType?: Maybe<Scalars['String']['output']>;\n  status: EnvironmentPatchProgressStatus;\n  timestamp: Scalars['DateTime']['output'];\n};\n\nexport type EnvironmentPatchProgressStatus =\n  | 'COMPLETED'\n  | 'FAILED'\n  | 'IN_PROGRESS';\n\nexport type EnvironmentPatchStatus =\n  | 'APPLYING'\n  | 'COMMITTED'\n  | 'STAGED';\n\nexport type EnvironmentPatchesConnection = {\n  __typename?: 'EnvironmentPatchesConnection';\n  edges: Array<EnvironmentPatchesConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type EnvironmentPatchesConnectionEdge = {\n  __typename?: 'EnvironmentPatchesConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: EnvironmentPatch;\n};\n\nexport type EnvironmentRenameInput = {\n  name: Scalars['String']['input'];\n};\n\nexport type EnvironmentServiceInstancesConnection = {\n  __typename?: 'EnvironmentServiceInstancesConnection';\n  edges: Array<EnvironmentServiceInstancesConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type EnvironmentServiceInstancesConnectionEdge = {\n  __typename?: 'EnvironmentServiceInstancesConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: ServiceInstance;\n};\n\nexport type EnvironmentTriggersDeployInput = {\n  environmentId: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\nexport type EnvironmentVariableType =\n  | 'Provided';\n\nexport type EnvironmentVariablesConnection = {\n  __typename?: 'EnvironmentVariablesConnection';\n  edges: Array<EnvironmentVariablesConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type EnvironmentVariablesConnectionEdge = {\n  __typename?: 'EnvironmentVariablesConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Variable;\n};\n\nexport type EnvironmentVolumeInstancesConnection = {\n  __typename?: 'EnvironmentVolumeInstancesConnection';\n  edges: Array<EnvironmentVolumeInstancesConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type EnvironmentVolumeInstancesConnectionEdge = {\n  __typename?: 'EnvironmentVolumeInstancesConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: VolumeInstance;\n};\n\n/** The estimated usage of a single measurement. */\nexport type EstimatedUsage = {\n  __typename?: 'EstimatedUsage';\n  /** The estimated value. */\n  estimatedValue: Scalars['Float']['output'];\n  /** The measurement that was estimated. */\n  measurement: MetricMeasurement;\n  projectId: Scalars['String']['output'];\n};\n\nexport type EtcdQuorum = {\n  __typename?: 'EtcdQuorum';\n  dbSizeInUseMb?: Maybe<Scalars['Float']['output']>;\n  dbSizeMb?: Maybe<Scalars['Float']['output']>;\n  defragRecommended?: Maybe<Scalars['Boolean']['output']>;\n  healthy: Scalars['Int']['output'];\n  leaderChanges?: Maybe<Scalars['Float']['output']>;\n  total: Scalars['Int']['output'];\n};\n\nexport type Event = Node & {\n  __typename?: 'Event';\n  action: Scalars['String']['output'];\n  /** Minimal event payload for activity feed list rendering. Avoids returning large deployment payload fields like commit messages. */\n  activityPayload?: Maybe<Scalars['JSON']['output']>;\n  createdAt: Scalars['DateTime']['output'];\n  environment?: Maybe<Environment>;\n  environmentId?: Maybe<Scalars['String']['output']>;\n  id: Scalars['ID']['output'];\n  object: Scalars['String']['output'];\n  payload?: Maybe<Scalars['JSON']['output']>;\n  project: Project;\n  projectId?: Maybe<Scalars['String']['output']>;\n  severity: EventSeverity;\n};\n\nexport type EventBatchTrackInput = {\n  events: Array<EventTrackInput>;\n};\n\nexport type EventFilterInput = {\n  action?: InputMaybe<EventStringListFilter>;\n  object?: InputMaybe<EventStringListFilter>;\n  serviceId?: InputMaybe<EventStringListFilter>;\n};\n\nexport type EventSeverity =\n  | 'CRITICAL'\n  | 'INFO'\n  | 'NOTICE'\n  | 'WARNING';\n\nexport type EventStringListFilter = {\n  in?: InputMaybe<Array<Scalars['String']['input']>>;\n  notIn?: InputMaybe<Array<Scalars['String']['input']>>;\n};\n\nexport type EventTrackInput = {\n  eventName: Scalars['String']['input'];\n  properties?: InputMaybe<Scalars['EventProperties']['input']>;\n  ts: Scalars['String']['input'];\n};\n\nexport type ExcludedDeploymentInstance = {\n  __typename?: 'ExcludedDeploymentInstance';\n  environmentId: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  projectId: Scalars['String']['output'];\n  reason: Scalars['String']['output'];\n  serviceId?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ExcludedVolumeInstance = {\n  __typename?: 'ExcludedVolumeInstance';\n  environmentId: Scalars['String']['output'];\n  externalId: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  projectId: Scalars['String']['output'];\n  reason: Scalars['String']['output'];\n  serviceId?: Maybe<Scalars['String']['output']>;\n  volumeId: Scalars['String']['output'];\n};\n\nexport type ExplicitOwnerInput = {\n  /** The ID of the owner */\n  id: Scalars['String']['input'];\n  /** The type of owner */\n  type?: InputMaybe<ResourceOwnerType>;\n};\n\nexport type ExternalWorkspace = {\n  __typename?: 'ExternalWorkspace';\n  /** @deprecated Deprecated regions are no longer supported. */\n  allowDeprecatedRegions?: Maybe<Scalars['Boolean']['output']>;\n  avatar?: Maybe<Scalars['String']['output']>;\n  banReason?: Maybe<Scalars['String']['output']>;\n  createdAt: Scalars['DateTime']['output'];\n  currentSessionHasAccess?: Maybe<Scalars['Boolean']['output']>;\n  customerId?: Maybe<Scalars['String']['output']>;\n  customerState: SubscriptionState;\n  discordRole?: Maybe<Scalars['String']['output']>;\n  has2FAEnforcement: Scalars['Boolean']['output'];\n  hasAutomaticDiagnosis: Scalars['Boolean']['output'];\n  /** @deprecated Deprecated in favour of the SpendCommitment schema. */\n  hasBAA: Scalars['Boolean']['output'];\n  hasGuardrailsAccess: Scalars['Boolean']['output'];\n  /** @deprecated Deprecated in favour of the SpendCommitment schema. */\n  hasRBAC: Scalars['Boolean']['output'];\n  hasSAML: Scalars['Boolean']['output'];\n  id: Scalars['String']['output'];\n  isTrialing?: Maybe<Scalars['Boolean']['output']>;\n  name: Scalars['String']['output'];\n  plan: Plan;\n  preferredRegion?: Maybe<Scalars['String']['output']>;\n  projects: Array<Project>;\n  redactedDueTo2FAPending: Scalars['Boolean']['output'];\n  subscriptionPlanLimit?: Maybe<Scalars['SubscriptionPlanLimit']['output']>;\n  supportTierOverride?: Maybe<Scalars['String']['output']>;\n  teamId?: Maybe<Scalars['String']['output']>;\n};\n\nexport type FeatureFlagToggleInput = {\n  flag: ActiveFeatureFlag;\n  /** Admin-only field to toggle flags for users */\n  userId?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type FunctionRuntime = {\n  __typename?: 'FunctionRuntime';\n  /** The image of the function runtime */\n  image: Scalars['String']['output'];\n  /** The latest version of the function runtime */\n  latestVersion: FunctionRuntimeVersion;\n  /** The name of the function runtime */\n  name: FunctionRuntimeName;\n  /** The versions of the function runtime */\n  versions: Array<FunctionRuntimeVersion>;\n};\n\n/** Supported function runtime environments */\nexport type FunctionRuntimeName =\n  | 'bun';\n\nexport type FunctionRuntimeVersion = {\n  __typename?: 'FunctionRuntimeVersion';\n  image: Scalars['String']['output'];\n  tag: Scalars['String']['output'];\n};\n\nexport type GenAiTextBlock = {\n  __typename?: 'GenAITextBlock';\n  text: Scalars['String']['output'];\n};\n\nexport type GitHubAccess = {\n  __typename?: 'GitHubAccess';\n  hasAccess: Scalars['Boolean']['output'];\n  isPublic: Scalars['Boolean']['output'];\n};\n\nexport type GitHubBranch = {\n  __typename?: 'GitHubBranch';\n  name: Scalars['String']['output'];\n};\n\nexport type GitHubCheck = {\n  __typename?: 'GitHubCheck';\n  name: Scalars['String']['output'];\n  status: Scalars['String']['output'];\n};\n\nexport type GitHubEvent = {\n  __typename?: 'GitHubEvent';\n  createdAt?: Maybe<Scalars['DateTime']['output']>;\n  type: Scalars['String']['output'];\n};\n\nexport type GitHubPrInfo = {\n  __typename?: 'GitHubPRInfo';\n  additions: Scalars['Int']['output'];\n  author: Scalars['String']['output'];\n  body: Scalars['String']['output'];\n  changedFiles: Scalars['Int']['output'];\n  checks: Array<GitHubCheck>;\n  deletions: Scalars['Int']['output'];\n  mergeable?: Maybe<Scalars['Boolean']['output']>;\n  state: Scalars['String']['output'];\n  title: Scalars['String']['output'];\n};\n\nexport type GitHubRepo = {\n  __typename?: 'GitHubRepo';\n  defaultBranch: Scalars['String']['output'];\n  description?: Maybe<Scalars['String']['output']>;\n  fullName: Scalars['String']['output'];\n  id: Scalars['Int']['output'];\n  installationId: Scalars['String']['output'];\n  isPrivate: Scalars['Boolean']['output'];\n  name: Scalars['String']['output'];\n  ownerAvatarUrl?: Maybe<Scalars['String']['output']>;\n};\n\nexport type GitHubRepoDeployInput = {\n  branch?: InputMaybe<Scalars['String']['input']>;\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  projectId: Scalars['String']['input'];\n  repo: Scalars['String']['input'];\n};\n\nexport type GitHubRepoFile = {\n  __typename?: 'GitHubRepoFile';\n  mode?: Maybe<Scalars['String']['output']>;\n  path?: Maybe<Scalars['String']['output']>;\n  sha?: Maybe<Scalars['String']['output']>;\n  size?: Maybe<Scalars['Int']['output']>;\n  type?: Maybe<Scalars['String']['output']>;\n  url?: Maybe<Scalars['String']['output']>;\n};\n\nexport type GitHubRepoUpdateInput = {\n  environmentId: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\nexport type GitHubRepoWithoutInstallation = {\n  __typename?: 'GitHubRepoWithoutInstallation';\n  defaultBranch: Scalars['String']['output'];\n  description?: Maybe<Scalars['String']['output']>;\n  fullName: Scalars['String']['output'];\n  id: Scalars['Int']['output'];\n  isPrivate: Scalars['Boolean']['output'];\n  name: Scalars['String']['output'];\n};\n\n/** An SSH public key from GitHub. */\nexport type GitHubSshKey = {\n  __typename?: 'GitHubSshKey';\n  id: Scalars['Int']['output'];\n  key: Scalars['String']['output'];\n  title: Scalars['String']['output'];\n};\n\nexport type GithubAuth = {\n  __typename?: 'GithubAuth';\n  status: GithubAuthStatus;\n};\n\nexport type GithubAuthStatus =\n  | 'NOT_CONNECTED'\n  | 'OK'\n  | 'REAUTH_REQUIRED';\n\nexport type GithubBackpressureActiveDeploymentEntry = {\n  __typename?: 'GithubBackpressureActiveDeploymentEntry';\n  addedAt: Scalars['DateTime']['output'];\n  dbCreatedAt?: Maybe<Scalars['DateTime']['output']>;\n  dbStatus?: Maybe<Scalars['String']['output']>;\n  deploymentId: Scalars['String']['output'];\n  environmentId: Scalars['String']['output'];\n  serviceId: Scalars['String']['output'];\n};\n\nexport type GithubBackpressureCleanupResult = {\n  __typename?: 'GithubBackpressureCleanupResult';\n  removed: Array<GithubBackpressureRemovedStaleEntry>;\n  removedCount: Scalars['Int']['output'];\n};\n\nexport type GithubBackpressureInspection = {\n  __typename?: 'GithubBackpressureInspection';\n  plans: Array<GithubBackpressurePlanInspection>;\n  totalActive: Scalars['Int']['output'];\n  totalStale: Scalars['Int']['output'];\n};\n\nexport type GithubBackpressurePlanConfig = {\n  __typename?: 'GithubBackpressurePlanConfig';\n  enabled: Scalars['Boolean']['output'];\n  maxConcurrent: Scalars['Int']['output'];\n};\n\nexport type GithubBackpressurePlanInspection = {\n  __typename?: 'GithubBackpressurePlanInspection';\n  activeCount: Scalars['Int']['output'];\n  deployments: Array<GithubBackpressureActiveDeploymentEntry>;\n  plan: Scalars['String']['output'];\n  staleCount: Scalars['Int']['output'];\n};\n\nexport type GithubBackpressurePlanStatus = {\n  __typename?: 'GithubBackpressurePlanStatus';\n  activeCount: Scalars['Int']['output'];\n  config: GithubBackpressurePlanConfig;\n  queuedCount: Scalars['Int']['output'];\n};\n\nexport type GithubBackpressurePlanType =\n  | 'enterprise'\n  | 'free'\n  | 'hobby'\n  | 'pro'\n  | 'trial';\n\nexport type GithubBackpressureQueueAnalysis = {\n  __typename?: 'GithubBackpressureQueueAnalysis';\n  duplicateCount: Scalars['Int']['output'];\n  fetchTimeMs: Scalars['Int']['output'];\n  groupTimeMs: Scalars['Int']['output'];\n  perPlan: Array<GithubBackpressureQueueAnalysisPlan>;\n  topSpammers: Array<GithubBackpressureQueueSpammer>;\n  totalQueued: Scalars['Int']['output'];\n  uniqueServiceInstances: Scalars['Int']['output'];\n};\n\nexport type GithubBackpressureQueueAnalysisPlan = {\n  __typename?: 'GithubBackpressureQueueAnalysisPlan';\n  duplicates: Scalars['Int']['output'];\n  plan: Scalars['String']['output'];\n  total: Scalars['Int']['output'];\n  uniqueInstances: Scalars['Int']['output'];\n};\n\nexport type GithubBackpressureQueueSpammer = {\n  __typename?: 'GithubBackpressureQueueSpammer';\n  duplicateCount: Scalars['Int']['output'];\n  projectId?: Maybe<Scalars['String']['output']>;\n  repoUrl: Scalars['String']['output'];\n  serviceId: Scalars['String']['output'];\n  workspaceId?: Maybe<Scalars['String']['output']>;\n};\n\nexport type GithubBackpressureQueuedDeploymentEntry = {\n  __typename?: 'GithubBackpressureQueuedDeploymentEntry';\n  dbCreatedAt?: Maybe<Scalars['DateTime']['output']>;\n  dbStatus?: Maybe<Scalars['String']['output']>;\n  deploymentId: Scalars['String']['output'];\n  environmentId: Scalars['String']['output'];\n  plan: Scalars['String']['output'];\n  queuedAt: Scalars['DateTime']['output'];\n  repoRef: Scalars['String']['output'];\n  repoUrl: Scalars['String']['output'];\n  serviceId: Scalars['String']['output'];\n};\n\nexport type GithubBackpressureQueuedInspection = {\n  __typename?: 'GithubBackpressureQueuedInspection';\n  plans: Array<GithubBackpressureQueuedPlanInspection>;\n  totalQueued: Scalars['Int']['output'];\n  totalStale: Scalars['Int']['output'];\n};\n\nexport type GithubBackpressureQueuedPlanInspection = {\n  __typename?: 'GithubBackpressureQueuedPlanInspection';\n  deployments: Array<GithubBackpressureQueuedDeploymentEntry>;\n  plan: Scalars['String']['output'];\n  queuedCount: Scalars['Int']['output'];\n  staleCount: Scalars['Int']['output'];\n};\n\nexport type GithubBackpressureRemovedStaleEntry = {\n  __typename?: 'GithubBackpressureRemovedStaleEntry';\n  addedAt: Scalars['DateTime']['output'];\n  dbStatus?: Maybe<Scalars['String']['output']>;\n  deploymentId: Scalars['String']['output'];\n  environmentId: Scalars['String']['output'];\n  plan: Scalars['String']['output'];\n  serviceId: Scalars['String']['output'];\n};\n\nexport type GithubBackpressureStatus = {\n  __typename?: 'GithubBackpressureStatus';\n  alertThreshold: Scalars['Int']['output'];\n  deploymentStatusDisabled: Scalars['Boolean']['output'];\n  enterprise: GithubBackpressurePlanStatus;\n  failedMessage: Scalars['String']['output'];\n  free: GithubBackpressurePlanStatus;\n  hobby: GithubBackpressurePlanStatus;\n  pro: GithubBackpressurePlanStatus;\n  queuedMessage: Scalars['String']['output'];\n  totalActive: Scalars['Int']['output'];\n  totalQueued: Scalars['Int']['output'];\n  trial: GithubBackpressurePlanStatus;\n};\n\nexport type GithubRefreshStatus =\n  | 'completed'\n  | 'error'\n  | 'running';\n\nexport type GithubRefreshStatusResult = {\n  __typename?: 'GithubRefreshStatusResult';\n  errorMessage?: Maybe<Scalars['String']['output']>;\n  status: GithubRefreshStatus;\n};\n\nexport type Group = Node & {\n  __typename?: 'Group';\n  color?: Maybe<Scalars['String']['output']>;\n  groupId?: Maybe<Scalars['String']['output']>;\n  icon?: Maybe<Scalars['String']['output']>;\n  id: Scalars['ID']['output'];\n  isCollapsed?: Maybe<Scalars['Boolean']['output']>;\n  name?: Maybe<Scalars['String']['output']>;\n  project: Project;\n  projectId: Scalars['String']['output'];\n};\n\nexport type GroupCreateInput = {\n  color?: InputMaybe<Scalars['String']['input']>;\n  isCollapsed?: InputMaybe<Scalars['Boolean']['input']>;\n  name?: InputMaybe<Scalars['String']['input']>;\n  projectId: Scalars['String']['input'];\n};\n\nexport type GroupSet = {\n  groupId?: InputMaybe<Scalars['String']['input']>;\n  nodeId: Scalars['String']['input'];\n};\n\nexport type GroupSetInput = {\n  nodes: Array<GroupSet>;\n};\n\nexport type GroupUpdateInput = {\n  color?: InputMaybe<Scalars['String']['input']>;\n  isCollapsed?: InputMaybe<Scalars['Boolean']['input']>;\n  name?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type GroupedUsageAnomaliesInput = {\n  filters: GroupedUsageAnomaliesInputFilters;\n};\n\nexport type GroupedUsageAnomaliesInputFilters = {\n  needsAction: Scalars['Boolean']['input'];\n};\n\nexport type GroupedUsageAnomaly = {\n  __typename?: 'GroupedUsageAnomaly';\n  anomalies: Array<UsageAnomaly>;\n  service: Service;\n};\n\nexport type HelpStationAdminContextCustomerInfo = {\n  __typename?: 'HelpStationAdminContextCustomerInfo';\n  /** Average monthly spend based on last 3 paid Stripe invoices (in dollars) */\n  avgMonthlySpend?: Maybe<Scalars['Float']['output']>;\n  /** Total unused promotional credits in dollars */\n  creditBalance: Scalars['Float']['output'];\n  credits: HelpStationAdminContextCustomerInfoCreditsConnection;\n  defaultPaymentMethod?: Maybe<PaymentMethod>;\n  /** Whether this workspace was referred via an admin referral code (e.g., Lenny promotion) */\n  hasAdminReferralCredit: Scalars['Boolean']['output'];\n  id: Scalars['String']['output'];\n  isPrepaying: Scalars['Boolean']['output'];\n  isTrialing: Scalars['Boolean']['output'];\n  spendCommitment?: Maybe<SpendCommitment>;\n  state: SubscriptionState;\n  stripeCustomerId: Scalars['String']['output'];\n  subscriptions: Array<CustomerSubscription>;\n};\n\n\nexport type HelpStationAdminContextCustomerInfoCreditsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type HelpStationAdminContextCustomerInfoCreditsConnection = {\n  __typename?: 'HelpStationAdminContextCustomerInfoCreditsConnection';\n  edges: Array<HelpStationAdminContextCustomerInfoCreditsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type HelpStationAdminContextCustomerInfoCreditsConnectionEdge = {\n  __typename?: 'HelpStationAdminContextCustomerInfoCreditsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Credit;\n};\n\nexport type HelpStationAdminContextUserInfo = {\n  __typename?: 'HelpStationAdminContextUserInfo';\n  avatar?: Maybe<Scalars['String']['output']>;\n  createdAt: Scalars['DateTime']['output'];\n  email: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  name?: Maybe<Scalars['String']['output']>;\n  username?: Maybe<Scalars['String']['output']>;\n  /** Workspaces user is member of */\n  workspaces: Array<HelpStationAdminContextWorkspaceInfo>;\n};\n\nexport type HelpStationAdminContextWorkspaceInfo = {\n  __typename?: 'HelpStationAdminContextWorkspaceInfo';\n  adoptionLevel: Scalars['Float']['output'];\n  avatar?: Maybe<Scalars['String']['output']>;\n  createdAt: Scalars['DateTime']['output'];\n  customer: HelpStationAdminContextCustomerInfo;\n  /** @deprecated Deprecated in favour of the SpendCommitment schema. */\n  hasBAA?: Maybe<Scalars['Boolean']['output']>;\n  id: Scalars['String']['output'];\n  /** Timestamp of the most recent deployment across all projects */\n  lastDeploymentAt?: Maybe<Scalars['DateTime']['output']>;\n  name?: Maybe<Scalars['String']['output']>;\n  permissions: Array<HelpStationAdminContextWorkspacePermission>;\n  plan: Plan;\n  slackChannelId?: Maybe<Scalars['String']['output']>;\n  supportTierOverride?: Maybe<SupportTierOverride>;\n};\n\nexport type HelpStationAdminContextWorkspaceMemberUserInfo = {\n  __typename?: 'HelpStationAdminContextWorkspaceMemberUserInfo';\n  avatar?: Maybe<Scalars['String']['output']>;\n  email: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  name?: Maybe<Scalars['String']['output']>;\n  username?: Maybe<Scalars['String']['output']>;\n};\n\nexport type HelpStationAdminContextWorkspacePermission = {\n  __typename?: 'HelpStationAdminContextWorkspacePermission';\n  role: TeamRole;\n  user: HelpStationAdminContextWorkspaceMemberUserInfo;\n  workspaceId: Scalars['String']['output'];\n};\n\nexport type HelpStationAuditLogEntry = {\n  __typename?: 'HelpStationAuditLogEntry';\n  actorEmail?: Maybe<Scalars['String']['output']>;\n  actorTokenName?: Maybe<Scalars['String']['output']>;\n  actorTokenType?: Maybe<Scalars['String']['output']>;\n  actorType: Scalars['String']['output'];\n  actorUserId?: Maybe<Scalars['String']['output']>;\n  createdAt: Scalars['String']['output'];\n  environmentId?: Maybe<Scalars['String']['output']>;\n  eventType: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  payload?: Maybe<Scalars['String']['output']>;\n  projectId?: Maybe<Scalars['String']['output']>;\n};\n\nexport type HelpStationDnsRecord = {\n  __typename?: 'HelpStationDnsRecord';\n  currentValue: Scalars['String']['output'];\n  fqdn: Scalars['String']['output'];\n  hostLabel: Scalars['String']['output'];\n  purpose: Scalars['String']['output'];\n  recordType: Scalars['String']['output'];\n  requiredValue: Scalars['String']['output'];\n  status: Scalars['String']['output'];\n  zone: Scalars['String']['output'];\n};\n\nexport type HelpStationDomainInfo = {\n  __typename?: 'HelpStationDomainInfo';\n  domain: Scalars['String']['output'];\n  environmentId: Scalars['String']['output'];\n  environmentName: Scalars['String']['output'];\n  projectId: Scalars['String']['output'];\n  projectName: Scalars['String']['output'];\n  serviceId: Scalars['String']['output'];\n  serviceName: Scalars['String']['output'];\n};\n\nexport type HelpStationDomainLookupResult = {\n  __typename?: 'HelpStationDomainLookupResult';\n  deletedAt?: Maybe<Scalars['DateTime']['output']>;\n  domain: Scalars['String']['output'];\n  domainId?: Maybe<Scalars['String']['output']>;\n  error?: Maybe<Scalars['String']['output']>;\n  found: Scalars['Boolean']['output'];\n  service?: Maybe<HelpStationDomainLookupService>;\n  workspace?: Maybe<HelpStationDomainLookupWorkspace>;\n};\n\nexport type HelpStationDomainLookupService = {\n  __typename?: 'HelpStationDomainLookupService';\n  id: Scalars['String']['output'];\n  name: Scalars['String']['output'];\n  projectId: Scalars['String']['output'];\n  projectName: Scalars['String']['output'];\n};\n\nexport type HelpStationDomainLookupWorkspace = {\n  __typename?: 'HelpStationDomainLookupWorkspace';\n  adminEmails: Array<Scalars['String']['output']>;\n  adminUserIds: Array<Scalars['String']['output']>;\n  banReason?: Maybe<Scalars['String']['output']>;\n  id: Scalars['String']['output'];\n  isPro: Scalars['Boolean']['output'];\n  name: Scalars['String']['output'];\n};\n\nexport type HelpStationDomainOwnershipResult = {\n  __typename?: 'HelpStationDomainOwnershipResult';\n  domain: Scalars['String']['output'];\n  onRailway: Scalars['Boolean']['output'];\n  ownedByUser: Scalars['Boolean']['output'];\n};\n\nexport type HelpStationDomainStatusResult = {\n  __typename?: 'HelpStationDomainStatusResult';\n  certificateErrorMessage?: Maybe<Scalars['String']['output']>;\n  certificateErrorType?: Maybe<Scalars['String']['output']>;\n  certificateStatus: Scalars['String']['output'];\n  certificateStatusDetailed?: Maybe<Scalars['String']['output']>;\n  dnsRecords: Array<HelpStationDnsRecord>;\n  domain: Scalars['String']['output'];\n  environmentId?: Maybe<Scalars['String']['output']>;\n  error?: Maybe<Scalars['String']['output']>;\n  found: Scalars['Boolean']['output'];\n  service?: Maybe<HelpStationDomainLookupService>;\n  verificationDnsHost?: Maybe<Scalars['String']['output']>;\n  verificationToken?: Maybe<Scalars['String']['output']>;\n  verified: Scalars['Boolean']['output'];\n};\n\nexport type HelpStationEnvironmentInfoV2 = {\n  __typename?: 'HelpStationEnvironmentInfoV2';\n  id: Scalars['String']['output'];\n  name: Scalars['String']['output'];\n  services: Array<HelpStationServiceInfoV2>;\n};\n\nexport type HelpStationLogEntry = {\n  __typename?: 'HelpStationLogEntry';\n  deploymentId?: Maybe<Scalars['String']['output']>;\n  message: Scalars['String']['output'];\n  serviceId?: Maybe<Scalars['String']['output']>;\n  severity?: Maybe<Scalars['String']['output']>;\n  timestamp: Scalars['String']['output'];\n};\n\nexport type HelpStationNetworkConnection = {\n  __typename?: 'HelpStationNetworkConnection';\n  droppedCount: Scalars['Int']['output'];\n  dstAddr: Scalars['String']['output'];\n  dstPort: Scalars['Int']['output'];\n  firstSeen: Scalars['String']['output'];\n  flowCount: Scalars['Int']['output'];\n  l4Protocol: Scalars['String']['output'];\n  lastSeen: Scalars['String']['output'];\n  peerKind: Scalars['String']['output'];\n  peerServiceId?: Maybe<Scalars['String']['output']>;\n  srcAddr: Scalars['String']['output'];\n  srcPort: Scalars['Int']['output'];\n  totalBytes: Scalars['Int']['output'];\n  totalPackets: Scalars['Int']['output'];\n};\n\nexport type HelpStationNetworkFlowLog = {\n  __typename?: 'HelpStationNetworkFlowLog';\n  byteCount: Scalars['Int']['output'];\n  captureEnd: Scalars['String']['output'];\n  captureStart: Scalars['String']['output'];\n  deploymentId: Scalars['String']['output'];\n  direction: Scalars['String']['output'];\n  dropCause?: Maybe<Scalars['String']['output']>;\n  dstAddr: Scalars['String']['output'];\n  dstPort: Scalars['Int']['output'];\n  flowId: Scalars['String']['output'];\n  l4LatencyMs: Scalars['Float']['output'];\n  l4Protocol: Scalars['String']['output'];\n  packetCount: Scalars['Int']['output'];\n  peerKind: Scalars['String']['output'];\n  peerServiceId?: Maybe<Scalars['String']['output']>;\n  serviceId: Scalars['String']['output'];\n  srcAddr: Scalars['String']['output'];\n  srcPort: Scalars['Int']['output'];\n};\n\nexport type HelpStationPlanLimitOverrideScopedOp =\n  | 'set'\n  | 'unset';\n\nexport type HelpStationPlanLimitOverrideScopedResult = {\n  __typename?: 'HelpStationPlanLimitOverrideScopedResult';\n  afterValue?: Maybe<Scalars['JSON']['output']>;\n  beforeValue?: Maybe<Scalars['JSON']['output']>;\n  changed: Scalars['Boolean']['output'];\n  removed: Scalars['Boolean']['output'];\n};\n\nexport type HelpStationPlanLimitOverrideUpsertScopedInput = {\n  expiresAt?: InputMaybe<Scalars['DateTime']['input']>;\n  op: HelpStationPlanLimitOverrideScopedOp;\n  path: Scalars['String']['input'];\n  value?: InputMaybe<Scalars['JSON']['input']>;\n  workspaceId: Scalars['String']['input'];\n};\n\nexport type HelpStationProjectInfo = {\n  __typename?: 'HelpStationProjectInfo';\n  id: Scalars['String']['output'];\n  name: Scalars['String']['output'];\n  services: Array<HelpStationServiceInfo>;\n};\n\nexport type HelpStationProjectInfoV2 = {\n  __typename?: 'HelpStationProjectInfoV2';\n  environments: Array<HelpStationEnvironmentInfoV2>;\n  id: Scalars['String']['output'];\n  name: Scalars['String']['output'];\n};\n\nexport type HelpStationProjectVolume = {\n  __typename?: 'HelpStationProjectVolume';\n  currentSizeMB: Scalars['Float']['output'];\n  environmentId: Scalars['String']['output'];\n  environmentName: Scalars['String']['output'];\n  isForked: Scalars['Boolean']['output'];\n  lastOnlineResizeFailedAt?: Maybe<Scalars['DateTime']['output']>;\n  mountPath: Scalars['String']['output'];\n  name: Scalars['String']['output'];\n  planMaxSizeMB: Scalars['Int']['output'];\n  serviceId?: Maybe<Scalars['String']['output']>;\n  serviceName?: Maybe<Scalars['String']['output']>;\n  sizeMB: Scalars['Int']['output'];\n  state?: Maybe<Scalars['String']['output']>;\n  volumeId: Scalars['String']['output'];\n  volumeInstanceId: Scalars['String']['output'];\n  workspaceId: Scalars['String']['output'];\n  workspaceName: Scalars['String']['output'];\n};\n\nexport type HelpStationRailwayDomainInfo = {\n  __typename?: 'HelpStationRailwayDomainInfo';\n  domain: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  isTransferEligible: Scalars['Boolean']['output'];\n  registeredAt: Scalars['DateTime']['output'];\n  status: Scalars['String']['output'];\n  transferEligibleAt: Scalars['DateTime']['output'];\n};\n\nexport type HelpStationResizeVolumeInput = {\n  preferOnline: Scalars['Boolean']['input'];\n  reason: Scalars['String']['input'];\n  targetSizeMB: Scalars['Int']['input'];\n  volumeInstanceId: Scalars['String']['input'];\n};\n\nexport type HelpStationResizeVolumeMode =\n  | 'OFFLINE'\n  | 'ONLINE';\n\nexport type HelpStationResizeVolumeResult = {\n  __typename?: 'HelpStationResizeVolumeResult';\n  mode: HelpStationResizeVolumeMode;\n};\n\nexport type HelpStationServiceInfo = {\n  __typename?: 'HelpStationServiceInfo';\n  id: Scalars['String']['output'];\n  latestDeploymentStatus?: Maybe<Scalars['String']['output']>;\n  name: Scalars['String']['output'];\n};\n\nexport type HelpStationServiceInfoV2 = {\n  __typename?: 'HelpStationServiceInfoV2';\n  hasVolume: Scalars['Boolean']['output'];\n  id: Scalars['String']['output'];\n  latestDeploymentAt?: Maybe<Scalars['String']['output']>;\n  latestDeploymentStatus?: Maybe<Scalars['String']['output']>;\n  name: Scalars['String']['output'];\n};\n\nexport type HelpStationServiceUsage = {\n  __typename?: 'HelpStationServiceUsage';\n  cpuDollars: Scalars['Float']['output'];\n  diskDollars: Scalars['Float']['output'];\n  memoryDollars: Scalars['Float']['output'];\n  networkDollars: Scalars['Float']['output'];\n  projectId: Scalars['String']['output'];\n  projectName: Scalars['String']['output'];\n  serviceId: Scalars['String']['output'];\n  serviceName: Scalars['String']['output'];\n  totalDollars: Scalars['Float']['output'];\n};\n\nexport type HelpStationThreadLookupResult = {\n  __typename?: 'HelpStationThreadLookupResult';\n  createdAt: Scalars['DateTime']['output'];\n  id: Scalars['String']['output'];\n  isPrivate: Scalars['Boolean']['output'];\n  slug: Scalars['String']['output'];\n  status: Scalars['String']['output'];\n  subject: Scalars['String']['output'];\n  topicDisplayName?: Maybe<Scalars['String']['output']>;\n  topicSlug: Scalars['String']['output'];\n};\n\nexport type HelpStationThreadSidebarInfo = {\n  __typename?: 'HelpStationThreadSidebarInfo';\n  users: Array<HelpStationAdminContextUserInfo>;\n  workspaces: Array<HelpStationAdminContextWorkspaceInfo>;\n};\n\nexport type HelpStationThreadTemplateInfo = {\n  __typename?: 'HelpStationThreadTemplateInfo';\n  id: Scalars['ID']['output'];\n  name: Scalars['String']['output'];\n};\n\nexport type HelpStationUserDomainsInfo = {\n  __typename?: 'HelpStationUserDomainsInfo';\n  domains: Array<HelpStationDomainInfo>;\n  workspaceId: Scalars['String']['output'];\n  workspaceName: Scalars['String']['output'];\n};\n\nexport type HelpStationWorkspaceLimitsView = {\n  __typename?: 'HelpStationWorkspaceLimitsView';\n  baseLimit: Scalars['SubscriptionPlanLimit']['output'];\n  effectiveLimit: Scalars['SubscriptionPlanLimit']['output'];\n  limitsVersion: LimitsVersion;\n  overrideConfig?: Maybe<Scalars['JSON']['output']>;\n  overrideExpiresAt?: Maybe<Scalars['DateTime']['output']>;\n  plan: Scalars['String']['output'];\n};\n\nexport type HelpStationWorkspaceServicesInfo = {\n  __typename?: 'HelpStationWorkspaceServicesInfo';\n  projects: Array<HelpStationProjectInfo>;\n  workspaceId: Scalars['String']['output'];\n  workspaceName: Scalars['String']['output'];\n};\n\nexport type HelpStationWorkspaceServicesInfoV2 = {\n  __typename?: 'HelpStationWorkspaceServicesInfoV2';\n  projects: Array<HelpStationProjectInfoV2>;\n  workspaceId: Scalars['String']['output'];\n  workspaceName: Scalars['String']['output'];\n};\n\nexport type HelpStationWorkspaceUsage = {\n  __typename?: 'HelpStationWorkspaceUsage';\n  /** Railway Agent token usage spend for this billing period. Metered separately from compute; appears on Stripe invoices as the AgentUsage line item. */\n  agentUsageDollars: Scalars['Float']['output'];\n  /** Workspace's hard limit on Railway Agent spend in dollars. Null when no limit is set. */\n  agentUsageHardLimitDollars?: Maybe<Scalars['Float']['output']>;\n  /** Workspace's soft (warning) limit on Railway Agent spend in dollars. Null when no limit is set. */\n  agentUsageSoftLimitDollars?: Maybe<Scalars['Float']['output']>;\n  billingPeriodEnd: Scalars['DateTime']['output'];\n  billingPeriodStart: Scalars['DateTime']['output'];\n  creditsRemaining: Scalars['Float']['output'];\n  includedCredits: Scalars['Float']['output'];\n  plan: Scalars['String']['output'];\n  services: Array<HelpStationServiceUsage>;\n  totalUsageDollars: Scalars['Float']['output'];\n  workspaceId: Scalars['String']['output'];\n  workspaceName: Scalars['String']['output'];\n};\n\nexport type HerokuApp = {\n  __typename?: 'HerokuApp';\n  id: Scalars['String']['output'];\n  name: Scalars['String']['output'];\n};\n\nexport type HerokuImportVariablesInput = {\n  environmentId: Scalars['String']['input'];\n  herokuAppId: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n/** The result of a log histogram query. */\nexport type Histogram = {\n  __typename?: 'Histogram';\n  /** The datapoints in the histogram */\n  buckets: Array<HistogramBucket>;\n  /** The number of seconds per datapoint */\n  stepSeconds: Scalars['Int']['output'];\n};\n\n/** A single point in a histogram */\nexport type HistogramBucket = {\n  __typename?: 'HistogramBucket';\n  /** The number of logs that occurred in this time period */\n  count: Scalars['Int']['output'];\n  /** The severity property of the log */\n  severity: Scalars['String']['output'];\n  /** The ISO timestamp of the data point */\n  timestamp: Scalars['String']['output'];\n};\n\nexport type Host = {\n  __typename?: 'Host';\n  clusterId: Scalars['String']['output'];\n  clusterLabel?: Maybe<Scalars['String']['output']>;\n  globalIPv4: Scalars['String']['output'];\n  globalIPv6?: Maybe<Scalars['String']['output']>;\n  hostId: Scalars['String']['output'];\n  hostname: Scalars['String']['output'];\n  localIPv4: Scalars['String']['output'];\n  localIPv6?: Maybe<Scalars['String']['output']>;\n  namespace: Scalars['String']['output'];\n  overlayHID: Scalars['BigInt']['output'];\n  region: Scalars['String']['output'];\n  roles: Array<Scalars['String']['output']>;\n  wireguardPublicKey: Scalars['String']['output'];\n};\n\nexport type HostListItem = {\n  __typename?: 'HostListItem';\n  IP: Scalars['String']['output'];\n  hostId: Scalars['String']['output'];\n  hostname: Scalars['String']['output'];\n  roles: Array<Scalars['String']['output']>;\n};\n\nexport type HostMaintenanceEventType =\n  | 'custom'\n  | 'degradedPerformance'\n  | 'offline';\n\nexport type HostMaintenanceNotificationImpact = {\n  __typename?: 'HostMaintenanceNotificationImpact';\n  cronDeployments: Scalars['Int']['output'];\n  deployments: Scalars['Int']['output'];\n  projects: Scalars['Int']['output'];\n  replicatedDeployments: Scalars['Int']['output'];\n  services: Scalars['Int']['output'];\n  sleepingDeployments: Scalars['Int']['output'];\n  statefulDeployments: Scalars['Int']['output'];\n  statefulProjects: Scalars['Int']['output'];\n  statefulServices: Scalars['Int']['output'];\n  statefulUsers: Scalars['Int']['output'];\n  statefulWorkspaces: Scalars['Int']['output'];\n  statelessSingleDeployments: Scalars['Int']['output'];\n  users: Scalars['Int']['output'];\n  vips: Array<HostMaintenanceVipImpactDetail>;\n  workspaces: Scalars['Int']['output'];\n};\n\nexport type HostMaintenanceNotificationsProgress = {\n  __typename?: 'HostMaintenanceNotificationsProgress';\n  completed: Scalars['Boolean']['output'];\n  cronJobsSkipped: Scalars['Int']['output'];\n  currentBatch: Scalars['Int']['output'];\n  currentPhase: Scalars['String']['output'];\n  dryRun: Scalars['Boolean']['output'];\n  eventsCreated: Scalars['Int']['output'];\n  eventsFailed: Scalars['Int']['output'];\n  eventsSkipped: Scalars['Int']['output'];\n  failoverStateless: Scalars['Boolean']['output'];\n  failoversFailed: Scalars['Int']['output'];\n  failoversTriggered: Scalars['Int']['output'];\n  processing: Scalars['Boolean']['output'];\n  replicaServicesSkipped: Scalars['Int']['output'];\n  startTime: Scalars['Float']['output'];\n  totalBatches: Scalars['Int']['output'];\n  totalDeployments: Scalars['Int']['output'];\n};\n\nexport type HostMaintenanceVipImpactDetail = {\n  __typename?: 'HostMaintenanceVipImpactDetail';\n  deploymentId: Scalars['String']['output'];\n  environmentId: Scalars['String']['output'];\n  environmentName: Scalars['String']['output'];\n  projectId: Scalars['String']['output'];\n  projectName: Scalars['String']['output'];\n  serviceId: Scalars['String']['output'];\n  serviceName: Scalars['String']['output'];\n  supportTierOverride: Scalars['String']['output'];\n  workspaceId: Scalars['String']['output'];\n  workspaceName: Scalars['String']['output'];\n};\n\nexport type HostMaintenanceWorkflowInfo = {\n  __typename?: 'HostMaintenanceWorkflowInfo';\n  stackerHostname: Scalars['String']['output'];\n  workflowId: Scalars['String']['output'];\n};\n\n/** The result of an HTTP duration metrics query. */\nexport type HttpDurationMetricsResult = {\n  __typename?: 'HttpDurationMetricsResult';\n  /** The samples of HTTP duration metrics. */\n  samples: Array<HttpDurationMetricsSample>;\n};\n\n/** A single sample of HTTP duration metrics. */\nexport type HttpDurationMetricsSample = {\n  __typename?: 'HttpDurationMetricsSample';\n  /** 50th percentile (median) request duration in milliseconds. */\n  p50: Scalars['Float']['output'];\n  /** 90th percentile request duration in milliseconds. */\n  p90: Scalars['Float']['output'];\n  /** 95th percentile request duration in milliseconds. */\n  p95: Scalars['Float']['output'];\n  /** 99th percentile request duration in milliseconds. */\n  p99: Scalars['Float']['output'];\n  /** The timestamp of the sample. Represented as number of seconds since the Unix epoch. */\n  ts: Scalars['Int']['output'];\n};\n\n/** The result of a http logs query. */\nexport type HttpLog = {\n  __typename?: 'HttpLog';\n  /** The client user agent */\n  clientUa: Scalars['String']['output'];\n  /** The deployment ID that was requested */\n  deploymentId: Scalars['String']['output'];\n  /** The deployment instance ID that was requested */\n  deploymentInstanceId: Scalars['String']['output'];\n  /** The downstream HTTP protocol version */\n  downstreamProto: Scalars['String']['output'];\n  /** The edge region the client connected to */\n  edgeRegion: Scalars['String']['output'];\n  /** The requested host */\n  host: Scalars['String']['output'];\n  /** The http status of the log */\n  httpStatus: Scalars['Int']['output'];\n  /** The request HTTP method */\n  method: Scalars['String']['output'];\n  /** The requested path */\n  path: Scalars['String']['output'];\n  /** The unique request ID */\n  requestId: Scalars['String']['output'];\n  /** Details about the upstream response */\n  responseDetails: Scalars['String']['output'];\n  /** Received bytes */\n  rxBytes: Scalars['Int']['output'];\n  /** The source IP of the request */\n  srcIp: Scalars['String']['output'];\n  /** The timestamp the log was created */\n  timestamp: Scalars['String']['output'];\n  /** The total duration the request took */\n  totalDuration: Scalars['Int']['output'];\n  /** Outgoing bytes */\n  txBytes: Scalars['Int']['output'];\n  /** The upstream address */\n  upstreamAddress: Scalars['String']['output'];\n  /** Any upstream errors that occurred */\n  upstreamErrors: Scalars['String']['output'];\n  /** The upstream HTTP protocol version */\n  upstreamProto: Scalars['String']['output'];\n  /** How long the upstream request took to respond */\n  upstreamRqDuration: Scalars['Int']['output'];\n};\n\n/** HTTP metrics grouped by status code. */\nexport type HttpMetricsByStatusResult = {\n  __typename?: 'HttpMetricsByStatusResult';\n  /** The samples of HTTP metrics for this status code. */\n  samples: Array<HttpMetricsSample>;\n  /** The HTTP status code. */\n  statusCode: Scalars['Int']['output'];\n};\n\n/** The result of an HTTP metrics query. */\nexport type HttpMetricsResult = {\n  __typename?: 'HttpMetricsResult';\n  /** The samples of HTTP metrics. */\n  samples: Array<HttpMetricsSample>;\n};\n\n/** A single sample of an HTTP metric. */\nexport type HttpMetricsSample = {\n  __typename?: 'HttpMetricsSample';\n  /** The timestamp of the sample. Represented as number of seconds since the Unix epoch. */\n  ts: Scalars['Int']['output'];\n  /** The value of the sample (count of requests). */\n  value: Scalars['Float']['output'];\n};\n\nexport type Incident = {\n  __typename?: 'Incident';\n  createdAt?: Maybe<Scalars['DateTime']['output']>;\n  id: Scalars['String']['output'];\n  message: Scalars['String']['output'];\n  status: IncidentStatus;\n  url: Scalars['String']['output'];\n};\n\nexport type IncidentStatus =\n  | 'IDENTIFIED'\n  | 'INVESTIGATING'\n  | 'MONITORING'\n  | 'RESOLVED';\n\nexport type Integration = Node & {\n  __typename?: 'Integration';\n  config: Scalars['JSON']['output'];\n  id: Scalars['ID']['output'];\n  name: Scalars['String']['output'];\n  projectId: Scalars['String']['output'];\n};\n\nexport type IntegrationAuth = Node & {\n  __typename?: 'IntegrationAuth';\n  id: Scalars['ID']['output'];\n  integrations: IntegrationAuthIntegrationsConnection;\n  provider: Scalars['String']['output'];\n  providerId: Scalars['String']['output'];\n};\n\n\nexport type IntegrationAuthIntegrationsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type IntegrationAuthIntegrationsConnection = {\n  __typename?: 'IntegrationAuthIntegrationsConnection';\n  edges: Array<IntegrationAuthIntegrationsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type IntegrationAuthIntegrationsConnectionEdge = {\n  __typename?: 'IntegrationAuthIntegrationsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Integration;\n};\n\nexport type IntegrationCreateInput = {\n  config: Scalars['JSON']['input'];\n  integrationAuthId?: InputMaybe<Scalars['String']['input']>;\n  name: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n};\n\nexport type IntegrationUpdateInput = {\n  config: Scalars['JSON']['input'];\n  integrationAuthId?: InputMaybe<Scalars['String']['input']>;\n  name: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n};\n\n/** The result of a frontend invalidation subscription */\nexport type InvalidationResult = {\n  __typename?: 'InvalidationResult';\n  /** The unique ID of the invalidation */\n  id: Scalars['String']['output'];\n};\n\nexport type InviteCode = Node & {\n  __typename?: 'InviteCode';\n  code: Scalars['String']['output'];\n  createdAt: Scalars['DateTime']['output'];\n  id: Scalars['ID']['output'];\n  project: Project;\n  projectId: Scalars['String']['output'];\n  role: ProjectRole;\n};\n\nexport type InvoiceStandingDetails = {\n  __typename?: 'InvoiceStandingDetails';\n  periodEnd: Scalars['String']['output'];\n  total: Scalars['Int']['output'];\n};\n\nexport type JobApplicationCreateInput = {\n  email: Scalars['String']['input'];\n  jobId: Scalars['String']['input'];\n  name: Scalars['String']['input'];\n  why: Scalars['String']['input'];\n};\n\nexport type KeyType =\n  | 'KEY_TYPE_ECDSA'\n  | 'KEY_TYPE_RSA_2048'\n  | 'KEY_TYPE_RSA_4096'\n  | 'KEY_TYPE_UNSPECIFIED'\n  | 'UNRECOGNIZED';\n\nexport type LighthouseToken = {\n  __typename?: 'LighthouseToken';\n  clusterId: Scalars['String']['output'];\n  createdAt?: Maybe<Scalars['DateTime']['output']>;\n  createdBy: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  key: Scalars['String']['output'];\n  reason: Scalars['String']['output'];\n  token: Scalars['String']['output'];\n  ttl: Scalars['Int']['output'];\n};\n\nexport type LimitsVersion =\n  | 'V1'\n  | 'V2';\n\nexport type LockdownStatus = {\n  __typename?: 'LockdownStatus';\n  allProvisionsDisabledMsg?: Maybe<Scalars['String']['output']>;\n  anonProvisionsDisabledMsg?: Maybe<Scalars['String']['output']>;\n  autoRefundsRandomRejectForHumanReviewValue?: Maybe<Scalars['Int']['output']>;\n  autoRefundsShowToHumanValue?: Maybe<Scalars['Int']['output']>;\n  bucketProvisionsDisabledMsg?: Maybe<Scalars['String']['output']>;\n  freeProvisionsDisabledMsg?: Maybe<Scalars['String']['output']>;\n  nonProProvisionsDisabledMsg?: Maybe<Scalars['String']['output']>;\n  nonVerifiedProvisionsDisabledMsg?: Maybe<Scalars['String']['output']>;\n  signupsDisabledMsg?: Maybe<Scalars['String']['output']>;\n  volumeProvisionsDisabledMsg?: Maybe<Scalars['String']['output']>;\n};\n\n/** The result of a logs query. */\nexport type Log = {\n  __typename?: 'Log';\n  /** The attributes that were parsed from a structured log */\n  attributes: Array<LogAttribute>;\n  /** The contents of the log message */\n  message: Scalars['String']['output'];\n  /** The severity of the log message (eg. err) */\n  severity?: Maybe<Scalars['String']['output']>;\n  /** The tags that were associated with the log */\n  tags?: Maybe<LogTags>;\n  /** The timestamp of the log message in format RFC3339 (nano) */\n  timestamp: Scalars['String']['output'];\n};\n\n/** The attributes associated with a structured log */\nexport type LogAttribute = {\n  __typename?: 'LogAttribute';\n  key: Scalars['String']['output'];\n  value: Scalars['String']['output'];\n};\n\n/** A single point in a histogram */\nexport type LogAttributesResult = {\n  __typename?: 'LogAttributesResult';\n  key: Scalars['String']['output'];\n};\n\nexport type LogIssue = {\n  __typename?: 'LogIssue';\n  count: Scalars['Int']['output'];\n  matched: Scalars['String']['output'];\n  message: Scalars['String']['output'];\n  pattern: Scalars['String']['output'];\n  severity: Scalars['String']['output'];\n};\n\nexport type LogLimits = {\n  __typename?: 'LogLimits';\n  retentionDays: Scalars['Float']['output'];\n};\n\nexport type LogSpewPattern = {\n  __typename?: 'LogSpewPattern';\n  count: Scalars['Int']['output'];\n  lastSeen: Scalars['String']['output'];\n  sample: Scalars['String']['output'];\n  template: Scalars['String']['output'];\n};\n\n/** The tags associated with a specific log */\nexport type LogTags = {\n  __typename?: 'LogTags';\n  deploymentId?: Maybe<Scalars['String']['output']>;\n  deploymentInstanceId?: Maybe<Scalars['String']['output']>;\n  environmentId?: Maybe<Scalars['String']['output']>;\n  /** @deprecated Plugins have been removed */\n  pluginId?: Maybe<Scalars['String']['output']>;\n  projectId?: Maybe<Scalars['String']['output']>;\n  serviceId?: Maybe<Scalars['String']['output']>;\n  snapshotId?: Maybe<Scalars['String']['output']>;\n};\n\nexport type LoginSessionAuthInput = {\n  code: Scalars['String']['input'];\n  hostname?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type MaintainerTemplatesResponse = {\n  __typename?: 'MaintainerTemplatesResponse';\n  avatar?: Maybe<Scalars['String']['output']>;\n  id: Scalars['String']['output'];\n  name: Scalars['String']['output'];\n  profile: PartnerProfile;\n  templates: Array<Template>;\n};\n\nexport type MaintainerWorkspace = {\n  __typename?: 'MaintainerWorkspace';\n  avatar?: Maybe<Scalars['String']['output']>;\n  id: Scalars['String']['output'];\n  name: Scalars['String']['output'];\n  partnerProfile?: Maybe<PartnerProfile>;\n};\n\nexport type Maintenance = {\n  __typename?: 'Maintenance';\n  id: Scalars['String']['output'];\n  message: Scalars['String']['output'];\n  start: Scalars['DateTime']['output'];\n  status: MaintenanceStatus;\n  url: Scalars['String']['output'];\n};\n\nexport type MaintenanceStatus =\n  | 'COMPLETED'\n  | 'INPROGRESS'\n  | 'NOTSTARTEDYET';\n\nexport type MatchingDeploymentInstance = {\n  __typename?: 'MatchingDeploymentInstance';\n  environmentId: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  isCron: Scalars['Boolean']['output'];\n  isStateless: Scalars['Boolean']['output'];\n  plan: Scalars['String']['output'];\n  projectId: Scalars['String']['output'];\n  replicas: Scalars['Int']['output'];\n  runtime: Scalars['String']['output'];\n  serviceId?: Maybe<Scalars['String']['output']>;\n  volumeInstanceId?: Maybe<Scalars['String']['output']>;\n  workspaceId?: Maybe<Scalars['String']['output']>;\n  workspaceName?: Maybe<Scalars['String']['output']>;\n};\n\nexport type MatchingVolumeInstance = {\n  __typename?: 'MatchingVolumeInstance';\n  detachmentReason: VolumeDetachmentReason;\n  environmentId: Scalars['String']['output'];\n  externalId: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  plan: Scalars['String']['output'];\n  projectId: Scalars['String']['output'];\n  serviceId?: Maybe<Scalars['String']['output']>;\n  volumeId?: Maybe<Scalars['String']['output']>;\n  workspaceId?: Maybe<Scalars['String']['output']>;\n  workspaceName?: Maybe<Scalars['String']['output']>;\n};\n\nexport type MergeDeploymentFixPrResponse = {\n  __typename?: 'MergeDeploymentFixPRResponse';\n  error?: Maybe<Scalars['String']['output']>;\n  success: Scalars['Boolean']['output'];\n};\n\n/** A single sample of a metric. */\nexport type Metric = {\n  __typename?: 'Metric';\n  /** The timestamp of the sample. Represented has number of seconds since the Unix epoch. */\n  ts: Scalars['Int']['output'];\n  /** The value of the sample. */\n  value: Scalars['Float']['output'];\n};\n\n/** A thing that can be measured on Railway. */\nexport type MetricMeasurement =\n  | 'BACKUP_USAGE_GB'\n  | 'CPU_LIMIT'\n  | 'CPU_USAGE'\n  | 'CPU_USAGE_2'\n  | 'DISK_USAGE_GB'\n  | 'EPHEMERAL_DISK_USAGE_GB'\n  | 'MEASUREMENT_UNSPECIFIED'\n  | 'MEMORY_LIMIT_GB'\n  | 'MEMORY_USAGE_GB'\n  | 'NETWORK_RX_GB'\n  | 'NETWORK_TX_GB'\n  | 'UNRECOGNIZED';\n\n/** A property that can be used to group metrics. */\nexport type MetricTag =\n  | 'DEPLOYMENT_ID'\n  | 'DEPLOYMENT_INSTANCE_ID'\n  | 'ENVIRONMENT_ID'\n  | 'HOST_TYPE'\n  | 'KEY_UNSPECIFIED'\n  | 'PLUGIN_ID'\n  | 'PROJECT_ID'\n  | 'REGION'\n  | 'SERVICE_ID'\n  | 'UNRECOGNIZED'\n  | 'VOLUME_ID'\n  | 'VOLUME_INSTANCE_ID';\n\n/** The tags that were used to group the metric. */\nexport type MetricTags = {\n  __typename?: 'MetricTags';\n  deploymentId?: Maybe<Scalars['String']['output']>;\n  deploymentInstanceId?: Maybe<Scalars['String']['output']>;\n  environmentId?: Maybe<Scalars['String']['output']>;\n  /** @deprecated Plugins have been removed */\n  pluginId?: Maybe<Scalars['String']['output']>;\n  projectId?: Maybe<Scalars['String']['output']>;\n  region?: Maybe<Scalars['String']['output']>;\n  serviceId?: Maybe<Scalars['String']['output']>;\n  volumeId?: Maybe<Scalars['String']['output']>;\n  volumeInstanceId?: Maybe<Scalars['String']['output']>;\n};\n\n/** The result of a metrics query. */\nexport type MetricsReplicaResult = {\n  __typename?: 'MetricsReplicaResult';\n  /** The measurement of the metric. */\n  measurement: MetricMeasurement;\n  /** The name of the replica. */\n  replicaName: Scalars['String']['output'];\n  /** The samples of the metric. */\n  values: Array<Metric>;\n};\n\n/** The result of a metrics query. */\nexport type MetricsResult = {\n  __typename?: 'MetricsResult';\n  /** The measurement of the metric. */\n  measurement: MetricMeasurement;\n  /** The tags that were used to group the metric. Only the tags that were used to by will be present. */\n  tags: MetricTags;\n  /** The samples of the metric. */\n  values: Array<Metric>;\n};\n\nexport type MigrateStackerProgress = {\n  __typename?: 'MigrateStackerProgress';\n  deploymentInstanceCount: Scalars['Int']['output'];\n  failedDeploymentInstances: Array<Scalars['String']['output']>;\n  finished: Scalars['Boolean']['output'];\n  migratedDeploymentInstances: Array<Scalars['String']['output']>;\n};\n\nexport type MissingCommandAlertInput = {\n  page: Scalars['String']['input'];\n  text: Scalars['String']['input'];\n};\n\nexport type MobileAuthTokenResult = {\n  __typename?: 'MobileAuthTokenResult';\n  expiresIn: Scalars['Int']['output'];\n  token: Scalars['String']['output'];\n};\n\n/** A collection belonging to a MongoDB database */\nexport type MongoCollection = {\n  __typename?: 'MongoCollection';\n  count: Scalars['Int']['output'];\n  data: Scalars['JSON']['output'];\n  name: Scalars['String']['output'];\n};\n\nexport type MonitorAlertResourceType =\n  | 'SERVICE'\n  | 'VOLUME';\n\nexport type MonitorConfigInput = {\n  threshold?: InputMaybe<MonitorThresholdConfigInput>;\n  type: MonitorType;\n};\n\nexport type MonitorStatus =\n  | 'ALERT'\n  | 'OK';\n\nexport type MonitorThresholdCondition =\n  | 'above'\n  | 'below';\n\nexport type MonitorThresholdConfig = {\n  __typename?: 'MonitorThresholdConfig';\n  condition: MonitorThresholdCondition;\n  measurement?: Maybe<MetricMeasurement>;\n  threshold: Scalars['Float']['output'];\n  type: Scalars['String']['output'];\n};\n\nexport type MonitorThresholdConfigInput = {\n  condition: MonitorThresholdCondition;\n  measurement?: InputMaybe<MetricMeasurement>;\n  threshold: Scalars['Float']['input'];\n};\n\nexport type MonitorType =\n  | 'threshold';\n\nexport type MonorepoImportStatus =\n  | 'COMPLETED'\n  | 'FAILED'\n  | 'LOADING';\n\nexport type MonorepoImportStatusUpdate = {\n  __typename?: 'MonorepoImportStatusUpdate';\n  error?: Maybe<Scalars['String']['output']>;\n  status: MonorepoImportStatus;\n  totalPackages?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type MonthlyReferralCodeDiscount = {\n  __typename?: 'MonthlyReferralCodeDiscount';\n  amountCents: Scalars['Int']['output'];\n  name: Scalars['String']['output'];\n  remainingCouponApplications: Scalars['Int']['output'];\n};\n\nexport type Mutation = {\n  __typename?: 'Mutation';\n  /** Approve a ban appeal. WORKSPACE appeals lift the workspace restriction; USER appeals remove the submitting user from the workspace. */\n  adminApproveBanAppeal: Scalars['Boolean']['output'];\n  /** Bans an image from being deployed */\n  adminBanImage: BannedImage;\n  /** Clear traffic limit for a domain */\n  adminClearDomainTrafficLimit: Scalars['Boolean']['output'];\n  /** Create a full Stripe Connect withdrawal account for a customer */\n  adminCreateFullStripeConnectWithdrawalAccount: Scalars['Boolean']['output'];\n  /** Deletes a custom domain without project auth. For orphaned domains where the project has been hard-deleted. */\n  adminCustomDomainDelete: Scalars['Boolean']['output'];\n  /** Check a GitHub App installation's accessibility and permissions */\n  adminDebugInstallation: AdminDebugInstallationResult;\n  /** Delete the user with the provided userId */\n  adminDelete: Scalars['Boolean']['output'];\n  /** Delete a public repo without an installation from the cache */\n  adminDeleteRepoCache: Scalars['Boolean']['output'];\n  /** Deny a ban appeal. Leaves the underlying workspace restriction unchanged. */\n  adminDenyBanAppeal: Scalars['Boolean']['output'];\n  /** Drain a single deployment to metal */\n  adminDrainDeploymentToMetal: Scalars['Boolean']['output'];\n  /** Duplicates the invoice with the provided invoice ID */\n  adminDuplicateInvoice: Scalars['String']['output'];\n  /** Trigger an error */\n  adminError: Scalars['Boolean']['output'];\n  /** Force unlocks a volume instance. Use when a lock is stuck and needs manual intervention. */\n  adminForceUnlockVolumeInstance: Scalars['Boolean']['output'];\n  /** Gift a Pro subscription to a workspace */\n  adminGiftProSubscription: Scalars['Boolean']['output'];\n  /** Issue a refund for the given RefundRequest */\n  adminIssueRefundForRefundRequest: Scalars['Boolean']['output'];\n  /** Soft deletes an OAuth client (admin only) */\n  adminOAuthClientDelete: Scalars['Boolean']['output'];\n  /** Revokes all OAuth grants for a client (admin only) */\n  adminOAuthClientRevokeAllGrants: Scalars['Boolean']['output'];\n  /** Restores a soft-deleted OAuth client (admin only) */\n  adminOAuthClientUndelete: Scalars['Boolean']['output'];\n  /** Override a customer's withdrawal platforms */\n  adminOverrideCustomerWithdrawalPlatforms: Scalars['Boolean']['output'];\n  /** Override a workspace's support tier */\n  adminOverrideWorkspaceSupportTier: Scalars['Boolean']['output'];\n  /** Block canvas access for a project (admin only) */\n  adminProjectCanvasBlock: Scalars['Boolean']['output'];\n  /** Disable canvas mutation logging for a project (admin only) */\n  adminProjectCanvasMutationLoggingDisable: Scalars['Boolean']['output'];\n  /** Enable canvas mutation logging for a project (admin only) */\n  adminProjectCanvasMutationLoggingEnable: Scalars['Boolean']['output'];\n  /** Unblock canvas access for a project (admin only) */\n  adminProjectCanvasUnblock: Scalars['Boolean']['output'];\n  /** Push the canonical Metadata (projectId, environmentId, volumeId) for a volume instance to its stacker's labels file. Used to repair volumes whose metric tagging is broken because the labels file is missing fields the exporter needs. */\n  adminPushVolumeInstanceMetadata: Scalars['Boolean']['output'];\n  /** Take action on radar scan matches (creates events then applies action) */\n  adminRadarAction: RadarActionResult;\n  /** Cancel a running radar scan */\n  adminRadarCancelScan: Scalars['Boolean']['output'];\n  /** Apply action to existing radar events by ID */\n  adminRadarEventAction: RadarActionResult;\n  /** Delete a radar list */\n  adminRadarListDelete: Scalars['Boolean']['output'];\n  /** Create or update a radar list */\n  adminRadarListUpsert: RadarList;\n  /** Delete a radar rule */\n  adminRadarRuleDelete: Scalars['Boolean']['output'];\n  /** Create or update a radar rule */\n  adminRadarRuleUpsert: RadarRule;\n  /** Start a manual radar scan for a rule. If applyAction is true, the scan will also retroactively apply the rule's BAN or RESTRICT action to every match as candidates stream through (handles >10k matches). */\n  adminRadarStartScan: Scalars['Boolean']['output'];\n  /** Applies an admin referral code to an existing workspace */\n  adminReferralCodeApplyToWorkspace: Scalars['Boolean']['output'];\n  /** Creates a new admin referral code */\n  adminReferralCodeCreate: AdminReferralCode;\n  /** Deletes an admin referral code (soft delete) */\n  adminReferralCodeDelete: Scalars['Boolean']['output'];\n  /** Updates an existing admin referral code */\n  adminReferralCodeUpdate: AdminReferralCode;\n  /** Fetch all repos for a GitHub App installation and update the cache */\n  adminRefreshInstallationRepos: Scalars['Int']['output'];\n  /** Refresh the cached data for a specific postgres-ha cluster */\n  adminRefreshPostgresHaCluster?: Maybe<PostgresHaCluster>;\n  /** Refresh the cached data for a specific postgres-pitr service */\n  adminRefreshPostgresPitrService?: Maybe<PostgresPitrService>;\n  /** Re-fetch and cache a public repo from GitHub */\n  adminRefreshPublicRepoCache: Scalars['Boolean']['output'];\n  /** Remove phantom deployment instances */\n  adminRemovePhantomInstances: Scalars['Boolean']['output'];\n  /** Remove the resource limit overrides for a service instance (revert to plan defaults) */\n  adminRemoveServiceInstanceLimitOverride: Scalars['Boolean']['output'];\n  /** Send host maintenance notifications to users with deployments on a specific host */\n  adminSendHostMaintenanceNotifications: Scalars['String']['output'];\n  /** Send a test host maintenance notification to the calling admin user */\n  adminSendHostMaintenanceTestNotification: Scalars['Boolean']['output'];\n  /** Sends a notification to workspace members */\n  adminSendNotification: Scalars['Boolean']['output'];\n  /** Set traffic limit for a domain */\n  adminSetDomainTrafficLimit: Scalars['Boolean']['output'];\n  /** Set the resource limits for a service instance */\n  adminSetServiceInstanceLimitOverride: Scalars['Boolean']['output'];\n  /** Simulate usage on a customer */\n  adminSimulateStripeUsageOnCustomer: Scalars['Boolean']['output'];\n  /** Create or update a spend commitment for a customer (admin only) */\n  adminSpendCommitmentUpsert: Scalars['Boolean']['output'];\n  /** Sync HTTP routes for a service (admin only). Re-syncs endpoints from private networking to HTTP routes. */\n  adminSyncHTTPRoutes: SyncRoutesResult;\n  /** Sync TCP routes for a service (admin only). Re-syncs endpoints from private networking to TCP routes. */\n  adminSyncTCPRoutes: SyncRoutesResult;\n  /** Trigger a manual etcd defragmentation run for a postgres-ha cluster */\n  adminTriggerEtcdDefrag: Scalars['Boolean']['output'];\n  /** SSH into the service and trigger an immediate full pgBackRest backup. Returns true if the SSH command was dispatched; false if the service has no cached deployment instance or the SSH call failed. */\n  adminTriggerPitrFullBackup: Scalars['Boolean']['output'];\n  /** Trigger an immediate run of the postgres-ha monitor schedule */\n  adminTriggerPostgresHaMonitor: Scalars['Boolean']['output'];\n  /** Trigger an immediate run of the postgres-pitr monitor schedule */\n  adminTriggerPostgresPitrMonitor: Scalars['Boolean']['output'];\n  /** Trigger routing repair workflow for a service (admin only). Repairs privnet routes, service domains, custom domains, and TCP allocations. */\n  adminTriggerRoutingRepair: RoutingRepairResult;\n  /** Trigger a transactional email */\n  adminTriggerTransactionalEmail: Scalars['Boolean']['output'];\n  /** Trigger the workspace volume deletion resolution workflow */\n  adminTriggerWorkspaceVolumeDeletionResolutionWorkflow: Scalars['Boolean']['output'];\n  /** Unbans an image */\n  adminUnbanImage: Scalars['Boolean']['output'];\n  /** Mark the given email as unsubscribed in Customer.io. Works for both Railway users and arbitrary emails (e.g. forwarded recipients with no Railway account). */\n  adminUnsubscribeEmail: AdminUnsubscribeEmailResult;\n  /** Update auto refund settings. */\n  adminUpdateAutoRefundSettings: Scalars['Boolean']['output'];\n  /** Void an open Stripe invoice */\n  adminVoidStripeInvoice: Scalars['Boolean']['output'];\n  /** Link an existing Slack channel to a workspace */\n  adminWorkspaceLinkSlackChannel: Scalars['Boolean']['output'];\n  /** Mark a Slack channel as archived */\n  adminWorkspaceToggleArchiveSlackChannel: Scalars['Boolean']['output'];\n  /** Set agent usage limit for a workspace */\n  agentUsageLimitSet: Scalars['Boolean']['output'];\n  /** Analyze the GitHub backpressure queue to see how many duplicates exist without processing them. */\n  analyzeGithubBackpressureQueue: GithubBackpressureQueueAnalysis;\n  /** Creates a new API token. */\n  apiTokenCreate: Scalars['String']['output'];\n  /** Deletes an API token. */\n  apiTokenDelete: Scalars['Boolean']['output'];\n  /** Sets the base environment override for a deployment trigger. */\n  baseEnvironmentOverride: Scalars['Boolean']['output'];\n  /** Create a bucket in a project */\n  bucketCreate: Bucket;\n  /** Reset the credentials for a bucket in an environment */\n  bucketCredentialsReset: BucketS3CompatibleCredentials;\n  /** Updates a bucket. */\n  bucketUpdate: Bucket;\n  /** Temporal activity heartbeat */\n  buildExtendDeadline: Scalars['Boolean']['output'];\n  /** Merge a canvas layout from one environment into another. Re-computes the merge from current state and applies mutations. */\n  canvasViewMerge: Scalars['Boolean']['output'];\n  /** Triggers an email with the changelog for the provided slug */\n  changelogSend: Scalars['Boolean']['output'];\n  /** Send a message to the Railway AI assistant */\n  chatSendMessage: ChatSendMessageResponse;\n  /** Remove stale entries from the GitHub backpressure active set. Stale entries are deployments that have reached a terminal status (SUCCESS, FAILED, CRASHED, REMOVED, SKIPPED), are older than 96 hours, or weren't cleaned up. */\n  cleanupStaleGithubBackpressureActive: GithubBackpressureCleanupResult;\n  /** Clear the GitHub backpressure queue for a plan. Returns the number of items cleared. */\n  clearGithubBackpressureQueue: Scalars['Int']['output'];\n  /** Track events from the Railway CLI */\n  cliEventTrack: Scalars['Boolean']['output'];\n  /** Compact the GitHub backpressure queue for a plan by keeping only the newest deployment per service instance. Starts a Temporal workflow and returns the workflow ID. */\n  compactGithubBackpressureQueue: Scalars['String']['output'];\n  /** Creates a new refund support request */\n  createRefundRequest: Scalars['Boolean']['output'];\n  /** Create a new support thread */\n  createSupportThread: SupportThread;\n  /** Submit a ban appeal for a workspace the calling user is an admin of. Used by the in-dashboard appeal form behind the BAN_APPEAL_FORM flag. */\n  createWorkspaceRestrictionAppeal: Scalars['Boolean']['output'];\n  /** Creates a new custom domain. */\n  customDomainCreate: CustomDomain;\n  /** Deletes a custom domain. */\n  customDomainDelete: Scalars['Boolean']['output'];\n  /** Issues a new certificate */\n  customDomainIssueCertificate: Scalars['Boolean']['output'];\n  /** Updates a custom domain. */\n  customDomainUpdate: Scalars['Boolean']['output'];\n  /** Apply a credit to a customer */\n  customerApplyCredit: Scalars['Boolean']['output'];\n  /** Cancel an incomplete payment intent for a customer */\n  customerCancelIncompletePaymentIntent: Scalars['Boolean']['output'];\n  /** Cancel an incomplete subscription attempt */\n  customerCancelIncompleteSubscription: Scalars['Boolean']['output'];\n  /** Cancel a customer's subscription at the end of the billing period */\n  customerCancelSubscription: Customer;\n  /** Cancel all subscriptions for a customer */\n  customerCancelSubscriptions: Scalars['Boolean']['output'];\n  /** Complete a spend commitment subscription for a customer */\n  customerCompleteSpendCommitmentSubscription: Scalars['Boolean']['output'];\n  /** Complete a usage-based subscription for a customer */\n  customerCompleteUsageSubscriptionV2: Scalars['Boolean']['output'];\n  /** Create a Stripe billing portal for a customer */\n  customerCreateBillingPortal: Scalars['String']['output'];\n  /** Create a bounty payout for a customer */\n  customerCreateBountyPayout: Scalars['Boolean']['output'];\n  /** Create a free plan subscription for a customer */\n  customerCreateFreePlanSubscription: Scalars['Boolean']['output'];\n  /** Create a thread payout for a customer */\n  customerCreateThreadPayout: Scalars['Boolean']['output'];\n  /** Create a usage-based subscription for a customer */\n  customerCreateUsageSubscriptionV2: CustomerCreateUsageSubscriptionV2Response;\n  /** Delete all payment methods for a customer who has no subscriptions */\n  customerDeletePaymentMethods: Customer;\n  /** Delete a tax ID from a customer */\n  customerDeleteTaxId: Customer;\n  /** Purchase credits for a Railway customer */\n  customerPurchaseCredits: Scalars['JSON']['output'];\n  /** Renew a customer's cancelled subscription */\n  customerRenewSubscription: Customer;\n  /** Replace the default payment method for a customer */\n  customerReplacePaymentMethod: CustomerReplacePaymentMethodResponse;\n  /** Report all usage for a customer to Stripe for the current billing period */\n  customerReportUsage: Scalars['Boolean']['output'];\n  /** Subscribe a customer to a spend commitment */\n  customerSubscribeToSpendCommitment: CustomerSubscribeToSpendCommitmentResponse;\n  /** Toggle whether a customer is automatically withdrawing to credits */\n  customerTogglePayoutsToCredits: Scalars['Boolean']['output'];\n  /** Transfer credits from one customer to another */\n  customerTransferCredits: Scalars['Boolean']['output'];\n  /** Update a customer's billing address and/or tax ID */\n  customerUpdateBillingDetails: Customer;\n  /** Update a customer's billing email */\n  customerUpdateBillingEmail: Customer;\n  /** Void an incomplete spend commitment invoice */\n  customerVoidIncompleteSpendCommitmentInvoice: Scalars['Boolean']['output'];\n  /** Reset database password for a service in an environment. Not supported for Postgres HA clusters. */\n  databasePasswordReset: DatabasePasswordResetResponse;\n  /** Create a new compute cluster */\n  dataplaneClusterCreate: Scalars['String']['output'];\n  /** Create a new lighthouse token */\n  dataplaneLighthouseTokenCreate: Scalars['String']['output'];\n  /** Delete a lighthouse token */\n  dataplaneLighthouseTokenDelete: Scalars['Boolean']['output'];\n  /** Approves a deployment. */\n  deploymentApprove: Scalars['Boolean']['output'];\n  /** Cancels a deployment. */\n  deploymentCancel: Scalars['Boolean']['output'];\n  /** Acknowledge a deployment event. */\n  deploymentEventAck: Scalars['Boolean']['output'];\n  /** Invoke a deployment instance execution. */\n  deploymentInstanceExecutionCreate: Scalars['Boolean']['output'];\n  /** Redeploys a deployment. */\n  deploymentRedeploy: Deployment;\n  /** Removes a deployment. */\n  deploymentRemove: Scalars['Boolean']['output'];\n  /** Restarts a deployment. */\n  deploymentRestart: Scalars['Boolean']['output'];\n  /** Rolls back to a deployment. */\n  deploymentRollback: Scalars['Boolean']['output'];\n  /** Stops a deployment. */\n  deploymentStop: Scalars['Boolean']['output'];\n  /** Creates a deployment trigger. */\n  deploymentTriggerCreate: DeploymentTrigger;\n  /** Deletes a deployment trigger. */\n  deploymentTriggerDelete: Scalars['Boolean']['output'];\n  /** Updates a deployment trigger. */\n  deploymentTriggerUpdate: DeploymentTrigger;\n  /** Updates workspace's needs approval policy, without compromising security */\n  deploymentsNeedApprovalUpdate: Scalars['Boolean']['output'];\n  /** Disables CDN for a service, soft-deleting the edge config. */\n  disableServiceCdn: Scalars['Boolean']['output'];\n  /** Create services and volumes from docker compose */\n  dockerComposeImport: DockerComposeImport;\n  /** Verify Domain Connect state from callback */\n  domainConnectStateVerify: DomainConnectStateVerifyResult;\n  /** Generate a Domain Connect URL for one-click DNS configuration */\n  domainConnectURLGenerate: DomainConnectUrlResult;\n  /** Drain deployment instances from a stacker given a set of filters */\n  drainStacker: Scalars['Boolean']['output'];\n  /** Cancel draining workflow of a stacker */\n  drainStackerCancel: Scalars['Boolean']['output'];\n  /** Find deployment instances to drain from a stacker given a set of filters */\n  drainStackerFindMatches: DrainStackerWorkflowInfo;\n  /** Create a new egress gateway association for a service instance */\n  egressGatewayAssociationCreate: Array<EgressGateway>;\n  /** Clear all egress gateway associations for a service instance */\n  egressGatewayAssociationsClear: Scalars['Boolean']['output'];\n  /** Rollback from HA static IPs to legacy. Creates legacy association, clears HA, and redeploys. */\n  egressGatewayRollbackFromHA: Array<EgressGateway>;\n  /** Upgrade static IPs from legacy to HA. Creates HA associations, clears legacy, and redeploys. */\n  egressGatewayUpgradeToHA: Array<EgressGateway>;\n  /** Change the User's account email if there is a valid change email request. */\n  emailChangeConfirm: Scalars['Boolean']['output'];\n  /** Initiate an email change request for a user */\n  emailChangeInitiate: Scalars['Boolean']['output'];\n  /** Enables CDN for a service, creating an edge config and attaching all live domains. */\n  enableServiceCdn: EdgeConfig;\n  /** Submit an enterprise demo request */\n  enterpriseDemoRequest: Scalars['Boolean']['output'];\n  /** Update the access level of an environment. Only workspace or project admins can modify this setting. */\n  environmentAccessUpdate: Environment;\n  /** Creates a new environment. */\n  environmentCreate: Environment;\n  /** Deletes an environment. */\n  environmentDelete: Scalars['Boolean']['output'];\n  /** Commit the provided patch to the environment. */\n  environmentPatchCommit: Scalars['String']['output'];\n  /** Commits the staged changes for a single environment. */\n  environmentPatchCommitStaged: Scalars['String']['output'];\n  /** Renames an environment. */\n  environmentRename: Environment;\n  /** Sets the staged patch for a single environment. */\n  environmentStageChanges: EnvironmentPatch;\n  /** Deploys all connected triggers for an environment. */\n  environmentTriggersDeploy: Scalars['Boolean']['output'];\n  /** Unskip a service in a PR environment, deploying it and its transitive dependencies. */\n  environmentUnskipService: Scalars['Boolean']['output'];\n  /** Track a batch of events for authenticated user */\n  eventBatchTrack: Scalars['Boolean']['output'];\n  /** Track event for authenticated user */\n  eventTrack: Scalars['Boolean']['output'];\n  /** Agree to the fair use policy for the currently authenticated user */\n  fairUseAgree: Scalars['Boolean']['output'];\n  /** Add a feature flag for a user */\n  featureFlagAdd: Scalars['Boolean']['output'];\n  /** Remove a feature flag for a user */\n  featureFlagRemove: Scalars['Boolean']['output'];\n  /** Generate adoption info for a workspace */\n  generateAdoptionInfo: Scalars['Boolean']['output'];\n  /** Mints a 5-minute JWT for opening a browser WS session against tcp-proxy. */\n  generateShellToken: Scalars['String']['output'];\n  /** Deploys a GitHub repo */\n  githubRepoDeploy: Scalars['String']['output'];\n  /** Updates a GitHub repo through the linked template */\n  githubRepoUpdate: Scalars['Boolean']['output'];\n  /** Create a new group */\n  groupCreate: Group;\n  /** Delete a group */\n  groupDelete: Scalars['Boolean']['output'];\n  /** Add nodes to a group */\n  groupSet: Scalars['Boolean']['output'];\n  /** Update a group */\n  groupUpdate: Group;\n  /**\n   * Removed. Use helpStationRestrictWorkspace with input.type=BAN.\n   * @deprecated Removed. Use helpStationRestrictWorkspace with input.type=BAN.\n   */\n  helpStationBanUser: Scalars['Boolean']['output'];\n  /**\n   * Removed. Use helpStationRestrictWorkspace with input.type=BAN.\n   * @deprecated Removed. Use helpStationRestrictWorkspace with input.type=BAN.\n   */\n  helpStationBanWorkspace: Scalars['Boolean']['output'];\n  /** Update a single scoped path in a workspace's plan limit override. Merges into the existing override config — other override props are preserved. If the override becomes empty after an unset, the override row is deleted. */\n  helpStationPlanLimitOverrideUpsertScoped: HelpStationPlanLimitOverrideScopedResult;\n  /** Resize a volume instance to a larger target size. Tries online resize first when preferOnline=true and a service is attached, falling back to offline (snapshot + redeploy) on stacker-level failures. Plan-limit enforcement is the caller's responsibility — this endpoint does not validate against the workspace's plan max. */\n  helpStationResizeVolume: HelpStationResizeVolumeResult;\n  /** Apply a WorkspaceRestriction to a workspace. BAN propagates via cascade to co-owned workspaces (preserving those with viable other admins) and stops deploys regardless of `input.stopDeploys`. Pro workspaces require bypassProCheck=true when type=BAN. */\n  helpStationRestrictWorkspace: Scalars['Boolean']['output'];\n  /** Takes down a domain for a help station thread */\n  helpStationTakedownDomain: Scalars['Boolean']['output'];\n  /** Lift the active WorkspaceRestriction on a workspace. If an active BAN exists, lifts the cascade (origin + child rows) and auto-approves appeals on the origin. */\n  helpStationUnrestrictWorkspace: Scalars['Boolean']['output'];\n  /** Import variables from a Heroku app into a Railway service. Returns the number of variables imports */\n  herokuImportVariables: Scalars['Int']['output'];\n  /** Create an integration for a project */\n  integrationCreate: Integration;\n  /** Delete an integration for a project */\n  integrationDelete: Scalars['Boolean']['output'];\n  /** Update an integration for a project */\n  integrationUpdate: Integration;\n  /** Join a project using an invite code */\n  inviteCodeUse: Project;\n  /** Creates a new job application. */\n  jobApplicationCreate: Scalars['Boolean']['output'];\n  /** Auth a login session for a user */\n  loginSessionAuth: Scalars['Boolean']['output'];\n  /** Cancel a login session */\n  loginSessionCancel: Scalars['Boolean']['output'];\n  /** Get a token for a login session if it exists */\n  loginSessionConsume?: Maybe<Scalars['String']['output']>;\n  /** Start a CLI login session */\n  loginSessionCreate: Scalars['String']['output'];\n  /** Verify if a login session is valid */\n  loginSessionVerify: Scalars['Boolean']['output'];\n  /** Deletes session for current user if it exists */\n  logout: Scalars['Boolean']['output'];\n  /** Merge a GitHub PR for a service */\n  mergeDeploymentFixPr: MergeDeploymentFixPrResponse;\n  /** Migrate all deployment instances on a stacker */\n  migrateStacker: Scalars['String']['output'];\n  /** Alert the team of a missing command palette command */\n  missingCommandAlert: Scalars['Boolean']['output'];\n  /** Generate a short-lived token for mobile app QR login */\n  mobileAuthTokenGenerate: MobileAuthTokenResult;\n  /** Delete an entire collection from a MongoDB container */\n  mongoDeleteCollection: Scalars['Boolean']['output'];\n  /** Delete an entire collection from a MongoDB container */\n  mongoDeleteDocument: Scalars['Boolean']['output'];\n  /** Generate dummy data for a MongoDB container */\n  mongoDummyData: Scalars['Boolean']['output'];\n  /** Insert a document into a MongoDB container */\n  mongoInsertDocument: Scalars['String']['output'];\n  /** Update a document in a MongoDB container */\n  mongoUpdateDocument: Scalars['Boolean']['output'];\n  /** Marks notification deliveries as read */\n  notificationDeliveriesMarkAsRead: Scalars['Boolean']['output'];\n  /** Create a new notification rule */\n  notificationRuleCreate: NotificationRule;\n  /** Delete a notification rule */\n  notificationRuleDelete: Scalars['Boolean']['output'];\n  /** Update a notification rule */\n  notificationRuleUpdate: NotificationRule;\n  /** Delete a notification filter for the authenticated user */\n  notificationUserFilterDelete: Scalars['Boolean']['output'];\n  /** Create or update a notification filter for the authenticated user */\n  notificationUserFilterUpsert: NotificationUserFilter;\n  /** Revoke an authorized OAuth app (delete grant and tokens) */\n  oauthAuthorizedAppRevoke: Scalars['Boolean']['output'];\n  /** Update which projects an authorized OAuth app can access */\n  oauthAuthorizedAppUpdateProjects: Scalars['Boolean']['output'];\n  /** Update which workspaces an authorized OAuth app can access */\n  oauthAuthorizedAppUpdateWorkspaces: Scalars['Boolean']['output'];\n  /** Create a new OAuth client */\n  oauthClientCreate: OAuthClientCreateResponse;\n  /** Delete an OAuth client */\n  oauthClientDelete: Scalars['Boolean']['output'];\n  /** Create a new secret for an OAuth client */\n  oauthClientSecretCreate: OAuthClientSecretWithValue;\n  /** Revoke an OAuth client secret */\n  oauthClientSecretRevoke: Scalars['Boolean']['output'];\n  /** Update an OAuth client */\n  oauthClientUpdate: OAuthClient;\n  /** Create an observability dashboard */\n  observabilityDashboardCreate: Scalars['Boolean']['output'];\n  /** Create an observability monitor for a dashboard item */\n  observabilityDashboardMonitorCreate: Scalars['Boolean']['output'];\n  /** Remove an observability monitor from a dashboard item */\n  observabilityDashboardMonitorRemove: Scalars['Boolean']['output'];\n  /** Update an observability monitor for a dashboard item */\n  observabilityDashboardMonitorUpdate: Scalars['Boolean']['output'];\n  /** Reset an observability dashboard to default dashboard items */\n  observabilityDashboardReset: Scalars['Boolean']['output'];\n  /** Update an observability dashboard */\n  observabilityDashboardUpdate: Scalars['Boolean']['output'];\n  /** Creates a new partnership inquiry. */\n  partnershipInquiry: Scalars['Boolean']['output'];\n  /** Initiate a new Passkey authentication */\n  passkeyAuthenticationCreate: PasskeyCreateAuthenticationReponse;\n  /** Verify a Passkey authentication */\n  passkeyAuthenticationVerify: PasskeyVerifyAuthenticationReponse;\n  /** Deletes a Passkey */\n  passkeyDelete: Scalars['Boolean']['output'];\n  /** Initiate a new Passkey registration */\n  passkeyRegistrationCreate: PasskeyCreateRegistrationReponse;\n  /** Verify a Passkey registration */\n  passkeyRegistrationVerify: PasskeyVerifyRegistrationReponse;\n  /** Delete all passkeys for a user */\n  passkeysDeleteAll: Scalars['Boolean']['output'];\n  /** Delete a plan limit override for a customer */\n  planLimitOverrideDelete: Scalars['Boolean']['output'];\n  /** Set a custom plan limit override for a customer */\n  planLimitOverrideUpsert: Scalars['Boolean']['output'];\n  /** Toggles the specified platform service on or off. */\n  platformServiceToggle: Scalars['Boolean']['output'];\n  /** Clears the platform status incident cache */\n  platformStatusClearCache: Scalars['Boolean']['output'];\n  /** Overrides the platform incident status */\n  platformStatusOverrideMessage: Scalars['Boolean']['output'];\n  /**\n   * Creates a new plugin.\n   * @deprecated Plugins are deprecated on Railway. Use database templates instead.\n   */\n  pluginCreate: Plugin;\n  /**\n   * Deletes a plugin.\n   * @deprecated Plugins are deprecated\n   */\n  pluginDelete: Scalars['Boolean']['output'];\n  /**\n   * Generates a signed archive URL that can be used to access plugin container data\n   * @deprecated Plugins are deprecated\n   */\n  pluginGeneratedSignedArchiveUrl: Scalars['String']['output'];\n  /**\n   * Reset envs and container for a plugin in an environment\n   * @deprecated Plugins are deprecated\n   */\n  pluginReset: Scalars['Boolean']['output'];\n  /**\n   * Resets the credentials for a plugin in an environment\n   * @deprecated Plugins are deprecated\n   */\n  pluginResetCredentials: Scalars['String']['output'];\n  /**\n   * Restarts a plugin.\n   * @deprecated Plugins are deprecated\n   */\n  pluginRestart: Plugin;\n  /**\n   * Force start a plugin\n   * @deprecated Plugins are deprecated\n   */\n  pluginStart: Scalars['Boolean']['output'];\n  /**\n   * Updates an existing plugin.\n   * @deprecated Plugins are deprecated\n   */\n  pluginUpdate: Plugin;\n  /** Post a reply to a support thread */\n  postSupportMessage: SupportMessage;\n  /** Update the email preferences for a user */\n  preferencesUpdate: Preferences;\n  /** Creates a new job application. */\n  pricingInvoiceUpload: Scalars['Boolean']['output'];\n  /** Create or get a private network. */\n  privateNetworkCreateOrGet: PrivateNetwork;\n  /** Create or get a private network endpoint. */\n  privateNetworkEndpointCreateOrGet: PrivateNetworkEndpoint;\n  /** Delete a private network endpoint. */\n  privateNetworkEndpointDelete: Scalars['Boolean']['output'];\n  /** Rename a private network endpoint. */\n  privateNetworkEndpointRename: Scalars['Boolean']['output'];\n  /** Delete all private networks for an environment. */\n  privateNetworksForEnvironmentDelete: Scalars['Boolean']['output'];\n  /** Updates admin settings for a project */\n  projectAdminUpdate: Scalars['Boolean']['output'];\n  /** Cancel a running AI-assisted project setup */\n  projectCancelAgentSetup: Scalars['Boolean']['output'];\n  /** Evict a canvas document from all pods' memory and Redis cache. Forces the next connection to reload fresh state from the database. Use when DB state has been corrected and you need to invalidate cached canvas state. */\n  projectCanvasEvict: Scalars['Boolean']['output'];\n  /** Reset the canvas for a project */\n  projectCanvasReset: Scalars['Boolean']['output'];\n  /** Claims a project. */\n  projectClaim: Project;\n  /** Creates a new project. */\n  projectCreate: Project;\n  /** Create a project with AI-assisted setup */\n  projectCreateWithAgent: ProjectCreateWithAgentResponse;\n  /** Deletes a project. */\n  projectDelete: Scalars['Boolean']['output'];\n  /** Add a feature flag for a project */\n  projectFeatureFlagAdd: Scalars['Boolean']['output'];\n  /** Remove a feature flag for a project */\n  projectFeatureFlagRemove: Scalars['Boolean']['output'];\n  /** Accept a project invitation using the invite code */\n  projectInvitationAccept: ProjectPermission;\n  /** Create an invitation for a project */\n  projectInvitationCreate: ProjectInvitation;\n  /** Delete an invitation for a project */\n  projectInvitationDelete: Scalars['Boolean']['output'];\n  /** Resend an invitation for a project */\n  projectInvitationResend: ProjectInvitation;\n  /** Invite a user by email to a project */\n  projectInviteUser: Scalars['Boolean']['output'];\n  /** Leave project as currently authenticated user */\n  projectLeave: Scalars['Boolean']['output'];\n  /** Add a workspace member to a project with a specific role. The user must already be a member of the project's workspace. */\n  projectMemberAdd: ProjectMember;\n  /** Remove user from a project */\n  projectMemberRemove: Array<ProjectMember>;\n  /** Change the role for a user within a project */\n  projectMemberUpdate: ProjectMember;\n  /** Deletes a project with a 48 hour grace period. */\n  projectScheduleDelete: Scalars['Boolean']['output'];\n  /** Cancel scheduled deletion of a project */\n  projectScheduleDeleteCancel: Scalars['Boolean']['output'];\n  /** Force delete a scheduled deletion of a project (skips the grace period) */\n  projectScheduleDeleteForce: Scalars['Boolean']['output'];\n  /** Create a token for a project that has access to a specific environment */\n  projectTokenCreate: Scalars['String']['output'];\n  /** Delete a project token */\n  projectTokenDelete: Scalars['Boolean']['output'];\n  /** Transfer a project to a workspace */\n  projectTransfer: Scalars['Boolean']['output'];\n  /** Confirm the transfer of project ownership */\n  projectTransferConfirm: Scalars['Boolean']['output'];\n  /** Initiate the transfer of project ownership */\n  projectTransferInitiate: Scalars['Boolean']['output'];\n  /**\n   * Transfer a project to a team\n   * @deprecated Use projectTransfer instead\n   */\n  projectTransferToTeam: Scalars['Boolean']['output'];\n  /** Updates a project. */\n  projectUpdate: Project;\n  /** Deletes a ProviderAuth. */\n  providerAuthRemove: Scalars['Boolean']['output'];\n  /** Purges the CDN cache for a service. Bumps the edge config's purge epoch so every edge node treats prior cached entries as stale on next request. Idempotent; returns true even if CDN is disabled for the service. */\n  purgeServiceCache: Scalars['Boolean']['output'];\n  /** Register an Expo push notification token for the current user */\n  pushTokenRegister: Scalars['Boolean']['output'];\n  /** Unregister an Expo push notification token for the current user */\n  pushTokenUnregister: Scalars['Boolean']['output'];\n  /** Cancel a domain purchase */\n  railwayDomainCancelPurchase: Scalars['Boolean']['output'];\n  /** Complete a domain purchase after 3DS confirmation */\n  railwayDomainCompletePurchase: RailwayDomain;\n  /** Create a DNS record for a Railway domain */\n  railwayDomainDnsRecordCreate: RailwayDomainDnsRecord;\n  /** Delete a DNS record for a Railway domain */\n  railwayDomainDnsRecordDelete: Scalars['Boolean']['output'];\n  /** Update a DNS record for a Railway domain */\n  railwayDomainDnsRecordUpdate: RailwayDomainDnsRecord;\n  /** Unlock the domain at the registrar, disable auto-renew, and return the EPP auth code so the user can transfer to another registrar. */\n  railwayDomainInitiateTransferOut: RailwayDomainTransferOutResult;\n  /** Delegate the domain's authoritative nameservers to an external DNS provider, or reset to Railway defaults by passing an empty list. */\n  railwayDomainNameserversSet: RailwayDomainNameservers;\n  /** Purchase a Railway domain */\n  railwayDomainPurchase: RailwayDomainPurchaseResult;\n  /** Refund a Railway domain at registrar and cancel Stripe subscription */\n  railwayDomainRefund: RailwayDomain;\n  /** Update a Railway domain's settings */\n  railwayDomainUpdate: RailwayDomain;\n  /** Generates a new set of recovery codes for the authenticated user. */\n  recoveryCodeGenerate: RecoveryCodes;\n  /** Validates a recovery code. */\n  recoveryCodeValidate: Scalars['Boolean']['output'];\n  /** Delete a key in a Redis container */\n  redisDeleteKey: Scalars['Boolean']['output'];\n  /** Generate dummy data for a Redis container */\n  redisDummyData: Scalars['Boolean']['output'];\n  /** Delete values to a hash in a Redis container */\n  redisHashDelete: Scalars['Boolean']['output'];\n  /** Add values to a hash in a Redis container */\n  redisHashSet: Scalars['Boolean']['output'];\n  /** Pop a value from a list in a Redis container */\n  redisPopList: Scalars['Boolean']['output'];\n  /** Push a value to a list in a Redis container */\n  redisPushList: Scalars['Boolean']['output'];\n  /** Add a value from a set in a Redis container */\n  redisSetAdd: Scalars['Boolean']['output'];\n  /** Set a keys expire time in seconds in a Redis container */\n  redisSetExpire: Scalars['Boolean']['output'];\n  /** Set list index to a value Redis container */\n  redisSetListIndex: Scalars['Boolean']['output'];\n  /** Remove a value from a set in a Redis container */\n  redisSetRemove: Scalars['Boolean']['output'];\n  /** Set a string value in a Redis container */\n  redisStringSet: Scalars['Boolean']['output'];\n  /** Updates the ReferralInfo for the authenticated user. */\n  referralInfoUpdate: ReferralInfo;\n  /** Triggers a background refresh of the user's GitHub repos cache */\n  refreshGithubReposCache: RefreshGithubReposCacheResult;\n  /** Reissue an invoice for a workspace */\n  reissueInvoice: Scalars['Boolean']['output'];\n  /** Create a sandbox in an environment. */\n  sandboxCreate: Sandbox;\n  /** Destroy a sandbox. */\n  sandboxDestroy?: Maybe<Sandbox>;\n  /** Execute a command inside a running sandbox. */\n  sandboxExec: SandboxExecResult;\n  /** Build (or return) a content-addressed sandbox template. Idempotent and non-blocking: starts the build if needed and returns immediately; poll `sandboxTemplate` until READY. */\n  sandboxTemplateBuild: SandboxTemplate;\n  /** Send a notification email to user when bounty is won */\n  sendBountyWonEmail: Scalars['Boolean']['output'];\n  /** Send a community thread notification email */\n  sendCommunityThreadNotificationEmail: Scalars['Boolean']['output'];\n  /** Send an email to welcome a user to our community */\n  sendCommunityWelcomeEmail: Scalars['Boolean']['output'];\n  /** Send a new bounty question email */\n  sendNewBountyEmail: Scalars['Boolean']['output'];\n  /** Send a question moved to bounty email */\n  sendQuestionMovedToBountyEmail: Scalars['Boolean']['output'];\n  /** Notify template creators and maintainers about a new template queue question */\n  sendTemplateQueueEmail: Scalars['Boolean']['output'];\n  /** Notify template creators and maintainers about pending template queue questions */\n  sendTemplateQueueReminderEmail: Scalars['Boolean']['output'];\n  /** Connect a service to a source */\n  serviceConnect: Service;\n  /** Creates a new service. */\n  serviceCreate: Service;\n  /** Deletes a service. */\n  serviceDelete: Scalars['Boolean']['output'];\n  /** Disconnect a service from a repo */\n  serviceDisconnect: Service;\n  /** Creates a new service domain. */\n  serviceDomainCreate: ServiceDomain;\n  /** Deletes a service domain. */\n  serviceDomainDelete: Scalars['Boolean']['output'];\n  /** Updates a service domain. */\n  serviceDomainUpdate: Scalars['Boolean']['output'];\n  /**\n   * Duplicate a service, including its configuration, variables, and volumes.\n   * @deprecated This API route is used only by the CLI. We plan to remove it in a future version. Please use the UI to duplicate services.\n   */\n  serviceDuplicate: Service;\n  /** Add a feature flag for a service */\n  serviceFeatureFlagAdd: Scalars['Boolean']['output'];\n  /** Remove a feature flag for a service */\n  serviceFeatureFlagRemove: Scalars['Boolean']['output'];\n  /** Enables or disables auto-deploy for a service instance. */\n  serviceInstanceAutoDeployUpdate: ServiceInstanceAutoDeployUpdateResult;\n  /** Deploy a service instance */\n  serviceInstanceDeploy: Scalars['Boolean']['output'];\n  /** Deploy a service instance. Returns a deployment ID */\n  serviceInstanceDeployV2: Scalars['String']['output'];\n  /** Skip specific Docker image updates for a service instance */\n  serviceInstanceImageUpdateSkip: Scalars['Boolean']['output'];\n  /** Update the resource limits for a service instance */\n  serviceInstanceLimitsUpdate: Scalars['Boolean']['output'];\n  /** Redeploy a service instance */\n  serviceInstanceRedeploy: Scalars['Boolean']['output'];\n  /** Get a list of suggested variables for a services repo */\n  serviceInstanceSuggestedVariables: Scalars['JSON']['output'];\n  /** Update a service instance */\n  serviceInstanceUpdate: Scalars['Boolean']['output'];\n  /** Remove the upstream URL from all service instances for this service */\n  serviceRemoveUpstreamUrl: Service;\n  /** Updates a service. */\n  serviceUpdate: Service;\n  /** Deletes a session. */\n  sessionDelete: Scalars['Boolean']['output'];\n  /** Enable or disable ClickHouse for billing queries. When disabled, billing queries fail because VictoriaMetrics fallback has been removed. */\n  setClickhouseBackpressureBillingEnabled: Scalars['Boolean']['output'];\n  /** Set the max concurrency for ClickHouse billing queries (Bottleneck limiter). */\n  setClickhouseBackpressureBillingMaxConcurrent: Scalars['Boolean']['output'];\n  /** Set the max concurrency for interactive ClickHouse log queries (Bottleneck limiter). */\n  setClickhouseBackpressureLogsMaxConcurrent: Scalars['Boolean']['output'];\n  /** Set the max concurrency for ClickHouse ad-hoc metrics queries (Bottleneck limiter). */\n  setClickhouseBackpressureMetricsMaxConcurrent: Scalars['Boolean']['output'];\n  /** Set the alert threshold for GitHub backpressure. */\n  setGithubBackpressureAlertThreshold: Scalars['Boolean']['output'];\n  /** Set the GitHub backpressure configuration for a plan. */\n  setGithubBackpressureConfig: Scalars['Boolean']['output'];\n  /** Set the custom message shown to users when their deployment is cancelled due to queue clearing. */\n  setGithubBackpressureFailedMessage: Scalars['Boolean']['output'];\n  /** Set the custom message shown to users when their deployment is queued. */\n  setGithubBackpressureQueuedMessage: Scalars['Boolean']['output'];\n  /** Enable or disable GitHub deployment status updates globally. When disabled, no deployment status updates will be sent to GitHub. */\n  setGithubDeploymentStatusDisabled: Scalars['Boolean']['output'];\n  /** Set a percentage platform feature flag to a specific rollout percentage (0 - 100) */\n  setPercentagePlatformFeatureFlag: Scalars['Boolean']['output'];\n  /** Track setup agent lifecycle events from the Railway CLI */\n  setupAgentEventTrack: Scalars['Boolean']['output'];\n  /** Configure a shared variable. */\n  sharedVariableConfigure: Variable;\n  /** Cancel a customer's spend commitment */\n  spendCommitmentCancel: Scalars['Boolean']['output'];\n  /** Insert a column in a table in a SQL database container */\n  sqlColumnInsert: Scalars['Boolean']['output'];\n  /** Generate dummy data for a SQL database container */\n  sqlDummyData: Scalars['Boolean']['output'];\n  /** Install a SQL database extension */\n  sqlExtensionInstall: SqlExtensionInstallResult;\n  /** Uninstall a SQL database extension */\n  sqlExtensionUninstall: Scalars['Boolean']['output'];\n  /** Run the raw SQL query provided by the user */\n  sqlRawQueryRun: SqlRawQueryResponse;\n  /** Insert a row into a SQL database container */\n  sqlRowInsert: Scalars['Boolean']['output'];\n  /** Update row in a table in a SQL database container */\n  sqlRowUpdate: Scalars['Boolean']['output'];\n  /** Delete rows from a table in a SQL database container */\n  sqlRowsDelete: Scalars['Boolean']['output'];\n  /** Create a table in a SQL database container */\n  sqlTableCreate: Scalars['Boolean']['output'];\n  /** Delete a table in a SQL database container */\n  sqlTableDelete: Scalars['Boolean']['output'];\n  /** Creates a new SSH public key. When workspaceId is provided (or omitted under a workspace-scoped API token, in which case it defaults to the token's workspace), the key is owned by the workspace and can be used by anyone authenticating as that workspace via native SSH; requires workspace ADMIN access. Otherwise the key is owned by the authenticated user. */\n  sshPublicKeyCreate: SshPublicKey;\n  /** Deletes an SSH public key. */\n  sshPublicKeyDelete: Scalars['Boolean']['output'];\n  /** Cancel getting workflow to get stats of a stacker */\n  stackerStatsCancel: Scalars['Boolean']['output'];\n  /** Get deployment instances stats from a stacker */\n  stackerStatsGet: StackerStatsWorkflowInfo;\n  /** Prune phantom volumes on a stacker (zfs volumes not found in postgres and older than a given threshold) */\n  stackerVolumesPrunePhantoms: Scalars['Boolean']['output'];\n  /**\n   * Creates a new TCP proxy for a service instance.\n   * @deprecated Use staged changes and apply them. Creating a TCP proxy with this endpoint requires you to redeploy the service for it to be active.\n   */\n  tcpProxyCreate: TcpProxy;\n  /** Deletes a TCP proxy by id */\n  tcpProxyDelete: Scalars['Boolean']['output'];\n  /** Logs panics from CLI to Datadog */\n  telemetrySend: Scalars['Boolean']['output'];\n  /** Duplicates an existing template */\n  templateClone: Template;\n  /** Creates a template with the serialized config. */\n  templateCreateV2: Template;\n  /** Deletes a template. */\n  templateDelete: Scalars['Boolean']['output'];\n  /**\n   * Deploys a template.\n   * @deprecated Deprecated in favor of templateDeployV2\n   */\n  templateDeploy: TemplateDeployPayload;\n  /** Deploys a template using the serialized template config */\n  templateDeployV2: TemplateDeployPayload;\n  /** Generate a template for a project */\n  templateGenerate: Template;\n  /** Hides a template. */\n  templateHide: Scalars['Boolean']['output'];\n  /** Backfill template kickback payouts. */\n  templateKickbackBackfill: Scalars['Boolean']['output'];\n  /** Upserts a template maintainer */\n  templateMaintainerUpsert: Scalars['Boolean']['output'];\n  /** Nullify the community thread slug for a template, if one is found with the provided slug */\n  templateMaybeUnsetCommunityThreadSlug: Scalars['Boolean']['output'];\n  /** Publishes a template. */\n  templatePublish: Template;\n  /** Reverts an HA cluster to standalone mode using template metadata to derive variables to remove */\n  templateRevert: TemplateDeployPayload;\n  /** Ejects a service from the template and creates a new repo in the provided org. */\n  templateServiceSourceEject: Scalars['Boolean']['output'];\n  /** Unpublishes a template. */\n  templateUnpublish: Scalars['Boolean']['output'];\n  /** Updates a template with the serialized config. */\n  templateUpdateV2: Template;\n  /** Updates the configuration for a template */\n  templateUpsertConfig: Template;\n  /** Updates the settings for a template */\n  templateUpsertSettings: Template;\n  /** Toggle a boolean platform feature flag */\n  togglePlatformFeatureFlag: Scalars['Boolean']['output'];\n  /** Trigger AI-powered diagnosis of a failed deployment */\n  triggerDeploymentDiagnosis: TriggerDeploymentDiagnosisResponse;\n  /** Trigger creation of a fix PR for a diagnosed deployment */\n  triggerDeploymentFixPr: TriggerDeploymentFixPrResponse;\n  /** Create a new trusted domain for this workspace */\n  trustedDomainCreate: TrustedDomain;\n  /** Delete a trusted domain */\n  trustedDomainDelete: Scalars['Boolean']['output'];\n  /** Retrigger verification for a failed trusted domain */\n  trustedDomainRetriggerVerification?: Maybe<TrustedDomain>;\n  /** Setup 2FA authorization for authenticated user. */\n  twoFactorInfoCreate: RecoveryCodes;\n  /** Deletes the TwoFactorInfo for the authenticated user. */\n  twoFactorInfoDelete: Scalars['Boolean']['output'];\n  /** Reset the 2FA code for a user */\n  twoFactorInfoReset: Scalars['Boolean']['output'];\n  /** Generates the 2FA app secret for the authenticated user. */\n  twoFactorInfoSecret: TwoFactorInfoSecret;\n  /** Validates the token for a 2FA action or for a login request. */\n  twoFactorInfoValidate: Scalars['Boolean']['output'];\n  /** Updates the edge config (caching settings) for a service. */\n  updateServiceEdgeConfig: EdgeConfig;\n  /** Updates support metrics for template */\n  updateTemplateSupportMetrics: Scalars['Boolean']['output'];\n  /** Generate a Slack channel for a workspace */\n  upsertSlackChannel: Scalars['Boolean']['output'];\n  /** Allowlist a UsageAnomaly. */\n  usageAnomalyAllow: Scalars['Boolean']['output'];\n  /** Remove the usage limit for a customer */\n  usageLimitRemove: Scalars['Boolean']['output'];\n  /** Set the usage limit for a customer */\n  usageLimitSet: Scalars['Boolean']['output'];\n  /**\n   * Ban a user\n   * @deprecated Use the WorkspaceRestriction-based ban flow (workspaceRestrict with type=BAN). This mutation will be removed after caller migration.\n   */\n  userBan: Scalars['Boolean']['output'];\n  /** Unsubscribe from the Beta program. */\n  userBetaLeave: Scalars['Boolean']['output'];\n  /** Delete the currently authenticated user */\n  userDelete: Scalars['Boolean']['output'];\n  /** Disconnect your Railway account from Discord. */\n  userDiscordDisconnect: Scalars['Boolean']['output'];\n  /** Remove a flag on the user. */\n  userFlagsRemove: Scalars['Boolean']['output'];\n  /** Set flags on the authenticated user. */\n  userFlagsSet: Scalars['Boolean']['output'];\n  /** Updates the profile for the authenticated user */\n  userProfileUpdate: Scalars['Boolean']['output'];\n  /** Update the riskLevel for a user */\n  userRiskLevelUpdate: Scalars['Boolean']['output'];\n  /** Update date of TermsAgreedOn */\n  userTermsUpdate?: Maybe<User>;\n  /** Create a trial workspace for the current user (no credits) if they have no existing workspaces */\n  userTrialWorkspaceCreate: Workspace;\n  /**\n   * Unban a user\n   * @deprecated Use the WorkspaceRestriction-based unban flow (workspaceUnrestrict on the origin workspace). This mutation will be removed after caller migration.\n   */\n  userUnban: Scalars['Boolean']['output'];\n  /** Update currently logged in user */\n  userUpdate?: Maybe<User>;\n  /** Upserts a collection of variables. */\n  variableCollectionUpsert: Scalars['Boolean']['output'];\n  /** Deletes a variable. */\n  variableDelete: Scalars['Boolean']['output'];\n  /** Upserts a variable. */\n  variableUpsert: Scalars['Boolean']['output'];\n  /** Create a persistent volume in a project */\n  volumeCreate: Volume;\n  /** Delete a persistent volume in a project */\n  volumeDelete: Scalars['Boolean']['output'];\n  /** Deletes multiple volume instance backups in a single operation */\n  volumeInstanceBackupBatchDelete: WorkflowId;\n  /** Create backup of a volume instance */\n  volumeInstanceBackupCreate: WorkflowId;\n  /** Create a pre-HA-conversion backup of a volume instance. Available to all plans; expires in 21 days. */\n  volumeInstanceBackupCreateForHaConversion: WorkflowId;\n  /** Deletes volume instance backup */\n  volumeInstanceBackupDelete: WorkflowId;\n  /** Removes backup expiration date */\n  volumeInstanceBackupLock: Scalars['Boolean']['output'];\n  /** Restore a volume instance from a backup */\n  volumeInstanceBackupRestore: WorkflowId;\n  /** Manage schedule for backups of a volume instance */\n  volumeInstanceBackupScheduleUpdate: Scalars['Boolean']['output'];\n  /** Cancel the deletion of a volume instance */\n  volumeInstanceCancelDeletion: Scalars['Boolean']['output'];\n  /** Change the region of the volume instance. If the new region is different from the current region, a migration of the volume to the new region will be triggered, which will cause downtime for services that have this volume attached. */\n  volumeInstanceChangeRegion: Scalars['Boolean']['output'];\n  /** Copies the contents of a volume instance to another. Intended use case is copying a volume to another Environment */\n  volumeInstanceCopyFromEnvironment: Scalars['Boolean']['output'];\n  /** Point-in-time restore. Creates a brand-new Postgres service in the project. The image populates the new service's volume from the source bucket via `pgbackrest restore --type=time --target=<T>` on first boot, replays WAL forward, and promotes. Source service stays online and untouched. */\n  volumeInstancePITRRestore: WorkflowId;\n  /** Resize a volume instance. If no environmentId is provided, all volume instances for the volume will be resized. You can only resize a volume upwards to the maximum size allowed by the plan */\n  volumeInstanceResize: Scalars['Boolean']['output'];\n  /** Reverts a volume instance migration. This will schedule a deletion of the destination volume instance and restore the source volume instance. */\n  volumeInstanceRevertMigration: WorkflowId;\n  /** Update a volume instance. If no environmentId is provided, all volume instances for the volume will be updated. */\n  volumeInstanceUpdate: Scalars['Boolean']['output'];\n  /** Wipe the contents of the volume instance. This creates an entirely new volume instance with the same mount path and service attached. */\n  volumeInstanceWipe: Scalars['Boolean']['output'];\n  /** Update a persistent volume in a project */\n  volumeUpdate: Volume;\n  /** Test a webhook URL by sending a sample payload. Returns the HTTP status code. */\n  webhookTest: Scalars['Int']['output'];\n  /** Add a payout account for a user. */\n  withdrawalAccountCreate: WithdrawalAccount;\n  /**\n   * Add a payout account for a user.\n   * @deprecated Use withdrawalAccountCreate instead\n   */\n  withdrawalAccountCreateV3: WithdrawalAccountInfo;\n  /** Delete a payout account for a user. */\n  withdrawalAccountDelete: Scalars['Boolean']['output'];\n  /** Confirm a withdrawal to cash request. */\n  withdrawalConfirmationAdd: Scalars['Boolean']['output'];\n  /** Add a withdrawal request. */\n  withdrawalToCashCreate: Scalars['Boolean']['output'];\n  /** Withdraw earnings into Railway Credits. */\n  withdrawalToCreditCreate: Scalars['Boolean']['output'];\n  /** Enable or disable automatic deployment diagnosis for a workspace */\n  workspaceAutomaticDiagnosisUpdate: Workspace;\n  /**\n   * Ban a workspace.\n   * @deprecated Use `workspaceRestrict` with type=BAN once the WorkspaceRestriction migration is complete.\n   */\n  workspaceBan: Scalars['Boolean']['output'];\n  /** Complete a plan upgrade after 3DS authentication */\n  workspaceCompletePlanUpgrade: Scalars['Boolean']['output'];\n  /** Complete post-workspace creation tasks */\n  workspaceCompletePostCreationTasks: Scalars['Boolean']['output'];\n  /** Create a new workspace and subscribe to the provided plan. */\n  workspaceCreateAndSubscribeV2: WorkspaceCreateAndSubscribeV2Response;\n  /** Delete a workspace and all data associated with it */\n  workspaceDelete: Scalars['Boolean']['output'];\n  /** Generate a link to configure the identity provider */\n  workspaceIdentityProviderConfigure: WorkspaceIdentityProviderConfigureResponse;\n  /** Create and add an Identity Provider to a Workspace */\n  workspaceIdentityProviderCreate: WorkspaceIdentityProvider;\n  /** Enable or disable SAML enforcement */\n  workspaceIdentityProviderEnforce: Scalars['Boolean']['output'];\n  /** Get an invite code for a workspace and role */\n  workspaceInviteCodeCreate: Scalars['String']['output'];\n  /** Use an invite code to join a workspace */\n  workspaceInviteCodeUse: Workspace;\n  /** Leave a workspace */\n  workspaceLeave: Scalars['Boolean']['output'];\n  /** Changes a user workspace permissions. */\n  workspacePermissionChange: Scalars['Boolean']['output'];\n  /** Add a deploy source to a workspace policy allowlist. */\n  workspacePolicyDeploySourceAllowlistAdd: WorkspacePolicyDeploySourceAllowlist;\n  /** Remove a deploy source from a workspace policy allowlist. */\n  workspacePolicyDeploySourceAllowlistRemove: Scalars['Boolean']['output'];\n  /** Enable or disable a workspace policy. Enterprise workspaces only. */\n  workspacePolicyItemUpdate: Scalars['Boolean']['output'];\n  /** Stop all deployments and plugins for a workspace. */\n  workspaceResourcesStop: Scalars['Boolean']['output'];\n  /** Restrict a workspace from creating resources. */\n  workspaceRestrict: Scalars['Boolean']['output'];\n  /** Enable or disable 2FA enforcement for a workspace */\n  workspaceTwoFactorEnforcementUpdate: Scalars['Boolean']['output'];\n  /**\n   * Unban a workspace.\n   * @deprecated Use `workspaceUnrestrict` once the WorkspaceRestriction migration is complete.\n   */\n  workspaceUnban: Scalars['Boolean']['output'];\n  /** Unrestrict a workspace. */\n  workspaceUnrestrict: Scalars['Boolean']['output'];\n  /** Update a workspace by id */\n  workspaceUpdate: Scalars['Boolean']['output'];\n  /** Update the limits version for a workspace */\n  workspaceUpdateLimitsVersion: Scalars['Boolean']['output'];\n  /** Update partner profile information for a workspace */\n  workspaceUpdatePartnerProfile: Scalars['Boolean']['output'];\n  /** Upgrade or downgrade a workspace's plan */\n  workspaceUpdatePlan: WorkspaceUpdatePlanResponse;\n  /** Generate a Slack channel for a workspace */\n  workspaceUpsertSlackChannel: Scalars['Boolean']['output'];\n  /** Invite a user by email to a workspace */\n  workspaceUserInvite: Scalars['Boolean']['output'];\n  /** Remove a user from a workspace */\n  workspaceUserRemove: Scalars['Boolean']['output'];\n};\n\n\nexport type MutationAdminApproveBanAppealArgs = {\n  input: ResolveBanAppealInput;\n};\n\n\nexport type MutationAdminBanImageArgs = {\n  image: Scalars['String']['input'];\n  reason: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminClearDomainTrafficLimitArgs = {\n  input: ClearDomainTrafficLimitInput;\n};\n\n\nexport type MutationAdminCreateFullStripeConnectWithdrawalAccountArgs = {\n  customerId: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminCustomDomainDeleteArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminDebugInstallationArgs = {\n  installationId: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminDeleteArgs = {\n  userId: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminDeleteRepoCacheArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminDenyBanAppealArgs = {\n  input: ResolveBanAppealInput;\n};\n\n\nexport type MutationAdminDrainDeploymentToMetalArgs = {\n  deploymentId: Scalars['String']['input'];\n  forceRepushExistingImages?: InputMaybe<Scalars['Boolean']['input']>;\n  newRegion: Scalars['String']['input'];\n  srcRegion: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminDuplicateInvoiceArgs = {\n  invoiceId: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminForceUnlockVolumeInstanceArgs = {\n  reason: Scalars['String']['input'];\n  volumeInstanceId: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminGiftProSubscriptionArgs = {\n  input: AdminGiftProSubscriptionInput;\n};\n\n\nexport type MutationAdminIssueRefundForRefundRequestArgs = {\n  customMessage?: InputMaybe<Scalars['String']['input']>;\n  issuedByUserId?: InputMaybe<Scalars['String']['input']>;\n  refundRequestId: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminOAuthClientDeleteArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminOAuthClientRevokeAllGrantsArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminOAuthClientUndeleteArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminOverrideCustomerWithdrawalPlatformsArgs = {\n  customerId: Scalars['String']['input'];\n  supportedWithdrawalPlatforms: Array<WithdrawalPlatformTypes>;\n};\n\n\nexport type MutationAdminOverrideWorkspaceSupportTierArgs = {\n  supportTierOverride?: InputMaybe<SupportTierOverride>;\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminProjectCanvasBlockArgs = {\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminProjectCanvasMutationLoggingDisableArgs = {\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminProjectCanvasMutationLoggingEnableArgs = {\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminProjectCanvasUnblockArgs = {\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminPushVolumeInstanceMetadataArgs = {\n  volumeInstanceId: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminRadarActionArgs = {\n  action: RadarEventStatus;\n  note?: InputMaybe<Scalars['String']['input']>;\n  ruleId: Scalars['String']['input'];\n  workspaceIds: Array<Scalars['String']['input']>;\n};\n\n\nexport type MutationAdminRadarCancelScanArgs = {\n  ruleId: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminRadarEventActionArgs = {\n  action: RadarEventStatus;\n  eventIds: Array<Scalars['String']['input']>;\n  note?: InputMaybe<Scalars['String']['input']>;\n  restrictionType?: InputMaybe<RestrictionType>;\n};\n\n\nexport type MutationAdminRadarListDeleteArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminRadarListUpsertArgs = {\n  input: RadarListUpsertInput;\n};\n\n\nexport type MutationAdminRadarRuleDeleteArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminRadarRuleUpsertArgs = {\n  input: RadarRuleUpsertInput;\n};\n\n\nexport type MutationAdminRadarStartScanArgs = {\n  applyAction?: InputMaybe<Scalars['Boolean']['input']>;\n  reason?: InputMaybe<Scalars['String']['input']>;\n  ruleId: Scalars['String']['input'];\n  scanType: RadarScanType;\n  timeRangeEnd: Scalars['DateTime']['input'];\n  timeRangeStart: Scalars['DateTime']['input'];\n};\n\n\nexport type MutationAdminReferralCodeApplyToWorkspaceArgs = {\n  code: Scalars['String']['input'];\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminReferralCodeCreateArgs = {\n  input: AdminReferralCodeCreateInput;\n};\n\n\nexport type MutationAdminReferralCodeDeleteArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminReferralCodeUpdateArgs = {\n  input: AdminReferralCodeUpdateInput;\n};\n\n\nexport type MutationAdminRefreshInstallationReposArgs = {\n  installationId?: InputMaybe<Scalars['String']['input']>;\n  ownerLogin?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type MutationAdminRefreshPostgresHaClusterArgs = {\n  environmentId: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminRefreshPostgresPitrServiceArgs = {\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminRefreshPublicRepoCacheArgs = {\n  fullName: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminRemoveServiceInstanceLimitOverrideArgs = {\n  input: RemoveServiceInstanceLimitOverrideInput;\n};\n\n\nexport type MutationAdminSendHostMaintenanceNotificationsArgs = {\n  customBody?: InputMaybe<Scalars['String']['input']>;\n  customTitle?: InputMaybe<Scalars['String']['input']>;\n  dryRun?: InputMaybe<Scalars['Boolean']['input']>;\n  durationHumanFriendlyString: Scalars['String']['input'];\n  eventType: HostMaintenanceEventType;\n  failoverStateless?: InputMaybe<Scalars['Boolean']['input']>;\n  stackerHostname: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminSendHostMaintenanceTestNotificationArgs = {\n  customBody?: InputMaybe<Scalars['String']['input']>;\n  customTitle?: InputMaybe<Scalars['String']['input']>;\n  durationHumanFriendlyString: Scalars['String']['input'];\n  eventType: HostMaintenanceEventType;\n};\n\n\nexport type MutationAdminSendNotificationArgs = {\n  input: AdminSendNotificationInput;\n};\n\n\nexport type MutationAdminSetDomainTrafficLimitArgs = {\n  input: SetDomainTrafficLimitInput;\n};\n\n\nexport type MutationAdminSetServiceInstanceLimitOverrideArgs = {\n  input: SetServiceInstanceLimitOverrideInput;\n};\n\n\nexport type MutationAdminSimulateStripeUsageOnCustomerArgs = {\n  customerId: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminSpendCommitmentUpsertArgs = {\n  input: AdminSpendCommitmentUpsertInput;\n};\n\n\nexport type MutationAdminSyncHttpRoutesArgs = {\n  input: SyncRoutesInput;\n};\n\n\nexport type MutationAdminSyncTcpRoutesArgs = {\n  input: SyncRoutesInput;\n};\n\n\nexport type MutationAdminTriggerEtcdDefragArgs = {\n  environmentId: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminTriggerPitrFullBackupArgs = {\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminTriggerRoutingRepairArgs = {\n  input: TriggerRoutingRepairInput;\n};\n\n\nexport type MutationAdminTriggerTransactionalEmailArgs = {\n  segmentId: Scalars['String']['input'];\n  templateId: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminUnbanImageArgs = {\n  image: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminUnsubscribeEmailArgs = {\n  email: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminUpdateAutoRefundSettingsArgs = {\n  hobbyThreshold?: InputMaybe<Scalars['Int']['input']>;\n  proThreshold?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type MutationAdminVoidStripeInvoiceArgs = {\n  invoiceId: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminWorkspaceLinkSlackChannelArgs = {\n  slackChannelId: Scalars['String']['input'];\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type MutationAdminWorkspaceToggleArchiveSlackChannelArgs = {\n  slackChannelId: Scalars['String']['input'];\n};\n\n\nexport type MutationAgentUsageLimitSetArgs = {\n  input: AgentUsageLimitSetInput;\n};\n\n\nexport type MutationApiTokenCreateArgs = {\n  input: ApiTokenCreateInput;\n};\n\n\nexport type MutationApiTokenDeleteArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationBaseEnvironmentOverrideArgs = {\n  id: Scalars['String']['input'];\n  input: BaseEnvironmentOverrideInput;\n};\n\n\nexport type MutationBucketCreateArgs = {\n  input: BucketCreateInput;\n};\n\n\nexport type MutationBucketCredentialsResetArgs = {\n  bucketId: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type MutationBucketUpdateArgs = {\n  id: Scalars['String']['input'];\n  input: BucketUpdateInput;\n};\n\n\nexport type MutationBuildExtendDeadlineArgs = {\n  snapshotId: Scalars['String']['input'];\n};\n\n\nexport type MutationCanvasViewMergeArgs = {\n  sourceEnvironmentId: Scalars['String']['input'];\n  targetEnvironmentId: Scalars['String']['input'];\n};\n\n\nexport type MutationChangelogSendArgs = {\n  input: ChangelogSendInput;\n};\n\n\nexport type MutationChatSendMessageArgs = {\n  attachments?: InputMaybe<Array<ChatAttachmentInput>>;\n  environmentId: Scalars['String']['input'];\n  message: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n  requestSuggestions?: InputMaybe<Scalars['Boolean']['input']>;\n  serviceId?: InputMaybe<Scalars['String']['input']>;\n  threadId?: InputMaybe<Scalars['String']['input']>;\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type MutationClearGithubBackpressureQueueArgs = {\n  plan: GithubBackpressurePlanType;\n};\n\n\nexport type MutationCliEventTrackArgs = {\n  input: CliEventTrackInput;\n};\n\n\nexport type MutationCompactGithubBackpressureQueueArgs = {\n  limit?: InputMaybe<Scalars['Int']['input']>;\n  plan: GithubBackpressurePlanType;\n};\n\n\nexport type MutationCreateRefundRequestArgs = {\n  input: RefundFormInput;\n};\n\n\nexport type MutationCreateSupportThreadArgs = {\n  input: CreateSupportThreadInput;\n};\n\n\nexport type MutationCreateWorkspaceRestrictionAppealArgs = {\n  input: BanAppealFormInput;\n};\n\n\nexport type MutationCustomDomainCreateArgs = {\n  input: CustomDomainCreateInput;\n};\n\n\nexport type MutationCustomDomainDeleteArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationCustomDomainIssueCertificateArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationCustomDomainUpdateArgs = {\n  environmentId: Scalars['String']['input'];\n  id: Scalars['String']['input'];\n  targetPort?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type MutationCustomerApplyCreditArgs = {\n  id: Scalars['String']['input'];\n  input: CustomerApplyCreditInput;\n};\n\n\nexport type MutationCustomerCancelIncompletePaymentIntentArgs = {\n  id: Scalars['String']['input'];\n  input: CustomerCancelIncompletePaymentIntentInput;\n};\n\n\nexport type MutationCustomerCancelIncompleteSubscriptionArgs = {\n  id: Scalars['String']['input'];\n  input: CustomerCancelIncompleteSubscriptionInput;\n};\n\n\nexport type MutationCustomerCancelSubscriptionArgs = {\n  comment?: InputMaybe<Scalars['String']['input']>;\n  feedback: Scalars['String']['input'];\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationCustomerCancelSubscriptionsArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationCustomerCompleteSpendCommitmentSubscriptionArgs = {\n  id: Scalars['String']['input'];\n  input: CustomerCompleteSpendCommitmentSubscriptionInput;\n};\n\n\nexport type MutationCustomerCompleteUsageSubscriptionV2Args = {\n  id: Scalars['String']['input'];\n  input: CustomerCompleteUsageSubscriptionV2Input;\n};\n\n\nexport type MutationCustomerCreateBillingPortalArgs = {\n  id: Scalars['String']['input'];\n  input: CustomerCreateBillingPortalInput;\n};\n\n\nexport type MutationCustomerCreateBountyPayoutArgs = {\n  amountCents: Scalars['Int']['input'];\n  bountyId: Scalars['String']['input'];\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type MutationCustomerCreateFreePlanSubscriptionArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationCustomerCreateThreadPayoutArgs = {\n  amountCents: Scalars['Int']['input'];\n  threadId: Scalars['String']['input'];\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type MutationCustomerCreateUsageSubscriptionV2Args = {\n  id: Scalars['String']['input'];\n  input: CustomerCreateUsageSubscriptionV2Input;\n};\n\n\nexport type MutationCustomerDeletePaymentMethodsArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationCustomerDeleteTaxIdArgs = {\n  id: Scalars['String']['input'];\n  taxIdId: Scalars['String']['input'];\n};\n\n\nexport type MutationCustomerPurchaseCreditsArgs = {\n  id: Scalars['String']['input'];\n  input: CustomerPurchaseCreditsInput;\n};\n\n\nexport type MutationCustomerRenewSubscriptionArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationCustomerReplacePaymentMethodArgs = {\n  id: Scalars['String']['input'];\n  input: CustomerReplacePaymentMethodInput;\n};\n\n\nexport type MutationCustomerReportUsageArgs = {\n  customerId: Scalars['String']['input'];\n};\n\n\nexport type MutationCustomerSubscribeToSpendCommitmentArgs = {\n  id: Scalars['String']['input'];\n  input: CustomerSubscribeToSpendCommitmentInput;\n};\n\n\nexport type MutationCustomerTogglePayoutsToCreditsArgs = {\n  customerId: Scalars['String']['input'];\n  input: CustomerTogglePayoutsToCreditsInput;\n};\n\n\nexport type MutationCustomerTransferCreditsArgs = {\n  input: CustomerTransferCreditInput;\n  receiverCustomerId: Scalars['String']['input'];\n  senderCustomerId: Scalars['String']['input'];\n};\n\n\nexport type MutationCustomerUpdateBillingDetailsArgs = {\n  id: Scalars['String']['input'];\n  input: CustomerUpdateBillingDetailsInput;\n};\n\n\nexport type MutationCustomerUpdateBillingEmailArgs = {\n  id: Scalars['String']['input'];\n  input: CustomerUpdateBillingEmailInput;\n};\n\n\nexport type MutationCustomerVoidIncompleteSpendCommitmentInvoiceArgs = {\n  id: Scalars['String']['input'];\n  input: CustomerVoidIncompleteSpendCommitmentInvoiceInput;\n};\n\n\nexport type MutationDatabasePasswordResetArgs = {\n  input: DatabasePasswordResetInput;\n};\n\n\nexport type MutationDataplaneClusterCreateArgs = {\n  label: Scalars['String']['input'];\n  namespace: Scalars['String']['input'];\n  regionID: Scalars['String']['input'];\n};\n\n\nexport type MutationDataplaneLighthouseTokenCreateArgs = {\n  computeClusterId: Scalars['String']['input'];\n  reason: Scalars['String']['input'];\n  ttl?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type MutationDataplaneLighthouseTokenDeleteArgs = {\n  tokenId: Scalars['String']['input'];\n};\n\n\nexport type MutationDeploymentApproveArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationDeploymentCancelArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationDeploymentEventAckArgs = {\n  deploymentEventId: Scalars['String']['input'];\n  deploymentId: Scalars['String']['input'];\n};\n\n\nexport type MutationDeploymentInstanceExecutionCreateArgs = {\n  input: DeploymentInstanceExecutionCreateInput;\n};\n\n\nexport type MutationDeploymentRedeployArgs = {\n  id: Scalars['String']['input'];\n  usePreviousImageTag?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n\nexport type MutationDeploymentRemoveArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationDeploymentRestartArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationDeploymentRollbackArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationDeploymentStopArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationDeploymentTriggerCreateArgs = {\n  input: DeploymentTriggerCreateInput;\n};\n\n\nexport type MutationDeploymentTriggerDeleteArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationDeploymentTriggerUpdateArgs = {\n  id: Scalars['String']['input'];\n  input: DeploymentTriggerUpdateInput;\n};\n\n\nexport type MutationDeploymentsNeedApprovalUpdateArgs = {\n  deploymentsNeedApproval: DeploymentsNeedApproval;\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type MutationDisableServiceCdnArgs = {\n  input: DisableServiceCdnInput;\n};\n\n\nexport type MutationDockerComposeImportArgs = {\n  environmentId: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n  skipStagingPatch?: InputMaybe<Scalars['Boolean']['input']>;\n  yaml: Scalars['String']['input'];\n};\n\n\nexport type MutationDomainConnectStateVerifyArgs = {\n  state: Scalars['String']['input'];\n};\n\n\nexport type MutationDomainConnectUrlGenerateArgs = {\n  domainId: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n  redirectUri: Scalars['String']['input'];\n  returnUrl?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type MutationDrainStackerArgs = {\n  options: DrainStackerOptionsInput;\n  workflowId: Scalars['String']['input'];\n};\n\n\nexport type MutationDrainStackerCancelArgs = {\n  workflowId: Scalars['String']['input'];\n};\n\n\nexport type MutationDrainStackerFindMatchesArgs = {\n  allowStaticIPs?: InputMaybe<Scalars['Boolean']['input']>;\n  allowedPlans: Array<Scalars['String']['input']>;\n  allowedRuntimes: Array<Scalars['String']['input']>;\n  batchSize?: InputMaybe<Scalars['Int']['input']>;\n  cron?: InputMaybe<Scalars['Boolean']['input']>;\n  drainPayloadsType: DrainPayloadsType;\n  stackerId: Scalars['String']['input'];\n  stateless?: InputMaybe<Scalars['Boolean']['input']>;\n  workspaceId?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type MutationEgressGatewayAssociationCreateArgs = {\n  input: EgressGatewayCreateInput;\n};\n\n\nexport type MutationEgressGatewayAssociationsClearArgs = {\n  input: EgressGatewayServiceTargetInput;\n};\n\n\nexport type MutationEgressGatewayRollbackFromHaArgs = {\n  input: EgressGatewayServiceTargetInput;\n};\n\n\nexport type MutationEgressGatewayUpgradeToHaArgs = {\n  input: EgressGatewayServiceTargetInput;\n};\n\n\nexport type MutationEmailChangeConfirmArgs = {\n  nonce: Scalars['String']['input'];\n};\n\n\nexport type MutationEmailChangeInitiateArgs = {\n  newEmail: Scalars['String']['input'];\n};\n\n\nexport type MutationEnableServiceCdnArgs = {\n  input: EnableServiceCdnInput;\n};\n\n\nexport type MutationEnterpriseDemoRequestArgs = {\n  input: EnterpriseDemoRequestInput;\n};\n\n\nexport type MutationEnvironmentAccessUpdateArgs = {\n  access: EnvironmentAccess;\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationEnvironmentCreateArgs = {\n  input: EnvironmentCreateInput;\n};\n\n\nexport type MutationEnvironmentDeleteArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationEnvironmentPatchCommitArgs = {\n  commitMessage?: InputMaybe<Scalars['String']['input']>;\n  environmentId: Scalars['String']['input'];\n  patch?: InputMaybe<Scalars['EnvironmentConfig']['input']>;\n};\n\n\nexport type MutationEnvironmentPatchCommitStagedArgs = {\n  commitMessage?: InputMaybe<Scalars['String']['input']>;\n  environmentId: Scalars['String']['input'];\n  skipDeploys?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n\nexport type MutationEnvironmentRenameArgs = {\n  id: Scalars['String']['input'];\n  input: EnvironmentRenameInput;\n};\n\n\nexport type MutationEnvironmentStageChangesArgs = {\n  environmentId: Scalars['String']['input'];\n  input: Scalars['EnvironmentConfig']['input'];\n  merge?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n\nexport type MutationEnvironmentTriggersDeployArgs = {\n  input: EnvironmentTriggersDeployInput;\n};\n\n\nexport type MutationEnvironmentUnskipServiceArgs = {\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type MutationEventBatchTrackArgs = {\n  input: EventBatchTrackInput;\n};\n\n\nexport type MutationEventTrackArgs = {\n  input: EventTrackInput;\n};\n\n\nexport type MutationFairUseAgreeArgs = {\n  agree: Scalars['Boolean']['input'];\n};\n\n\nexport type MutationFeatureFlagAddArgs = {\n  input: FeatureFlagToggleInput;\n};\n\n\nexport type MutationFeatureFlagRemoveArgs = {\n  input: FeatureFlagToggleInput;\n};\n\n\nexport type MutationGenerateAdoptionInfoArgs = {\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type MutationGenerateShellTokenArgs = {\n  input: ShellTokenInput;\n};\n\n\nexport type MutationGithubRepoDeployArgs = {\n  input: GitHubRepoDeployInput;\n};\n\n\nexport type MutationGithubRepoUpdateArgs = {\n  input: GitHubRepoUpdateInput;\n};\n\n\nexport type MutationGroupCreateArgs = {\n  input: GroupCreateInput;\n};\n\n\nexport type MutationGroupDeleteArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationGroupSetArgs = {\n  input: GroupSetInput;\n};\n\n\nexport type MutationGroupUpdateArgs = {\n  id: Scalars['String']['input'];\n  input: GroupUpdateInput;\n};\n\n\nexport type MutationHelpStationBanUserArgs = {\n  banReason: Scalars['String']['input'];\n  userId: Scalars['String']['input'];\n};\n\n\nexport type MutationHelpStationBanWorkspaceArgs = {\n  banReason: Scalars['String']['input'];\n  bypassProCheck?: InputMaybe<Scalars['Boolean']['input']>;\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type MutationHelpStationPlanLimitOverrideUpsertScopedArgs = {\n  input: HelpStationPlanLimitOverrideUpsertScopedInput;\n};\n\n\nexport type MutationHelpStationResizeVolumeArgs = {\n  input: HelpStationResizeVolumeInput;\n};\n\n\nexport type MutationHelpStationRestrictWorkspaceArgs = {\n  bypassProCheck?: InputMaybe<Scalars['Boolean']['input']>;\n  input: WorkspaceRestrictInput;\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type MutationHelpStationTakedownDomainArgs = {\n  bypassProCheck?: InputMaybe<Scalars['Boolean']['input']>;\n  domainName: Scalars['String']['input'];\n};\n\n\nexport type MutationHelpStationUnrestrictWorkspaceArgs = {\n  input?: InputMaybe<WorkspaceUnrestrictInput>;\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type MutationHerokuImportVariablesArgs = {\n  input: HerokuImportVariablesInput;\n};\n\n\nexport type MutationIntegrationCreateArgs = {\n  input: IntegrationCreateInput;\n};\n\n\nexport type MutationIntegrationDeleteArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationIntegrationUpdateArgs = {\n  id: Scalars['String']['input'];\n  input: IntegrationUpdateInput;\n};\n\n\nexport type MutationInviteCodeUseArgs = {\n  code: Scalars['String']['input'];\n};\n\n\nexport type MutationJobApplicationCreateArgs = {\n  input: JobApplicationCreateInput;\n  resume: Scalars['Upload']['input'];\n};\n\n\nexport type MutationLoginSessionAuthArgs = {\n  input: LoginSessionAuthInput;\n};\n\n\nexport type MutationLoginSessionCancelArgs = {\n  code: Scalars['String']['input'];\n};\n\n\nexport type MutationLoginSessionConsumeArgs = {\n  code: Scalars['String']['input'];\n};\n\n\nexport type MutationLoginSessionVerifyArgs = {\n  code: Scalars['String']['input'];\n};\n\n\nexport type MutationMergeDeploymentFixPrArgs = {\n  prNumber: Scalars['Int']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type MutationMigrateStackerArgs = {\n  stackerId: Scalars['String']['input'];\n};\n\n\nexport type MutationMissingCommandAlertArgs = {\n  input: MissingCommandAlertInput;\n};\n\n\nexport type MutationMongoDeleteCollectionArgs = {\n  database: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  name: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type MutationMongoDeleteDocumentArgs = {\n  database: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  id: Scalars['String']['input'];\n  name: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type MutationMongoDummyDataArgs = {\n  database: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type MutationMongoInsertDocumentArgs = {\n  data: Scalars['JSON']['input'];\n  database: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  name: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type MutationMongoUpdateDocumentArgs = {\n  data: Scalars['JSON']['input'];\n  database: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  id: Scalars['String']['input'];\n  name: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type MutationNotificationDeliveriesMarkAsReadArgs = {\n  deliveryIds: Array<Scalars['String']['input']>;\n};\n\n\nexport type MutationNotificationRuleCreateArgs = {\n  input: CreateNotificationRuleInput;\n};\n\n\nexport type MutationNotificationRuleDeleteArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationNotificationRuleUpdateArgs = {\n  id: Scalars['String']['input'];\n  input: UpdateNotificationRuleInput;\n};\n\n\nexport type MutationNotificationUserFilterDeleteArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationNotificationUserFilterUpsertArgs = {\n  input: NotificationUserFilterUpsertInput;\n};\n\n\nexport type MutationOauthAuthorizedAppRevokeArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationOauthAuthorizedAppUpdateProjectsArgs = {\n  grantAllProjects: Scalars['Boolean']['input'];\n  id: Scalars['String']['input'];\n  projectIds?: InputMaybe<Array<Scalars['String']['input']>>;\n};\n\n\nexport type MutationOauthAuthorizedAppUpdateWorkspacesArgs = {\n  grantAllWorkspaces: Scalars['Boolean']['input'];\n  id: Scalars['String']['input'];\n  workspaceIds?: InputMaybe<Array<Scalars['String']['input']>>;\n};\n\n\nexport type MutationOauthClientCreateArgs = {\n  input: OAuthClientCreateInput;\n};\n\n\nexport type MutationOauthClientDeleteArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationOauthClientSecretCreateArgs = {\n  oauthClientId: Scalars['String']['input'];\n};\n\n\nexport type MutationOauthClientSecretRevokeArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationOauthClientUpdateArgs = {\n  id: Scalars['String']['input'];\n  input: OAuthClientUpdateInput;\n};\n\n\nexport type MutationObservabilityDashboardCreateArgs = {\n  input: ObservabilityDashboardCreateInput;\n};\n\n\nexport type MutationObservabilityDashboardMonitorCreateArgs = {\n  dashboardItemId: Scalars['String']['input'];\n  input: ObservabilityDashboardMonitorCreateInput;\n};\n\n\nexport type MutationObservabilityDashboardMonitorRemoveArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationObservabilityDashboardMonitorUpdateArgs = {\n  id: Scalars['String']['input'];\n  input: ObservabilityDashboardMonitorUpdateInput;\n};\n\n\nexport type MutationObservabilityDashboardResetArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationObservabilityDashboardUpdateArgs = {\n  id: Scalars['String']['input'];\n  input: Array<ObservabilityDashboardUpdateInput>;\n};\n\n\nexport type MutationPartnershipInquiryArgs = {\n  input: PartnershipInquiryInput;\n};\n\n\nexport type MutationPasskeyAuthenticationCreateArgs = {\n  input?: InputMaybe<PasskeyAuthenticationCreateInput>;\n};\n\n\nexport type MutationPasskeyAuthenticationVerifyArgs = {\n  input: PasskeyAuthenticationVerifyInput;\n};\n\n\nexport type MutationPasskeyDeleteArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationPasskeyRegistrationVerifyArgs = {\n  input: PasskeyRegistrationVerifyInput;\n};\n\n\nexport type MutationPasskeysDeleteAllArgs = {\n  userId: Scalars['String']['input'];\n};\n\n\nexport type MutationPlanLimitOverrideDeleteArgs = {\n  customerId: Scalars['String']['input'];\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationPlanLimitOverrideUpsertArgs = {\n  input: PlanLimitOverrideUpsertInput;\n};\n\n\nexport type MutationPlatformServiceToggleArgs = {\n  input: TogglePlatformServiceInput;\n};\n\n\nexport type MutationPlatformStatusOverrideMessageArgs = {\n  input: PlatformStatusOverrideMessageInput;\n};\n\n\nexport type MutationPluginCreateArgs = {\n  input: PluginCreateInput;\n};\n\n\nexport type MutationPluginDeleteArgs = {\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationPluginGeneratedSignedArchiveUrlArgs = {\n  containerId: Scalars['String']['input'];\n};\n\n\nexport type MutationPluginResetArgs = {\n  id: Scalars['String']['input'];\n  input: ResetPluginInput;\n};\n\n\nexport type MutationPluginResetCredentialsArgs = {\n  id: Scalars['String']['input'];\n  input: ResetPluginCredentialsInput;\n};\n\n\nexport type MutationPluginRestartArgs = {\n  id: Scalars['String']['input'];\n  input: PluginRestartInput;\n};\n\n\nexport type MutationPluginStartArgs = {\n  id: Scalars['String']['input'];\n  input: PluginRestartInput;\n};\n\n\nexport type MutationPluginUpdateArgs = {\n  id: Scalars['String']['input'];\n  input: PluginUpdateInput;\n};\n\n\nexport type MutationPostSupportMessageArgs = {\n  input: PostSupportMessageInput;\n};\n\n\nexport type MutationPreferencesUpdateArgs = {\n  input: PreferencesUpdateData;\n};\n\n\nexport type MutationPricingInvoiceUploadArgs = {\n  input: PricingInvoiceUploadInput;\n  invoice: Scalars['Upload']['input'];\n};\n\n\nexport type MutationPrivateNetworkCreateOrGetArgs = {\n  input: PrivateNetworkCreateOrGetInput;\n};\n\n\nexport type MutationPrivateNetworkEndpointCreateOrGetArgs = {\n  input: PrivateNetworkEndpointCreateOrGetInput;\n};\n\n\nexport type MutationPrivateNetworkEndpointDeleteArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationPrivateNetworkEndpointRenameArgs = {\n  dnsName: Scalars['String']['input'];\n  id: Scalars['String']['input'];\n  privateNetworkId: Scalars['String']['input'];\n};\n\n\nexport type MutationPrivateNetworksForEnvironmentDeleteArgs = {\n  environmentId: Scalars['String']['input'];\n};\n\n\nexport type MutationProjectAdminUpdateArgs = {\n  environmentId: Scalars['String']['input'];\n  id: Scalars['String']['input'];\n  input: ProjectAdminUpdateInput;\n};\n\n\nexport type MutationProjectCancelAgentSetupArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationProjectCanvasEvictArgs = {\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type MutationProjectCanvasResetArgs = {\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type MutationProjectClaimArgs = {\n  id: Scalars['String']['input'];\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type MutationProjectCreateArgs = {\n  input: ProjectCreateInput;\n};\n\n\nexport type MutationProjectCreateWithAgentArgs = {\n  branch: Scalars['String']['input'];\n  fullRepoName: Scalars['String']['input'];\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type MutationProjectDeleteArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationProjectFeatureFlagAddArgs = {\n  input: ProjectFeatureFlagToggleInput;\n};\n\n\nexport type MutationProjectFeatureFlagRemoveArgs = {\n  input: ProjectFeatureFlagToggleInput;\n};\n\n\nexport type MutationProjectInvitationAcceptArgs = {\n  code: Scalars['String']['input'];\n};\n\n\nexport type MutationProjectInvitationCreateArgs = {\n  id: Scalars['String']['input'];\n  input: ProjectInvitee;\n};\n\n\nexport type MutationProjectInvitationDeleteArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationProjectInvitationResendArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationProjectInviteUserArgs = {\n  id: Scalars['String']['input'];\n  input: ProjectInviteUserInput;\n};\n\n\nexport type MutationProjectLeaveArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationProjectMemberAddArgs = {\n  input: ProjectMemberAddInput;\n};\n\n\nexport type MutationProjectMemberRemoveArgs = {\n  input: ProjectMemberRemoveInput;\n};\n\n\nexport type MutationProjectMemberUpdateArgs = {\n  input: ProjectMemberUpdateInput;\n};\n\n\nexport type MutationProjectScheduleDeleteArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationProjectScheduleDeleteCancelArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationProjectScheduleDeleteForceArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationProjectTokenCreateArgs = {\n  input: ProjectTokenCreateInput;\n};\n\n\nexport type MutationProjectTokenDeleteArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationProjectTransferArgs = {\n  input: ProjectTransferInput;\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type MutationProjectTransferConfirmArgs = {\n  input: ProjectTransferConfirmInput;\n};\n\n\nexport type MutationProjectTransferInitiateArgs = {\n  input: ProjectTransferInitiateInput;\n};\n\n\nexport type MutationProjectTransferToTeamArgs = {\n  id: Scalars['String']['input'];\n  input: ProjectTransferToTeamInput;\n};\n\n\nexport type MutationProjectUpdateArgs = {\n  id: Scalars['String']['input'];\n  input: ProjectUpdateInput;\n};\n\n\nexport type MutationProviderAuthRemoveArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationPurgeServiceCacheArgs = {\n  input: PurgeServiceCacheInput;\n};\n\n\nexport type MutationPushTokenRegisterArgs = {\n  token: Scalars['String']['input'];\n};\n\n\nexport type MutationPushTokenUnregisterArgs = {\n  token: Scalars['String']['input'];\n};\n\n\nexport type MutationRailwayDomainCancelPurchaseArgs = {\n  input: RailwayDomainCancelPurchaseInput;\n};\n\n\nexport type MutationRailwayDomainCompletePurchaseArgs = {\n  input: RailwayDomainCompletePurchaseInput;\n};\n\n\nexport type MutationRailwayDomainDnsRecordCreateArgs = {\n  input: RailwayDomainDnsRecordCreateInput;\n};\n\n\nexport type MutationRailwayDomainDnsRecordDeleteArgs = {\n  input: RailwayDomainDnsRecordDeleteInput;\n};\n\n\nexport type MutationRailwayDomainDnsRecordUpdateArgs = {\n  input: RailwayDomainDnsRecordUpdateInput;\n};\n\n\nexport type MutationRailwayDomainInitiateTransferOutArgs = {\n  input: RailwayDomainInitiateTransferOutInput;\n};\n\n\nexport type MutationRailwayDomainNameserversSetArgs = {\n  input: RailwayDomainNameserversSetInput;\n};\n\n\nexport type MutationRailwayDomainPurchaseArgs = {\n  input: RailwayDomainPurchaseInput;\n};\n\n\nexport type MutationRailwayDomainRefundArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationRailwayDomainUpdateArgs = {\n  input: RailwayDomainUpdateInput;\n};\n\n\nexport type MutationRecoveryCodeValidateArgs = {\n  input: RecoveryCodeValidateInput;\n};\n\n\nexport type MutationRedisDeleteKeyArgs = {\n  environmentId: Scalars['String']['input'];\n  key: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type MutationRedisDummyDataArgs = {\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type MutationRedisHashDeleteArgs = {\n  environmentId: Scalars['String']['input'];\n  key: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n  values: Array<Scalars['String']['input']>;\n};\n\n\nexport type MutationRedisHashSetArgs = {\n  environmentId: Scalars['String']['input'];\n  key: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n  values: Scalars['JSON']['input'];\n};\n\n\nexport type MutationRedisPopListArgs = {\n  environmentId: Scalars['String']['input'];\n  key: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n  side: Scalars['String']['input'];\n};\n\n\nexport type MutationRedisPushListArgs = {\n  environmentId: Scalars['String']['input'];\n  key: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n  side: Scalars['String']['input'];\n  values: Array<Scalars['String']['input']>;\n};\n\n\nexport type MutationRedisSetAddArgs = {\n  environmentId: Scalars['String']['input'];\n  key: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n  values: Array<Scalars['String']['input']>;\n};\n\n\nexport type MutationRedisSetExpireArgs = {\n  environmentId: Scalars['String']['input'];\n  key: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n  ttl: Scalars['BigInt']['input'];\n};\n\n\nexport type MutationRedisSetListIndexArgs = {\n  environmentId: Scalars['String']['input'];\n  index: Scalars['Int']['input'];\n  key: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n  value: Scalars['String']['input'];\n};\n\n\nexport type MutationRedisSetRemoveArgs = {\n  environmentId: Scalars['String']['input'];\n  key: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n  values: Array<Scalars['String']['input']>;\n};\n\n\nexport type MutationRedisStringSetArgs = {\n  environmentId: Scalars['String']['input'];\n  key: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n  value: Scalars['String']['input'];\n};\n\n\nexport type MutationReferralInfoUpdateArgs = {\n  input: ReferralInfoUpdateInput;\n};\n\n\nexport type MutationRefreshGithubReposCacheArgs = {\n  force?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n\nexport type MutationReissueInvoiceArgs = {\n  input: ReissueInvoiceInput;\n};\n\n\nexport type MutationSandboxCreateArgs = {\n  input: SandboxCreateInput;\n};\n\n\nexport type MutationSandboxDestroyArgs = {\n  environmentId: Scalars['String']['input'];\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationSandboxExecArgs = {\n  command: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  id: Scalars['String']['input'];\n  timeoutSec?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type MutationSandboxTemplateBuildArgs = {\n  environmentId: Scalars['String']['input'];\n  input: SandboxTemplateInput;\n};\n\n\nexport type MutationSendBountyWonEmailArgs = {\n  input: SendBountyWonEmailInput;\n};\n\n\nexport type MutationSendCommunityThreadNotificationEmailArgs = {\n  input: SendCommunityThreadNotificationEmailInput;\n};\n\n\nexport type MutationSendCommunityWelcomeEmailArgs = {\n  input: SendCommunityWelcomeEmailInput;\n};\n\n\nexport type MutationSendNewBountyEmailArgs = {\n  input: SendNewBountyEmailInput;\n};\n\n\nexport type MutationSendQuestionMovedToBountyEmailArgs = {\n  input: SendQuestionMovedToBountyEmailInput;\n};\n\n\nexport type MutationSendTemplateQueueEmailArgs = {\n  input: SendTemplateQueueEmailInput;\n};\n\n\nexport type MutationSendTemplateQueueReminderEmailArgs = {\n  input: SendTemplateQueueReminderEmailInput;\n};\n\n\nexport type MutationServiceConnectArgs = {\n  id: Scalars['String']['input'];\n  input: ServiceConnectInput;\n};\n\n\nexport type MutationServiceCreateArgs = {\n  input: ServiceCreateInput;\n};\n\n\nexport type MutationServiceDeleteArgs = {\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationServiceDisconnectArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationServiceDomainCreateArgs = {\n  input: ServiceDomainCreateInput;\n};\n\n\nexport type MutationServiceDomainDeleteArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationServiceDomainUpdateArgs = {\n  input: ServiceDomainUpdateInput;\n};\n\n\nexport type MutationServiceDuplicateArgs = {\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type MutationServiceFeatureFlagAddArgs = {\n  input: ServiceFeatureFlagToggleInput;\n};\n\n\nexport type MutationServiceFeatureFlagRemoveArgs = {\n  input: ServiceFeatureFlagToggleInput;\n};\n\n\nexport type MutationServiceInstanceAutoDeployUpdateArgs = {\n  input: ServiceInstanceAutoDeployUpdateInput;\n};\n\n\nexport type MutationServiceInstanceDeployArgs = {\n  commitSha?: InputMaybe<Scalars['String']['input']>;\n  environmentId: Scalars['String']['input'];\n  latestCommit?: InputMaybe<Scalars['Boolean']['input']>;\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type MutationServiceInstanceDeployV2Args = {\n  commitSha?: InputMaybe<Scalars['String']['input']>;\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type MutationServiceInstanceImageUpdateSkipArgs = {\n  input: ServiceInstanceImageUpdateSkipInput;\n};\n\n\nexport type MutationServiceInstanceLimitsUpdateArgs = {\n  input: ServiceInstanceLimitsUpdateInput;\n};\n\n\nexport type MutationServiceInstanceRedeployArgs = {\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type MutationServiceInstanceSuggestedVariablesArgs = {\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type MutationServiceInstanceUpdateArgs = {\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  input: ServiceInstanceUpdateInput;\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type MutationServiceRemoveUpstreamUrlArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationServiceUpdateArgs = {\n  id: Scalars['String']['input'];\n  input: ServiceUpdateInput;\n};\n\n\nexport type MutationSessionDeleteArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationSetClickhouseBackpressureBillingEnabledArgs = {\n  enabled: Scalars['Boolean']['input'];\n};\n\n\nexport type MutationSetClickhouseBackpressureBillingMaxConcurrentArgs = {\n  maxConcurrent: Scalars['Int']['input'];\n};\n\n\nexport type MutationSetClickhouseBackpressureLogsMaxConcurrentArgs = {\n  maxConcurrent: Scalars['Int']['input'];\n};\n\n\nexport type MutationSetClickhouseBackpressureMetricsMaxConcurrentArgs = {\n  maxConcurrent: Scalars['Int']['input'];\n};\n\n\nexport type MutationSetGithubBackpressureAlertThresholdArgs = {\n  threshold: Scalars['Int']['input'];\n};\n\n\nexport type MutationSetGithubBackpressureConfigArgs = {\n  input: SetGithubBackpressureConfigInput;\n};\n\n\nexport type MutationSetGithubBackpressureFailedMessageArgs = {\n  message: Scalars['String']['input'];\n};\n\n\nexport type MutationSetGithubBackpressureQueuedMessageArgs = {\n  message: Scalars['String']['input'];\n};\n\n\nexport type MutationSetGithubDeploymentStatusDisabledArgs = {\n  disabled: Scalars['Boolean']['input'];\n};\n\n\nexport type MutationSetPercentagePlatformFeatureFlagArgs = {\n  input: SetPercentagePlatformFeatureFlagInput;\n};\n\n\nexport type MutationSetupAgentEventTrackArgs = {\n  input: SetupAgentEventTrackInput;\n};\n\n\nexport type MutationSharedVariableConfigureArgs = {\n  input: SharedVariableConfigureInput;\n};\n\n\nexport type MutationSpendCommitmentCancelArgs = {\n  id: Scalars['String']['input'];\n  input: SpendCommitmentCancelInput;\n};\n\n\nexport type MutationSqlColumnInsertArgs = {\n  column: SqlColumnInput;\n  databaseType: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n  tableName: Scalars['String']['input'];\n};\n\n\nexport type MutationSqlDummyDataArgs = {\n  databaseType: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type MutationSqlExtensionInstallArgs = {\n  databaseType: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  extension: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n  version?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type MutationSqlExtensionUninstallArgs = {\n  databaseType: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  extension: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type MutationSqlRawQueryRunArgs = {\n  databaseType: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  query: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type MutationSqlRowInsertArgs = {\n  columns: Array<SqlRowInput>;\n  databaseType: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n  tableName: Scalars['String']['input'];\n};\n\n\nexport type MutationSqlRowUpdateArgs = {\n  data: Scalars['JSON']['input'];\n  databaseType: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  pKey: Scalars['String']['input'];\n  pKeyValue: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n  tableName: Scalars['String']['input'];\n};\n\n\nexport type MutationSqlRowsDeleteArgs = {\n  columnName: Scalars['String']['input'];\n  databaseType: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  rows: Array<Scalars['String']['input']>;\n  serviceId: Scalars['String']['input'];\n  tableName: Scalars['String']['input'];\n};\n\n\nexport type MutationSqlTableCreateArgs = {\n  columns: Array<SqlColumnInput>;\n  databaseType: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  name: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type MutationSqlTableDeleteArgs = {\n  databaseType: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  name: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type MutationSshPublicKeyCreateArgs = {\n  input: SshPublicKeyCreateInput;\n};\n\n\nexport type MutationSshPublicKeyDeleteArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationStackerStatsCancelArgs = {\n  workflowId: Scalars['String']['input'];\n};\n\n\nexport type MutationStackerStatsGetArgs = {\n  stackerId: Scalars['String']['input'];\n};\n\n\nexport type MutationStackerVolumesPrunePhantomsArgs = {\n  batchSize?: InputMaybe<Scalars['Int']['input']>;\n  maxVolumesToDelete?: InputMaybe<Scalars['Int']['input']>;\n  olderThanHours: Scalars['Int']['input'];\n  sleepMs?: InputMaybe<Scalars['Int']['input']>;\n  stackerId: Scalars['String']['input'];\n};\n\n\nexport type MutationTcpProxyCreateArgs = {\n  input: TcpProxyCreateInput;\n};\n\n\nexport type MutationTcpProxyDeleteArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationTelemetrySendArgs = {\n  input: TelemetrySendInput;\n};\n\n\nexport type MutationTemplateCloneArgs = {\n  input: TemplateCloneInput;\n};\n\n\nexport type MutationTemplateCreateV2Args = {\n  input: TemplateCreateV2Input;\n};\n\n\nexport type MutationTemplateDeleteArgs = {\n  id: Scalars['String']['input'];\n  input: TemplateDeleteInput;\n};\n\n\nexport type MutationTemplateDeployArgs = {\n  input: TemplateDeployInput;\n};\n\n\nexport type MutationTemplateDeployV2Args = {\n  input: TemplateDeployV2Input;\n};\n\n\nexport type MutationTemplateGenerateArgs = {\n  input: TemplateGenerateInput;\n};\n\n\nexport type MutationTemplateHideArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationTemplateKickbackBackfillArgs = {\n  invoiceId: Scalars['String']['input'];\n};\n\n\nexport type MutationTemplateMaintainerUpsertArgs = {\n  id: Scalars['String']['input'];\n  input: TemplateMaintainerUpsertInput;\n};\n\n\nexport type MutationTemplateMaybeUnsetCommunityThreadSlugArgs = {\n  communityThreadSlug: Scalars['String']['input'];\n};\n\n\nexport type MutationTemplatePublishArgs = {\n  id: Scalars['String']['input'];\n  input: TemplatePublishInput;\n};\n\n\nexport type MutationTemplateRevertArgs = {\n  input: TemplateRevertInput;\n};\n\n\nexport type MutationTemplateServiceSourceEjectArgs = {\n  input: TemplateServiceSourceEjectInput;\n};\n\n\nexport type MutationTemplateUnpublishArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationTemplateUpdateV2Args = {\n  id: Scalars['String']['input'];\n  input: TemplateCreateV2Input;\n};\n\n\nexport type MutationTemplateUpsertConfigArgs = {\n  id: Scalars['String']['input'];\n  input: TemplateUpsertConfigInput;\n};\n\n\nexport type MutationTemplateUpsertSettingsArgs = {\n  id: Scalars['String']['input'];\n  input: TemplateUpsertSettingsInput;\n};\n\n\nexport type MutationTogglePlatformFeatureFlagArgs = {\n  input: TogglePlatformFeatureFlagInput;\n};\n\n\nexport type MutationTriggerDeploymentDiagnosisArgs = {\n  deploymentId: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n};\n\n\nexport type MutationTriggerDeploymentFixPrArgs = {\n  deploymentId: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  fixId: Scalars['String']['input'];\n};\n\n\nexport type MutationTrustedDomainCreateArgs = {\n  input: WorkspaceTrustedDomainCreateInput;\n};\n\n\nexport type MutationTrustedDomainDeleteArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationTrustedDomainRetriggerVerificationArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationTwoFactorInfoCreateArgs = {\n  input: TwoFactorInfoCreateInput;\n};\n\n\nexport type MutationTwoFactorInfoResetArgs = {\n  userId: Scalars['String']['input'];\n};\n\n\nexport type MutationTwoFactorInfoValidateArgs = {\n  input: TwoFactorInfoValidateInput;\n};\n\n\nexport type MutationUpdateServiceEdgeConfigArgs = {\n  input: UpdateServiceEdgeConfigInput;\n};\n\n\nexport type MutationUpdateTemplateSupportMetricsArgs = {\n  templateUpdates: Array<TemplateSupportMetricsUpdate>;\n};\n\n\nexport type MutationUpsertSlackChannelArgs = {\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type MutationUsageAnomalyAllowArgs = {\n  input: UsageAnomalyAllowInput;\n};\n\n\nexport type MutationUsageLimitRemoveArgs = {\n  input: UsageLimitRemoveInput;\n};\n\n\nexport type MutationUsageLimitSetArgs = {\n  input: UsageLimitSetInput;\n};\n\n\nexport type MutationUserBanArgs = {\n  input: UserBanInput;\n};\n\n\nexport type MutationUserFlagsRemoveArgs = {\n  input: UserFlagsRemoveInput;\n};\n\n\nexport type MutationUserFlagsSetArgs = {\n  input: UserFlagsSetInput;\n};\n\n\nexport type MutationUserProfileUpdateArgs = {\n  input: UserProfileUpdateInput;\n};\n\n\nexport type MutationUserRiskLevelUpdateArgs = {\n  input: UserRiskLevelUpdateInput;\n};\n\n\nexport type MutationUserTrialWorkspaceCreateArgs = {\n  userId?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type MutationUserUnbanArgs = {\n  userId: Scalars['String']['input'];\n};\n\n\nexport type MutationUserUpdateArgs = {\n  input: UserUpdateInput;\n};\n\n\nexport type MutationVariableCollectionUpsertArgs = {\n  input: VariableCollectionUpsertInput;\n};\n\n\nexport type MutationVariableDeleteArgs = {\n  input: VariableDeleteInput;\n};\n\n\nexport type MutationVariableUpsertArgs = {\n  input: VariableUpsertInput;\n};\n\n\nexport type MutationVolumeCreateArgs = {\n  input: VolumeCreateInput;\n};\n\n\nexport type MutationVolumeDeleteArgs = {\n  volumeId: Scalars['String']['input'];\n};\n\n\nexport type MutationVolumeInstanceBackupBatchDeleteArgs = {\n  volumeInstanceBackupIds: Array<Scalars['String']['input']>;\n  volumeInstanceId: Scalars['String']['input'];\n};\n\n\nexport type MutationVolumeInstanceBackupCreateArgs = {\n  name?: InputMaybe<Scalars['String']['input']>;\n  volumeInstanceId: Scalars['String']['input'];\n};\n\n\nexport type MutationVolumeInstanceBackupCreateForHaConversionArgs = {\n  volumeInstanceId: Scalars['String']['input'];\n};\n\n\nexport type MutationVolumeInstanceBackupDeleteArgs = {\n  volumeInstanceBackupId: Scalars['String']['input'];\n  volumeInstanceId: Scalars['String']['input'];\n};\n\n\nexport type MutationVolumeInstanceBackupLockArgs = {\n  volumeInstanceBackupId: Scalars['String']['input'];\n  volumeInstanceId: Scalars['String']['input'];\n};\n\n\nexport type MutationVolumeInstanceBackupRestoreArgs = {\n  replicaServiceIds?: InputMaybe<Array<Scalars['String']['input']>>;\n  volumeInstanceBackupId: Scalars['String']['input'];\n  volumeInstanceId: Scalars['String']['input'];\n  wipeServiceIds?: InputMaybe<Array<Scalars['String']['input']>>;\n};\n\n\nexport type MutationVolumeInstanceBackupScheduleUpdateArgs = {\n  kinds: Array<VolumeInstanceBackupScheduleKind>;\n  volumeInstanceId: Scalars['String']['input'];\n};\n\n\nexport type MutationVolumeInstanceCancelDeletionArgs = {\n  volumeInstanceId: Scalars['String']['input'];\n};\n\n\nexport type MutationVolumeInstanceChangeRegionArgs = {\n  input: VolumeInstanceChangeRegionInput;\n  volumeInstanceId: Scalars['String']['input'];\n};\n\n\nexport type MutationVolumeInstanceCopyFromEnvironmentArgs = {\n  destinationEnvironmentId: Scalars['String']['input'];\n  destinationVolumeInstanceId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n  sourceEnvironmentId: Scalars['String']['input'];\n};\n\n\nexport type MutationVolumeInstancePitrRestoreArgs = {\n  newServiceName?: InputMaybe<Scalars['String']['input']>;\n  sourceRepoPath?: InputMaybe<Scalars['String']['input']>;\n  targetTimestamp: Scalars['DateTime']['input'];\n  volumeInstanceId: Scalars['String']['input'];\n};\n\n\nexport type MutationVolumeInstanceResizeArgs = {\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  input: VolumeInstanceResizeInput;\n  volumeId: Scalars['String']['input'];\n};\n\n\nexport type MutationVolumeInstanceRevertMigrationArgs = {\n  eventId: Scalars['String']['input'];\n  revertReason?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type MutationVolumeInstanceUpdateArgs = {\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  input: VolumeInstanceUpdateInput;\n  volumeId: Scalars['String']['input'];\n};\n\n\nexport type MutationVolumeInstanceWipeArgs = {\n  volumeInstanceId: Scalars['String']['input'];\n};\n\n\nexport type MutationVolumeUpdateArgs = {\n  input: VolumeUpdateInput;\n  volumeId: Scalars['String']['input'];\n};\n\n\nexport type MutationWebhookTestArgs = {\n  payload: Scalars['String']['input'];\n  url: Scalars['String']['input'];\n};\n\n\nexport type MutationWithdrawalAccountCreateArgs = {\n  input: CreateWithdrawalAccountInput;\n};\n\n\nexport type MutationWithdrawalAccountCreateV3Args = {\n  input: CreateWithdrawalAccountInput;\n};\n\n\nexport type MutationWithdrawalAccountDeleteArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationWithdrawalConfirmationAddArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationWithdrawalToCashCreateArgs = {\n  input: WithdrawalRequestInput;\n};\n\n\nexport type MutationWithdrawalToCreditCreateArgs = {\n  input: WithdrawalToCreditInput;\n};\n\n\nexport type MutationWorkspaceAutomaticDiagnosisUpdateArgs = {\n  enable: Scalars['Boolean']['input'];\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type MutationWorkspaceBanArgs = {\n  input: WorkspaceBanInput;\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type MutationWorkspaceCompletePlanUpgradeArgs = {\n  id: Scalars['String']['input'];\n  subscriptionId: Scalars['String']['input'];\n};\n\n\nexport type MutationWorkspaceCompletePostCreationTasksArgs = {\n  input: WorkspaceCompletePostCreationTasksInput;\n};\n\n\nexport type MutationWorkspaceCreateAndSubscribeV2Args = {\n  input: WorkspaceCreateAndSubscribeInput;\n};\n\n\nexport type MutationWorkspaceDeleteArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationWorkspaceIdentityProviderConfigureArgs = {\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type MutationWorkspaceIdentityProviderCreateArgs = {\n  input: WorkspaceIdentityProviderCreateInput;\n};\n\n\nexport type MutationWorkspaceIdentityProviderEnforceArgs = {\n  enabled: Scalars['Boolean']['input'];\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type MutationWorkspaceInviteCodeCreateArgs = {\n  input: WorkspaceInviteCodeCreateInput;\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type MutationWorkspaceInviteCodeUseArgs = {\n  code: Scalars['String']['input'];\n};\n\n\nexport type MutationWorkspaceLeaveArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationWorkspacePermissionChangeArgs = {\n  input: WorkspacePermissionChangeInput;\n};\n\n\nexport type MutationWorkspacePolicyDeploySourceAllowlistAddArgs = {\n  sourceId: Scalars['String']['input'];\n  sourceType: WorkspacePolicyDeploySourceType;\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type MutationWorkspacePolicyDeploySourceAllowlistRemoveArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationWorkspacePolicyItemUpdateArgs = {\n  enabled?: InputMaybe<Scalars['Boolean']['input']>;\n  input?: InputMaybe<WorkspacePolicyItemUpdateInput>;\n  policy?: InputMaybe<WorkspacePolicyName>;\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type MutationWorkspaceResourcesStopArgs = {\n  input?: InputMaybe<WorkspaceResourcesStopInput>;\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type MutationWorkspaceRestrictArgs = {\n  input: WorkspaceRestrictInput;\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type MutationWorkspaceTwoFactorEnforcementUpdateArgs = {\n  enabled: Scalars['Boolean']['input'];\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type MutationWorkspaceUnbanArgs = {\n  input?: InputMaybe<WorkspaceUnbanInput>;\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type MutationWorkspaceUnrestrictArgs = {\n  input?: InputMaybe<WorkspaceUnrestrictInput>;\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type MutationWorkspaceUpdateArgs = {\n  id: Scalars['String']['input'];\n  input: WorkspaceUpdateInput;\n};\n\n\nexport type MutationWorkspaceUpdateLimitsVersionArgs = {\n  limitsVersion: LimitsVersion;\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type MutationWorkspaceUpdatePartnerProfileArgs = {\n  id: Scalars['String']['input'];\n  input: PartnerProfileInput;\n};\n\n\nexport type MutationWorkspaceUpdatePlanArgs = {\n  forceDowngrade?: InputMaybe<Scalars['Boolean']['input']>;\n  id: Scalars['String']['input'];\n  plan: Plan;\n};\n\n\nexport type MutationWorkspaceUpsertSlackChannelArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type MutationWorkspaceUserInviteArgs = {\n  input: WorkspaceUserInviteInput;\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type MutationWorkspaceUserRemoveArgs = {\n  input: WorkspaceUserRemoveInput;\n  workspaceId: Scalars['String']['input'];\n};\n\n/** An aggregated network connection (grouped by 5-tuple) */\nexport type NetworkConnection = {\n  __typename?: 'NetworkConnection';\n  /** Number of flows with dropped packets */\n  droppedCount: Scalars['Int']['output'];\n  /** Destination IP address */\n  dstAddr: Scalars['String']['output'];\n  /** Destination port number */\n  dstPort: Scalars['Int']['output'];\n  /** Timestamp of first flow (ISO) */\n  firstSeen: Scalars['String']['output'];\n  /** Number of individual flows in this connection */\n  flowCount: Scalars['Int']['output'];\n  /** Layer 4 protocol */\n  l4Protocol: NetworkFlowL4Protocol;\n  /** Timestamp of last flow (ISO) */\n  lastSeen: Scalars['String']['output'];\n  /** Type of peer */\n  peerKind: NetworkFlowPeerKind;\n  /** Service instance ID of the peer */\n  peerServiceId?: Maybe<Scalars['String']['output']>;\n  /** Source IP address */\n  srcAddr: Scalars['String']['output'];\n  /** Source port number */\n  srcPort: Scalars['Int']['output'];\n  /** Total bytes transferred */\n  totalBytes: Scalars['Int']['output'];\n  /** Total packets transferred */\n  totalPackets: Scalars['Int']['output'];\n};\n\n/** The direction of a network flow relative to the service */\nexport type NetworkFlowDirection =\n  | 'egress'\n  | 'ingress';\n\n/** The layer 4 protocol of a network flow */\nexport type NetworkFlowL4Protocol =\n  | 'icmp'\n  | 'icmpv6'\n  | 'tcp'\n  | 'udp'\n  | 'unknown';\n\n/** A single network flow log entry */\nexport type NetworkFlowLog = {\n  __typename?: 'NetworkFlowLog';\n  /** Number of bytes transferred */\n  byteCount: Scalars['Int']['output'];\n  /** When the flow capture ended (ISO timestamp) */\n  captureEnd: Scalars['String']['output'];\n  /** When the flow capture started (ISO timestamp) */\n  captureStart: Scalars['String']['output'];\n  /** The deployment ID */\n  deploymentId: Scalars['String']['output'];\n  /** The deployment instance ID */\n  deploymentInstanceId: Scalars['String']['output'];\n  /** Traffic direction (ingress or egress) */\n  direction: NetworkFlowDirection;\n  /** If packets were dropped, the reason */\n  dropCause?: Maybe<Scalars['String']['output']>;\n  /** Destination IP address */\n  dstAddr: Scalars['String']['output'];\n  /** Destination port number */\n  dstPort: Scalars['Int']['output'];\n  /** Unique identifier for the flow */\n  flowId: Scalars['String']['output'];\n  /** Whether the flow is partial or complete */\n  flowState: NetworkFlowState;\n  /** Layer 4 latency in milliseconds */\n  l4LatencyMs: Scalars['Float']['output'];\n  /** Layer 4 protocol (TCP, UDP, ICMP, etc) */\n  l4Protocol: NetworkFlowL4Protocol;\n  /** Number of packets transferred */\n  packetCount: Scalars['Int']['output'];\n  /** Type of peer (service, internet, DNS, etc) */\n  peerKind: NetworkFlowPeerKind;\n  /** Service instance ID of the peer (for service-to-service flows) */\n  peerServiceId?: Maybe<Scalars['String']['output']>;\n  /** The service ID this flow belongs to */\n  serviceId: Scalars['String']['output'];\n  /** Source IP address */\n  srcAddr: Scalars['String']['output'];\n  /** Source port number */\n  srcPort: Scalars['Int']['output'];\n};\n\n/** The type of peer in a network flow */\nexport type NetworkFlowPeerKind =\n  | 'edge_proxy'\n  | 'internet'\n  | 'local_dns'\n  | 'service'\n  | 'unknown';\n\n/** The result of a network flow service layer query */\nexport type NetworkFlowServiceLayerResult = {\n  __typename?: 'NetworkFlowServiceLayerResult';\n  /** Raw JSON representation of the services map for direct consumption */\n  raw: Scalars['JSON']['output'];\n  /** List of services with their peer connections */\n  services: Array<ServiceFlowEntry>;\n};\n\n/** The state of a network flow */\nexport type NetworkFlowState =\n  | 'complete'\n  | 'partial';\n\nexport type Node = {\n  id: Scalars['ID']['output'];\n};\n\nexport type NodeLogAnalysis = {\n  __typename?: 'NodeLogAnalysis';\n  analyzedAt: Scalars['String']['output'];\n  criticalCount: Scalars['Int']['output'];\n  errorCount: Scalars['Int']['output'];\n  issues: Array<LogIssue>;\n  lastLogAt?: Maybe<Scalars['String']['output']>;\n  logSpewDetected: Scalars['Boolean']['output'];\n  spewTemplates: Array<LogSpewPattern>;\n  totalLinesAnalyzed: Scalars['Int']['output'];\n  warningCount: Scalars['Int']['output'];\n};\n\nexport type NotificationChannel = Node & {\n  __typename?: 'NotificationChannel';\n  config: Scalars['NotificationChannelConfig']['output'];\n  createdAt: Scalars['DateTime']['output'];\n  id: Scalars['ID']['output'];\n  updatedAt: Scalars['DateTime']['output'];\n  workspaceId: Scalars['String']['output'];\n};\n\nexport type NotificationDelivery = Node & {\n  __typename?: 'NotificationDelivery';\n  createdAt: Scalars['DateTime']['output'];\n  id: Scalars['ID']['output'];\n  notificationInstance: NotificationInstance;\n  readAt?: Maybe<Scalars['DateTime']['output']>;\n  status: NotificationDeliveryStatus;\n  type: NotificationDeliveryType;\n  updatedAt: Scalars['DateTime']['output'];\n  userId?: Maybe<Scalars['String']['output']>;\n};\n\nexport type NotificationDeliveryCreated = {\n  __typename?: 'NotificationDeliveryCreated';\n  delivery: NotificationDelivery;\n  type: Scalars['String']['output'];\n};\n\nexport type NotificationDeliveryFilterInput = {\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  onlyUnread?: InputMaybe<Scalars['Boolean']['input']>;\n  projectId?: InputMaybe<Scalars['String']['input']>;\n  status?: InputMaybe<NotificationStatus>;\n  type?: InputMaybe<NotificationDeliveryType>;\n  workspaceId?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type NotificationDeliveryResolved = {\n  __typename?: 'NotificationDeliveryResolved';\n  deliveryIds: Array<Scalars['String']['output']>;\n  type: Scalars['String']['output'];\n};\n\nexport type NotificationDeliveryStatus =\n  | 'FAILED'\n  | 'PENDING'\n  | 'SENT';\n\nexport type NotificationDeliveryType =\n  | 'EMAIL'\n  | 'INAPP'\n  | 'WEBHOOK';\n\nexport type NotificationDeliveryUpdate = NotificationDeliveryCreated | NotificationDeliveryResolved;\n\nexport type NotificationInstance = Node & {\n  __typename?: 'NotificationInstance';\n  createdAt: Scalars['DateTime']['output'];\n  environmentId?: Maybe<Scalars['String']['output']>;\n  event: Event;\n  eventId: Scalars['String']['output'];\n  eventType?: Maybe<Scalars['String']['output']>;\n  id: Scalars['ID']['output'];\n  payload: Scalars['NotificationPayload']['output'];\n  projectId?: Maybe<Scalars['String']['output']>;\n  resolvedAt?: Maybe<Scalars['DateTime']['output']>;\n  resourceId?: Maybe<Scalars['String']['output']>;\n  resourceType?: Maybe<Scalars['String']['output']>;\n  serviceId?: Maybe<Scalars['String']['output']>;\n  severity: NotificationSeverity;\n  status: NotificationStatus;\n  updatedAt: Scalars['DateTime']['output'];\n  volumeId?: Maybe<Scalars['String']['output']>;\n  workspaceId: Scalars['String']['output'];\n};\n\nexport type NotificationInstanceFilterInput = {\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  severities?: InputMaybe<Array<NotificationSeverity>>;\n  status?: InputMaybe<NotificationStatus>;\n  workspaceId?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type NotificationRule = Node & {\n  __typename?: 'NotificationRule';\n  channels: Array<NotificationChannel>;\n  createdAt: Scalars['DateTime']['output'];\n  environmentId?: Maybe<Scalars['String']['output']>;\n  ephemeralEnvironments?: Maybe<Scalars['Boolean']['output']>;\n  eventTypes: Array<Scalars['String']['output']>;\n  id: Scalars['ID']['output'];\n  projectId?: Maybe<Scalars['String']['output']>;\n  serviceId?: Maybe<Scalars['String']['output']>;\n  severities: Array<NotificationSeverity>;\n  updatedAt: Scalars['DateTime']['output'];\n  workspaceId: Scalars['String']['output'];\n};\n\nexport type NotificationSeverity =\n  | 'CRITICAL'\n  | 'INFO'\n  | 'NOTICE'\n  | 'WARNING';\n\nexport type NotificationStatus =\n  | 'ACTIVE'\n  | 'RESOLVED';\n\nexport type NotificationUserFilter = Node & {\n  __typename?: 'NotificationUserFilter';\n  createdAt: Scalars['DateTime']['output'];\n  defaultFilterId?: Maybe<Scalars['String']['output']>;\n  deliveryMethods: Array<NotificationDeliveryType>;\n  environmentId?: Maybe<Scalars['String']['output']>;\n  ephemeralEnvironments?: Maybe<Scalars['Boolean']['output']>;\n  eventTypes: Array<Scalars['String']['output']>;\n  id: Scalars['ID']['output'];\n  projectId?: Maybe<Scalars['String']['output']>;\n  serviceId?: Maybe<Scalars['String']['output']>;\n  severities: Array<NotificationSeverity>;\n  updatedAt: Scalars['DateTime']['output'];\n  userId: Scalars['String']['output'];\n};\n\nexport type NotificationUserFilterUpsertInput = {\n  defaultFilterId?: InputMaybe<Scalars['String']['input']>;\n  deliveryMethods: Array<NotificationDeliveryType>;\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  ephemeralEnvironments?: InputMaybe<Scalars['Boolean']['input']>;\n  eventTypes?: InputMaybe<Array<Scalars['String']['input']>>;\n  filterId?: InputMaybe<Scalars['String']['input']>;\n  projectId?: InputMaybe<Scalars['String']['input']>;\n  serviceId?: InputMaybe<Scalars['String']['input']>;\n  severities?: InputMaybe<Array<NotificationSeverity>>;\n  token?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type OAuthClient = Node & {\n  __typename?: 'OAuthClient';\n  allowDeviceFlow: Scalars['Boolean']['output'];\n  applicationType: OAuthClientType;\n  clientId: Scalars['String']['output'];\n  createdAt: Scalars['DateTime']['output'];\n  description?: Maybe<Scalars['String']['output']>;\n  id: Scalars['ID']['output'];\n  logoUrl?: Maybe<Scalars['String']['output']>;\n  name: Scalars['String']['output'];\n  redirectUris?: Maybe<Array<Scalars['String']['output']>>;\n  secrets: Array<OAuthClientSecret>;\n  updatedAt: Scalars['DateTime']['output'];\n  workspace: Workspace;\n};\n\nexport type OAuthClientCreateInput = {\n  allowDeviceFlow?: InputMaybe<Scalars['Boolean']['input']>;\n  applicationType?: InputMaybe<OAuthClientType>;\n  description?: InputMaybe<Scalars['String']['input']>;\n  logoUrl?: InputMaybe<Scalars['String']['input']>;\n  name: Scalars['String']['input'];\n  redirectUris?: InputMaybe<Array<Scalars['String']['input']>>;\n  workspaceId: Scalars['String']['input'];\n};\n\nexport type OAuthClientCreateResponse = {\n  __typename?: 'OAuthClientCreateResponse';\n  client: OAuthClient;\n  secret: OAuthClientSecretWithValue;\n};\n\nexport type OAuthClientSecret = Node & {\n  __typename?: 'OAuthClientSecret';\n  createdAt: Scalars['DateTime']['output'];\n  displaySecret: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n};\n\nexport type OAuthClientSecretWithValue = {\n  __typename?: 'OAuthClientSecretWithValue';\n  createdAt: Scalars['DateTime']['output'];\n  displaySecret: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  secret: Scalars['String']['output'];\n};\n\n/** OAuth client application type */\nexport type OAuthClientType =\n  | 'NATIVE'\n  | 'WEB';\n\nexport type OAuthClientUpdateInput = {\n  allowDeviceFlow?: InputMaybe<Scalars['Boolean']['input']>;\n  applicationType?: InputMaybe<OAuthClientType>;\n  description?: InputMaybe<Scalars['String']['input']>;\n  logoUrl?: InputMaybe<Scalars['String']['input']>;\n  name?: InputMaybe<Scalars['String']['input']>;\n  redirectUris?: InputMaybe<Array<Scalars['String']['input']>>;\n};\n\nexport type OAuthGrant = Node & {\n  __typename?: 'OAuthGrant';\n  client: OAuthGrantClient;\n  createdAt: Scalars['DateTime']['output'];\n  grantAllProjects: Scalars['Boolean']['output'];\n  grantAllWorkspaces: Scalars['Boolean']['output'];\n  grantedProjects: Array<OAuthGrantProject>;\n  grantedWorkspaces: Array<OAuthGrantWorkspace>;\n  id: Scalars['ID']['output'];\n  scopes: Array<Scalars['String']['output']>;\n};\n\nexport type OAuthGrantClient = {\n  __typename?: 'OAuthGrantClient';\n  description?: Maybe<Scalars['String']['output']>;\n  id: Scalars['ID']['output'];\n  logoUrl?: Maybe<Scalars['String']['output']>;\n  name: Scalars['String']['output'];\n};\n\nexport type OAuthGrantProject = {\n  __typename?: 'OAuthGrantProject';\n  createdAt: Scalars['DateTime']['output'];\n  id: Scalars['ID']['output'];\n  projectId: Scalars['String']['output'];\n};\n\nexport type OAuthGrantWorkspace = {\n  __typename?: 'OAuthGrantWorkspace';\n  createdAt: Scalars['DateTime']['output'];\n  id: Scalars['ID']['output'];\n  workspaceId: Scalars['String']['output'];\n};\n\nexport type OAuthGrantableProject = {\n  __typename?: 'OAuthGrantableProject';\n  id: Scalars['ID']['output'];\n  name: Scalars['String']['output'];\n  role: Scalars['String']['output'];\n  workspaceAvatar?: Maybe<Scalars['String']['output']>;\n  workspaceId?: Maybe<Scalars['String']['output']>;\n  workspaceName?: Maybe<Scalars['String']['output']>;\n};\n\nexport type OAuthGrantableWorkspace = {\n  __typename?: 'OAuthGrantableWorkspace';\n  avatarUrl?: Maybe<Scalars['String']['output']>;\n  id: Scalars['ID']['output'];\n  name: Scalars['String']['output'];\n  role: Scalars['String']['output'];\n};\n\nexport type ObservabilityDashboard = Node & {\n  __typename?: 'ObservabilityDashboard';\n  id: Scalars['ID']['output'];\n  items: Array<ObservabilityDashboardItemInstance>;\n};\n\nexport type ObservabilityDashboardAlert = Node & {\n  __typename?: 'ObservabilityDashboardAlert';\n  createdAt: Scalars['DateTime']['output'];\n  id: Scalars['ID']['output'];\n  resolvedAt?: Maybe<Scalars['DateTime']['output']>;\n  resourceId?: Maybe<Scalars['String']['output']>;\n  resourceType: MonitorAlertResourceType;\n  status: MonitorStatus;\n};\n\nexport type ObservabilityDashboardCreateInput = {\n  environmentId: Scalars['String']['input'];\n  /** If no items are provided, a default dashboard will be created. */\n  items?: InputMaybe<Array<ObservabilityDashboardUpdateInput>>;\n};\n\nexport type ObservabilityDashboardItem = Node & {\n  __typename?: 'ObservabilityDashboardItem';\n  config: ObservabilityDashboardItemConfig;\n  description?: Maybe<Scalars['String']['output']>;\n  id: Scalars['ID']['output'];\n  monitors: Array<ObservabilityDashboardMonitor>;\n  name: Scalars['String']['output'];\n  type: ObservabilityDashboardItemType;\n};\n\nexport type ObservabilityDashboardItemConfig = {\n  __typename?: 'ObservabilityDashboardItemConfig';\n  logsFilter?: Maybe<Scalars['String']['output']>;\n  measurements?: Maybe<Array<MetricMeasurement>>;\n  projectUsageProperties?: Maybe<Array<ProjectUsageProperty>>;\n  resourceIds?: Maybe<Array<Scalars['String']['output']>>;\n};\n\nexport type ObservabilityDashboardItemConfigInput = {\n  logsFilter?: InputMaybe<Scalars['String']['input']>;\n  measurements?: InputMaybe<Array<MetricMeasurement>>;\n  projectUsageProperties?: InputMaybe<Array<ProjectUsageProperty>>;\n  resourceIds?: InputMaybe<Array<Scalars['String']['input']>>;\n};\n\nexport type ObservabilityDashboardItemCreateInput = {\n  config: ObservabilityDashboardItemConfigInput;\n  description?: InputMaybe<Scalars['String']['input']>;\n  id: Scalars['String']['input'];\n  name: Scalars['String']['input'];\n  type: ObservabilityDashboardItemType;\n};\n\nexport type ObservabilityDashboardItemInstance = Node & {\n  __typename?: 'ObservabilityDashboardItemInstance';\n  dashboardItem: ObservabilityDashboardItem;\n  displayConfig: Scalars['DisplayConfig']['output'];\n  id: Scalars['ID']['output'];\n};\n\nexport type ObservabilityDashboardItemType =\n  | 'PROJECT_USAGE_ITEM'\n  | 'SERVICE_LOGS_ITEM'\n  | 'SERVICE_METRICS_ITEM'\n  | 'VOLUME_METRICS_ITEM';\n\nexport type ObservabilityDashboardMonitor = Node & {\n  __typename?: 'ObservabilityDashboardMonitor';\n  alerts: Array<ObservabilityDashboardAlert>;\n  config: ObservabilityDashboardMonitorConfig;\n  createdAt: Scalars['DateTime']['output'];\n  id: Scalars['ID']['output'];\n  updatedAt: Scalars['DateTime']['output'];\n};\n\n\nexport type ObservabilityDashboardMonitorAlertsArgs = {\n  endDate?: InputMaybe<Scalars['DateTime']['input']>;\n  startDate?: InputMaybe<Scalars['DateTime']['input']>;\n};\n\nexport type ObservabilityDashboardMonitorConfig = MonitorThresholdConfig;\n\nexport type ObservabilityDashboardMonitorCreateInput = {\n  config: MonitorConfigInput;\n};\n\nexport type ObservabilityDashboardMonitorUpdateInput = {\n  config: MonitorConfigInput;\n};\n\nexport type ObservabilityDashboardUpdateInput = {\n  dashboardItem: ObservabilityDashboardItemCreateInput;\n  displayConfig: Scalars['DisplayConfig']['input'];\n  id: Scalars['String']['input'];\n};\n\nexport type PageInfo = {\n  __typename?: 'PageInfo';\n  endCursor?: Maybe<Scalars['String']['output']>;\n  hasNextPage: Scalars['Boolean']['output'];\n  hasPreviousPage: Scalars['Boolean']['output'];\n  startCursor?: Maybe<Scalars['String']['output']>;\n};\n\n/** The parameter to get the top movers for */\nexport type ParamMeasurement =\n  | 'adoptionLevel'\n  | 'deltaLevel'\n  | 'monthlyEstimatedUsage'\n  | 'numSeats';\n\nexport type PartnerProfile = {\n  __typename?: 'PartnerProfile';\n  category: Scalars['String']['output'];\n  description: Scalars['String']['output'];\n  slug: Scalars['String']['output'];\n  type: PartnerProfileType;\n  website: Scalars['String']['output'];\n};\n\nexport type PartnerProfileInput = {\n  category: Scalars['String']['input'];\n  description: Scalars['String']['input'];\n  slug: Scalars['String']['input'];\n  type: PartnerProfileType;\n  website: Scalars['String']['input'];\n};\n\nexport type PartnerProfileType =\n  | 'BASIC_PARTNER'\n  | 'LIMITED_PARTNER'\n  | 'TEMPLATE_MAINTAINER';\n\nexport type PartnershipInquiryInput = {\n  companyName: Scalars['String']['input'];\n  companyUrl?: InputMaybe<Scalars['String']['input']>;\n  contactName: Scalars['String']['input'];\n  description: Scalars['String']['input'];\n  email: Scalars['String']['input'];\n  githubUrl?: InputMaybe<Scalars['String']['input']>;\n  technology?: InputMaybe<Scalars['String']['input']>;\n  workspace?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type Passkey = Node & {\n  __typename?: 'Passkey';\n  aaguid?: Maybe<Scalars['String']['output']>;\n  backedUp: Scalars['Boolean']['output'];\n  createdAt: Scalars['DateTime']['output'];\n  credentialId: Scalars['String']['output'];\n  deviceName: Scalars['String']['output'];\n  deviceType: Scalars['String']['output'];\n  displayName?: Maybe<Scalars['String']['output']>;\n  id: Scalars['ID']['output'];\n  lastUsedAt?: Maybe<Scalars['DateTime']['output']>;\n  lastUsedDevice?: Maybe<Scalars['String']['output']>;\n  transports: Array<Scalars['String']['output']>;\n  updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type PasskeyAuthenticationCreateInput = {\n  twoFactorLinkingKey?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type PasskeyAuthenticationVerifyInput = {\n  credentialJSON: Scalars['PasskeyAuthenticationCredentialJSON']['input'];\n  twoFactorLinkingKey?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type PasskeyCreateAuthenticationReponse = {\n  __typename?: 'PasskeyCreateAuthenticationReponse';\n  optionsJSON: Scalars['PasskeyAuthenticationOptionsJSON']['output'];\n};\n\nexport type PasskeyCreateRegistrationReponse = {\n  __typename?: 'PasskeyCreateRegistrationReponse';\n  optionsJSON: Scalars['PasskeyRegistrationOptionsJSON']['output'];\n};\n\nexport type PasskeyRegistrationVerifyInput = {\n  credentialJSON: Scalars['PasskeyRegistrationCredentialJSON']['input'];\n};\n\nexport type PasskeyVerifyAuthenticationReponse = {\n  __typename?: 'PasskeyVerifyAuthenticationReponse';\n  success: Scalars['Boolean']['output'];\n};\n\nexport type PasskeyVerifyRegistrationReponse = {\n  __typename?: 'PasskeyVerifyRegistrationReponse';\n  passkey?: Maybe<Passkey>;\n  success: Scalars['Boolean']['output'];\n};\n\nexport type PatroniClusterStatus = {\n  __typename?: 'PatroniClusterStatus';\n  leader?: Maybe<Scalars['String']['output']>;\n  members: Array<PatroniMember>;\n  scope: Scalars['String']['output'];\n};\n\nexport type PatroniDcsArchiveConfig = {\n  __typename?: 'PatroniDcsArchiveConfig';\n  archiveCommand?: Maybe<Scalars['String']['output']>;\n  archiveMode?: Maybe<Scalars['String']['output']>;\n  archiveTimeout?: Maybe<Scalars['Int']['output']>;\n  fetchedAt: Scalars['String']['output'];\n};\n\nexport type PatroniMember = {\n  __typename?: 'PatroniMember';\n  lagInMb?: Maybe<Scalars['Float']['output']>;\n  name: Scalars['String']['output'];\n  role: Scalars['String']['output'];\n  state: Scalars['String']['output'];\n  timeline: Scalars['Int']['output'];\n};\n\nexport type PaymentMethod = {\n  __typename?: 'PaymentMethod';\n  card?: Maybe<PaymentMethodCard>;\n  id: Scalars['String']['output'];\n};\n\nexport type PaymentMethodCard = {\n  __typename?: 'PaymentMethodCard';\n  brand: Scalars['String']['output'];\n  country?: Maybe<Scalars['String']['output']>;\n  last4: Scalars['String']['output'];\n};\n\nexport type PgBackrestBackupSummary = {\n  __typename?: 'PgBackrestBackupSummary';\n  label: Scalars['String']['output'];\n  sizeBytes: Scalars['Float']['output'];\n  startedAt: Scalars['String']['output'];\n  stoppedAt: Scalars['String']['output'];\n  type: Scalars['String']['output'];\n};\n\nexport type PgBackrestGapSummary = {\n  __typename?: 'PgBackrestGapSummary';\n  endedAt: Scalars['String']['output'];\n  missingBytesEstimate: Scalars['Float']['output'];\n  missingSegmentCount: Scalars['Int']['output'];\n  reason: Scalars['String']['output'];\n  startedAt: Scalars['String']['output'];\n};\n\nexport type PgBackrestReachableInterval = {\n  __typename?: 'PgBackrestReachableInterval';\n  from: Scalars['String']['output'];\n  to: Scalars['String']['output'];\n};\n\nexport type PgBackrestSummary = {\n  __typename?: 'PgBackrestSummary';\n  archiveHealthy?: Maybe<Scalars['Boolean']['output']>;\n  backups: Array<PgBackrestBackupSummary>;\n  diffCount: Scalars['Int']['output'];\n  earliestBackupAt?: Maybe<Scalars['String']['output']>;\n  earliestRestorableAt?: Maybe<Scalars['String']['output']>;\n  fullCount: Scalars['Int']['output'];\n  gaps: Array<PgBackrestGapSummary>;\n  incrCount: Scalars['Int']['output'];\n  lastArchivedAt?: Maybe<Scalars['String']['output']>;\n  lastCommittedTxnAt?: Maybe<Scalars['String']['output']>;\n  latestBackupAt?: Maybe<Scalars['String']['output']>;\n  latestRestorableAt?: Maybe<Scalars['String']['output']>;\n  newestWalAt?: Maybe<Scalars['String']['output']>;\n  oldestWalAt?: Maybe<Scalars['String']['output']>;\n  pgWalDirBytes?: Maybe<Scalars['Float']['output']>;\n  reachableIntervals: Array<PgBackrestReachableInterval>;\n  spoolDirBytes?: Maybe<Scalars['Float']['output']>;\n  totalSizeBytes?: Maybe<Scalars['Float']['output']>;\n  walTimelines: Array<PgBackrestWalTimelineSummary>;\n  walTotalBytes: Scalars['Float']['output'];\n  walTotalSegments: Scalars['Int']['output'];\n};\n\nexport type PgBackrestWalTimelineSummary = {\n  __typename?: 'PgBackrestWalTimelineSummary';\n  id: Scalars['String']['output'];\n  maxSegment: Scalars['String']['output'];\n  minSegment: Scalars['String']['output'];\n  missingCount: Scalars['Int']['output'];\n  newestSegmentAt?: Maybe<Scalars['String']['output']>;\n  oldestSegmentAt?: Maybe<Scalars['String']['output']>;\n  segmentsExpected: Scalars['Int']['output'];\n  segmentsPresent: Scalars['Int']['output'];\n  totalBytes: Scalars['Float']['output'];\n};\n\nexport type PgStatArchiverSummary = {\n  __typename?: 'PgStatArchiverSummary';\n  archivedCount?: Maybe<Scalars['Int']['output']>;\n  failedCount?: Maybe<Scalars['Int']['output']>;\n  lastArchivedAt?: Maybe<Scalars['String']['output']>;\n  lastArchivedWal?: Maybe<Scalars['String']['output']>;\n  lastFailedAt?: Maybe<Scalars['String']['output']>;\n  lastFailedWal?: Maybe<Scalars['String']['output']>;\n  runtimeArchiveCommand?: Maybe<Scalars['String']['output']>;\n  runtimeArchiveMode?: Maybe<Scalars['String']['output']>;\n  walSegmentCount?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type PitrBackrestCheck = {\n  __typename?: 'PitrBackrestCheck';\n  checkedAt: Scalars['String']['output'];\n  error?: Maybe<Scalars['String']['output']>;\n  ok: Scalars['Boolean']['output'];\n};\n\nexport type PitrBucketSummary = {\n  __typename?: 'PitrBucketSummary';\n  deletedAt?: Maybe<Scalars['String']['output']>;\n  exists: Scalars['Boolean']['output'];\n  name?: Maybe<Scalars['String']['output']>;\n  objectCount?: Maybe<Scalars['Int']['output']>;\n  provider?: Maybe<Scalars['String']['output']>;\n  sizeGb?: Maybe<Scalars['Float']['output']>;\n  spendDollars?: Maybe<Scalars['Float']['output']>;\n};\n\nexport type PitrConfigMismatch = {\n  __typename?: 'PitrConfigMismatch';\n  code: Scalars['String']['output'];\n  detail: Scalars['String']['output'];\n};\n\nexport type PitrEnvVarConfig = {\n  __typename?: 'PitrEnvVarConfig';\n  bucketRef?: Maybe<Scalars['String']['output']>;\n  hasKey: Scalars['Boolean']['output'];\n  hasSecret: Scalars['Boolean']['output'];\n  walArchiveEndpoint?: Maybe<Scalars['String']['output']>;\n  walArchivePath?: Maybe<Scalars['String']['output']>;\n  walArchiveRegion?: Maybe<Scalars['String']['output']>;\n};\n\nexport type PitrFleetAggregates = {\n  __typename?: 'PitrFleetAggregates';\n  archivedCountTotal?: Maybe<Scalars['Float']['output']>;\n  diffsLast24h: Scalars['Int']['output'];\n  failedCountTotal?: Maybe<Scalars['Float']['output']>;\n  fullsLast24h: Scalars['Int']['output'];\n  incrsLast24h: Scalars['Int']['output'];\n  outliers: PitrFleetOutliers;\n  pitrWindowP5Ms?: Maybe<Scalars['Float']['output']>;\n  pitrWindowP50Ms?: Maybe<Scalars['Float']['output']>;\n  regionCounts: Array<PitrRegionCount>;\n  servicesWithWindowCount: Scalars['Int']['output'];\n  staleFullCount: Scalars['Int']['output'];\n  thinWindowCount: Scalars['Int']['output'];\n  totalArchiveSizeBytes?: Maybe<Scalars['Float']['output']>;\n  totalArchiveSpendDollars?: Maybe<Scalars['Float']['output']>;\n  totalServiceSpendDollars?: Maybe<Scalars['Float']['output']>;\n  windowBandGte7dCount: Scalars['Int']['output'];\n  windowBandLt1hCount: Scalars['Int']['output'];\n  windowBandLt6hCount: Scalars['Int']['output'];\n  windowBandLt7dCount: Scalars['Int']['output'];\n  windowBandLt24hCount: Scalars['Int']['output'];\n  windowBandNoBackupCount: Scalars['Int']['output'];\n};\n\nexport type PitrFleetOutliers = {\n  __typename?: 'PitrFleetOutliers';\n  highestArchiveFailRate: Array<PitrServiceOutlier>;\n  highestArchiveLag: Array<PitrServiceOutlier>;\n  largestCatalog: Array<PitrServiceOutlier>;\n  longestChain: Array<PitrServiceOutlier>;\n  oldestFull: Array<PitrServiceOutlier>;\n  shortestWindow: Array<PitrServiceOutlier>;\n};\n\nexport type PitrLogAnalysis = {\n  __typename?: 'PitrLogAnalysis';\n  analyzedAt: Scalars['String']['output'];\n  criticalCount: Scalars['Int']['output'];\n  errorCount: Scalars['Int']['output'];\n  issues: Array<PitrLogIssue>;\n  lastLogAt?: Maybe<Scalars['String']['output']>;\n  logSpewDetected: Scalars['Boolean']['output'];\n  spewTemplates: Array<PitrLogSpewPattern>;\n  totalLinesAnalyzed: Scalars['Int']['output'];\n  warningCount: Scalars['Int']['output'];\n};\n\nexport type PitrLogIssue = {\n  __typename?: 'PitrLogIssue';\n  count: Scalars['Int']['output'];\n  matched: Scalars['String']['output'];\n  message: Scalars['String']['output'];\n  pattern: Scalars['String']['output'];\n  severity: Scalars['String']['output'];\n};\n\nexport type PitrLogSpewPattern = {\n  __typename?: 'PitrLogSpewPattern';\n  count: Scalars['Int']['output'];\n  lastSeen: Scalars['String']['output'];\n  sample: Scalars['String']['output'];\n  template: Scalars['String']['output'];\n};\n\nexport type PitrRegionCount = {\n  __typename?: 'PitrRegionCount';\n  count: Scalars['Int']['output'];\n  region: Scalars['String']['output'];\n};\n\nexport type PitrServiceOutlier = {\n  __typename?: 'PitrServiceOutlier';\n  environmentId: Scalars['String']['output'];\n  projectId: Scalars['String']['output'];\n  projectName: Scalars['String']['output'];\n  region?: Maybe<Scalars['String']['output']>;\n  serviceId: Scalars['String']['output'];\n  serviceName: Scalars['String']['output'];\n  severity: Scalars['String']['output'];\n  valueContext: Scalars['String']['output'];\n  valueLabel: Scalars['String']['output'];\n  valueNumeric?: Maybe<Scalars['Float']['output']>;\n  workspaceId?: Maybe<Scalars['String']['output']>;\n  workspaceName?: Maybe<Scalars['String']['output']>;\n};\n\nexport type PitrWarning = {\n  __typename?: 'PitrWarning';\n  code: Scalars['String']['output'];\n  detail: Scalars['String']['output'];\n  severity: Scalars['String']['output'];\n};\n\nexport type PitrWarningCodeCount = {\n  __typename?: 'PitrWarningCodeCount';\n  code: Scalars['String']['output'];\n  count: Scalars['Int']['output'];\n  severity: Scalars['String']['output'];\n};\n\nexport type Plan =\n  | 'FREE'\n  | 'HOBBY'\n  | 'PRO';\n\nexport type PlanLimitOverride = Node & {\n  __typename?: 'PlanLimitOverride';\n  config: Scalars['SubscriptionPlanLimit']['output'];\n  id: Scalars['ID']['output'];\n};\n\nexport type PlanLimitOverrideUpsertInput = {\n  config: Scalars['SubscriptionPlanLimit']['input'];\n  customerId: Scalars['String']['input'];\n  expire: Scalars['Boolean']['input'];\n};\n\nexport type PlatformFeatureFlag =\n  | 'BAN_APPEAL_FORM'\n  | 'CHAT_SANDBOX'\n  | 'CTRD_IMAGE_STORE_ROLLOUT'\n  | 'DEMO_PERCENTAGE_ROLLOUT'\n  | 'HA_STATIC_EGRESS_SELF_SERVICE'\n  | 'INLINE_NOTIFICATION_PROCESSING'\n  | 'IN_DASHBOARD_SUPPORT'\n  | 'KAFKA_DEPLOYMENT_STATUS_CHANGES'\n  | 'NEW_STRIPE_WEBHOOK_VERSION_ROLLOUT'\n  | 'OAUTH_DCR_KILLSWITCH'\n  | 'RADAR_AUTO_EVALUATE'\n  | 'SERVICEINSTANCE_DATALOADER_FOR_STATIC_URL'\n  | 'SPLIT_USAGE_QUERIES'\n  | 'STRIPE_METERS_NEW_ACCOUNTS'\n  | 'STRIPE_METERS_SHADOW_ENABLED'\n  | 'UPDATED_VM_QUERIES';\n\nexport type PlatformFeatureFlagChange = {\n  __typename?: 'PlatformFeatureFlagChange';\n  changedByAvatar?: Maybe<Scalars['String']['output']>;\n  changedByName?: Maybe<Scalars['String']['output']>;\n  changedByUserId: Scalars['String']['output'];\n  flag: Scalars['String']['output'];\n  newValue: Scalars['String']['output'];\n  previousValue: Scalars['String']['output'];\n  timestamp: Scalars['DateTime']['output'];\n};\n\nexport type PlatformFeatureFlagStatus = {\n  __typename?: 'PlatformFeatureFlagStatus';\n  flag: PlatformFeatureFlag;\n  rolloutPercentage: Scalars['Int']['output'];\n  status: Scalars['Boolean']['output'];\n  type: PlatformFeatureFlagType;\n};\n\nexport type PlatformFeatureFlagType =\n  | 'BOOLEAN'\n  | 'PERCENTAGE';\n\nexport type PlatformServiceKey =\n  | 'ALL_PROVISIONS'\n  | 'ANON_PROVISIONS'\n  | 'BUCKET_PROVISIONS'\n  | 'FREE_PROVISIONS'\n  | 'NON_PRO_PROVISIONS'\n  | 'NON_VERIFIED_PROVISIONS'\n  | 'SIGNUPS'\n  | 'VOLUME_PROVISIONS';\n\nexport type PlatformServiceStatus =\n  | 'DISABLE'\n  | 'ENABLE';\n\nexport type PlatformStatus = {\n  __typename?: 'PlatformStatus';\n  incident?: Maybe<Incident>;\n  isStable: Scalars['Boolean']['output'];\n  maintenance?: Maybe<Maintenance>;\n};\n\nexport type PlatformStatusOverrideMessageInput = {\n  id: Scalars['String']['input'];\n  message: Scalars['String']['input'];\n  status: Scalars['String']['input'];\n  url: Scalars['String']['input'];\n};\n\nexport type Plugin = Node & {\n  __typename?: 'Plugin';\n  containers: PluginContainersConnection;\n  createdAt: Scalars['DateTime']['output'];\n  deletedAt?: Maybe<Scalars['DateTime']['output']>;\n  deprecatedAt?: Maybe<Scalars['DateTime']['output']>;\n  friendlyName: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  logsEnabled: Scalars['Boolean']['output'];\n  migrationDatabaseServiceId?: Maybe<Scalars['String']['output']>;\n  name: PluginType;\n  project: Project;\n  status: PluginStatus;\n  variables: PluginVariablesConnection;\n};\n\n\nexport type PluginContainersArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type PluginVariablesArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type PluginContainersConnection = {\n  __typename?: 'PluginContainersConnection';\n  edges: Array<PluginContainersConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type PluginContainersConnectionEdge = {\n  __typename?: 'PluginContainersConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Container;\n};\n\nexport type PluginCreateInput = {\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  friendlyName?: InputMaybe<Scalars['String']['input']>;\n  name: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n};\n\nexport type PluginRestartInput = {\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type PluginStatus =\n  | 'DEPRECATED'\n  | 'LOCKED'\n  | 'REMOVED'\n  | 'RUNNING'\n  | 'STOPPED';\n\nexport type PluginType =\n  | 'mongodb'\n  | 'mysql'\n  | 'postgresql'\n  | 'redis';\n\nexport type PluginUpdateInput = {\n  friendlyName: Scalars['String']['input'];\n};\n\nexport type PluginVariablesConnection = {\n  __typename?: 'PluginVariablesConnection';\n  edges: Array<PluginVariablesConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type PluginVariablesConnectionEdge = {\n  __typename?: 'PluginVariablesConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Variable;\n};\n\nexport type PostSupportMessageInput = {\n  attachmentIds?: InputMaybe<Array<Scalars['String']['input']>>;\n  body: Scalars['String']['input'];\n  inReplyToMessageId?: InputMaybe<Scalars['String']['input']>;\n  threadSlug: Scalars['String']['input'];\n};\n\nexport type PostgresDeepHealth = {\n  __typename?: 'PostgresDeepHealth';\n  cacheHitRatio?: Maybe<Scalars['Float']['output']>;\n  connectionsActive?: Maybe<Scalars['Int']['output']>;\n  connectionsMax?: Maybe<Scalars['Int']['output']>;\n  connectionsTotal?: Maybe<Scalars['Int']['output']>;\n  dbSizeGb?: Maybe<Scalars['Float']['output']>;\n  deadlocks?: Maybe<Scalars['Int']['output']>;\n  longRunningQueriesCount?: Maybe<Scalars['Int']['output']>;\n  replicationLagMaxSecs?: Maybe<Scalars['Float']['output']>;\n  txidWraparoundPct?: Maybe<Scalars['Float']['output']>;\n};\n\nexport type PostgresHaCluster = {\n  __typename?: 'PostgresHaCluster';\n  cachedAt: Scalars['String']['output'];\n  clusterSpendDollars?: Maybe<Scalars['Float']['output']>;\n  createdAt: Scalars['String']['output'];\n  deploymentStatuses: Array<Scalars['String']['output']>;\n  enrichmentErrors: Array<Scalars['String']['output']>;\n  environmentId: Scalars['String']['output'];\n  environmentName: Scalars['String']['output'];\n  estimatedDowntimeSecsLast7Days?: Maybe<Scalars['Int']['output']>;\n  etcdLeaderChangesLast7Days?: Maybe<Scalars['Int']['output']>;\n  etcdNodeCount: Scalars['Int']['output'];\n  etcdQuorum?: Maybe<EtcdQuorum>;\n  failoversLast7Days?: Maybe<Scalars['Int']['output']>;\n  haproxyNodeCount: Scalars['Int']['output'];\n  hasBAA: Scalars['Boolean']['output'];\n  healthCheckedAt?: Maybe<Scalars['String']['output']>;\n  lastBackupAt?: Maybe<Scalars['String']['output']>;\n  nodes: Array<PostgresHaNodeDetail>;\n  patroniStatus?: Maybe<PatroniClusterStatus>;\n  postgresHealth?: Maybe<PostgresDeepHealth>;\n  postgresNodeCount: Scalars['Int']['output'];\n  projectId: Scalars['String']['output'];\n  projectName: Scalars['String']['output'];\n  region?: Maybe<Scalars['String']['output']>;\n  totalNodeCount: Scalars['Int']['output'];\n  workspaceId?: Maybe<Scalars['String']['output']>;\n  workspaceName?: Maybe<Scalars['String']['output']>;\n  workspacePlan?: Maybe<Scalars['String']['output']>;\n  workspaceSpendDollars?: Maybe<Scalars['Float']['output']>;\n};\n\nexport type PostgresHaClustersResult = {\n  __typename?: 'PostgresHaClustersResult';\n  allClustersCount: Scalars['Int']['output'];\n  allNodesCount: Scalars['Int']['output'];\n  cachedAt?: Maybe<Scalars['String']['output']>;\n  filteredClustersCount: Scalars['Int']['output'];\n  haWarningsClustersCount: Scalars['Int']['output'];\n  healthyClustersCount: Scalars['Int']['output'];\n  issueClustersCount: Scalars['Int']['output'];\n  removedClustersCount: Scalars['Int']['output'];\n  totalCount: Scalars['Int']['output'];\n  totalCpuUsageVcpu?: Maybe<Scalars['Float']['output']>;\n  totalDiskUsageGb?: Maybe<Scalars['Float']['output']>;\n  totalMemoryUsageGb?: Maybe<Scalars['Float']['output']>;\n  totalSpendDollars?: Maybe<Scalars['Float']['output']>;\n  unknownClustersCount: Scalars['Int']['output'];\n  workspaceGroups: Array<PostgresHaWorkspaceGroup>;\n};\n\nexport type PostgresHaNodeDetail = {\n  __typename?: 'PostgresHaNodeDetail';\n  cpuUsageAvg?: Maybe<Scalars['Float']['output']>;\n  cpuUsageMax?: Maybe<Scalars['Float']['output']>;\n  deploymentInstanceId?: Maybe<Scalars['String']['output']>;\n  deploymentStatus?: Maybe<Scalars['String']['output']>;\n  diskUsageGb?: Maybe<Scalars['Float']['output']>;\n  latestDeployFailed: Scalars['Boolean']['output'];\n  logAnalysis?: Maybe<NodeLogAnalysis>;\n  logFetchFailed: Scalars['Boolean']['output'];\n  memoryUsageAvg?: Maybe<Scalars['Float']['output']>;\n  memoryUsageMax?: Maybe<Scalars['Float']['output']>;\n  nodeType: Scalars['String']['output'];\n  numReplicas?: Maybe<Scalars['Int']['output']>;\n  patroniMemberName?: Maybe<Scalars['String']['output']>;\n  region?: Maybe<Scalars['String']['output']>;\n  serviceId: Scalars['String']['output'];\n  serviceName: Scalars['String']['output'];\n};\n\nexport type PostgresHaWorkspaceGroup = {\n  __typename?: 'PostgresHaWorkspaceGroup';\n  clusterCount: Scalars['Int']['output'];\n  clusters: Array<PostgresHaCluster>;\n  haWarningsClustersCount: Scalars['Int']['output'];\n  healthyClustersCount: Scalars['Int']['output'];\n  issueClustersCount: Scalars['Int']['output'];\n  newestCachedAt?: Maybe<Scalars['String']['output']>;\n  oldestCreatedAt?: Maybe<Scalars['String']['output']>;\n  projectCount: Scalars['Int']['output'];\n  regions: Array<Scalars['String']['output']>;\n  removedClustersCount: Scalars['Int']['output'];\n  totalEtcdCount: Scalars['Int']['output'];\n  totalHaproxyCount: Scalars['Int']['output'];\n  totalNodeCount: Scalars['Int']['output'];\n  totalPgCount: Scalars['Int']['output'];\n  totalSpendDollars?: Maybe<Scalars['Float']['output']>;\n  unknownClustersCount: Scalars['Int']['output'];\n  workspaceId?: Maybe<Scalars['String']['output']>;\n  workspaceName?: Maybe<Scalars['String']['output']>;\n  workspacePlan?: Maybe<Scalars['String']['output']>;\n  workspaceSpendDollars?: Maybe<Scalars['Float']['output']>;\n};\n\nexport type PostgresPitrService = {\n  __typename?: 'PostgresPitrService';\n  bucket: PitrBucketSummary;\n  cachedAt: Scalars['String']['output'];\n  clusterLeaderServiceId?: Maybe<Scalars['String']['output']>;\n  clusterLeaderServiceName?: Maybe<Scalars['String']['output']>;\n  configMismatches: Array<PitrConfigMismatch>;\n  cpuUsageAvg?: Maybe<Scalars['Float']['output']>;\n  deploymentInstanceId?: Maybe<Scalars['String']['output']>;\n  deploymentStatus?: Maybe<Scalars['String']['output']>;\n  diskUsageGb?: Maybe<Scalars['Float']['output']>;\n  enrichmentErrors: Array<Scalars['String']['output']>;\n  envVarConfig?: Maybe<PitrEnvVarConfig>;\n  environmentId: Scalars['String']['output'];\n  environmentName: Scalars['String']['output'];\n  hasBAA: Scalars['Boolean']['output'];\n  imageDigest?: Maybe<Scalars['String']['output']>;\n  latestDeploymentCreatedAt?: Maybe<Scalars['String']['output']>;\n  latestDeploymentId?: Maybe<Scalars['String']['output']>;\n  latestDeploymentImage?: Maybe<Scalars['String']['output']>;\n  latestDeploymentImageDigest?: Maybe<Scalars['String']['output']>;\n  latestDeploymentStatus?: Maybe<Scalars['String']['output']>;\n  logAnalysis?: Maybe<PitrLogAnalysis>;\n  logFetchFailed: Scalars['Boolean']['output'];\n  memoryUsageAvg?: Maybe<Scalars['Float']['output']>;\n  patroniDcsConfig?: Maybe<PatroniDcsArchiveConfig>;\n  pgStatArchiver?: Maybe<PgStatArchiverSummary>;\n  pgbackrest?: Maybe<PgBackrestSummary>;\n  pgbackrestCheck?: Maybe<PitrBackrestCheck>;\n  pitrEnabledAt?: Maybe<Scalars['String']['output']>;\n  projectId: Scalars['String']['output'];\n  projectName: Scalars['String']['output'];\n  region?: Maybe<Scalars['String']['output']>;\n  rootServiceId?: Maybe<Scalars['String']['output']>;\n  serviceCreatedAt: Scalars['String']['output'];\n  serviceFlavor: Scalars['String']['output'];\n  serviceId: Scalars['String']['output'];\n  serviceName: Scalars['String']['output'];\n  serviceSpendDollars?: Maybe<Scalars['Float']['output']>;\n  sourceImage?: Maybe<Scalars['String']['output']>;\n  warnings: Array<PitrWarning>;\n  workspaceId?: Maybe<Scalars['String']['output']>;\n  workspaceName?: Maybe<Scalars['String']['output']>;\n  workspacePlan?: Maybe<Scalars['String']['output']>;\n  workspaceSpendDollars?: Maybe<Scalars['Float']['output']>;\n};\n\nexport type PostgresPitrServicesResult = {\n  __typename?: 'PostgresPitrServicesResult';\n  allServicesCount: Scalars['Int']['output'];\n  archiverUnhealthyCount: Scalars['Int']['output'];\n  bucketDeletedCount: Scalars['Int']['output'];\n  bucketMiswiredCount: Scalars['Int']['output'];\n  cachedAt?: Maybe<Scalars['String']['output']>;\n  criticalCount: Scalars['Int']['output'];\n  filteredCount: Scalars['Int']['output'];\n  fleet: PitrFleetAggregates;\n  haCount: Scalars['Int']['output'];\n  healthyCount: Scalars['Int']['output'];\n  noBackupYetCount: Scalars['Int']['output'];\n  shutdownCount: Scalars['Int']['output'];\n  staleBackupCount: Scalars['Int']['output'];\n  standaloneCount: Scalars['Int']['output'];\n  totalCount: Scalars['Int']['output'];\n  walAccumulatingCount: Scalars['Int']['output'];\n  walGapCount: Scalars['Int']['output'];\n  warningCount: Scalars['Int']['output'];\n  workspaceGroups: Array<PostgresPitrWorkspaceGroup>;\n};\n\nexport type PostgresPitrWorkspaceGroup = {\n  __typename?: 'PostgresPitrWorkspaceGroup';\n  avgCpuUsage?: Maybe<Scalars['Float']['output']>;\n  criticalCount: Scalars['Int']['output'];\n  haClusterCount: Scalars['Int']['output'];\n  healthyCount: Scalars['Int']['output'];\n  newestCachedAt?: Maybe<Scalars['String']['output']>;\n  oldestPitrEnabledAt?: Maybe<Scalars['String']['output']>;\n  oldestServiceCreatedAt?: Maybe<Scalars['String']['output']>;\n  projectCount: Scalars['Int']['output'];\n  regions: Array<Scalars['String']['output']>;\n  serviceCount: Scalars['Int']['output'];\n  services: Array<PostgresPitrService>;\n  shutdownCount: Scalars['Int']['output'];\n  totalBucketSpendDollars?: Maybe<Scalars['Float']['output']>;\n  totalCatalogBytes?: Maybe<Scalars['Float']['output']>;\n  totalDiskGb?: Maybe<Scalars['Float']['output']>;\n  totalMemoryGb?: Maybe<Scalars['Float']['output']>;\n  totalServiceSpendDollars?: Maybe<Scalars['Float']['output']>;\n  warningCodeCounts: Array<PitrWarningCodeCount>;\n  warningCount: Scalars['Int']['output'];\n  workspaceId?: Maybe<Scalars['String']['output']>;\n  workspaceName?: Maybe<Scalars['String']['output']>;\n  workspacePlan?: Maybe<Scalars['String']['output']>;\n  workspaceSpendDollars?: Maybe<Scalars['Float']['output']>;\n};\n\nexport type Preferences = Node & {\n  __typename?: 'Preferences';\n  buildFailedEmail: Scalars['Boolean']['output'];\n  changelogEmail: Scalars['Boolean']['output'];\n  communityEmail: Scalars['Boolean']['output'];\n  deployCrashedEmail: Scalars['Boolean']['output'];\n  ephemeralEnvironmentEmail: Scalars['Boolean']['output'];\n  id: Scalars['ID']['output'];\n  marketingEmail: Scalars['Boolean']['output'];\n  subprocessorUpdatesEmail: Scalars['Boolean']['output'];\n  templateQueueEmail: Scalars['Boolean']['output'];\n  usageEmail: Scalars['Boolean']['output'];\n};\n\nexport type PreferencesUpdateData = {\n  buildFailedEmail?: InputMaybe<Scalars['Boolean']['input']>;\n  changelogEmail?: InputMaybe<Scalars['Boolean']['input']>;\n  communityEmail?: InputMaybe<Scalars['Boolean']['input']>;\n  deployCrashedEmail?: InputMaybe<Scalars['Boolean']['input']>;\n  ephemeralEnvironmentEmail?: InputMaybe<Scalars['Boolean']['input']>;\n  marketingEmail?: InputMaybe<Scalars['Boolean']['input']>;\n  subprocessorUpdatesEmail?: InputMaybe<Scalars['Boolean']['input']>;\n  templateQueueEmail?: InputMaybe<Scalars['Boolean']['input']>;\n  token?: InputMaybe<Scalars['String']['input']>;\n  usageEmail?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\nexport type PricingInvoiceUploadInput = {\n  attribution?: InputMaybe<Scalars['String']['input']>;\n  email: Scalars['String']['input'];\n  name: Scalars['String']['input'];\n  spend?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type PrivateNetwork = {\n  __typename?: 'PrivateNetwork';\n  createdAt?: Maybe<Scalars['DateTime']['output']>;\n  deletedAt?: Maybe<Scalars['DateTime']['output']>;\n  dnsName: Scalars['String']['output'];\n  environmentId: Scalars['String']['output'];\n  name: Scalars['String']['output'];\n  networkId: Scalars['BigInt']['output'];\n  projectId: Scalars['String']['output'];\n  publicId: Scalars['String']['output'];\n  tags: Array<Scalars['String']['output']>;\n};\n\nexport type PrivateNetworkCreateOrGetInput = {\n  environmentId: Scalars['String']['input'];\n  name: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n  tags: Array<Scalars['String']['input']>;\n};\n\nexport type PrivateNetworkEndpoint = {\n  __typename?: 'PrivateNetworkEndpoint';\n  createdAt?: Maybe<Scalars['DateTime']['output']>;\n  deletedAt?: Maybe<Scalars['DateTime']['output']>;\n  dnsName: Scalars['String']['output'];\n  newDnsName?: Maybe<Scalars['String']['output']>;\n  privateIps: Array<Scalars['String']['output']>;\n  publicId: Scalars['String']['output'];\n  serviceInstanceId: Scalars['String']['output'];\n  syncStatus: PrivateNetworkEndpointSyncStatus;\n  tags: Array<Scalars['String']['output']>;\n};\n\nexport type PrivateNetworkEndpointCreateOrGetInput = {\n  environmentId: Scalars['String']['input'];\n  privateNetworkId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n  serviceName: Scalars['String']['input'];\n  tags: Array<Scalars['String']['input']>;\n};\n\nexport type PrivateNetworkEndpointSyncStatus =\n  | 'ACTIVE'\n  | 'CREATING'\n  | 'DELETED'\n  | 'DELETING'\n  | 'UNSPECIFIED'\n  | 'UPDATING';\n\nexport type PrivnetRouteInfo = {\n  __typename?: 'PrivnetRouteInfo';\n  createdAt?: Maybe<Scalars['DateTime']['output']>;\n  defaultPort?: Maybe<Scalars['Int']['output']>;\n  endpoints: Array<Scalars['String']['output']>;\n  environmentId?: Maybe<Scalars['String']['output']>;\n  found: Scalars['Boolean']['output'];\n  metadata: Array<Scalars['String']['output']>;\n  serviceId?: Maybe<Scalars['String']['output']>;\n  target: Scalars['String']['output'];\n  updatedAt?: Maybe<Scalars['DateTime']['output']>;\n  version?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type Project = Node & {\n  __typename?: 'Project';\n  applicationTracing: ApplicationTracingState;\n  baseEnvironment?: Maybe<Environment>;\n  baseEnvironmentId?: Maybe<Scalars['String']['output']>;\n  billingPeriod?: Maybe<BillingPeriod>;\n  botPrEnvironments: Scalars['Boolean']['output'];\n  buckets: ProjectBucketsConnection;\n  createdAt: Scalars['DateTime']['output'];\n  /** The domain of the latest deployment if there is only a single service */\n  dashboardDomain?: Maybe<Scalars['String']['output']>;\n  deletedAt?: Maybe<Scalars['DateTime']['output']>;\n  /** @deprecated Use environment.deploymentTriggers for properly scoped access control */\n  deploymentTriggers: ProjectDeploymentTriggersConnection;\n  /** @deprecated Use environment.deployments for properly scoped access control */\n  deployments: ProjectDeploymentsConnection;\n  description?: Maybe<Scalars['String']['output']>;\n  environments: ProjectEnvironmentsConnection;\n  expiredAt?: Maybe<Scalars['DateTime']['output']>;\n  featureFlags: Array<ActiveProjectFeatureFlag>;\n  focusedPrEnvironments: Scalars['Boolean']['output'];\n  forkVolumesInPrEnvironments: Scalars['Boolean']['output'];\n  groups: ProjectGroupsConnection;\n  id: Scalars['ID']['output'];\n  isPublic: Scalars['Boolean']['output'];\n  isTempProject: Scalars['Boolean']['output'];\n  members: Array<ProjectMember>;\n  name: Scalars['String']['output'];\n  /** Platform feature flags enabled for this project (based on percentage rollout) */\n  platformFeatureFlags: Array<PlatformFeatureFlag>;\n  /** @deprecated Plugins have been removed */\n  plugins: ProjectPluginsConnection;\n  prDeploys: Scalars['Boolean']['output'];\n  /** The id of the oldest non-ephemeral environment for this project (typically production). Used by the dashboard to render project cards without fetching the full environments connection. */\n  primaryEnvironmentId?: Maybe<Scalars['String']['output']>;\n  projectPermissions: ProjectProjectPermissionsConnection;\n  /** The volumes in the project that have recently migrated to new regions */\n  recentVolumeMigrations?: Maybe<Array<VolumeMigrationEvent>>;\n  services: ProjectServicesConnection;\n  subscriptionPlanLimit: Scalars['SubscriptionPlanLimit']['output'];\n  subscriptionType: SubscriptionPlanType;\n  /** @deprecated Use workspace */\n  team?: Maybe<Team>;\n  /** @deprecated Use workspaceId */\n  teamId?: Maybe<Scalars['String']['output']>;\n  unrestrictedEnvironments: ProjectUnrestrictedEnvironmentsConnection;\n  updatedAt: Scalars['DateTime']['output'];\n  volumes: ProjectVolumesConnection;\n  workspace?: Maybe<Workspace>;\n  workspaceId?: Maybe<Scalars['String']['output']>;\n};\n\n\nexport type ProjectApplicationTracingArgs = {\n  environmentId: Scalars['String']['input'];\n};\n\n\nexport type ProjectBucketsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type ProjectDeploymentTriggersArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type ProjectDeploymentsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type ProjectEnvironmentsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  isEphemeral?: InputMaybe<Scalars['Boolean']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n  sort?: InputMaybe<SortOrder>;\n};\n\n\nexport type ProjectGroupsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type ProjectPluginsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type ProjectProjectPermissionsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type ProjectRecentVolumeMigrationsArgs = {\n  environmentId: Scalars['String']['input'];\n};\n\n\nexport type ProjectServicesArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type ProjectUnrestrictedEnvironmentsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type ProjectVolumesArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type ProjectAdminUpdateInput = {\n  applicationTracing: ApplicationTracingState;\n};\n\nexport type ProjectBucketsConnection = {\n  __typename?: 'ProjectBucketsConnection';\n  edges: Array<ProjectBucketsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type ProjectBucketsConnectionEdge = {\n  __typename?: 'ProjectBucketsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Bucket;\n};\n\nexport type ProjectComplianceInfo = {\n  __typename?: 'ProjectComplianceInfo';\n  /** Permissions for each project member */\n  memberPermissions: Array<ProjectMemberPermissionsInfo>;\n  projectId: Scalars['String']['output'];\n  projectName: Scalars['String']['output'];\n  /** Backup schedules for database services */\n  serviceBackups: Array<ServiceBackupInfo>;\n  /** 2FA status for each project member */\n  twoFactorMembers: Array<ProjectMemberTwoFactorInfo>;\n  workspaceId: Scalars['String']['output'];\n};\n\nexport type ProjectCreateInput = {\n  defaultEnvironmentName?: InputMaybe<Scalars['String']['input']>;\n  description?: InputMaybe<Scalars['String']['input']>;\n  isMonorepo?: InputMaybe<Scalars['Boolean']['input']>;\n  isPublic?: InputMaybe<Scalars['Boolean']['input']>;\n  name?: InputMaybe<Scalars['String']['input']>;\n  /** @deprecated Plugins are no longer supported */\n  plugins?: InputMaybe<Array<Scalars['String']['input']>>;\n  prDeploys?: InputMaybe<Scalars['Boolean']['input']>;\n  reason?: InputMaybe<Scalars['String']['input']>;\n  repo?: InputMaybe<ProjectCreateRepo>;\n  runtime?: InputMaybe<PublicRuntime>;\n  /** @deprecated Use workspaceId instead - teams are now workspaces */\n  teamId?: InputMaybe<Scalars['String']['input']>;\n  workspaceId?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type ProjectCreateRepo = {\n  branch: Scalars['String']['input'];\n  fullRepoName: Scalars['String']['input'];\n};\n\nexport type ProjectCreateWithAgentResponse = {\n  __typename?: 'ProjectCreateWithAgentResponse';\n  environment: Environment;\n  project: Project;\n};\n\nexport type ProjectDeploymentTriggersConnection = {\n  __typename?: 'ProjectDeploymentTriggersConnection';\n  edges: Array<ProjectDeploymentTriggersConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type ProjectDeploymentTriggersConnectionEdge = {\n  __typename?: 'ProjectDeploymentTriggersConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: DeploymentTrigger;\n};\n\nexport type ProjectDeploymentsConnection = {\n  __typename?: 'ProjectDeploymentsConnection';\n  edges: Array<ProjectDeploymentsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type ProjectDeploymentsConnectionEdge = {\n  __typename?: 'ProjectDeploymentsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Deployment;\n};\n\nexport type ProjectEnvironmentsConnection = {\n  __typename?: 'ProjectEnvironmentsConnection';\n  edges: Array<ProjectEnvironmentsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type ProjectEnvironmentsConnectionEdge = {\n  __typename?: 'ProjectEnvironmentsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Environment;\n};\n\nexport type ProjectFeatureFlagToggleInput = {\n  flag: ActiveProjectFeatureFlag;\n  projectId: Scalars['String']['input'];\n};\n\nexport type ProjectGroupsConnection = {\n  __typename?: 'ProjectGroupsConnection';\n  edges: Array<ProjectGroupsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type ProjectGroupsConnectionEdge = {\n  __typename?: 'ProjectGroupsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Group;\n};\n\nexport type ProjectInvitation = {\n  __typename?: 'ProjectInvitation';\n  email: Scalars['String']['output'];\n  expiresAt: Scalars['DateTime']['output'];\n  id: Scalars['ID']['output'];\n  inviter?: Maybe<ProjectInvitationInviter>;\n  isExpired: Scalars['Boolean']['output'];\n  project: PublicProjectInformation;\n};\n\nexport type ProjectInvitationInviter = {\n  __typename?: 'ProjectInvitationInviter';\n  email: Scalars['String']['output'];\n  name?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ProjectInviteUserInput = {\n  email: Scalars['String']['input'];\n  link: Scalars['String']['input'];\n};\n\nexport type ProjectInvitee = {\n  email: Scalars['String']['input'];\n  role: ProjectRole;\n};\n\nexport type ProjectMember = {\n  __typename?: 'ProjectMember';\n  avatar?: Maybe<Scalars['String']['output']>;\n  email: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  name?: Maybe<Scalars['String']['output']>;\n  role: ProjectRole;\n};\n\nexport type ProjectMemberAddInput = {\n  projectId: Scalars['String']['input'];\n  role: ProjectRole;\n  userId: Scalars['String']['input'];\n};\n\nexport type ProjectMemberPermissionsInfo = {\n  __typename?: 'ProjectMemberPermissionsInfo';\n  email: Scalars['String']['output'];\n  name?: Maybe<Scalars['String']['output']>;\n  role: ProjectRole;\n};\n\nexport type ProjectMemberRemoveInput = {\n  projectId: Scalars['String']['input'];\n  userId: Scalars['String']['input'];\n};\n\nexport type ProjectMemberTwoFactorInfo = {\n  __typename?: 'ProjectMemberTwoFactorInfo';\n  email: Scalars['String']['output'];\n  /** List of enabled 2FA methods (AUTHENTICATOR, PASSKEY) */\n  enabledMethods: Array<TwoFactorMethodCompliance>;\n  name?: Maybe<Scalars['String']['output']>;\n  twoFactorAuthEnabled: Scalars['Boolean']['output'];\n};\n\nexport type ProjectMemberUpdateInput = {\n  projectId: Scalars['String']['input'];\n  role: ProjectRole;\n  userId: Scalars['String']['input'];\n};\n\nexport type ProjectPermission = Node & {\n  __typename?: 'ProjectPermission';\n  id: Scalars['ID']['output'];\n  projectId: Scalars['String']['output'];\n  role: ProjectRole;\n  userId: Scalars['String']['output'];\n};\n\nexport type ProjectPluginsConnection = {\n  __typename?: 'ProjectPluginsConnection';\n  edges: Array<ProjectPluginsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type ProjectPluginsConnectionEdge = {\n  __typename?: 'ProjectPluginsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Plugin;\n};\n\nexport type ProjectProjectPermissionsConnection = {\n  __typename?: 'ProjectProjectPermissionsConnection';\n  edges: Array<ProjectProjectPermissionsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type ProjectProjectPermissionsConnectionEdge = {\n  __typename?: 'ProjectProjectPermissionsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: ProjectPermission;\n};\n\nexport type ProjectResourceAccess = {\n  __typename?: 'ProjectResourceAccess';\n  customDomain: AccessRule;\n  databaseDeployment: AccessRule;\n  deployment: AccessRule;\n  environment: AccessRule;\n  /** @deprecated Plugins have been removed */\n  plugin: AccessRule;\n};\n\nexport type ProjectRole =\n  | 'ADMIN'\n  | 'MEMBER'\n  | 'VIEWER';\n\nexport type ProjectServicesConnection = {\n  __typename?: 'ProjectServicesConnection';\n  edges: Array<ProjectServicesConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type ProjectServicesConnectionEdge = {\n  __typename?: 'ProjectServicesConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Service;\n};\n\nexport type ProjectToken = Node & {\n  __typename?: 'ProjectToken';\n  createdAt: Scalars['DateTime']['output'];\n  displayToken: Scalars['String']['output'];\n  environment: Environment;\n  environmentId: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  name: Scalars['String']['output'];\n  project: Project;\n  projectId: Scalars['String']['output'];\n};\n\nexport type ProjectTokenCreateInput = {\n  environmentId: Scalars['String']['input'];\n  name: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n};\n\nexport type ProjectTransferConfirmInput = {\n  destinationWorkspaceId?: InputMaybe<Scalars['String']['input']>;\n  ownershipTransferId: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n};\n\nexport type ProjectTransferInitiateInput = {\n  memberId: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n};\n\nexport type ProjectTransferInput = {\n  workspaceId: Scalars['String']['input'];\n};\n\nexport type ProjectTransferToTeamInput = {\n  teamId: Scalars['String']['input'];\n};\n\nexport type ProjectUnrestrictedEnvironmentsConnection = {\n  __typename?: 'ProjectUnrestrictedEnvironmentsConnection';\n  edges: Array<ProjectUnrestrictedEnvironmentsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type ProjectUnrestrictedEnvironmentsConnectionEdge = {\n  __typename?: 'ProjectUnrestrictedEnvironmentsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Environment;\n};\n\nexport type ProjectUpdateInput = {\n  baseEnvironmentId?: InputMaybe<Scalars['String']['input']>;\n  /** Enable/disable pull request environments for PRs created by bots */\n  botPrEnvironments?: InputMaybe<Scalars['Boolean']['input']>;\n  description?: InputMaybe<Scalars['String']['input']>;\n  /** Enable focused PR environments that only deploy services affected by changed files */\n  focusedPrEnvironments?: InputMaybe<Scalars['Boolean']['input']>;\n  /** Fork volume data into PR environments instead of creating empty volumes */\n  forkVolumesInPrEnvironments?: InputMaybe<Scalars['Boolean']['input']>;\n  isPublic?: InputMaybe<Scalars['Boolean']['input']>;\n  name?: InputMaybe<Scalars['String']['input']>;\n  prDeploys?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\nexport type ProjectUsageProperty =\n  | 'BACKUP_USAGE'\n  | 'CPU_USAGE'\n  | 'CURRENT_USAGE'\n  | 'DISK_USAGE'\n  | 'ESTIMATED_USAGE'\n  | 'MEMORY_USAGE'\n  | 'NETWORK_USAGE';\n\nexport type ProjectVolumesConnection = {\n  __typename?: 'ProjectVolumesConnection';\n  edges: Array<ProjectVolumesConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type ProjectVolumesConnectionEdge = {\n  __typename?: 'ProjectVolumesConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Volume;\n};\n\nexport type ProjectWorkspaceMember = {\n  __typename?: 'ProjectWorkspaceMember';\n  email: Scalars['String']['output'];\n  /** List of enabled 2FA methods (AUTHENTICATOR, PASSKEY) */\n  enabledMethods: Array<TwoFactorMethodProjectWorkspace>;\n  name?: Maybe<Scalars['String']['output']>;\n  twoFactorAuthEnabled: Scalars['Boolean']['output'];\n};\n\nexport type ProjectWorkspaceMembersResponse = {\n  __typename?: 'ProjectWorkspaceMembersResponse';\n  members: Array<ProjectWorkspaceMember>;\n  projectId: Scalars['String']['output'];\n  projectName: Scalars['String']['output'];\n  workspaceId: Scalars['String']['output'];\n};\n\nexport type ProjectsOrderBy =\n  | 'CREATED_AT_DESC'\n  | 'NAME_ASC'\n  | 'UPDATED_AT_DESC';\n\nexport type ProviderAuth = Node & {\n  __typename?: 'ProviderAuth';\n  email: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  isAuthEnabled: Scalars['Boolean']['output'];\n  metadata: Scalars['JSON']['output'];\n  provider: Scalars['String']['output'];\n  userId: Scalars['String']['output'];\n};\n\nexport type PublicProjectInformation = {\n  __typename?: 'PublicProjectInformation';\n  id: Scalars['ID']['output'];\n  name: Scalars['String']['output'];\n};\n\nexport type PublicProjectInvitation = InviteCode | ProjectInvitation;\n\nexport type PublicRuntime =\n  | 'LEGACY'\n  | 'UNSPECIFIED'\n  | 'V2';\n\nexport type PublicStats = {\n  __typename?: 'PublicStats';\n  totalDeploymentsLastMonth: Scalars['Int']['output'];\n  totalLogsLastMonth: Scalars['BigInt']['output'];\n  totalProjects: Scalars['Int']['output'];\n  totalRequestsLastMonth: Scalars['BigInt']['output'];\n  totalServices: Scalars['Int']['output'];\n  totalUsers: Scalars['Int']['output'];\n};\n\nexport type PublicStatsEvent = {\n  __typename?: 'PublicStatsEvent';\n  key: Scalars['String']['output'];\n  type: Scalars['String']['output'];\n  value: Scalars['BigInt']['output'];\n};\n\nexport type PurgeCacheScope =\n  | 'ALL'\n  | 'HTML';\n\nexport type PurgeOnDeploy =\n  | 'ALL'\n  | 'HTML'\n  | 'OFF';\n\nexport type PurgeServiceCacheInput = {\n  environmentId: Scalars['String']['input'];\n  scope: PurgeCacheScope;\n  serviceId: Scalars['String']['input'];\n};\n\nexport type Query = {\n  __typename?: 'Query';\n  /**\n   * Gets all deployed containers for a environment+plugin for an admin.\n   * @deprecated Plugins are deprecated\n   */\n  adminAllContainerInfoForPluginInEnvironment: Array<ContainerInfo>;\n  /** Gets all deployed containers for a environment+service for an admin. */\n  adminAllContainerInfoForServiceInEnvironment: Array<ContainerInfo>;\n  /** Query domains across all accounts */\n  adminAllDomains: Array<Domain>;\n  /** Gets all projects for an admin. */\n  adminAllProjects: QueryAdminAllProjectsConnection;\n  /** Gets all services for an admin. */\n  adminAllServices: QueryAdminAllServicesConnection;\n  /**\n   * Get all containers that have been archived for a user or workspace\n   * @deprecated Plugins are deprecated\n   */\n  adminArchivedContainers: Array<Container>;\n  /** Returns the settings for auto refunds. */\n  adminAutoRefundSettings: AutoRefundSettings;\n  /** Returns a single banned image by name */\n  adminBannedImage: BannedImage;\n  /** Returns a list of all banned images */\n  adminBannedImages: Array<BannedImage>;\n  /** Search for buckets by name across all projects */\n  adminBucketsByName: Array<Bucket>;\n  /** Returns recent cryptominer detections from the rolling Redis window, enriched with service info. */\n  adminCryptominerDetections: Array<CryptominerDetection>;\n  /** Returns active cryptominer detections for a specific service. */\n  adminCryptominerDetectionsForService: Array<CryptominerDetection>;\n  /** Get all deployments for admin purposes */\n  adminDeployments: QueryAdminDeploymentsConnection;\n  /** Returns a list of email templates from CustomerIO */\n  adminEmailTemplates: Array<AdminEmailTemplate>;\n  /** Get the impact statistics for host maintenance notifications before sending */\n  adminGetHostMaintenanceNotificationImpact: HostMaintenanceNotificationImpact;\n  /** Get progress of a specific host maintenance workflow */\n  adminGetHostMaintenanceWorkflowProgress: HostMaintenanceNotificationsProgress;\n  /** Get all host maintenance notification workflows that are currently running */\n  adminGetRunningHostMaintenanceWorkflows: Array<HostMaintenanceWorkflowInfo>;\n  /** Returns a single OAuth client by ID (admin only) */\n  adminOAuthClient?: Maybe<AdminOAuthClient>;\n  /** Returns a paginated list of OAuth clients (admin only) */\n  adminOAuthClients: QueryAdminOAuthClientsConnection;\n  /** Get a single postgres-ha cluster from the background monitor cache */\n  adminPostgresHaCluster?: Maybe<PostgresHaCluster>;\n  /** Get all postgres-ha clusters cached from the background monitor workflow */\n  adminPostgresHaClusters: PostgresHaClustersResult;\n  /** Get a single postgres-pitr service from the background monitor cache */\n  adminPostgresPitrService?: Maybe<PostgresPitrService>;\n  /** Get all postgres services with PITR (point-in-time recovery) enabled, from the background monitor cache. Covers both standalone and HA Postgres. The HA cluster row is anchored on the leader / root service. */\n  adminPostgresPitrServices: PostgresPitrServicesResult;\n  /** Get a privnet route from ScyllaDB (admin only). Target format: privnets/domain/{nid}/{endpoint_dns}./aaaa_records */\n  adminPrivnetRoute: PrivnetRouteInfo;\n  /** Check if a project's canvas is blocked (admin only) */\n  adminProjectCanvasBlocked: Scalars['Boolean']['output'];\n  /** Check if canvas mutation logging is enabled for a project (admin only) */\n  adminProjectCanvasMutationLogging: Scalars['Boolean']['output'];\n  /** Returns a project overview specifically for Railway admins */\n  adminProjectOverview: AdminProjectOverview;\n  /** List available radar attribute definitions */\n  adminRadarAttributeCatalog: Array<RadarAttributeDefinition>;\n  /** Get a single radar event by ID */\n  adminRadarEvent: RadarEvent;\n  /** List radar events with optional filters */\n  adminRadarEvents: Array<RadarEvent>;\n  /** Count radar events with optional filters */\n  adminRadarEventsCount: Scalars['Int']['output'];\n  /** Get a single radar list by ID */\n  adminRadarList: RadarList;\n  /** List all radar lists */\n  adminRadarLists: Array<RadarList>;\n  /** Get a single radar rule by ID */\n  adminRadarRule: RadarRule;\n  /** List radar rules ordered by priority */\n  adminRadarRules: Array<RadarRule>;\n  /** Get paginated scan matches for a rule */\n  adminRadarScanMatches: RadarScanMatchesResult;\n  /** Get current scan status for a rule */\n  adminRadarScanStatus?: Maybe<RadarScanStatus>;\n  /** Find a Railway domain by its Stripe invoice ID */\n  adminRailwayDomainByInvoice?: Maybe<RailwayDomain>;\n  /** Search railway domains by name */\n  adminRailwayDomains: Array<RailwayDomain>;\n  /** Looks up an admin referral code by its code string */\n  adminReferralCodeLookup?: Maybe<AdminReferralCode>;\n  /** Returns a list of all admin referral codes */\n  adminReferralCodes: Array<AdminReferralCode>;\n  /** Returns information about a RefundRequest given its ID */\n  adminRefundRequestInfo?: Maybe<RefundRequest>;\n  /** Search cached GitHub repos */\n  adminRepos: QueryAdminReposConnection;\n  /** Get a route from ScyllaDB by target and protocol (admin only) */\n  adminScyllaRoute: PrivnetRouteInfo;\n  /** Get sync status for all domains and TCP proxies directly from network-cp Postgres (admin only, bypasses caches) */\n  adminServiceSyncStatus: Array<ServiceSyncStatusItem>;\n  /** Get all services deployed from a specific template across the platform */\n  adminServicesByTemplate: QueryAdminServicesByTemplateConnection;\n  /** Get admin stats. Primarily used for the admin dashboard. */\n  adminStats: AdminStats;\n  /** Get information about all the ongoing volume instance migrations */\n  adminVolumeInstanceMigrations: Array<VolumeInstanceMigrationsQueueState>;\n  /** Get all volume instances for a given volume */\n  adminVolumeInstancesForVolume: Array<VolumeInstance>;\n  /** For a service+environment with multiple attached VolumeInstances, returns each volume's current stacker, the running deployment instance's stacker, and a recommended keep/detach decision. */\n  adminVolumeMountTriage: AdminVolumeMountTriage;\n  /** Get the adoption level for a workspace */\n  adoptionLevel?: Maybe<AdoptionInfo>;\n  /** Get unified AI usage for a workspace */\n  agentUsage: AgentUsageSummary;\n  /** Returns the platform feature flags enabled for the current user */\n  allPlatformFeatureFlags: Array<PlatformFeatureFlagStatus>;\n  /** Introspect the current API token and its accessible workspaces. */\n  apiToken: ApiTokenContext;\n  /** Gets all API tokens for the authenticated user. */\n  apiTokens: QueryApiTokensConnection;\n  /** Get an audit log by ID */\n  auditLog: AuditLog;\n  /** Get a list of all audit log event types and their description */\n  auditLogEventTypeInfo: Array<AuditLogEventTypeInfo>;\n  /** Gets audit logs for a workspace. */\n  auditLogs: QueryAuditLogsConnection;\n  /** Gets the ban reason history for a user or workspace. */\n  banReasonHistory: QueryBanReasonHistoryConnection;\n  /** Get the S3-compatible credentials for a bucket */\n  bucketInstanceDetails?: Maybe<BucketInstanceDetails>;\n  /** Get the S3-compatible credentials for a bucket */\n  bucketS3Credentials: Array<BucketS3CompatibleCredentials>;\n  /** Fetch logs for a build */\n  buildLogs: Array<Log>;\n  /** Preview a canvas layout merge from one environment to another. Returns the merged state and the mutations needed to reach it. */\n  canvasViewMergePreview: CanvasViewMergePreview;\n  /** Gets the image URL for a Notion image block */\n  changelogBlockImage: Scalars['String']['output'];\n  /** Get messages for a chat thread */\n  chatMessages: Array<ChatMessage>;\n  /** Get a single chat thread by ID */\n  chatThread?: Maybe<ChatThread>;\n  /** Get chat threads for an environment */\n  chatThreads: Array<ChatThread>;\n  /** Returns the current ClickHouse backpressure configuration. */\n  clickhouseBackpressureStatus: ClickhouseBackpressureStatus;\n  /** Get compliance agreements for a workspace including HIPAA BAA and GDPR DPA status. */\n  complianceAgreements: ComplianceAgreementsInfo;\n  /** Whether the current session can change enforcement */\n  currentSessionCanEnforceWorkspaceIdentityProvider: Scalars['Boolean']['output'];\n  /** Fetch details for a custom domain */\n  customDomain: CustomDomain;\n  /** Checks if a custom domain is available. */\n  customDomainAvailable: DomainAvailable;\n  /** Get the combined bucket usage for a billing period */\n  customerBucketUsage: BucketUsage;\n  /** Returns the dataplane clusters in a given namespace */\n  dataplaneClusters: Array<Cluster>;\n  /** Returns a dataplane host for a given hostId */\n  dataplaneHost: Host;\n  /** Returns the dataplane hosts in a given cluster */\n  dataplaneHosts: Array<HostListItem>;\n  /** Returns the dataplane lighthouse tokens */\n  dataplaneLighthouseTokens: Array<LighthouseToken>;\n  /** Returns the dataplane namespaces */\n  dataplaneNamespaces: Array<Scalars['String']['output']>;\n  /** Returns a dataplane stacker container inventory for a given hostId (using orchestrator) */\n  dataplaneStackerContainerInventoryLegacy: Array<ContainerInstance>;\n  /** Get 7-day average deploy counts for the current hour of day. Used for reference comparison on the admin dashboard. */\n  deployReferenceStats: DeployReferenceStats;\n  /** Find a single deployment */\n  deployment: Deployment;\n  /** Find a deployment by container id */\n  deploymentByContainerId: Deployment;\n  /** Find a deployment by public url */\n  deploymentByDomain: DeploymentByDomain;\n  /** Get the deployment events for a deployment */\n  deploymentEvents: QueryDeploymentEventsConnection;\n  /** List deployment instance assignments for a given deployment, including which stacker each instance is on */\n  deploymentInstanceAssignments: Array<DeploymentInstanceAssignment>;\n  /** Get the deployment instance executions for a deployment. */\n  deploymentInstanceExecutions: QueryDeploymentInstanceExecutionsConnection;\n  /** Fetch logs for a deployment */\n  deploymentLogs: Array<Log>;\n  /** Find a single DeploymentSnapshot */\n  deploymentSnapshot?: Maybe<DeploymentSnapshot>;\n  /** Get a short-lived URL to the deployment snapshot code */\n  deploymentSnapshotCodeUri: Scalars['String']['output'];\n  /** All deployment triggers. */\n  deploymentTriggers: QueryDeploymentTriggersConnection;\n  /** Get all deployments */\n  deployments: QueryDeploymentsConnection;\n  /**\n   * Domain with status\n   * @deprecated Use the `status` field within the `domain` query instead\n   */\n  domainStatus: DomainWithStatus;\n  /** All domains for a service instance */\n  domains: AllDomains;\n  /** Get the progress of a stacker draining */\n  drainStackerProgress: DrainStackerProgress;\n  /** Get the earnings details for a user. */\n  earningDetails: EarningDetails;\n  /** The edge entrypoints used by the domain. */\n  edgeEntrypoint: EdgeEntrypoint;\n  /** Preview HA static egress IPs that would be assigned without persisting */\n  egressGatewayHAPreview: Array<EgressGateway>;\n  /** Preview legacy static egress IP that would be assigned without persisting */\n  egressGatewayLegacyPreview: Array<EgressGateway>;\n  /** All egress gateways assigned to a service instance */\n  egressGateways: Array<EgressGateway>;\n  /** Find a single environment */\n  environment: Environment;\n  /** Fetch logs for a project environment. Build logs are excluded unless a snapshot ID is explicitly provided in the filter */\n  environmentLogs: Array<Log>;\n  /** Get a single environment patch by ID */\n  environmentPatch: EnvironmentPatch;\n  /** Get the patches for an environment */\n  environmentPatches: QueryEnvironmentPatchesConnection;\n  /** Get the latest staged commit for a single environment. */\n  environmentStagedChanges: EnvironmentPatch;\n  /** Gets all environments for a project. */\n  environments: QueryEnvironmentsConnection;\n  /** Get the estimated total cost of the project at the end of the current billing cycle. If no `startDate` is provided, the usage for the current billing period of the project owner is returned. */\n  estimatedUsage: Array<EstimatedUsage>;\n  /** Gets the events for a project. */\n  events: QueryEventsConnection;\n  /** Get the workspaces the user doesn't belong to, but needs access (like when invited to a project) */\n  externalWorkspaces: Array<ExternalWorkspace>;\n  /** Get information about a specific function runtime */\n  functionRuntime: FunctionRuntime;\n  /** List available function runtimes */\n  functionRuntimes: Array<FunctionRuntime>;\n  /** Get all stacker draining workflows that are currently running */\n  getDrainStackerRunningWorkflows: Array<DrainStackerWorkflowInfo>;\n  /** Get all published templates for support metric calculation */\n  getPublishedTemplatesForSupportMetrics: QueryGetPublishedTemplatesForSupportMetricsConnection;\n  /** Get all stacker stats workflows that are currently running */\n  getStackerStatsRunningWorkflows: Array<StackerStatsWorkflowInfo>;\n  /** Gets a template by its ID */\n  getTemplate?: Maybe<HelpStationThreadTemplateInfo>;\n  /** Get thread payouts */\n  getThreadPayouts: Array<ThreadPayout>;\n  /** Get templates created by all workspaces this user is a member or admin of */\n  getUserTemplates: Array<HelpStationThreadTemplateInfo>;\n  /** Gets the Temporal workflows for a user */\n  getUserTemporalEvents: Array<TemporalEvent>;\n  /** Checks if user has access to GitHub repository */\n  gitHubRepoAccessAvailable: GitHubAccess;\n  /** Gets SSH public keys from the authenticated user's GitHub account. */\n  gitHubSshKeys: Array<GitHubSshKey>;\n  /** Returns the user's GitHub auth status */\n  githubAuth: GithubAuth;\n  /** Inspect the GitHub backpressure active deployments and compare with actual DB status. */\n  githubBackpressureInspect: GithubBackpressureInspection;\n  /** Inspect the GitHub backpressure queued deployments and compare with actual DB status. */\n  githubBackpressureInspectQueued: GithubBackpressureQueuedInspection;\n  /** Returns the current GitHub backpressure status and configuration. */\n  githubBackpressureStatus: GithubBackpressureStatus;\n  /** Get GitHub events for a user */\n  githubEvents: Array<GitHubEvent>;\n  /** Check if a repo name is available */\n  githubIsRepoNameAvailable: Scalars['Boolean']['output'];\n  /** Get info for a GitHub pull request */\n  githubPRInfo?: Maybe<GitHubPrInfo>;\n  /** Checks if user has access to GitHub repository */\n  githubRepo: GitHubRepoWithoutInstallation;\n  /** Analyzes a repository to discover configuration */\n  githubRepoAnalysis: RepoAnalysis;\n  /** Get branches for a GitHub repo that the authenticated user has access to */\n  githubRepoBranches: Array<GitHubBranch>;\n  /** Search over repos that a user has granted Railway access to */\n  githubRepoSearch2: QueryGithubRepoSearch2Connection;\n  /** Get the file tree for a GitHub repository at a specific branch */\n  githubRepoTree: Array<GitHubRepoFile>;\n  /** Get a list of repos for a user that Railway has access to */\n  githubRepos: Array<GitHubRepo>;\n  /** Get a list of scopes the user has installed the installation to */\n  githubWritableScopes: Array<Scalars['String']['output']>;\n  /** Returns a list of usage anomalies grouped by service. */\n  groupedUsageAnomalies: Array<GroupedUsageAnomaly>;\n  /** Check if a user has a recent or pending withdrawal. */\n  hasRecentWithdrawal: Scalars['Boolean']['output'];\n  /** Reads workspace audit logs (security/admin events: SSO, 2FA, member/role changes, token mgmt, resource lifecycle). Filter by project/environment/event types/date range. Capped at 500 entries — narrow with date range if results are truncated. */\n  helpStationAuditLogs: Array<HelpStationAuditLogEntry>;\n  /** Narrow ownership check for CS auto-responder. Returns only whether the domain is on Railway and whether the supplied userId is an admin of the owning workspace. Returns nothing about which other workspace owns it; safe to call from a user-scoped context. */\n  helpStationDomainOwnership: HelpStationDomainOwnershipResult;\n  /** Gets the full domain status including DNS records, certificate state, and verification status. Uses networkcp's HTTP probe-based detection to see through CNAME flattening. */\n  helpStationDomainStatus: HelpStationDomainStatusResult;\n  /** Gets the user for a help station thread */\n  helpStationFindUserByIdOrEmail: User;\n  /** Fetch workspaces by ID for the CS admin index. Pothos resolves only the fields the gateway query asks for, so callers MUST select a slim fragment (no Stripe-touching fields like avgMonthlySpend / creditBalance / credits) to keep the call cheap. */\n  helpStationListWorkspacesByIds: Array<HelpStationAdminContextWorkspaceInfo>;\n  /** Looks up a Railway domain to find the associated service, project, and workspace. Use for abuse reports or takedown requests. */\n  helpStationLookupDomain: HelpStationDomainLookupResult;\n  /** Looks up a Central Station thread by slug. Used by admin flows (e.g. the restrict-workspace modal) to validate a pasted station.railway.com URL and preview the thread before applying a restriction. Returns null when the slug doesn't resolve. */\n  helpStationLookupThread?: Maybe<HelpStationThreadLookupResult>;\n  /** Gets aggregated network connections grouped by 5-tuple for a service in a given environment */\n  helpStationNetworkConnections: Array<HelpStationNetworkConnection>;\n  /** Gets individual network flow log entries for a service in a given environment */\n  helpStationNetworkFlowLogs: Array<HelpStationNetworkFlowLog>;\n  /** List a project's volume instances (optionally filtered to one environment) with capacity, usage, attached service, state, and the workspace's plan max size. Used by Central Station chat to populate the resize_volume suggestion. */\n  helpStationProjectVolumes: Array<HelpStationProjectVolume>;\n  /** Search workspaces by name, ID, Slack channel ID, or Stripe customer ID */\n  helpStationSearchWorkspaces: Array<HelpStationAdminContextWorkspaceInfo>;\n  /** Gets runtime logs (stdout/stderr) for a deployment or service for help station context */\n  helpStationServiceLogs: Array<HelpStationLogEntry>;\n  /** Gets the sidebar info for a help station thread based on Slack channel ID */\n  helpStationSlackThreadContext: HelpStationThreadSidebarInfo;\n  /** Gets the sidebar info for a help station thread */\n  helpStationThreadContext: HelpStationThreadSidebarInfo;\n  /** Gets the template used by a thread's linked service */\n  helpStationThreadTemplate?: Maybe<HelpStationThreadTemplateInfo>;\n  /** Gets usage breakdown by service for workspaces associated with given users, plus Railway Agent token usage (metered separately). */\n  helpStationUsageBreakdown: Array<HelpStationWorkspaceUsage>;\n  /** Gets all domains (custom and service) for the specified workspaces */\n  helpStationUserDomains: Array<HelpStationUserDomainsInfo>;\n  /** Gets the admin context for a workspace by workspace ID */\n  helpStationWorkspaceContext: HelpStationThreadSidebarInfo;\n  /** Read a workspace's plan limits — limitsVersion, base plan values, current override (if any) + its expiresAt, and the effective post-merge limit. Used by CS Chat's getWorkspaceLimits tool. */\n  helpStationWorkspaceLimits: HelpStationWorkspaceLimitsView;\n  /** Lists Railway-purchased (name.com) domains for a workspace with transfer-eligibility info. Includes domains not currently attached to a service. Used by CS Chat's domain transfer runbook. */\n  helpStationWorkspaceRailwayDomains: Array<HelpStationRailwayDomainInfo>;\n  /** Gets services and projects for specified workspaces for help station context */\n  helpStationWorkspaceServices: Array<HelpStationWorkspaceServicesInfo>;\n  /** Gets services grouped by environment for specified workspaces (includes environmentId) */\n  helpStationWorkspaceServicesV2: Array<HelpStationWorkspaceServicesInfoV2>;\n  /** Get the Herokus apps for the current user */\n  herokuApps: Array<HerokuApp>;\n  /** Get HTTP request duration metrics for a service (avg, p50, p90, p95, p99) */\n  httpDurationMetrics: HttpDurationMetricsResult;\n  /** Fetch HTTP logs for a deployment */\n  httpLogs: Array<HttpLog>;\n  /** Get HTTP request metrics for a service */\n  httpMetrics: HttpMetricsResult;\n  /** Get HTTP request metrics for a service, grouped by status code */\n  httpMetricsGroupedByStatus: Array<HttpMetricsByStatusResult>;\n  /** Get an integration auth by provider providerId */\n  integrationAuth: IntegrationAuth;\n  /** Get all integration auths for a user */\n  integrationAuths: QueryIntegrationAuthsConnection;\n  /** Get all integrations for a project */\n  integrations: QueryIntegrationsConnection;\n  /** Get an invite code by the code */\n  inviteCode: InviteCode;\n  /** Check if a GitHub repo is a monorepo */\n  isMonorepo: Scalars['Boolean']['output'];\n  /** List deployment instances for a given stacker */\n  listDeploymentInstancesForStacker: Array<DeploymentInstanceAssignment>;\n  /** List all available edge entrypoints */\n  listEdgeEntrypoints: Array<EdgeEntrypoint>;\n  /** List all stackers */\n  listStackers: Array<Stacker>;\n  /** Returns the current lockdown status of the platform. */\n  lockdownStatus: LockdownStatus;\n  /** Fetch available attributes of the logs query */\n  logsAttributes: Array<LogAttributesResult>;\n  /** Fetch a histogram of the logs query */\n  logsHistogram: Histogram;\n  /** Get limits for log queries */\n  logsLimits: LogLimits;\n  /** Get all published templates for a maintainer. */\n  maintainerTemplates: MaintainerTemplatesResponse;\n  /** Gets the authenticated user. */\n  me: User;\n  /** Get metrics for a project, environment, and service */\n  metrics: Array<MetricsResult>;\n  /** Get the progress of a stacker migration */\n  migrateStackerProgress: MigrateStackerProgress;\n  /** Get a collection in a MongoDB container */\n  mongoCollectionData: MongoCollection;\n  /** Get a list of collection names in a MongoDB container */\n  mongoCollectionNames: Array<Scalars['String']['output']>;\n  /** Get a list of database names in a MongoDB container */\n  mongoDatabaseNames: Array<Scalars['String']['output']>;\n  /** Get current monorepo import status */\n  monorepoImportStatus?: Maybe<MonorepoImportStatusUpdate>;\n  /** Get support threads created by the current user */\n  mySupportThreads: Array<SupportThread>;\n  /** Fetch aggregated network connections for an environment (grouped by connection tuple) */\n  networkConnections: Array<NetworkConnection>;\n  /** Fetch individual network flow logs for an environment */\n  networkFlowLogs: Array<NetworkFlowLog>;\n  /** Get aggregated network flow metrics per service for an environment. Returns a map of services to their peer connections with bandwidth metrics. */\n  networkFlowServiceLayer: NetworkFlowServiceLayerResult;\n  /** Gets notification deliveries for the authenticated user */\n  notificationDeliveries: QueryNotificationDeliveriesConnection;\n  /** Gets a notification delivery by ID for the authenticated user */\n  notificationDelivery?: Maybe<NotificationDelivery>;\n  /** Gets notification instances for project */\n  notificationInstances: QueryNotificationInstancesConnection;\n  /** Get all notification rules for a workspace and project */\n  notificationRules: Array<NotificationRule>;\n  /** Get the default notification filter configurations */\n  notificationUserFilterDefaults: Scalars['JSON']['output'];\n  /** Get notification filters for the authenticated user, including implicit defaults */\n  notificationUserFilters: Array<NotificationUserFilter>;\n  /** Get a single OAuth grant authorized by the current user */\n  oauthAuthorizedApp?: Maybe<OAuthGrant>;\n  /** List OAuth apps authorized by the current user */\n  oauthAuthorizedApps: Array<OAuthGrant>;\n  /** Get an OAuth client by ID */\n  oauthClient?: Maybe<OAuthClient>;\n  /** List OAuth clients for a workspace */\n  oauthClients: Array<OAuthClient>;\n  /** List projects the current user can grant OAuth apps access to */\n  oauthGrantableProjects: Array<OAuthGrantableProject>;\n  /** List workspaces the current user can grant OAuth apps access to */\n  oauthGrantableWorkspaces: Array<OAuthGrantableWorkspace>;\n  /** Get all observability monitors for a dashboard item */\n  observabilityDashboardItems: Array<ObservabilityDashboardItem>;\n  /** Get all observability dashboards for an environment */\n  observabilityDashboards: QueryObservabilityDashboardsConnection;\n  /** Gets all passkeys for the authenticated user */\n  passkeys: QueryPasskeysConnection;\n  /** Returns the current status of the platform feature. */\n  platformFeatureFlags: Array<PlatformFeatureFlagStatus>;\n  /** Get the current status of the platform */\n  platformStatus: PlatformStatus;\n  /**\n   * Get a plugin by ID.\n   * @deprecated Plugins are deprecated\n   */\n  plugin: Plugin;\n  /**\n   * Fetch logs for a plugin\n   * @deprecated Plugins are deprecated\n   */\n  pluginLogs: Array<Log>;\n  /** Get the email preferences for a user */\n  preferences: Preferences;\n  /** Get a private network endpoint for a service instance. */\n  privateNetworkEndpoint?: Maybe<PrivateNetworkEndpoint>;\n  /** Check if an endpoint name is available. */\n  privateNetworkEndpointNameAvailable: Scalars['Boolean']['output'];\n  /** List private networks for an environment. */\n  privateNetworks: Array<PrivateNetwork>;\n  /** Get a project by ID */\n  project: Project;\n  /** Get comprehensive compliance information for a project including 2FA status, member permissions, backup schedules, and compliance agreements. Requires workspace API token with admin access. */\n  projectCompliance: ProjectComplianceInfo;\n  /** Get a project invitation by code */\n  projectInvitation: PublicProjectInvitation;\n  /** Get invitations for a project */\n  projectInvitations: Array<ProjectInvitation>;\n  /** Get an invite code for a project for a specifc role */\n  projectInviteCode: InviteCode;\n  /** Gets users who belong to a project along with their role */\n  projectMembers: Array<ProjectMember>;\n  /** Get resource access rules for project-specific actions */\n  projectResourceAccess: ProjectResourceAccess;\n  /** Get a single project token by the value in the header */\n  projectToken: ProjectToken;\n  /** Get all project tokens for a project */\n  projectTokens: QueryProjectTokensConnection;\n  /** Get workspace members for a project with 2FA details */\n  projectWorkspaceMembers: ProjectWorkspaceMembersResponse;\n  /** Gets all projects for a user or workspace. */\n  projects: QueryProjectsConnection;\n  /** Fetch multiple projects by id. Skips ids the caller cannot access (does not throw on partial denial). Intended for batched dashboard hydration of a small viewport-sized set of cards. */\n  projectsByIds: Array<Project>;\n  /** Get public Railway stats. */\n  publicStats: PublicStats;\n  /** Get a Railway domain by ID */\n  railwayDomain: RailwayDomain;\n  /** Get a Railway domain by its domain name within a workspace */\n  railwayDomainByName: RailwayDomain;\n  /** List DNS records for a Railway domain */\n  railwayDomainDnsRecords: Array<RailwayDomainDnsRecord>;\n  /** Get Railway domains for a workspace */\n  railwayDomains: Array<RailwayDomain>;\n  /** Returns recent platform feature flag changes (last 48h) */\n  recentPlatformFeatureFlagChanges: Array<PlatformFeatureFlagChange>;\n  /** Get data for key in a Redis container */\n  redisGetKey: Scalars['JSON']['output'];\n  /** Get a list of keys in a Redis container */\n  redisKeys: Array<RedisKey>;\n  /** Scans a list of keys in a Redis container with pagination */\n  redisScanKeys: RedisScanKeys;\n  /** Gets the ReferralInfo for the authenticated user. */\n  referralInfo: ReferralInfo;\n  /**\n   * Get the total referral payout earnings for a user.\n   * @deprecated Use earningsDetails instead\n   */\n  referralPayoutsTotal: Scalars['Float']['output'];\n  /** List available regions */\n  regions: Array<Region>;\n  /** Get metrics for a service's replicas */\n  replicaMetrics: Array<MetricsReplicaResult>;\n  /** Get resource access for the current user or workspace */\n  resourceAccess: ResourceAccess;\n  /** Get a sandbox by id. */\n  sandbox?: Maybe<Sandbox>;\n  /** Get the status of a sandbox template by its content-addressed id. Cheap and side-effect-free; poll this until READY. */\n  sandboxTemplate: SandboxTemplate;\n  /** List sandboxes in an environment. */\n  sandboxes: QuerySandboxesConnection;\n  /** Search published templates by name or description */\n  searchTemplates: QuerySearchTemplatesConnection;\n  /** Get a service by ID */\n  service: Service;\n  /** Checks if a service domain is available */\n  serviceDomainAvailable: DomainAvailable;\n  /** Get a service instance belonging to a service and environment */\n  serviceInstance: ServiceInstance;\n  /** Returns the auto-deploy status for a service instance, including whether it can be enabled. */\n  serviceInstanceAutoDeployStatus: ServiceInstanceAutoDeployStatus;\n  /** Check if the upstream repo for a service has an update available */\n  serviceInstanceIsUpdatable: Scalars['Boolean']['output'];\n  /** Get the service instance resource limit overrides (null if no overrides set) */\n  serviceInstanceLimitOverride?: Maybe<Scalars['ServiceInstanceLimit']['output']>;\n  /** Get the merged resource limits for a service instance (includes plan defaults) */\n  serviceInstanceLimits: Scalars['ServiceInstanceLimit']['output'];\n  /** Analyzes a service instance's repository to discover configuration */\n  serviceInstanceRepoAnalysis: RepoAnalysis;\n  /** Gets all sessions for authenticated user. */\n  sessions: QuerySessionsConnection;\n  /** Gets the Railway workspace associated with a Slack connect channel ID */\n  slackConnectWorkspace: Workspace;\n  /** Get dependencies for a SQL database extension */\n  sqlExtensionDependencies: Array<Scalars['String']['output']>;\n  /** Get extensions that depend on a SQL database extension */\n  sqlExtensionDependents: Array<Scalars['String']['output']>;\n  /** Get available and installed SQL database extensions */\n  sqlExtensions: Array<SqlExtension>;\n  /** Get rows for a SQL table */\n  sqlTable: SqlTable;\n  /** Get a list of table names in SQLQL container */\n  sqlTableNames: Array<Scalars['String']['output']>;\n  /** Gets SSH public keys. If workspaceId is provided, returns the keys owned by that workspace (requires workspace MEMBER access). Under a workspace-scoped API token, workspaceId defaults to the token's workspace when omitted; otherwise returns the authenticated user's personal keys. */\n  sshPublicKeys: QuerySshPublicKeysConnection;\n  /** Get the progress of a stacker stats workflow */\n  stackerStatsProgress: StackerStatsProgress;\n  /** Get a support thread with its messages */\n  supportThreadMessages?: Maybe<SupportThreadDetail>;\n  /** Get thread slugs + last activity timestamps for badge polling */\n  supportThreadsLastActivity: Array<SupportThreadActivity>;\n  /** All TCP proxies for a service instance */\n  tcpProxies: Array<TcpProxy>;\n  /**\n   * Find a team by ID\n   * @deprecated Teams are now workspaces. Use the workspace query instead.\n   */\n  team: Team;\n  /**\n   * Get all templates for a team.\n   * @deprecated Use templates instead - teams are now workspaces\n   */\n  teamTemplates: QueryTeamTemplatesConnection;\n  /** Get a template by code or ID or GitHub owner and repo. */\n  template: Template;\n  /** Get the metrics for a template. */\n  templateMetrics: TemplateMetrics;\n  /** Get the total kickback earnings for a user. */\n  templatePayoutsTotal: Scalars['Float']['output'];\n  /** Search published templates using the backend-ranked template search index. */\n  templateSearch: QueryTemplateSearchConnection;\n  /** Get the source template for a project. */\n  templateSourceForProject?: Maybe<Template>;\n  /** Get all published templates. */\n  templates: QueryTemplatesConnection;\n  /** Count all published templates. */\n  templatesCount: Scalars['Int']['output'];\n  /** Get the top projects by a metric */\n  topMetrics: TopMetricsResult;\n  /** Get all trusted domains for a workspace */\n  trustedDomains: QueryTrustedDomainsConnection;\n  /** Gets the TwoFactorInfo for the authenticated user. */\n  twoFactorInfo: TwoFactorInfo;\n  /** Gets the TwoFactorStatus for the authenticated user. */\n  twoFactorStatus: TwoFactorStatus;\n  /**\n   * Get a list of cash and credit withdrawals for a customer.\n   * @deprecated Use unifiedWithdrawalsV2 instead\n   */\n  unifiedWithdrawals: Array<UnifiedWithdrawal>;\n  /** Get a list of cash and credit withdrawals for a customer. */\n  unifiedWithdrawalsV2: QueryUnifiedWithdrawalsV2Connection;\n  /** Get the usage for a single project or all projects for a user/workspace. If no `projectId` or `workspaceId` is provided, the usage for the current user is returned. If no `startDate` is provided, the usage for the current billing period of the project owner is returned. */\n  usage: Array<AggregatedUsage>;\n  /** Get a user by id */\n  user: User;\n  /** Check if a user is in good standing based on their admin workspaces - returns null if not in good standing */\n  userGoodStanding?: Maybe<UserStanding>;\n  /** Get the user id corresponding to a Discord id */\n  userIdForDiscordId: Scalars['String']['output'];\n  /**\n   * Get the total kickback earnings for a user.\n   * @deprecated This field is deprecated and will be removed in future versions.\n   */\n  userKickbackEarnings: UserKickbackEarnings;\n  /** Get the public profile for a user */\n  userProfile: UserProfileResponse;\n  /** Get the reasoning behind the risk level of a user */\n  userRiskLevel: RiskLevelDetails;\n  /**\n   * Get all templates for the current user.\n   * @deprecated Users don't have personal templates anymore, they belong to their team now\n   */\n  userTemplates: QueryUserTemplatesConnection;\n  /** Get all users */\n  users: QueryUsersConnection;\n  /** Gets all users with same IP as specified user. */\n  usersWithClashingIP: Array<UserWithClashingIp>;\n  /** All variables by pluginId or serviceId. If neither are provided, all shared variables are returned. */\n  variables: Scalars['EnvironmentVariables']['output'];\n  /** Filterable, unrendered variables for a provided environment */\n  variablesForEnvironment: Scalars['ProvidedEnvironmentVariables']['output'];\n  /** All rendered variables that are required for a service deployment. */\n  variablesForServiceDeployment: Scalars['EnvironmentVariables']['output'];\n  /** Get information about the user's Vercel accounts */\n  vercelInfo: VercelInfo;\n  /** Get a single volume instance by id */\n  volumeInstance: VolumeInstance;\n  /** List backups of a volume instance */\n  volumeInstanceBackupList: Array<VolumeInstanceBackup>;\n  /** List backups schedules of a volume instance */\n  volumeInstanceBackupScheduleList: Array<VolumeInstanceBackupSchedule>;\n  /** Get the Stripe Connect login link for a withdrawal account. */\n  withdrawalAccountStripeConnectLoginLink: Scalars['String']['output'];\n  /** Get the Stripe Connect onboarding link for a withdrawal account. */\n  withdrawalAccountStripeConnectOnboardingLink: Scalars['String']['output'];\n  /** Get the supported countries for cash withdrawal accounts. */\n  withdrawalAccountSupportedCountries: Array<Scalars['String']['output']>;\n  /**\n   * Get all withdrawal accounts for a user.\n   * @deprecated Use withdrawalAccountsV2 instead\n   */\n  withdrawalAccounts: Array<WithdrawalAccountInfo>;\n  /** Get all withdrawal accounts for a user. */\n  withdrawalAccountsV2: Array<WithdrawalAccount>;\n  /** Get the available balance for a user. */\n  withdrawalAvailableBalance: Scalars['Float']['output'];\n  /** Get withdrawals for a customer. */\n  withdrawals: Array<WithdrawalType>;\n  /**\n   * Get the sum of all completed and pending withdrawals for a user.\n   * @deprecated Use earningDetails instead\n   */\n  withdrawalsToCash: Scalars['Float']['output'];\n  /**\n   * Get the total kickback credits for a user.\n   * @deprecated Use earningDetails instead\n   */\n  withdrawalsToCredit: Scalars['Float']['output'];\n  /** Gets the status of a workflow */\n  workflowStatus: WorkflowResult;\n  /** Get the workspace */\n  workspace: Workspace;\n  /** Find a workspace by invite code */\n  workspaceByCode: Workspace;\n  /** Check if a workspace is in good standing - returns null if not in good standing */\n  workspaceGoodStanding?: Maybe<WorkspaceStanding>;\n  /** Gets all identity providers of a workspace */\n  workspaceIdentityProviders: QueryWorkspaceIdentityProvidersConnection;\n  /** Get the policies for a workspace */\n  workspacePolicy?: Maybe<WorkspacePolicy>;\n  /** List deploy sources that can be added to a workspace policy. */\n  workspacePolicySelectableDeploySources: Array<WorkspacePolicySelectableDeploySource>;\n  /** Get all templates for a workspace. */\n  workspaceTemplates: QueryWorkspaceTemplatesConnection;\n  /** Get the top movers for workspaces within a defined period */\n  workspaceTopMovers: WorkspaceMoverInfo;\n  /** Get all workspaces (admin only) */\n  workspaces: QueryWorkspacesConnection;\n};\n\n\nexport type QueryAdminAllContainerInfoForPluginInEnvironmentArgs = {\n  environmentId: Scalars['String']['input'];\n  pluginId: Scalars['String']['input'];\n};\n\n\nexport type QueryAdminAllContainerInfoForServiceInEnvironmentArgs = {\n  environmentId: Scalars['String']['input'];\n  fetchInactive?: InputMaybe<Scalars['Boolean']['input']>;\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QueryAdminAllDomainsArgs = {\n  deleted?: InputMaybe<Scalars['Boolean']['input']>;\n  query: Scalars['String']['input'];\n};\n\n\nexport type QueryAdminAllProjectsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  deleted?: InputMaybe<Scalars['Boolean']['input']>;\n  expired?: InputMaybe<Scalars['Boolean']['input']>;\n  filter?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type QueryAdminAllServicesArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  deleted?: InputMaybe<Scalars['Boolean']['input']>;\n  filter?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type QueryAdminArchivedContainersArgs = {\n  userId?: InputMaybe<Scalars['String']['input']>;\n  workspaceId?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryAdminBannedImageArgs = {\n  image: Scalars['String']['input'];\n};\n\n\nexport type QueryAdminBucketsByNameArgs = {\n  limit?: InputMaybe<Scalars['Int']['input']>;\n  name: Scalars['String']['input'];\n};\n\n\nexport type QueryAdminCryptominerDetectionsArgs = {\n  limit?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type QueryAdminCryptominerDetectionsForServiceArgs = {\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QueryAdminDeploymentsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  input: AdminDeploymentListInput;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type QueryAdminGetHostMaintenanceNotificationImpactArgs = {\n  stackerHostname: Scalars['String']['input'];\n};\n\n\nexport type QueryAdminGetHostMaintenanceWorkflowProgressArgs = {\n  workflowId: Scalars['String']['input'];\n};\n\n\nexport type QueryAdminOAuthClientArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type QueryAdminOAuthClientsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  includeDeleted?: InputMaybe<Scalars['Boolean']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n  query?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryAdminPostgresHaClusterArgs = {\n  environmentId: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type QueryAdminPostgresHaClustersArgs = {\n  healthFilter?: InputMaybe<Scalars['String']['input']>;\n  page?: InputMaybe<Scalars['Int']['input']>;\n  pageSize?: InputMaybe<Scalars['Int']['input']>;\n  search?: InputMaybe<Scalars['String']['input']>;\n  sortDir?: InputMaybe<Scalars['String']['input']>;\n  sortField?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryAdminPostgresPitrServiceArgs = {\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QueryAdminPostgresPitrServicesArgs = {\n  flavorFilter?: InputMaybe<Scalars['String']['input']>;\n  healthFilter?: InputMaybe<Scalars['String']['input']>;\n  page?: InputMaybe<Scalars['Int']['input']>;\n  pageSize?: InputMaybe<Scalars['Int']['input']>;\n  search?: InputMaybe<Scalars['String']['input']>;\n  sortDir?: InputMaybe<Scalars['String']['input']>;\n  sortField?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryAdminPrivnetRouteArgs = {\n  endpointDns: Scalars['String']['input'];\n  networkId: Scalars['String']['input'];\n};\n\n\nexport type QueryAdminProjectCanvasBlockedArgs = {\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type QueryAdminProjectCanvasMutationLoggingArgs = {\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type QueryAdminProjectOverviewArgs = {\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type QueryAdminRadarEventArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type QueryAdminRadarEventsArgs = {\n  limit?: InputMaybe<Scalars['Int']['input']>;\n  offset?: InputMaybe<Scalars['Int']['input']>;\n  ruleId?: InputMaybe<Scalars['String']['input']>;\n  status?: InputMaybe<RadarEventStatus>;\n};\n\n\nexport type QueryAdminRadarEventsCountArgs = {\n  ruleId?: InputMaybe<Scalars['String']['input']>;\n  status?: InputMaybe<RadarEventStatus>;\n};\n\n\nexport type QueryAdminRadarListArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type QueryAdminRadarRuleArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type QueryAdminRadarRulesArgs = {\n  enabled?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n\nexport type QueryAdminRadarScanMatchesArgs = {\n  hideActioned?: InputMaybe<Scalars['Boolean']['input']>;\n  limit?: InputMaybe<Scalars['Int']['input']>;\n  offset?: InputMaybe<Scalars['Int']['input']>;\n  ruleId: Scalars['String']['input'];\n};\n\n\nexport type QueryAdminRadarScanStatusArgs = {\n  ruleId: Scalars['String']['input'];\n};\n\n\nexport type QueryAdminRailwayDomainByInvoiceArgs = {\n  invoiceId: Scalars['String']['input'];\n};\n\n\nexport type QueryAdminRailwayDomainsArgs = {\n  query: Scalars['String']['input'];\n};\n\n\nexport type QueryAdminReferralCodeLookupArgs = {\n  code: Scalars['String']['input'];\n};\n\n\nexport type QueryAdminRefundRequestInfoArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type QueryAdminReposArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  installationId?: InputMaybe<Scalars['String']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n  ownerLogin?: InputMaybe<Scalars['String']['input']>;\n  search?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryAdminScyllaRouteArgs = {\n  protocol: Scalars['String']['input'];\n  target: Scalars['String']['input'];\n};\n\n\nexport type QueryAdminServiceSyncStatusArgs = {\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QueryAdminServicesByTemplateArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n  templateCode: Scalars['String']['input'];\n};\n\n\nexport type QueryAdminVolumeInstancesForVolumeArgs = {\n  volumeId: Scalars['String']['input'];\n};\n\n\nexport type QueryAdminVolumeMountTriageArgs = {\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QueryAdoptionLevelArgs = {\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type QueryAgentUsageArgs = {\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type QueryApiTokensArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type QueryAuditLogArgs = {\n  id: Scalars['String']['input'];\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type QueryAuditLogsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  filter?: InputMaybe<AuditLogFilterInput>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n  sort?: InputMaybe<SortOrder>;\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type QueryBanReasonHistoryArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n  userId?: InputMaybe<Scalars['String']['input']>;\n  workspaceId?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryBucketInstanceDetailsArgs = {\n  bucketId: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n};\n\n\nexport type QueryBucketS3CredentialsArgs = {\n  bucketId: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type QueryBuildLogsArgs = {\n  deploymentId: Scalars['String']['input'];\n  endDate?: InputMaybe<Scalars['DateTime']['input']>;\n  filter?: InputMaybe<Scalars['String']['input']>;\n  limit?: InputMaybe<Scalars['Int']['input']>;\n  startDate?: InputMaybe<Scalars['DateTime']['input']>;\n};\n\n\nexport type QueryCanvasViewMergePreviewArgs = {\n  sourceEnvironmentId: Scalars['String']['input'];\n  targetEnvironmentId: Scalars['String']['input'];\n};\n\n\nexport type QueryChangelogBlockImageArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type QueryChatMessagesArgs = {\n  limit?: InputMaybe<Scalars['Int']['input']>;\n  threadId: Scalars['String']['input'];\n};\n\n\nexport type QueryChatThreadArgs = {\n  threadId: Scalars['String']['input'];\n};\n\n\nexport type QueryChatThreadsArgs = {\n  environmentId: Scalars['String']['input'];\n  limit?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type QueryComplianceAgreementsArgs = {\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type QueryCurrentSessionCanEnforceWorkspaceIdentityProviderArgs = {\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type QueryCustomDomainArgs = {\n  id: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type QueryCustomDomainAvailableArgs = {\n  domain: Scalars['String']['input'];\n};\n\n\nexport type QueryCustomerBucketUsageArgs = {\n  endDate: Scalars['DateTime']['input'];\n  startDate: Scalars['DateTime']['input'];\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type QueryDataplaneClustersArgs = {\n  label?: InputMaybe<Scalars['String']['input']>;\n  namespace?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryDataplaneHostArgs = {\n  hostId: Scalars['String']['input'];\n};\n\n\nexport type QueryDataplaneHostsArgs = {\n  clusterId?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryDataplaneStackerContainerInventoryLegacyArgs = {\n  hostId: Scalars['String']['input'];\n  runtimes?: InputMaybe<Array<ComputeRuntime>>;\n};\n\n\nexport type QueryDeploymentArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type QueryDeploymentByContainerIdArgs = {\n  containerId: Scalars['String']['input'];\n};\n\n\nexport type QueryDeploymentByDomainArgs = {\n  domain: Scalars['String']['input'];\n};\n\n\nexport type QueryDeploymentEventsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  id: Scalars['String']['input'];\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type QueryDeploymentInstanceAssignmentsArgs = {\n  deploymentId: Scalars['String']['input'];\n};\n\n\nexport type QueryDeploymentInstanceExecutionsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  input: DeploymentInstanceExecutionListInput;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type QueryDeploymentLogsArgs = {\n  deploymentId: Scalars['String']['input'];\n  endDate?: InputMaybe<Scalars['DateTime']['input']>;\n  filter?: InputMaybe<Scalars['String']['input']>;\n  limit?: InputMaybe<Scalars['Int']['input']>;\n  startDate?: InputMaybe<Scalars['DateTime']['input']>;\n};\n\n\nexport type QueryDeploymentSnapshotArgs = {\n  deploymentId: Scalars['String']['input'];\n};\n\n\nexport type QueryDeploymentSnapshotCodeUriArgs = {\n  deploymentId: Scalars['String']['input'];\n};\n\n\nexport type QueryDeploymentTriggersArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  environmentId: Scalars['String']['input'];\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n  projectId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QueryDeploymentsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  input: DeploymentListInput;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type QueryDomainStatusArgs = {\n  id: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type QueryDomainsArgs = {\n  environmentId: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QueryDrainStackerProgressArgs = {\n  workflowId: Scalars['String']['input'];\n};\n\n\nexport type QueryEarningDetailsArgs = {\n  customerId: Scalars['String']['input'];\n};\n\n\nexport type QueryEdgeEntrypointArgs = {\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QueryEgressGatewayHaPreviewArgs = {\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QueryEgressGatewayLegacyPreviewArgs = {\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QueryEgressGatewaysArgs = {\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QueryEnvironmentArgs = {\n  id: Scalars['String']['input'];\n  projectId?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryEnvironmentLogsArgs = {\n  afterDate?: InputMaybe<Scalars['String']['input']>;\n  afterLimit?: InputMaybe<Scalars['Int']['input']>;\n  anchorDate?: InputMaybe<Scalars['String']['input']>;\n  beforeDate?: InputMaybe<Scalars['String']['input']>;\n  beforeLimit?: InputMaybe<Scalars['Int']['input']>;\n  environmentId: Scalars['String']['input'];\n  filter?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryEnvironmentPatchArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type QueryEnvironmentPatchesArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  environmentId: Scalars['String']['input'];\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type QueryEnvironmentStagedChangesArgs = {\n  environmentId: Scalars['String']['input'];\n};\n\n\nexport type QueryEnvironmentsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  isEphemeral?: InputMaybe<Scalars['Boolean']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type QueryEstimatedUsageArgs = {\n  includeDeleted?: InputMaybe<Scalars['Boolean']['input']>;\n  measurements: Array<MetricMeasurement>;\n  projectId?: InputMaybe<Scalars['String']['input']>;\n  teamId?: InputMaybe<Scalars['String']['input']>;\n  userId?: InputMaybe<Scalars['String']['input']>;\n  workspaceId?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryEventsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  filter?: InputMaybe<EventFilterInput>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type QueryExternalWorkspacesArgs = {\n  projectId?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryFunctionRuntimeArgs = {\n  name: FunctionRuntimeName;\n};\n\n\nexport type QueryGetPublishedTemplatesForSupportMetricsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type QueryGetTemplateArgs = {\n  templateId: Scalars['String']['input'];\n};\n\n\nexport type QueryGetUserTemplatesArgs = {\n  userId: Scalars['String']['input'];\n};\n\n\nexport type QueryGetUserTemporalEventsArgs = {\n  projectId?: InputMaybe<Scalars['String']['input']>;\n  ticketCreationTs: Scalars['String']['input'];\n  userId: Scalars['String']['input'];\n  workspaces: Array<Scalars['String']['input']>;\n};\n\n\nexport type QueryGitHubRepoAccessAvailableArgs = {\n  fullRepoName: Scalars['String']['input'];\n};\n\n\nexport type QueryGithubEventsArgs = {\n  userId: Scalars['String']['input'];\n};\n\n\nexport type QueryGithubIsRepoNameAvailableArgs = {\n  fullRepoName: Scalars['String']['input'];\n};\n\n\nexport type QueryGithubPrInfoArgs = {\n  prNumber: Scalars['Int']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QueryGithubRepoArgs = {\n  fullRepoName: Scalars['String']['input'];\n};\n\n\nexport type QueryGithubRepoAnalysisArgs = {\n  branch?: InputMaybe<Scalars['String']['input']>;\n  fullRepoName: Scalars['String']['input'];\n};\n\n\nexport type QueryGithubRepoBranchesArgs = {\n  owner: Scalars['String']['input'];\n  repo: Scalars['String']['input'];\n};\n\n\nexport type QueryGithubRepoSearch2Args = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n  ownerIds?: InputMaybe<Array<Scalars['String']['input']>>;\n  searchQuery?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryGithubRepoTreeArgs = {\n  branch: Scalars['String']['input'];\n  fullRepoName: Scalars['String']['input'];\n  recursive?: InputMaybe<Scalars['Boolean']['input']>;\n  type?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryGroupedUsageAnomaliesArgs = {\n  input: GroupedUsageAnomaliesInput;\n};\n\n\nexport type QueryHasRecentWithdrawalArgs = {\n  customerId: Scalars['String']['input'];\n};\n\n\nexport type QueryHelpStationAuditLogsArgs = {\n  endDate?: InputMaybe<Scalars['String']['input']>;\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  eventTypes?: InputMaybe<Array<Scalars['String']['input']>>;\n  limit?: InputMaybe<Scalars['Int']['input']>;\n  projectId?: InputMaybe<Scalars['String']['input']>;\n  startDate?: InputMaybe<Scalars['String']['input']>;\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type QueryHelpStationDomainOwnershipArgs = {\n  domainName: Scalars['String']['input'];\n  userId: Scalars['String']['input'];\n};\n\n\nexport type QueryHelpStationDomainStatusArgs = {\n  domainName: Scalars['String']['input'];\n};\n\n\nexport type QueryHelpStationFindUserByIdOrEmailArgs = {\n  email?: InputMaybe<Scalars['String']['input']>;\n  id?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryHelpStationListWorkspacesByIdsArgs = {\n  ids: Array<Scalars['String']['input']>;\n};\n\n\nexport type QueryHelpStationLookupDomainArgs = {\n  domainName: Scalars['String']['input'];\n};\n\n\nexport type QueryHelpStationLookupThreadArgs = {\n  slug: Scalars['String']['input'];\n};\n\n\nexport type QueryHelpStationNetworkConnectionsArgs = {\n  endDate?: InputMaybe<Scalars['String']['input']>;\n  environmentId: Scalars['String']['input'];\n  filter?: InputMaybe<Scalars['String']['input']>;\n  limit?: InputMaybe<Scalars['Int']['input']>;\n  serviceId?: InputMaybe<Scalars['String']['input']>;\n  startDate?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryHelpStationNetworkFlowLogsArgs = {\n  endDate?: InputMaybe<Scalars['String']['input']>;\n  environmentId: Scalars['String']['input'];\n  filter?: InputMaybe<Scalars['String']['input']>;\n  limit?: InputMaybe<Scalars['Int']['input']>;\n  serviceId?: InputMaybe<Scalars['String']['input']>;\n  startDate?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryHelpStationProjectVolumesArgs = {\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type QueryHelpStationSearchWorkspacesArgs = {\n  limit?: InputMaybe<Scalars['Int']['input']>;\n  query: Scalars['String']['input'];\n};\n\n\nexport type QueryHelpStationServiceLogsArgs = {\n  deploymentId?: InputMaybe<Scalars['String']['input']>;\n  endDate?: InputMaybe<Scalars['String']['input']>;\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  filter?: InputMaybe<Scalars['String']['input']>;\n  limit?: InputMaybe<Scalars['Int']['input']>;\n  serviceId?: InputMaybe<Scalars['String']['input']>;\n  startDate?: InputMaybe<Scalars['String']['input']>;\n  userId?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryHelpStationSlackThreadContextArgs = {\n  slackChannelId: Scalars['String']['input'];\n};\n\n\nexport type QueryHelpStationThreadContextArgs = {\n  userIds: Array<Scalars['String']['input']>;\n};\n\n\nexport type QueryHelpStationThreadTemplateArgs = {\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QueryHelpStationUsageBreakdownArgs = {\n  userIds: Array<Scalars['String']['input']>;\n};\n\n\nexport type QueryHelpStationUserDomainsArgs = {\n  workspaceIds: Array<Scalars['String']['input']>;\n};\n\n\nexport type QueryHelpStationWorkspaceContextArgs = {\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type QueryHelpStationWorkspaceLimitsArgs = {\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type QueryHelpStationWorkspaceRailwayDomainsArgs = {\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type QueryHelpStationWorkspaceServicesArgs = {\n  workspaceIds: Array<Scalars['String']['input']>;\n};\n\n\nexport type QueryHelpStationWorkspaceServicesV2Args = {\n  workspaceIds: Array<Scalars['String']['input']>;\n};\n\n\nexport type QueryHttpDurationMetricsArgs = {\n  endDate: Scalars['DateTime']['input'];\n  environmentId: Scalars['String']['input'];\n  method?: InputMaybe<Scalars['String']['input']>;\n  path?: InputMaybe<Scalars['String']['input']>;\n  serviceId: Scalars['String']['input'];\n  startDate: Scalars['DateTime']['input'];\n  statusCode?: InputMaybe<Scalars['Int']['input']>;\n  stepSeconds?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type QueryHttpLogsArgs = {\n  afterDate?: InputMaybe<Scalars['String']['input']>;\n  afterLimit?: InputMaybe<Scalars['Int']['input']>;\n  anchorDate?: InputMaybe<Scalars['String']['input']>;\n  beforeDate?: InputMaybe<Scalars['String']['input']>;\n  beforeLimit?: InputMaybe<Scalars['Int']['input']>;\n  deploymentId: Scalars['String']['input'];\n  endDate?: InputMaybe<Scalars['String']['input']>;\n  filter?: InputMaybe<Scalars['String']['input']>;\n  limit?: InputMaybe<Scalars['Int']['input']>;\n  startDate?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryHttpMetricsArgs = {\n  endDate: Scalars['DateTime']['input'];\n  environmentId: Scalars['String']['input'];\n  method?: InputMaybe<Scalars['String']['input']>;\n  path?: InputMaybe<Scalars['String']['input']>;\n  serviceId: Scalars['String']['input'];\n  startDate: Scalars['DateTime']['input'];\n  statusCode?: InputMaybe<Scalars['Int']['input']>;\n  stepSeconds?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type QueryHttpMetricsGroupedByStatusArgs = {\n  endDate: Scalars['DateTime']['input'];\n  environmentId: Scalars['String']['input'];\n  method?: InputMaybe<Scalars['String']['input']>;\n  path?: InputMaybe<Scalars['String']['input']>;\n  serviceId: Scalars['String']['input'];\n  startDate: Scalars['DateTime']['input'];\n  stepSeconds?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type QueryIntegrationAuthArgs = {\n  provider: Scalars['String']['input'];\n  providerId: Scalars['String']['input'];\n};\n\n\nexport type QueryIntegrationAuthsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type QueryIntegrationsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type QueryInviteCodeArgs = {\n  code: Scalars['String']['input'];\n};\n\n\nexport type QueryIsMonorepoArgs = {\n  branch: Scalars['String']['input'];\n  fullRepoName: Scalars['String']['input'];\n};\n\n\nexport type QueryListDeploymentInstancesForStackerArgs = {\n  stackerId: Scalars['String']['input'];\n};\n\n\nexport type QueryLogsAttributesArgs = {\n  endDate?: InputMaybe<Scalars['String']['input']>;\n  environmentId: Scalars['String']['input'];\n  filter?: InputMaybe<Scalars['String']['input']>;\n  startDate?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryLogsHistogramArgs = {\n  endDate?: InputMaybe<Scalars['String']['input']>;\n  environmentId: Scalars['String']['input'];\n  filter?: InputMaybe<Scalars['String']['input']>;\n  maxBuckets?: InputMaybe<Scalars['Int']['input']>;\n  startDate?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryLogsLimitsArgs = {\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type QueryMaintainerTemplatesArgs = {\n  maintainerSlug: Scalars['String']['input'];\n};\n\n\nexport type QueryMetricsArgs = {\n  averagingWindowSeconds?: InputMaybe<Scalars['Int']['input']>;\n  endDate?: InputMaybe<Scalars['DateTime']['input']>;\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  groupBy?: InputMaybe<Array<MetricTag>>;\n  includeDeleted?: InputMaybe<Scalars['Boolean']['input']>;\n  measurements: Array<MetricMeasurement>;\n  pluginId?: InputMaybe<Scalars['String']['input']>;\n  projectId?: InputMaybe<Scalars['String']['input']>;\n  sampleRateSeconds?: InputMaybe<Scalars['Int']['input']>;\n  serviceId?: InputMaybe<Scalars['String']['input']>;\n  startDate: Scalars['DateTime']['input'];\n  teamId?: InputMaybe<Scalars['String']['input']>;\n  volumeId?: InputMaybe<Scalars['String']['input']>;\n  volumeInstanceExternalId?: InputMaybe<Scalars['String']['input']>;\n  workspaceId?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryMigrateStackerProgressArgs = {\n  migrationId: Scalars['String']['input'];\n  stackerId: Scalars['String']['input'];\n};\n\n\nexport type QueryMongoCollectionDataArgs = {\n  database: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  limit?: InputMaybe<Scalars['Int']['input']>;\n  name: Scalars['String']['input'];\n  offset?: InputMaybe<Scalars['Int']['input']>;\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QueryMongoCollectionNamesArgs = {\n  database: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QueryMongoDatabaseNamesArgs = {\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QueryMonorepoImportStatusArgs = {\n  environmentId: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type QueryNetworkConnectionsArgs = {\n  endDate?: InputMaybe<Scalars['DateTime']['input']>;\n  environmentId: Scalars['String']['input'];\n  filter?: InputMaybe<Scalars['String']['input']>;\n  limit?: InputMaybe<Scalars['Int']['input']>;\n  serviceId?: InputMaybe<Scalars['String']['input']>;\n  startDate?: InputMaybe<Scalars['DateTime']['input']>;\n};\n\n\nexport type QueryNetworkFlowLogsArgs = {\n  afterDate?: InputMaybe<Scalars['String']['input']>;\n  afterLimit?: InputMaybe<Scalars['Int']['input']>;\n  anchorDate?: InputMaybe<Scalars['String']['input']>;\n  beforeDate?: InputMaybe<Scalars['String']['input']>;\n  beforeLimit?: InputMaybe<Scalars['Int']['input']>;\n  environmentId: Scalars['String']['input'];\n  filter?: InputMaybe<Scalars['String']['input']>;\n  serviceId?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryNetworkFlowServiceLayerArgs = {\n  endDate?: InputMaybe<Scalars['DateTime']['input']>;\n  environmentId: Scalars['String']['input'];\n  startDate?: InputMaybe<Scalars['DateTime']['input']>;\n};\n\n\nexport type QueryNotificationDeliveriesArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  filter?: InputMaybe<NotificationDeliveryFilterInput>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type QueryNotificationDeliveryArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type QueryNotificationInstancesArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  filter: NotificationInstanceFilterInput;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type QueryNotificationRulesArgs = {\n  projectId?: InputMaybe<Scalars['String']['input']>;\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type QueryNotificationUserFiltersArgs = {\n  token?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryOauthAuthorizedAppArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type QueryOauthClientArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type QueryOauthClientsArgs = {\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type QueryObservabilityDashboardItemsArgs = {\n  dashboardId?: InputMaybe<Scalars['String']['input']>;\n  environmentId: Scalars['String']['input'];\n  resourceId?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryObservabilityDashboardsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  environmentId: Scalars['String']['input'];\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type QueryPasskeysArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type QueryPluginArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type QueryPluginLogsArgs = {\n  endDate?: InputMaybe<Scalars['DateTime']['input']>;\n  environmentId: Scalars['String']['input'];\n  filter?: InputMaybe<Scalars['String']['input']>;\n  limit?: InputMaybe<Scalars['Int']['input']>;\n  pluginId: Scalars['String']['input'];\n  startDate?: InputMaybe<Scalars['DateTime']['input']>;\n};\n\n\nexport type QueryPreferencesArgs = {\n  token?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryPrivateNetworkEndpointArgs = {\n  environmentId: Scalars['String']['input'];\n  privateNetworkId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QueryPrivateNetworkEndpointNameAvailableArgs = {\n  environmentId: Scalars['String']['input'];\n  prefix: Scalars['String']['input'];\n  privateNetworkId: Scalars['String']['input'];\n};\n\n\nexport type QueryPrivateNetworksArgs = {\n  environmentId: Scalars['String']['input'];\n};\n\n\nexport type QueryProjectArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type QueryProjectComplianceArgs = {\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type QueryProjectInvitationArgs = {\n  code: Scalars['String']['input'];\n};\n\n\nexport type QueryProjectInvitationsArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type QueryProjectInviteCodeArgs = {\n  projectId: Scalars['String']['input'];\n  role: ProjectRole;\n};\n\n\nexport type QueryProjectMembersArgs = {\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type QueryProjectResourceAccessArgs = {\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type QueryProjectTokensArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type QueryProjectWorkspaceMembersArgs = {\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type QueryProjectsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  includeDeleted?: InputMaybe<Scalars['Boolean']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n  orderBy?: InputMaybe<ProjectsOrderBy>;\n  teamId?: InputMaybe<Scalars['String']['input']>;\n  userId?: InputMaybe<Scalars['String']['input']>;\n  workspaceId?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryProjectsByIdsArgs = {\n  ids: Array<Scalars['String']['input']>;\n};\n\n\nexport type QueryRailwayDomainArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type QueryRailwayDomainByNameArgs = {\n  domain: Scalars['String']['input'];\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type QueryRailwayDomainDnsRecordsArgs = {\n  domain: Scalars['String']['input'];\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type QueryRailwayDomainsArgs = {\n  status?: InputMaybe<RailwayDomainStatus>;\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type QueryRedisGetKeyArgs = {\n  environmentId: Scalars['String']['input'];\n  key: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QueryRedisKeysArgs = {\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QueryRedisScanKeysArgs = {\n  cursor?: InputMaybe<Scalars['Int']['input']>;\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QueryReferralInfoArgs = {\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type QueryReferralPayoutsTotalArgs = {\n  customerId: Scalars['String']['input'];\n};\n\n\nexport type QueryRegionsArgs = {\n  projectId?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryReplicaMetricsArgs = {\n  averagingWindowSeconds?: InputMaybe<Scalars['Int']['input']>;\n  endDate?: InputMaybe<Scalars['DateTime']['input']>;\n  environmentId: Scalars['String']['input'];\n  measurements: Array<MetricMeasurement>;\n  sampleRateSeconds?: InputMaybe<Scalars['Int']['input']>;\n  serviceId: Scalars['String']['input'];\n  startDate: Scalars['DateTime']['input'];\n};\n\n\nexport type QueryResourceAccessArgs = {\n  explicitResourceOwner: ExplicitOwnerInput;\n};\n\n\nexport type QuerySandboxArgs = {\n  environmentId: Scalars['String']['input'];\n  id: Scalars['String']['input'];\n};\n\n\nexport type QuerySandboxTemplateArgs = {\n  environmentId: Scalars['String']['input'];\n  id: Scalars['ID']['input'];\n};\n\n\nexport type QuerySandboxesArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  environmentId: Scalars['String']['input'];\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type QuerySearchTemplatesArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n  recommended?: InputMaybe<Scalars['Boolean']['input']>;\n  search: Scalars['String']['input'];\n  verified?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n\nexport type QueryServiceArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type QueryServiceDomainAvailableArgs = {\n  domain: Scalars['String']['input'];\n};\n\n\nexport type QueryServiceInstanceArgs = {\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QueryServiceInstanceAutoDeployStatusArgs = {\n  environmentId: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QueryServiceInstanceIsUpdatableArgs = {\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QueryServiceInstanceLimitOverrideArgs = {\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QueryServiceInstanceLimitsArgs = {\n  environmentId: Scalars['String']['input'];\n  projectId?: InputMaybe<Scalars['String']['input']>;\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QueryServiceInstanceRepoAnalysisArgs = {\n  environmentId: Scalars['String']['input'];\n  rootDirectory?: InputMaybe<Scalars['String']['input']>;\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QuerySessionsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type QuerySlackConnectWorkspaceArgs = {\n  slackConnectId: Scalars['String']['input'];\n};\n\n\nexport type QuerySqlExtensionDependenciesArgs = {\n  databaseType: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  extension: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QuerySqlExtensionDependentsArgs = {\n  databaseType: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  extension: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QuerySqlExtensionsArgs = {\n  databaseType: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QuerySqlTableArgs = {\n  databaseType: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  limit?: InputMaybe<Scalars['Int']['input']>;\n  name: Scalars['String']['input'];\n  offset?: InputMaybe<Scalars['Int']['input']>;\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QuerySqlTableNamesArgs = {\n  databaseType: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QuerySshPublicKeysArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n  workspaceId?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryStackerStatsProgressArgs = {\n  workflowId: Scalars['String']['input'];\n};\n\n\nexport type QuerySupportThreadMessagesArgs = {\n  slug: Scalars['String']['input'];\n};\n\n\nexport type QueryTcpProxiesArgs = {\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QueryTeamArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type QueryTeamTemplatesArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n  teamId: Scalars['String']['input'];\n};\n\n\nexport type QueryTemplateArgs = {\n  code?: InputMaybe<Scalars['String']['input']>;\n  id?: InputMaybe<Scalars['String']['input']>;\n  owner?: InputMaybe<Scalars['String']['input']>;\n  repo?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryTemplateMetricsArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type QueryTemplatePayoutsTotalArgs = {\n  customerId: Scalars['String']['input'];\n};\n\n\nexport type QueryTemplateSearchArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  category?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  includeRankingScoreDetails?: InputMaybe<Scalars['Boolean']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n  query: Scalars['String']['input'];\n  verified?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n\nexport type QueryTemplateSourceForProjectArgs = {\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type QueryTemplatesArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  databasesOnly?: InputMaybe<Scalars['Boolean']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n  recommended?: InputMaybe<Scalars['Boolean']['input']>;\n  verified?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n\nexport type QueryTopMetricsArgs = {\n  averagingWindowSeconds?: InputMaybe<Scalars['Int']['input']>;\n  endDate?: InputMaybe<Scalars['DateTime']['input']>;\n  limit: Scalars['Int']['input'];\n  measurement: MetricMeasurement;\n  sampleRateSeconds?: InputMaybe<Scalars['Int']['input']>;\n  startDate: Scalars['DateTime']['input'];\n};\n\n\nexport type QueryTrustedDomainsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type QueryTwoFactorStatusArgs = {\n  twoFactorLinkingKey?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryUnifiedWithdrawalsArgs = {\n  customerId: Scalars['String']['input'];\n};\n\n\nexport type QueryUnifiedWithdrawalsV2Args = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  customerId: Scalars['String']['input'];\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type QueryUsageArgs = {\n  endDate?: InputMaybe<Scalars['DateTime']['input']>;\n  groupBy?: InputMaybe<Array<MetricTag>>;\n  includeDeleted?: InputMaybe<Scalars['Boolean']['input']>;\n  measurements: Array<MetricMeasurement>;\n  projectId?: InputMaybe<Scalars['String']['input']>;\n  startDate?: InputMaybe<Scalars['DateTime']['input']>;\n  teamId?: InputMaybe<Scalars['String']['input']>;\n  useSmallDateChunks?: InputMaybe<Scalars['Boolean']['input']>;\n  userId?: InputMaybe<Scalars['String']['input']>;\n  workspaceId?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryUserArgs = {\n  userId: Scalars['String']['input'];\n};\n\n\nexport type QueryUserGoodStandingArgs = {\n  userId: Scalars['String']['input'];\n};\n\n\nexport type QueryUserIdForDiscordIdArgs = {\n  discordId: Scalars['String']['input'];\n};\n\n\nexport type QueryUserKickbackEarningsArgs = {\n  userId: Scalars['String']['input'];\n};\n\n\nexport type QueryUserProfileArgs = {\n  username: Scalars['String']['input'];\n};\n\n\nexport type QueryUserRiskLevelArgs = {\n  userId: Scalars['String']['input'];\n};\n\n\nexport type QueryUserTemplatesArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type QueryUsersArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  input?: InputMaybe<UsersFilterInput>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type QueryUsersWithClashingIpArgs = {\n  userId: Scalars['String']['input'];\n};\n\n\nexport type QueryVariablesArgs = {\n  environmentId: Scalars['String']['input'];\n  pluginId?: InputMaybe<Scalars['String']['input']>;\n  projectId: Scalars['String']['input'];\n  serviceId?: InputMaybe<Scalars['String']['input']>;\n  unrendered?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n\nexport type QueryVariablesForEnvironmentArgs = {\n  id: Scalars['String']['input'];\n  input: VariablesForEnvironmentInput;\n};\n\n\nexport type QueryVariablesForServiceDeploymentArgs = {\n  environmentId: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\n\nexport type QueryVolumeInstanceArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type QueryVolumeInstanceBackupListArgs = {\n  volumeInstanceId: Scalars['String']['input'];\n};\n\n\nexport type QueryVolumeInstanceBackupScheduleListArgs = {\n  volumeInstanceId: Scalars['String']['input'];\n};\n\n\nexport type QueryWithdrawalAccountStripeConnectLoginLinkArgs = {\n  withdrawalAccountId: Scalars['String']['input'];\n};\n\n\nexport type QueryWithdrawalAccountStripeConnectOnboardingLinkArgs = {\n  withdrawalAccountId: Scalars['String']['input'];\n};\n\n\nexport type QueryWithdrawalAccountsArgs = {\n  customerId: Scalars['String']['input'];\n};\n\n\nexport type QueryWithdrawalAccountsV2Args = {\n  customerId: Scalars['String']['input'];\n};\n\n\nexport type QueryWithdrawalAvailableBalanceArgs = {\n  customerId: Scalars['String']['input'];\n};\n\n\nexport type QueryWithdrawalsArgs = {\n  customerId: Scalars['String']['input'];\n  status?: InputMaybe<WithdrawalStatusType>;\n};\n\n\nexport type QueryWithdrawalsToCashArgs = {\n  customerId: Scalars['String']['input'];\n};\n\n\nexport type QueryWithdrawalsToCreditArgs = {\n  customerId: Scalars['String']['input'];\n};\n\n\nexport type QueryWorkflowStatusArgs = {\n  workflowId: Scalars['String']['input'];\n};\n\n\nexport type QueryWorkspaceArgs = {\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type QueryWorkspaceByCodeArgs = {\n  code: Scalars['String']['input'];\n};\n\n\nexport type QueryWorkspaceGoodStandingArgs = {\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type QueryWorkspaceIdentityProvidersArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type QueryWorkspacePolicyArgs = {\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type QueryWorkspacePolicySelectableDeploySourcesArgs = {\n  sourceType: WorkspacePolicyDeploySourceType;\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type QueryWorkspaceTemplatesArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n  workspaceId: Scalars['String']['input'];\n};\n\n\nexport type QueryWorkspaceTopMoversArgs = {\n  input: WorkspaceTopMoversInput;\n};\n\n\nexport type QueryWorkspacesArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  filter?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  hasPartnerProfile?: InputMaybe<Scalars['Boolean']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n  pro?: InputMaybe<Scalars['Boolean']['input']>;\n  state?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type QueryAdminAllProjectsConnection = {\n  __typename?: 'QueryAdminAllProjectsConnection';\n  edges: Array<QueryAdminAllProjectsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryAdminAllProjectsConnectionEdge = {\n  __typename?: 'QueryAdminAllProjectsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Project;\n};\n\nexport type QueryAdminAllServicesConnection = {\n  __typename?: 'QueryAdminAllServicesConnection';\n  edges: Array<QueryAdminAllServicesConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryAdminAllServicesConnectionEdge = {\n  __typename?: 'QueryAdminAllServicesConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Service;\n};\n\nexport type QueryAdminDeploymentsConnection = {\n  __typename?: 'QueryAdminDeploymentsConnection';\n  edges: Array<QueryAdminDeploymentsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryAdminDeploymentsConnectionEdge = {\n  __typename?: 'QueryAdminDeploymentsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Deployment;\n};\n\nexport type QueryAdminOAuthClientsConnection = {\n  __typename?: 'QueryAdminOAuthClientsConnection';\n  edges: Array<QueryAdminOAuthClientsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryAdminOAuthClientsConnectionEdge = {\n  __typename?: 'QueryAdminOAuthClientsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: AdminOAuthClient;\n};\n\nexport type QueryAdminReposConnection = {\n  __typename?: 'QueryAdminReposConnection';\n  edges: Array<QueryAdminReposConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryAdminReposConnectionEdge = {\n  __typename?: 'QueryAdminReposConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: AdminRepo;\n};\n\nexport type QueryAdminServicesByTemplateConnection = {\n  __typename?: 'QueryAdminServicesByTemplateConnection';\n  edges: Array<QueryAdminServicesByTemplateConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryAdminServicesByTemplateConnectionEdge = {\n  __typename?: 'QueryAdminServicesByTemplateConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Service;\n};\n\nexport type QueryApiTokensConnection = {\n  __typename?: 'QueryApiTokensConnection';\n  edges: Array<QueryApiTokensConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryApiTokensConnectionEdge = {\n  __typename?: 'QueryApiTokensConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: ApiToken;\n};\n\nexport type QueryAuditLogsConnection = {\n  __typename?: 'QueryAuditLogsConnection';\n  edges: Array<QueryAuditLogsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryAuditLogsConnectionEdge = {\n  __typename?: 'QueryAuditLogsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: AuditLog;\n};\n\nexport type QueryBanReasonHistoryConnection = {\n  __typename?: 'QueryBanReasonHistoryConnection';\n  edges: Array<QueryBanReasonHistoryConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryBanReasonHistoryConnectionEdge = {\n  __typename?: 'QueryBanReasonHistoryConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: BanReasonHistory;\n};\n\nexport type QueryDeploymentEventsConnection = {\n  __typename?: 'QueryDeploymentEventsConnection';\n  edges: Array<QueryDeploymentEventsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryDeploymentEventsConnectionEdge = {\n  __typename?: 'QueryDeploymentEventsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: DeploymentEvent;\n};\n\nexport type QueryDeploymentInstanceExecutionsConnection = {\n  __typename?: 'QueryDeploymentInstanceExecutionsConnection';\n  edges: Array<QueryDeploymentInstanceExecutionsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryDeploymentInstanceExecutionsConnectionEdge = {\n  __typename?: 'QueryDeploymentInstanceExecutionsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: DeploymentInstanceExecution;\n};\n\nexport type QueryDeploymentTriggersConnection = {\n  __typename?: 'QueryDeploymentTriggersConnection';\n  edges: Array<QueryDeploymentTriggersConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryDeploymentTriggersConnectionEdge = {\n  __typename?: 'QueryDeploymentTriggersConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: DeploymentTrigger;\n};\n\nexport type QueryDeploymentsConnection = {\n  __typename?: 'QueryDeploymentsConnection';\n  edges: Array<QueryDeploymentsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryDeploymentsConnectionEdge = {\n  __typename?: 'QueryDeploymentsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Deployment;\n};\n\nexport type QueryEnvironmentPatchesConnection = {\n  __typename?: 'QueryEnvironmentPatchesConnection';\n  edges: Array<QueryEnvironmentPatchesConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryEnvironmentPatchesConnectionEdge = {\n  __typename?: 'QueryEnvironmentPatchesConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: EnvironmentPatch;\n};\n\nexport type QueryEnvironmentsConnection = {\n  __typename?: 'QueryEnvironmentsConnection';\n  edges: Array<QueryEnvironmentsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryEnvironmentsConnectionEdge = {\n  __typename?: 'QueryEnvironmentsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Environment;\n};\n\nexport type QueryEventsConnection = {\n  __typename?: 'QueryEventsConnection';\n  edges: Array<QueryEventsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryEventsConnectionEdge = {\n  __typename?: 'QueryEventsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Event;\n};\n\nexport type QueryGetPublishedTemplatesForSupportMetricsConnection = {\n  __typename?: 'QueryGetPublishedTemplatesForSupportMetricsConnection';\n  edges: Array<QueryGetPublishedTemplatesForSupportMetricsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryGetPublishedTemplatesForSupportMetricsConnectionEdge = {\n  __typename?: 'QueryGetPublishedTemplatesForSupportMetricsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Template;\n};\n\nexport type QueryGithubRepoSearch2Connection = {\n  __typename?: 'QueryGithubRepoSearch2Connection';\n  edges: Array<QueryGithubRepoSearch2ConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryGithubRepoSearch2ConnectionEdge = {\n  __typename?: 'QueryGithubRepoSearch2ConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: UserGithubRepo;\n};\n\nexport type QueryIntegrationAuthsConnection = {\n  __typename?: 'QueryIntegrationAuthsConnection';\n  edges: Array<QueryIntegrationAuthsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryIntegrationAuthsConnectionEdge = {\n  __typename?: 'QueryIntegrationAuthsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: IntegrationAuth;\n};\n\nexport type QueryIntegrationsConnection = {\n  __typename?: 'QueryIntegrationsConnection';\n  edges: Array<QueryIntegrationsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryIntegrationsConnectionEdge = {\n  __typename?: 'QueryIntegrationsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Integration;\n};\n\nexport type QueryNotificationDeliveriesConnection = {\n  __typename?: 'QueryNotificationDeliveriesConnection';\n  edges: Array<QueryNotificationDeliveriesConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryNotificationDeliveriesConnectionEdge = {\n  __typename?: 'QueryNotificationDeliveriesConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: NotificationDelivery;\n};\n\nexport type QueryNotificationInstancesConnection = {\n  __typename?: 'QueryNotificationInstancesConnection';\n  edges: Array<QueryNotificationInstancesConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryNotificationInstancesConnectionEdge = {\n  __typename?: 'QueryNotificationInstancesConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: NotificationInstance;\n};\n\nexport type QueryObservabilityDashboardsConnection = {\n  __typename?: 'QueryObservabilityDashboardsConnection';\n  edges: Array<QueryObservabilityDashboardsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryObservabilityDashboardsConnectionEdge = {\n  __typename?: 'QueryObservabilityDashboardsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: ObservabilityDashboard;\n};\n\nexport type QueryPasskeysConnection = {\n  __typename?: 'QueryPasskeysConnection';\n  edges: Array<QueryPasskeysConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryPasskeysConnectionEdge = {\n  __typename?: 'QueryPasskeysConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Passkey;\n};\n\nexport type QueryProjectTokensConnection = {\n  __typename?: 'QueryProjectTokensConnection';\n  edges: Array<QueryProjectTokensConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryProjectTokensConnectionEdge = {\n  __typename?: 'QueryProjectTokensConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: ProjectToken;\n};\n\nexport type QueryProjectsConnection = {\n  __typename?: 'QueryProjectsConnection';\n  edges: Array<QueryProjectsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryProjectsConnectionEdge = {\n  __typename?: 'QueryProjectsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Project;\n};\n\nexport type QuerySandboxesConnection = {\n  __typename?: 'QuerySandboxesConnection';\n  edges: Array<QuerySandboxesConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QuerySandboxesConnectionEdge = {\n  __typename?: 'QuerySandboxesConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Sandbox;\n};\n\nexport type QuerySearchTemplatesConnection = {\n  __typename?: 'QuerySearchTemplatesConnection';\n  edges: Array<QuerySearchTemplatesConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QuerySearchTemplatesConnectionEdge = {\n  __typename?: 'QuerySearchTemplatesConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Template;\n};\n\nexport type QuerySessionsConnection = {\n  __typename?: 'QuerySessionsConnection';\n  edges: Array<QuerySessionsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QuerySessionsConnectionEdge = {\n  __typename?: 'QuerySessionsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Session;\n};\n\nexport type QuerySshPublicKeysConnection = {\n  __typename?: 'QuerySshPublicKeysConnection';\n  edges: Array<QuerySshPublicKeysConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QuerySshPublicKeysConnectionEdge = {\n  __typename?: 'QuerySshPublicKeysConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: SshPublicKey;\n};\n\nexport type QueryTeamTemplatesConnection = {\n  __typename?: 'QueryTeamTemplatesConnection';\n  edges: Array<QueryTeamTemplatesConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryTeamTemplatesConnectionEdge = {\n  __typename?: 'QueryTeamTemplatesConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Template;\n};\n\nexport type QueryTemplateSearchConnection = {\n  __typename?: 'QueryTemplateSearchConnection';\n  edges: Array<QueryTemplateSearchConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryTemplateSearchConnectionEdge = {\n  __typename?: 'QueryTemplateSearchConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: TemplateSearchResult;\n};\n\nexport type QueryTemplatesConnection = {\n  __typename?: 'QueryTemplatesConnection';\n  edges: Array<QueryTemplatesConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryTemplatesConnectionEdge = {\n  __typename?: 'QueryTemplatesConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Template;\n};\n\nexport type QueryTrustedDomainsConnection = {\n  __typename?: 'QueryTrustedDomainsConnection';\n  edges: Array<QueryTrustedDomainsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryTrustedDomainsConnectionEdge = {\n  __typename?: 'QueryTrustedDomainsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: TrustedDomain;\n};\n\nexport type QueryUnifiedWithdrawalsV2Connection = {\n  __typename?: 'QueryUnifiedWithdrawalsV2Connection';\n  edges: Array<QueryUnifiedWithdrawalsV2ConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryUnifiedWithdrawalsV2ConnectionEdge = {\n  __typename?: 'QueryUnifiedWithdrawalsV2ConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: UnifiedWithdrawal;\n};\n\nexport type QueryUserTemplatesConnection = {\n  __typename?: 'QueryUserTemplatesConnection';\n  edges: Array<QueryUserTemplatesConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryUserTemplatesConnectionEdge = {\n  __typename?: 'QueryUserTemplatesConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Template;\n};\n\nexport type QueryUsersConnection = {\n  __typename?: 'QueryUsersConnection';\n  edges: Array<QueryUsersConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryUsersConnectionEdge = {\n  __typename?: 'QueryUsersConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: User;\n};\n\nexport type QueryWorkspaceIdentityProvidersConnection = {\n  __typename?: 'QueryWorkspaceIdentityProvidersConnection';\n  edges: Array<QueryWorkspaceIdentityProvidersConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryWorkspaceIdentityProvidersConnectionEdge = {\n  __typename?: 'QueryWorkspaceIdentityProvidersConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: WorkspaceIdentityProvider;\n};\n\nexport type QueryWorkspaceTemplatesConnection = {\n  __typename?: 'QueryWorkspaceTemplatesConnection';\n  edges: Array<QueryWorkspaceTemplatesConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryWorkspaceTemplatesConnectionEdge = {\n  __typename?: 'QueryWorkspaceTemplatesConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Template;\n};\n\nexport type QueryWorkspacesConnection = {\n  __typename?: 'QueryWorkspacesConnection';\n  edges: Array<QueryWorkspacesConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type QueryWorkspacesConnectionEdge = {\n  __typename?: 'QueryWorkspacesConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Workspace;\n};\n\nexport type RadarAction =\n  | 'ALLOW'\n  | 'BAN'\n  | 'BLOCK'\n  | 'RESTRICT'\n  | 'REVIEW';\n\nexport type RadarActionResult = {\n  __typename?: 'RadarActionResult';\n  workflowId?: Maybe<Scalars['String']['output']>;\n};\n\nexport type RadarAttributeDefinition = {\n  __typename?: 'RadarAttributeDefinition';\n  description: Scalars['String']['output'];\n  name: Scalars['String']['output'];\n  type: Scalars['String']['output'];\n};\n\nexport type RadarEvent = Node & {\n  __typename?: 'RadarEvent';\n  attributes: Scalars['JSON']['output'];\n  createdAt: Scalars['DateTime']['output'];\n  deployment?: Maybe<Deployment>;\n  deploymentId?: Maybe<Scalars['String']['output']>;\n  environment?: Maybe<Environment>;\n  environmentId?: Maybe<Scalars['String']['output']>;\n  id: Scalars['ID']['output'];\n  note?: Maybe<Scalars['String']['output']>;\n  project?: Maybe<Project>;\n  projectId?: Maybe<Scalars['String']['output']>;\n  reviewedAt?: Maybe<Scalars['DateTime']['output']>;\n  reviewedBy?: Maybe<RadarEventUser>;\n  reviewedById?: Maybe<Scalars['String']['output']>;\n  rule: RadarRule;\n  ruleId: Scalars['String']['output'];\n  service?: Maybe<Service>;\n  serviceId?: Maybe<Scalars['String']['output']>;\n  status: RadarEventStatus;\n  updatedAt: Scalars['DateTime']['output'];\n  user?: Maybe<RadarEventUser>;\n  userId?: Maybe<Scalars['String']['output']>;\n  workspace: Workspace;\n  workspaceId: Scalars['String']['output'];\n};\n\nexport type RadarEventStatus =\n  | 'BANNED'\n  | 'BLOCKED'\n  | 'PENDING_REVIEW'\n  | 'RESTRICTED'\n  | 'SKIPPED';\n\nexport type RadarEventUser = {\n  __typename?: 'RadarEventUser';\n  avatar?: Maybe<Scalars['String']['output']>;\n  email: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  name?: Maybe<Scalars['String']['output']>;\n};\n\nexport type RadarList = Node & {\n  __typename?: 'RadarList';\n  createdAt: Scalars['DateTime']['output'];\n  description?: Maybe<Scalars['String']['output']>;\n  id: Scalars['ID']['output'];\n  items: Array<Scalars['String']['output']>;\n  name: Scalars['String']['output'];\n  updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type RadarListUpsertInput = {\n  description?: InputMaybe<Scalars['String']['input']>;\n  id?: InputMaybe<Scalars['String']['input']>;\n  items: Array<Scalars['String']['input']>;\n  name: Scalars['String']['input'];\n};\n\nexport type RadarMatchedRule = {\n  __typename?: 'RadarMatchedRule';\n  action: Scalars['String']['output'];\n  ruleId: Scalars['String']['output'];\n  ruleName: Scalars['String']['output'];\n};\n\nexport type RadarMode =\n  | 'AUTO'\n  | 'MANUAL';\n\nexport type RadarRule = Node & {\n  __typename?: 'RadarRule';\n  action: RadarAction;\n  actionReason?: Maybe<Scalars['String']['output']>;\n  condition: Scalars['JSON']['output'];\n  createdAt: Scalars['DateTime']['output'];\n  description?: Maybe<Scalars['String']['output']>;\n  enabled: Scalars['Boolean']['output'];\n  id: Scalars['ID']['output'];\n  mode: RadarMode;\n  name: Scalars['String']['output'];\n  priority: Scalars['Int']['output'];\n  restrictionType?: Maybe<RestrictionType>;\n  updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type RadarRuleUpsertInput = {\n  action: RadarAction;\n  actionReason?: InputMaybe<Scalars['String']['input']>;\n  condition: Scalars['JSON']['input'];\n  description?: InputMaybe<Scalars['String']['input']>;\n  enabled: Scalars['Boolean']['input'];\n  id?: InputMaybe<Scalars['String']['input']>;\n  mode: RadarMode;\n  name: Scalars['String']['input'];\n  priority: Scalars['Int']['input'];\n  restrictionType?: InputMaybe<RestrictionType>;\n};\n\nexport type RadarScanMatch = {\n  __typename?: 'RadarScanMatch';\n  attributes: Scalars['JSON']['output'];\n  banReason?: Maybe<Scalars['String']['output']>;\n  candidateId: Scalars['String']['output'];\n  environmentId?: Maybe<Scalars['String']['output']>;\n  isRestricted: Scalars['Boolean']['output'];\n  matchedRules: Array<RadarMatchedRule>;\n  projectId?: Maybe<Scalars['String']['output']>;\n  projectName?: Maybe<Scalars['String']['output']>;\n  serviceId?: Maybe<Scalars['String']['output']>;\n  serviceName?: Maybe<Scalars['String']['output']>;\n  sourceImage?: Maybe<Scalars['String']['output']>;\n  sourceRepo?: Maybe<Scalars['String']['output']>;\n  verdict: Scalars['String']['output'];\n  workspaceId: Scalars['String']['output'];\n  workspaceName?: Maybe<Scalars['String']['output']>;\n};\n\nexport type RadarScanMatchesResult = {\n  __typename?: 'RadarScanMatchesResult';\n  hasMore: Scalars['Boolean']['output'];\n  matches: Array<RadarScanMatch>;\n  totalCount: Scalars['Int']['output'];\n};\n\nexport type RadarScanStatus = {\n  __typename?: 'RadarScanStatus';\n  appliedCount: Scalars['Int']['output'];\n  appliedFailedCount: Scalars['Int']['output'];\n  appliedSkippedCount: Scalars['Int']['output'];\n  bannedMatchCount: Scalars['Int']['output'];\n  candidatesEvaluated: Scalars['Int']['output'];\n  completedAt?: Maybe<Scalars['String']['output']>;\n  matchCount: Scalars['Int']['output'];\n  matchesCapped: Scalars['Boolean']['output'];\n  scanType?: Maybe<Scalars['String']['output']>;\n  startedAt?: Maybe<Scalars['String']['output']>;\n  status: Scalars['String']['output'];\n  timeRangeEnd?: Maybe<Scalars['String']['output']>;\n  timeRangeStart?: Maybe<Scalars['String']['output']>;\n};\n\nexport type RadarScanType =\n  | 'SERVICE'\n  | 'WORKSPACE';\n\nexport type RailwayDomain = {\n  __typename?: 'RailwayDomain';\n  autoRenewEnabled: Scalars['Boolean']['output'];\n  connectedServiceInstances: Array<ConnectedServiceInstance>;\n  createdAt: Scalars['DateTime']['output'];\n  domain: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  isRefundable: Scalars['Boolean']['output'];\n  isTransferEligible: Scalars['Boolean']['output'];\n  /** Authoritative nameservers currently delegated for this domain at the registrar. */\n  nameservers: RailwayDomainNameservers;\n  nextBillingDate?: Maybe<Scalars['DateTime']['output']>;\n  purchasePrice: Scalars['Int']['output'];\n  registrationYears: Scalars['Int']['output'];\n  renewalPrice: Scalars['Int']['output'];\n  status: RailwayDomainStatus;\n  stripeStatus?: Maybe<SubscriptionState>;\n  stripeSubscriptionId?: Maybe<Scalars['String']['output']>;\n  transferEligibleAt: Scalars['DateTime']['output'];\n  workspaceId: Scalars['String']['output'];\n  workspaceName?: Maybe<Scalars['String']['output']>;\n};\n\nexport type RailwayDomainCancelPurchaseInput = {\n  railwayDomainId: Scalars['String']['input'];\n};\n\nexport type RailwayDomainCompletePurchaseInput = {\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  projectId?: InputMaybe<Scalars['String']['input']>;\n  railwayDomainId: Scalars['String']['input'];\n  serviceId?: InputMaybe<Scalars['String']['input']>;\n  targetPort?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type RailwayDomainDnsRecord = {\n  __typename?: 'RailwayDomainDnsRecord';\n  answer: Scalars['String']['output'];\n  domainName: Scalars['String']['output'];\n  fqdn: Scalars['String']['output'];\n  host: Scalars['String']['output'];\n  id: Scalars['Int']['output'];\n  priority?: Maybe<Scalars['Int']['output']>;\n  ttl: Scalars['Int']['output'];\n  type: RailwayDomainDnsRecordType;\n};\n\nexport type RailwayDomainDnsRecordCreateInput = {\n  answer: Scalars['String']['input'];\n  domain: Scalars['String']['input'];\n  host: Scalars['String']['input'];\n  priority?: InputMaybe<Scalars['Int']['input']>;\n  ttl?: InputMaybe<Scalars['Int']['input']>;\n  type: RailwayDomainDnsRecordType;\n  workspaceId: Scalars['String']['input'];\n};\n\nexport type RailwayDomainDnsRecordDeleteInput = {\n  domain: Scalars['String']['input'];\n  recordId: Scalars['Int']['input'];\n  workspaceId: Scalars['String']['input'];\n};\n\nexport type RailwayDomainDnsRecordType =\n  | 'A'\n  | 'AAAA'\n  | 'ANAME'\n  | 'CNAME'\n  | 'MX'\n  | 'NS'\n  | 'SRV'\n  | 'TXT';\n\nexport type RailwayDomainDnsRecordUpdateInput = {\n  answer: Scalars['String']['input'];\n  domain: Scalars['String']['input'];\n  host: Scalars['String']['input'];\n  priority?: InputMaybe<Scalars['Int']['input']>;\n  recordId: Scalars['Int']['input'];\n  ttl?: InputMaybe<Scalars['Int']['input']>;\n  type: RailwayDomainDnsRecordType;\n  workspaceId: Scalars['String']['input'];\n};\n\nexport type RailwayDomainInitiateTransferOutInput = {\n  id: Scalars['String']['input'];\n};\n\nexport type RailwayDomainNameservers = {\n  __typename?: 'RailwayDomainNameservers';\n  /** True when the domain is delegated to Name.com's nameservers (Railway-managed DNS). */\n  isDefault: Scalars['Boolean']['output'];\n  nameservers: Array<Scalars['String']['output']>;\n};\n\nexport type RailwayDomainNameserversSetInput = {\n  id: Scalars['String']['input'];\n  /** Hostnames of the nameservers to delegate to (2-13). Pass an empty list to reset to Name.com's account-level defaults for this domain. */\n  nameservers: Array<Scalars['String']['input']>;\n};\n\nexport type RailwayDomainPurchaseInput = {\n  domain: Scalars['String']['input'];\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  paymentMethodId?: InputMaybe<Scalars['String']['input']>;\n  projectId?: InputMaybe<Scalars['String']['input']>;\n  purchasePrice: Scalars['Float']['input'];\n  serviceId?: InputMaybe<Scalars['String']['input']>;\n  targetPort?: InputMaybe<Scalars['Int']['input']>;\n  workspaceId: Scalars['String']['input'];\n  years?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type RailwayDomainPurchaseResult = {\n  __typename?: 'RailwayDomainPurchaseResult';\n  paymentIntentClientSecret?: Maybe<Scalars['String']['output']>;\n  railwayDomainId: Scalars['String']['output'];\n};\n\nexport type RailwayDomainStatus =\n  | 'ACTIVE'\n  | 'EXPIRED'\n  | 'PURCHASING'\n  | 'REFUNDED';\n\nexport type RailwayDomainTransferOutResult = {\n  __typename?: 'RailwayDomainTransferOutResult';\n  authCode: Scalars['String']['output'];\n};\n\nexport type RailwayDomainUpdateInput = {\n  autoRenewEnabled?: InputMaybe<Scalars['Boolean']['input']>;\n  id: Scalars['String']['input'];\n};\n\nexport type RecoveryCodeValidateInput = {\n  code: Scalars['String']['input'];\n  twoFactorLinkingKey?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type RecoveryCodes = {\n  __typename?: 'RecoveryCodes';\n  recoveryCodes: Array<Scalars['String']['output']>;\n};\n\nexport type RedisKey = {\n  __typename?: 'RedisKey';\n  name: Scalars['String']['output'];\n  ttl?: Maybe<Scalars['BigInt']['output']>;\n  type: Scalars['String']['output'];\n};\n\nexport type RedisScanKeys = {\n  __typename?: 'RedisScanKeys';\n  count: Scalars['Int']['output'];\n  cursor: Scalars['Int']['output'];\n  keys: Array<RedisKey>;\n};\n\nexport type ReferralInfo = Node & {\n  __typename?: 'ReferralInfo';\n  code: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  referralStats: ReferralStats;\n  status: Scalars['String']['output'];\n};\n\nexport type ReferralInfoUpdateInput = {\n  code: Scalars['String']['input'];\n  workspaceId: Scalars['String']['input'];\n};\n\nexport type ReferralStats = {\n  __typename?: 'ReferralStats';\n  credited: Scalars['Int']['output'];\n  pending: Scalars['Int']['output'];\n};\n\nexport type ReferralStatus =\n  | 'REFEREE_CREDITED'\n  | 'REFERRER_CREDITED'\n  | 'REGISTERED';\n\nexport type ReferralUser = {\n  __typename?: 'ReferralUser';\n  code: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  status: ReferralStatus;\n};\n\nexport type RefreshGithubReposCacheResult = {\n  __typename?: 'RefreshGithubReposCacheResult';\n  jobId?: Maybe<Scalars['String']['output']>;\n};\n\nexport type RefundFormInput = {\n  message: Scalars['String']['input'];\n  stripeInvoiceId: Scalars['String']['input'];\n  workspaceId: Scalars['String']['input'];\n};\n\nexport type RefundRequest = Node & {\n  __typename?: 'RefundRequest';\n  amount: Scalars['Int']['output'];\n  decision?: Maybe<RefundRequestDecisionEnum>;\n  id: Scalars['ID']['output'];\n  invoiceId: Scalars['String']['output'];\n  plainThreadId?: Maybe<Scalars['String']['output']>;\n  reason: Scalars['String']['output'];\n  userId?: Maybe<Scalars['String']['output']>;\n  workspace: Workspace;\n};\n\n/** Possible decisions for a RefundRequest */\nexport type RefundRequestDecisionEnum =\n  | 'AUTO_REFUNDED'\n  | 'AUTO_REJECTED'\n  | 'MANUALLY_REFUNDED';\n\nexport type Region = {\n  __typename?: 'Region';\n  /** Region country */\n  country: Scalars['String']['output'];\n  deploymentConstraints?: Maybe<RegionDeploymentConstraints>;\n  /** Region ID (airport code) */\n  id?: Maybe<Scalars['String']['output']>;\n  location: Scalars['String']['output'];\n  name: Scalars['String']['output'];\n  region?: Maybe<Scalars['String']['output']>;\n  workspaceId?: Maybe<Scalars['String']['output']>;\n};\n\nexport type RegionDeploymentConstraints = {\n  __typename?: 'RegionDeploymentConstraints';\n  /** Deprecation information for the region */\n  deprecationInfo?: Maybe<RegionDeprecationInfo>;\n};\n\nexport type RegionDeprecationInfo = {\n  __typename?: 'RegionDeprecationInfo';\n  /** Specifies if the region is deprecated */\n  isDeprecated: Scalars['Boolean']['output'];\n  /** Replacement region for the deprecated region */\n  replacementRegion: Scalars['String']['output'];\n};\n\nexport type RegistrationStatus =\n  | 'ONBOARDED'\n  | 'REGISTERED'\n  | 'WAITLISTED';\n\n/** Private Docker registry credentials. Only available for Pro plan deployments. */\nexport type RegistryCredentialsInput = {\n  password: Scalars['String']['input'];\n  username: Scalars['String']['input'];\n};\n\nexport type ReissueInvoiceInput = {\n  stripeInvoiceId: Scalars['String']['input'];\n  workspaceId: Scalars['String']['input'];\n};\n\nexport type ReissuedInvoice = Node & {\n  __typename?: 'ReissuedInvoice';\n  id: Scalars['ID']['output'];\n  originalInvoiceId: Scalars['String']['output'];\n  reissuedInvoiceId?: Maybe<Scalars['String']['output']>;\n  workspace: Workspace;\n  workspaceId: Scalars['String']['output'];\n};\n\nexport type RemoveServiceInstanceLimitOverrideInput = {\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\nexport type ReplicateVolumeInstanceSnapshotStatus =\n  | 'COMPLETED'\n  | 'FAILED'\n  | 'INITIATED'\n  | 'TRANSFERRING'\n  | 'UNRECOGNIZED';\n\n/** The status of a volume instance replication */\nexport type ReplicateVolumeInstanceStatus =\n  | 'COMPLETED'\n  | 'ERROR'\n  | 'QUEUED'\n  | 'TRANSFERRING_OFFLINE'\n  | 'TRANSFERRING_ONLINE';\n\nexport type RepoAnalysis = {\n  __typename?: 'RepoAnalysis';\n  monorepo?: Maybe<RepoAnalysisMonorepoInfo>;\n  services: Array<RepoAnalysisDiscoveredService>;\n};\n\nexport type RepoAnalysisBuild =\n  | 'FROM_IMAGE'\n  | 'FROM_SOURCE';\n\nexport type RepoAnalysisBuildConfig = {\n  __typename?: 'RepoAnalysisBuildConfig';\n  dockerfilePath?: Maybe<Scalars['String']['output']>;\n};\n\nexport type RepoAnalysisConfigRef = {\n  __typename?: 'RepoAnalysisConfigRef';\n  path: Scalars['String']['output'];\n  type: Scalars['String']['output'];\n};\n\nexport type RepoAnalysisDiscoveredService = {\n  __typename?: 'RepoAnalysisDiscoveredService';\n  /** @deprecated Use source.image to determine build type */\n  build: RepoAnalysisBuild;\n  buildCommand?: Maybe<Scalars['String']['output']>;\n  buildConfig?: Maybe<RepoAnalysisBuildConfig>;\n  /** @deprecated Use source.rootDirectory instead */\n  buildPath: Scalars['String']['output'];\n  configs: Array<RepoAnalysisConfigRef>;\n  dir?: Maybe<Scalars['String']['output']>;\n  healthcheckPath?: Maybe<Scalars['String']['output']>;\n  /** @deprecated Use source.image instead */\n  image: Scalars['String']['output'];\n  name: Scalars['String']['output'];\n  network: RepoAnalysisNetwork;\n  preDeployCommand?: Maybe<Scalars['String']['output']>;\n  region?: Maybe<Scalars['String']['output']>;\n  replicas?: Maybe<Scalars['Int']['output']>;\n  resources?: Maybe<RepoAnalysisResourceLimits>;\n  restartPolicy?: Maybe<RepoAnalysisRestartPolicy>;\n  runtime: RepoAnalysisRuntime;\n  schedule?: Maybe<Scalars['String']['output']>;\n  source?: Maybe<RepoAnalysisServiceSource>;\n  startCommand?: Maybe<Scalars['String']['output']>;\n  variables: Array<RepoAnalysisEnvVariable>;\n  volumes: Array<RepoAnalysisVolume>;\n};\n\nexport type RepoAnalysisEnvType =\n  | 'BOOLEAN'\n  | 'NUMERIC'\n  | 'SECRET'\n  | 'STRING'\n  | 'URL'\n  | 'UUID';\n\nexport type RepoAnalysisEnvVariable = {\n  __typename?: 'RepoAnalysisEnvVariable';\n  confidence: Scalars['Int']['output'];\n  name: Scalars['String']['output'];\n  secretMetadata?: Maybe<RepoAnalysisSecretMetadata>;\n  sensitive: Scalars['Boolean']['output'];\n  source: RepoAnalysisConfigRef;\n  type: RepoAnalysisEnvType;\n  useCase: RepoAnalysisUseCase;\n  value: Scalars['String']['output'];\n};\n\nexport type RepoAnalysisMonorepoInfo = {\n  __typename?: 'RepoAnalysisMonorepoInfo';\n  configs: Array<RepoAnalysisConfigRef>;\n  services: Scalars['RepoAnalysisMonorepoServices']['output'];\n  tool?: Maybe<RepoAnalysisMonorepoTool>;\n  type: RepoAnalysisMonorepoType;\n};\n\nexport type RepoAnalysisMonorepoServiceMeta = {\n  __typename?: 'RepoAnalysisMonorepoServiceMeta';\n  buildCommand?: Maybe<Scalars['String']['output']>;\n  packageName?: Maybe<Scalars['String']['output']>;\n  startCommand?: Maybe<Scalars['String']['output']>;\n  watchPatterns?: Maybe<Array<Scalars['String']['output']>>;\n};\n\nexport type RepoAnalysisMonorepoTool =\n  | 'nx'\n  | 'turborepo';\n\nexport type RepoAnalysisMonorepoType =\n  | 'bun'\n  | 'npm'\n  | 'pnpm'\n  | 'yarn';\n\nexport type RepoAnalysisNetwork =\n  | 'NONE'\n  | 'PRIVATE'\n  | 'PUBLIC';\n\nexport type RepoAnalysisResourceLimits = {\n  __typename?: 'RepoAnalysisResourceLimits';\n  cpus?: Maybe<Scalars['Float']['output']>;\n  memoryMB?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type RepoAnalysisRestartPolicy = {\n  __typename?: 'RepoAnalysisRestartPolicy';\n  maxRetries?: Maybe<Scalars['Int']['output']>;\n  type: RepoAnalysisRestartPolicyType;\n};\n\nexport type RepoAnalysisRestartPolicyType =\n  | 'ALWAYS'\n  | 'NEVER'\n  | 'ON_FAILURE';\n\nexport type RepoAnalysisRuntime =\n  | 'CONTINUOUS'\n  | 'SCHEDULED';\n\nexport type RepoAnalysisSecretAlphabet =\n  | 'ALPHANUMERIC'\n  | 'BASE64'\n  | 'HEX'\n  | 'UNKNOWN';\n\nexport type RepoAnalysisSecretMetadata = {\n  __typename?: 'RepoAnalysisSecretMetadata';\n  alphabet: RepoAnalysisSecretAlphabet;\n  length: Scalars['Int']['output'];\n};\n\nexport type RepoAnalysisServiceSource = {\n  __typename?: 'RepoAnalysisServiceSource';\n  branch?: Maybe<Scalars['String']['output']>;\n  commitSha?: Maybe<Scalars['String']['output']>;\n  image?: Maybe<Scalars['String']['output']>;\n  provider?: Maybe<RepoAnalysisSourceProvider>;\n  repo?: Maybe<Scalars['String']['output']>;\n  rootDirectory?: Maybe<Scalars['String']['output']>;\n};\n\nexport type RepoAnalysisSourceProvider =\n  | 'GITHUB'\n  | 'GITLAB';\n\nexport type RepoAnalysisUseCase =\n  | 'API_KEY'\n  | 'AUTH'\n  | 'DATABASE'\n  | 'ENCRYPTION'\n  | 'OBSERVABILITY'\n  | 'SERVICE'\n  | 'UNKNOWN';\n\nexport type RepoAnalysisVolume = {\n  __typename?: 'RepoAnalysisVolume';\n  mountPath: Scalars['String']['output'];\n  sizeMB?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type ResetPluginCredentialsInput = {\n  environmentId: Scalars['String']['input'];\n};\n\nexport type ResetPluginInput = {\n  environmentId: Scalars['String']['input'];\n};\n\nexport type ResolveBanAppealInput = {\n  appealId: Scalars['String']['input'];\n  resolutionNote: Scalars['String']['input'];\n  resolvedByUserId?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type ResourceAccess = {\n  __typename?: 'ResourceAccess';\n  deployment: AccessRule;\n  project: AccessRule;\n};\n\nexport type ResourceOwnerType =\n  | 'WORKSPACE';\n\nexport type RestartPolicyType =\n  | 'ALWAYS'\n  | 'NEVER'\n  | 'ON_FAILURE';\n\nexport type RestrictionStatus =\n  | 'ACTIVE'\n  | 'LIFTED'\n  | 'SUPERSEDED';\n\nexport type RestrictionType =\n  | 'BAN'\n  | 'FULL'\n  | 'REQUIRE_CARD'\n  | 'THROTTLE';\n\nexport type RiskLevelDetails = {\n  __typename?: 'RiskLevelDetails';\n  compositeScore: CompositeScore;\n  fairUse: Scalars['Boolean']['output'];\n  terms: Scalars['Boolean']['output'];\n};\n\nexport type RoutingRepairResult = {\n  __typename?: 'RoutingRepairResult';\n  message: Scalars['String']['output'];\n  totalItemsFound: Scalars['Int']['output'];\n  workflowId: Scalars['String']['output'];\n  workflowStarted: Scalars['Boolean']['output'];\n};\n\nexport type RuntimeVersion =\n  | 'DOCKER'\n  | 'PODMAN'\n  | 'UNSPECIFIED';\n\nexport type SqlColumnInput = {\n  constraint?: InputMaybe<Scalars['String']['input']>;\n  default?: InputMaybe<Scalars['String']['input']>;\n  name: Scalars['String']['input'];\n  type: Scalars['String']['input'];\n};\n\n/** SQL database extension information */\nexport type SqlExtension = {\n  __typename?: 'SQLExtension';\n  comment?: Maybe<Scalars['String']['output']>;\n  defaultVersion: Scalars['String']['output'];\n  installedVersion?: Maybe<Scalars['String']['output']>;\n  name: Scalars['String']['output'];\n};\n\n/** Result of installing a SQL database extension */\nexport type SqlExtensionInstallResult = {\n  __typename?: 'SQLExtensionInstallResult';\n  installedDependencies: Array<Scalars['String']['output']>;\n  success: Scalars['Boolean']['output'];\n};\n\n/** Field metadata for SQL query results */\nexport type SqlFieldInfo = {\n  __typename?: 'SQLFieldInfo';\n  columnID?: Maybe<Scalars['Int']['output']>;\n  dataTypeID?: Maybe<Scalars['Int']['output']>;\n  dataTypeModifier?: Maybe<Scalars['Int']['output']>;\n  dataTypeSize?: Maybe<Scalars['Int']['output']>;\n  format?: Maybe<Scalars['String']['output']>;\n  name: Scalars['String']['output'];\n  tableName?: Maybe<Scalars['String']['output']>;\n};\n\n/** Response returned after running a raw query */\nexport type SqlRawQueryResponse = {\n  __typename?: 'SQLRawQueryResponse';\n  fields: Array<SqlFieldInfo>;\n  rowCount: Scalars['Int']['output'];\n  rows: Array<Scalars['JSON']['output']>;\n};\n\nexport type SqlRowInput = {\n  name: Scalars['String']['input'];\n  value: Scalars['String']['input'];\n};\n\nexport type SqlTable = {\n  __typename?: 'SQLTable';\n  columnNames: Array<Scalars['String']['output']>;\n  columnTypes: Array<Scalars['Int']['output']>;\n  name: Scalars['String']['output'];\n  primaryKey: Scalars['String']['output'];\n  rows: Array<Scalars['JSON']['output']>;\n  totalRows: Scalars['Int']['output'];\n};\n\nexport type Sandbox = {\n  __typename?: 'Sandbox';\n  createdAt: Scalars['DateTime']['output'];\n  environmentId: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  idleTimeoutMinutes?: Maybe<Scalars['Int']['output']>;\n  region: Scalars['String']['output'];\n  status: SandboxStatus;\n};\n\nexport type SandboxCreateInput = {\n  environmentId: Scalars['String']['input'];\n  idleTimeoutMinutes?: InputMaybe<Scalars['Int']['input']>;\n  template?: InputMaybe<SandboxTemplateInput>;\n};\n\nexport type SandboxExecResult = {\n  __typename?: 'SandboxExecResult';\n  exitCode: Scalars['Int']['output'];\n  stderr: Scalars['String']['output'];\n  stdout: Scalars['String']['output'];\n  timedOut: Scalars['Boolean']['output'];\n  truncated: Scalars['Boolean']['output'];\n};\n\nexport type SandboxStatus =\n  | 'CREATING'\n  | 'DESTROYED'\n  | 'DESTROYING'\n  | 'FAILED'\n  | 'RUNNING';\n\nexport type SandboxTemplate = {\n  __typename?: 'SandboxTemplate';\n  environmentId: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  status: SandboxTemplateStatus;\n};\n\nexport type SandboxTemplateInput = {\n  baseImageDigest?: InputMaybe<Scalars['String']['input']>;\n  instructions: Array<Scalars['String']['input']>;\n};\n\nexport type SandboxTemplateStatus =\n  | 'BUILDING'\n  | 'FAILED'\n  | 'PENDING'\n  | 'READY';\n\nexport type SendBountyWonEmailInput = {\n  bountyAmount: Scalars['Float']['input'];\n  threadTitle: Scalars['String']['input'];\n  threadUrl: Scalars['String']['input'];\n  userId: Scalars['String']['input'];\n  workspaceName: Scalars['String']['input'];\n};\n\nexport type SendCommunityThreadNotificationEmailInput = {\n  postEntryContent?: InputMaybe<Scalars['String']['input']>;\n  threadTitle: Scalars['String']['input'];\n  threadUrl: Scalars['String']['input'];\n  userIds: Array<Scalars['String']['input']>;\n};\n\nexport type SendCommunityWelcomeEmailInput = {\n  userId: Scalars['String']['input'];\n};\n\nexport type SendNewBountyEmailInput = {\n  threadTitle: Scalars['String']['input'];\n  threadUrl: Scalars['String']['input'];\n  userIds: Array<Scalars['String']['input']>;\n};\n\nexport type SendQuestionMovedToBountyEmailInput = {\n  threadTitle: Scalars['String']['input'];\n  threadUrl: Scalars['String']['input'];\n  userId: Scalars['String']['input'];\n};\n\nexport type SendTemplateQueueEmailInput = {\n  templateId: Scalars['String']['input'];\n  threadTitle: Scalars['String']['input'];\n  threadUrl: Scalars['String']['input'];\n};\n\nexport type SendTemplateQueueReminderEmailInput = {\n  templateId: Scalars['String']['input'];\n};\n\nexport type Service = Node & {\n  __typename?: 'Service';\n  createdAt: Scalars['DateTime']['output'];\n  deletedAt?: Maybe<Scalars['DateTime']['output']>;\n  /** @deprecated Use environment.deployments for properly scoped access control */\n  deployments: ServiceDeploymentsConnection;\n  featureFlags: Array<ActiveServiceFeatureFlag>;\n  groupId?: Maybe<Scalars['String']['output']>;\n  /** Whether this service has hidden registry credentials from a template. When true, the credentials are stored in the template and used during deployment. */\n  hasHiddenRegistryCredentialsFromTemplate: Scalars['Boolean']['output'];\n  icon?: Maybe<Scalars['String']['output']>;\n  id: Scalars['ID']['output'];\n  name: Scalars['String']['output'];\n  parentServiceId?: Maybe<Scalars['String']['output']>;\n  project: Project;\n  projectId: Scalars['String']['output'];\n  repoTriggers: ServiceRepoTriggersConnection;\n  /** @deprecated Use environment.serviceInstances for properly scoped access control */\n  serviceInstances: ServiceServiceInstancesConnection;\n  templateId?: Maybe<Scalars['String']['output']>;\n  templateServiceId?: Maybe<Scalars['String']['output']>;\n  templateThreadSlug?: Maybe<Scalars['String']['output']>;\n  updatedAt: Scalars['DateTime']['output'];\n};\n\n\nexport type ServiceDeploymentsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type ServiceRepoTriggersArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type ServiceServiceInstancesArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type ServiceBackupInfo = {\n  __typename?: 'ServiceBackupInfo';\n  /** List of enabled backup schedule kinds (DAILY, WEEKLY, MONTHLY) */\n  schedules: Array<VolumeInstanceBackupScheduleKind>;\n  serviceId: Scalars['String']['output'];\n  serviceName: Scalars['String']['output'];\n};\n\nexport type ServiceConnectInput = {\n  /** The branch to connect to. e.g. 'main' */\n  branch?: InputMaybe<Scalars['String']['input']>;\n  /** Name of the Dockerhub or GHCR image to connect this service to. */\n  image?: InputMaybe<Scalars['String']['input']>;\n  /** The full name of the repo to connect to. e.g. 'railwayapp/starters' */\n  repo?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type ServiceCreateInput = {\n  branch?: InputMaybe<Scalars['String']['input']>;\n  /** Environment ID. If the specified environment is a fork, the service will only be created in it. Otherwise it will created in all environments that are not forks of other environments */\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  icon?: InputMaybe<Scalars['String']['input']>;\n  name?: InputMaybe<Scalars['String']['input']>;\n  projectId: Scalars['String']['input'];\n  registryCredentials?: InputMaybe<RegistryCredentialsInput>;\n  source?: InputMaybe<ServiceSourceInput>;\n  /** Template ID. Required when templateServiceId is provided. */\n  templateId?: InputMaybe<Scalars['String']['input']>;\n  /** Template service ID within the template's serializedConfig. Required when templateId is provided. */\n  templateServiceId?: InputMaybe<Scalars['String']['input']>;\n  variables?: InputMaybe<Scalars['EnvironmentVariables']['input']>;\n};\n\nexport type ServiceDeploymentsConnection = {\n  __typename?: 'ServiceDeploymentsConnection';\n  edges: Array<ServiceDeploymentsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type ServiceDeploymentsConnectionEdge = {\n  __typename?: 'ServiceDeploymentsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Deployment;\n};\n\nexport type ServiceDomain = Domain & {\n  __typename?: 'ServiceDomain';\n  adminService?: Maybe<Service>;\n  /** @deprecated Removed; always null. */\n  cdnMode?: Maybe<Scalars['String']['output']>;\n  createdAt?: Maybe<Scalars['DateTime']['output']>;\n  deletedAt?: Maybe<Scalars['DateTime']['output']>;\n  domain: Scalars['String']['output'];\n  edgeId?: Maybe<Scalars['String']['output']>;\n  environmentId: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  newDomainName?: Maybe<Scalars['String']['output']>;\n  newHostLabel?: Maybe<Scalars['String']['output']>;\n  projectId?: Maybe<Scalars['String']['output']>;\n  serviceId: Scalars['String']['output'];\n  suffix?: Maybe<Scalars['String']['output']>;\n  syncStatus: ServiceDomainSyncStatus;\n  targetPort?: Maybe<Scalars['Int']['output']>;\n  updatedAt?: Maybe<Scalars['DateTime']['output']>;\n};\n\nexport type ServiceDomainCreateInput = {\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n  targetPort?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type ServiceDomainSyncStatus =\n  | 'ACTIVE'\n  | 'CREATING'\n  | 'DELETED'\n  | 'DELETING'\n  | 'UNSPECIFIED'\n  | 'UPDATING';\n\nexport type ServiceDomainUpdateInput = {\n  domain: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  serviceDomainId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n  targetPort?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type ServiceFeatureFlagToggleInput = {\n  flag: ActiveServiceFeatureFlag;\n  serviceId: Scalars['String']['input'];\n};\n\n/** Network flow data for a single service */\nexport type ServiceFlowEntry = {\n  __typename?: 'ServiceFlowEntry';\n  /** List of peer connections with their metrics */\n  peers: Array<ServicePeerEntry>;\n  /** The service ID */\n  serviceId: Scalars['String']['output'];\n};\n\nexport type ServiceInstance = Node & {\n  __typename?: 'ServiceInstance';\n  /** All currently active (deployed and running) deployments for this service instance */\n  activeDeployments: Array<Deployment>;\n  buildCommand?: Maybe<Scalars['String']['output']>;\n  builder: Builder;\n  createdAt: Scalars['DateTime']['output'];\n  cronSchedule?: Maybe<Scalars['String']['output']>;\n  deletedAt?: Maybe<Scalars['DateTime']['output']>;\n  dockerfilePath?: Maybe<Scalars['String']['output']>;\n  domains: AllDomains;\n  drainingSeconds?: Maybe<Scalars['Int']['output']>;\n  edgeConfig?: Maybe<EdgeConfig>;\n  environmentId: Scalars['String']['output'];\n  healthcheckPath?: Maybe<Scalars['String']['output']>;\n  healthcheckTimeout?: Maybe<Scalars['Int']['output']>;\n  id: Scalars['ID']['output'];\n  /** Check if a Docker image update is available for this service instance */\n  imageUpdateStatus?: Maybe<Scalars['ImageUpdateStatus']['output']>;\n  ipv6EgressEnabled?: Maybe<Scalars['Boolean']['output']>;\n  isUpdatable: Scalars['Boolean']['output'];\n  /** The most recent deployment for this service instance */\n  latestDeployment?: Maybe<Deployment>;\n  nextCronRunAt?: Maybe<Scalars['DateTime']['output']>;\n  nixpacksPlan?: Maybe<Scalars['JSON']['output']>;\n  numReplicas?: Maybe<Scalars['Int']['output']>;\n  overlapSeconds?: Maybe<Scalars['Int']['output']>;\n  preDeployCommand?: Maybe<Scalars['JSON']['output']>;\n  railpackInfo?: Maybe<Scalars['RailpackInfo']['output']>;\n  railwayConfigFile?: Maybe<Scalars['String']['output']>;\n  region?: Maybe<Scalars['String']['output']>;\n  restartPolicyMaxRetries: Scalars['Int']['output'];\n  restartPolicyType: RestartPolicyType;\n  rootDirectory?: Maybe<Scalars['String']['output']>;\n  service: Service;\n  serviceId: Scalars['String']['output'];\n  serviceName: Scalars['String']['output'];\n  sleepApplication?: Maybe<Scalars['Boolean']['output']>;\n  source?: Maybe<ServiceSource>;\n  startCommand?: Maybe<Scalars['String']['output']>;\n  updatedAt: Scalars['DateTime']['output'];\n  upstreamUrl?: Maybe<Scalars['String']['output']>;\n  watchPatterns: Array<Scalars['String']['output']>;\n};\n\n\nexport type ServiceInstanceImageUpdateStatusArgs = {\n  skipCache?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\nexport type ServiceInstanceAutoDeployStatus = {\n  __typename?: 'ServiceInstanceAutoDeployStatus';\n  canEnable: Scalars['Boolean']['output'];\n  enabled: Scalars['Boolean']['output'];\n  reason?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ServiceInstanceAutoDeployUpdateInput = {\n  enabled: Scalars['Boolean']['input'];\n  environmentId: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\nexport type ServiceInstanceAutoDeployUpdateResult = {\n  __typename?: 'ServiceInstanceAutoDeployUpdateResult';\n  enabled: Scalars['Boolean']['output'];\n};\n\nexport type ServiceInstanceImageUpdateSkipInput = {\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n  shas: Array<Scalars['String']['input']>;\n};\n\nexport type ServiceInstanceLimitsUpdateInput = {\n  environmentId: Scalars['String']['input'];\n  /** Amount of memory in GB to allocate to the service instance */\n  memoryGB?: InputMaybe<Scalars['Float']['input']>;\n  serviceId: Scalars['String']['input'];\n  /** Number of vCPUs to allocate to the service instance */\n  vCPUs?: InputMaybe<Scalars['Float']['input']>;\n};\n\nexport type ServiceInstanceUpdateInput = {\n  buildCommand?: InputMaybe<Scalars['String']['input']>;\n  builder?: InputMaybe<Builder>;\n  cronSchedule?: InputMaybe<Scalars['String']['input']>;\n  dockerfilePath?: InputMaybe<Scalars['String']['input']>;\n  drainingSeconds?: InputMaybe<Scalars['Int']['input']>;\n  healthcheckPath?: InputMaybe<Scalars['String']['input']>;\n  healthcheckTimeout?: InputMaybe<Scalars['Int']['input']>;\n  ipv6EgressEnabled?: InputMaybe<Scalars['Boolean']['input']>;\n  multiRegionConfig?: InputMaybe<Scalars['JSON']['input']>;\n  nixpacksPlan?: InputMaybe<Scalars['JSON']['input']>;\n  numReplicas?: InputMaybe<Scalars['Int']['input']>;\n  overlapSeconds?: InputMaybe<Scalars['Int']['input']>;\n  preDeployCommand?: InputMaybe<Array<Scalars['String']['input']>>;\n  railwayConfigFile?: InputMaybe<Scalars['String']['input']>;\n  region?: InputMaybe<Scalars['String']['input']>;\n  registryCredentials?: InputMaybe<RegistryCredentialsInput>;\n  restartPolicyMaxRetries?: InputMaybe<Scalars['Int']['input']>;\n  restartPolicyType?: InputMaybe<RestartPolicyType>;\n  rootDirectory?: InputMaybe<Scalars['String']['input']>;\n  sleepApplication?: InputMaybe<Scalars['Boolean']['input']>;\n  source?: InputMaybe<ServiceSourceInput>;\n  startCommand?: InputMaybe<Scalars['String']['input']>;\n  watchPatterns?: InputMaybe<Array<Scalars['String']['input']>>;\n};\n\n/** A single peer connection for a service */\nexport type ServicePeerEntry = {\n  __typename?: 'ServicePeerEntry';\n  /** The endpoint key in format '{peer_kind}_{identifier}', e.g. 'service_uuid', 'edge_proxy_dc4', 'internet_global' */\n  endpointKey: Scalars['String']['output'];\n  /** The aggregated metrics for this connection */\n  metrics: ServicePeerMetrics;\n};\n\n/** Aggregated network flow metrics for a service-to-peer connection */\nexport type ServicePeerMetrics = {\n  __typename?: 'ServicePeerMetrics';\n  /** Average egress bytes per second */\n  egressBytesPerSecond: Scalars['Float']['output'];\n  /** Average egress packets per second */\n  egressPacketsPerSecond: Scalars['Float']['output'];\n  /** Average ingress bytes per second */\n  ingressBytesPerSecond: Scalars['Float']['output'];\n  /** Average ingress packets per second */\n  ingressPacketsPerSecond: Scalars['Float']['output'];\n};\n\nexport type ServiceRepoTriggersConnection = {\n  __typename?: 'ServiceRepoTriggersConnection';\n  edges: Array<ServiceRepoTriggersConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type ServiceRepoTriggersConnectionEdge = {\n  __typename?: 'ServiceRepoTriggersConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: DeploymentTrigger;\n};\n\nexport type ServiceServiceInstancesConnection = {\n  __typename?: 'ServiceServiceInstancesConnection';\n  edges: Array<ServiceServiceInstancesConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type ServiceServiceInstancesConnectionEdge = {\n  __typename?: 'ServiceServiceInstancesConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: ServiceInstance;\n};\n\nexport type ServiceSource = {\n  __typename?: 'ServiceSource';\n  image?: Maybe<Scalars['String']['output']>;\n  repo?: Maybe<Scalars['String']['output']>;\n};\n\nexport type ServiceSourceInput = {\n  image?: InputMaybe<Scalars['String']['input']>;\n  repo?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type ServiceStatus = {\n  __typename?: 'ServiceStatus';\n  crashed: Scalars['Int']['output'];\n  online: Scalars['Int']['output'];\n  total: Scalars['Int']['output'];\n};\n\nexport type ServiceSyncStatusItem = {\n  __typename?: 'ServiceSyncStatusItem';\n  name: Scalars['String']['output'];\n  syncStatus: Scalars['String']['output'];\n  type: Scalars['String']['output'];\n};\n\nexport type ServiceUpdateInput = {\n  icon?: InputMaybe<Scalars['String']['input']>;\n  name?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type Session = Node & {\n  __typename?: 'Session';\n  createdAt: Scalars['DateTime']['output'];\n  expiredAt: Scalars['DateTime']['output'];\n  id: Scalars['ID']['output'];\n  isCurrent: Scalars['Boolean']['output'];\n  name: Scalars['String']['output'];\n  type: SessionType;\n  updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type SessionType =\n  | 'BROWSER'\n  | 'CLI'\n  | 'FORUMS';\n\nexport type SetDomainTrafficLimitInput = {\n  limit?: InputMaybe<DomainTrafficLimitInput>;\n  ttlSeconds?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type SetGithubBackpressureConfigInput = {\n  enabled: Scalars['Boolean']['input'];\n  maxConcurrent: Scalars['Int']['input'];\n  plan: GithubBackpressurePlanType;\n};\n\nexport type SetPercentagePlatformFeatureFlagInput = {\n  flag: PlatformFeatureFlag;\n  percentage: Scalars['Int']['input'];\n};\n\nexport type SetServiceInstanceLimitOverrideInput = {\n  config: Scalars['ServiceInstanceLimit']['input'];\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\nexport type SetupAgentEventTrackInput = {\n  agentSessionId?: InputMaybe<Scalars['String']['input']>;\n  arch?: InputMaybe<Scalars['String']['input']>;\n  caller?: InputMaybe<Scalars['String']['input']>;\n  cliVersion?: InputMaybe<Scalars['String']['input']>;\n  configuredClients?: InputMaybe<Array<Scalars['String']['input']>>;\n  errorMessage?: InputMaybe<Scalars['String']['input']>;\n  installRequestId?: InputMaybe<Scalars['String']['input']>;\n  isCi?: InputMaybe<Scalars['Boolean']['input']>;\n  os?: InputMaybe<Scalars['String']['input']>;\n  phase: Scalars['String']['input'];\n  sessionId?: InputMaybe<Scalars['String']['input']>;\n  success?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\nexport type SharedVariableConfigureInput = {\n  disabledServiceIds: Array<Scalars['String']['input']>;\n  enabledServiceIds: Array<Scalars['String']['input']>;\n  environmentId: Scalars['String']['input'];\n  name: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n};\n\nexport type ShellTokenInput = {\n  environmentId: Scalars['String']['input'];\n  instanceId: Scalars['String']['input'];\n  kind?: InputMaybe<Scalars['String']['input']>;\n  scope: Scalars['String']['input'];\n  serviceId?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type SimilarTemplate = {\n  __typename?: 'SimilarTemplate';\n  code: Scalars['String']['output'];\n  createdAt: Scalars['DateTime']['output'];\n  creator?: Maybe<TemplateCreator>;\n  deploys: Scalars['Int']['output'];\n  description?: Maybe<Scalars['String']['output']>;\n  health?: Maybe<Scalars['Float']['output']>;\n  image?: Maybe<Scalars['String']['output']>;\n  name: Scalars['String']['output'];\n  /** @deprecated Use workspaceId */\n  teamId?: Maybe<Scalars['String']['output']>;\n  userId?: Maybe<Scalars['String']['output']>;\n  workspaceId?: Maybe<Scalars['String']['output']>;\n};\n\nexport type SortOrder =\n  | 'asc'\n  | 'desc';\n\nexport type SpendCommitment = Node & {\n  __typename?: 'SpendCommitment';\n  features: Array<Scalars['SpendCommitmentFeatureId']['output']>;\n  id: Scalars['ID']['output'];\n  minSpendAmountCents: Scalars['Int']['output'];\n};\n\nexport type SpendCommitmentCancelInput = {\n  customerId: Scalars['String']['input'];\n};\n\nexport type SshPublicKey = Node & {\n  __typename?: 'SshPublicKey';\n  createdAt: Scalars['DateTime']['output'];\n  fingerprint: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  name: Scalars['String']['output'];\n  publicKey: Scalars['String']['output'];\n  updatedAt: Scalars['DateTime']['output'];\n  userId?: Maybe<Scalars['String']['output']>;\n  workspaceId?: Maybe<Scalars['String']['output']>;\n};\n\nexport type SshPublicKeyCreateInput = {\n  name: Scalars['String']['input'];\n  publicKey: Scalars['String']['input'];\n  workspaceId?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type Stacker = {\n  __typename?: 'Stacker';\n  IP?: Maybe<Scalars['String']['output']>;\n  hostname?: Maybe<Scalars['String']['output']>;\n  id: Scalars['String']['output'];\n  isCordoned: Scalars['Boolean']['output'];\n  region?: Maybe<Scalars['String']['output']>;\n  zone?: Maybe<Scalars['String']['output']>;\n};\n\nexport type StackerStatsProgress = {\n  __typename?: 'StackerStatsProgress';\n  enrichedDeploymentInstances: Array<EnrichedDeploymentInstance>;\n  totalStackerDeploymentInstanceCount: Scalars['Int']['output'];\n};\n\nexport type StackerStatsWorkflowInfo = {\n  __typename?: 'StackerStatsWorkflowInfo';\n  stackerId: Scalars['String']['output'];\n  workflowId: Scalars['String']['output'];\n};\n\nexport type StaleWhileRevalidateConfig = {\n  __typename?: 'StaleWhileRevalidateConfig';\n  enabled: Scalars['Boolean']['output'];\n};\n\nexport type StaleWhileRevalidateInput = {\n  enabled: Scalars['Boolean']['input'];\n};\n\nexport type StripePaymentIntentStatus =\n  | 'requires_action'\n  | 'requires_capture';\n\nexport type StripeSubscriptionStatus =\n  | 'active'\n  | 'incomplete'\n  | 'past_due';\n\nexport type Subscription = {\n  __typename?: 'Subscription';\n  /** Subscribe to updates for a volume's backups */\n  backups: BackupUpdate;\n  /** Stream logs for a build */\n  buildLogs: Array<Log>;\n  /** Invalidate the frontend cache for an environment */\n  canvasInvalidation: InvalidationResult;\n  /** Subscribe to agent response events */\n  chatStream: Array<AgentStreamEvent>;\n  /** Subscribe to updates for a specific deployment */\n  deployment: Deployment;\n  /** Subscribe to deployment events for a specific deployment */\n  deploymentEvents: DeploymentEvent;\n  /** Subscribe to deployment instance executions for a specific deployment */\n  deploymentInstanceExecutions: DeploymentInstanceExecution;\n  /** Stream logs for a deployment */\n  deploymentLogs: Array<Log>;\n  /** Stream logs for a project environment */\n  environmentLogs: Array<Log>;\n  /** Subscribe to real-time progress updates for environment patch applications */\n  environmentPatchProgress: EnvironmentPatchProgress;\n  /** Subscribe to updates for the staged patch for a single environment. */\n  environmentStagedPatch: EnvironmentPatch;\n  /** Stream function code for a prompt */\n  functionGenerate: Array<GenAiTextBlock>;\n  /** Subscribe to GitHub repository cache refresh status */\n  githubRefreshStatus: GithubRefreshStatus;\n  /** Subscribe to GitHub repository cache refresh status with error details */\n  githubRefreshStatusV2: GithubRefreshStatusResult;\n  /** Stream HTTP logs for a deployment */\n  httpLogs: Array<HttpLog>;\n  /** Subscribe to monorepo import status updates */\n  monorepoImportStatus: MonorepoImportStatusUpdate;\n  /** Stream network flow logs for an environment */\n  networkFlowLogs: Array<NetworkFlowLog>;\n  /** Subscribe to notification delivery updates (created and resolved) for the authenticated user */\n  notificationDeliveryUpdated: NotificationDeliveryUpdate;\n  /**\n   * Stream logs for a plugin\n   * @deprecated Plugins are deprecated\n   */\n  pluginLogs: Array<Log>;\n  /** Subscribe to AI-assisted project setup events */\n  projectCreateWithAgentStream: Array<AgentStreamEvent>;\n  /** Subscribe to Railway public stats */\n  publicStats: PublicStatsEvent;\n  /** Fires when a new match is found during a radar scan */\n  radarScanMatchAdded: RadarScanMatch;\n  /** Fires when any radar rule or list is created, updated, or deleted */\n  radarUpdated: Scalars['Boolean']['output'];\n  /** Subscribe to migration progress updates for a volume */\n  replicationProgress: VolumeReplicationProgressUpdate;\n  /** Invalidate the frontend sandbox cache for an environment. */\n  sandboxInvalidation: InvalidationResult;\n  /** Subscribe to volume lock status updates for a project and environment */\n  volumeLockStatus: VolumeLockStatusUpdate;\n  /** Subscribe to updates for a workspace's downgrade */\n  workspaceDowngrades: WorkspaceDowngradesUpdate;\n};\n\n\nexport type SubscriptionBackupsArgs = {\n  volumeInstanceId: Scalars['String']['input'];\n};\n\n\nexport type SubscriptionBuildLogsArgs = {\n  deploymentId: Scalars['String']['input'];\n  filter?: InputMaybe<Scalars['String']['input']>;\n  limit?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type SubscriptionCanvasInvalidationArgs = {\n  environmentId: Scalars['String']['input'];\n};\n\n\nexport type SubscriptionChatStreamArgs = {\n  streamId: Scalars['String']['input'];\n};\n\n\nexport type SubscriptionDeploymentArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type SubscriptionDeploymentEventsArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type SubscriptionDeploymentInstanceExecutionsArgs = {\n  input: DeploymentInstanceExecutionInput;\n};\n\n\nexport type SubscriptionDeploymentLogsArgs = {\n  deploymentId: Scalars['String']['input'];\n  filter?: InputMaybe<Scalars['String']['input']>;\n  limit?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type SubscriptionEnvironmentLogsArgs = {\n  afterDate?: InputMaybe<Scalars['String']['input']>;\n  afterLimit?: InputMaybe<Scalars['Int']['input']>;\n  anchorDate?: InputMaybe<Scalars['String']['input']>;\n  beforeDate?: InputMaybe<Scalars['String']['input']>;\n  beforeLimit?: InputMaybe<Scalars['Int']['input']>;\n  environmentId: Scalars['String']['input'];\n  filter?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type SubscriptionEnvironmentPatchProgressArgs = {\n  environmentId: Scalars['String']['input'];\n};\n\n\nexport type SubscriptionEnvironmentStagedPatchArgs = {\n  environmentId: Scalars['String']['input'];\n};\n\n\nexport type SubscriptionFunctionGenerateArgs = {\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  prompt: Scalars['String']['input'];\n  serviceId?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type SubscriptionGithubRefreshStatusArgs = {\n  jobId: Scalars['String']['input'];\n};\n\n\nexport type SubscriptionHttpLogsArgs = {\n  afterDate?: InputMaybe<Scalars['String']['input']>;\n  afterLimit?: InputMaybe<Scalars['Int']['input']>;\n  anchorDate?: InputMaybe<Scalars['String']['input']>;\n  beforeDate?: InputMaybe<Scalars['String']['input']>;\n  beforeLimit?: InputMaybe<Scalars['Int']['input']>;\n  deploymentId: Scalars['String']['input'];\n  filter?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type SubscriptionMonorepoImportStatusArgs = {\n  environmentId: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type SubscriptionNetworkFlowLogsArgs = {\n  afterDate?: InputMaybe<Scalars['String']['input']>;\n  afterLimit?: InputMaybe<Scalars['Int']['input']>;\n  anchorDate?: InputMaybe<Scalars['String']['input']>;\n  beforeDate?: InputMaybe<Scalars['String']['input']>;\n  beforeLimit?: InputMaybe<Scalars['Int']['input']>;\n  environmentId: Scalars['String']['input'];\n  filter?: InputMaybe<Scalars['String']['input']>;\n  serviceId?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type SubscriptionPluginLogsArgs = {\n  environmentId: Scalars['String']['input'];\n  filter?: InputMaybe<Scalars['String']['input']>;\n  limit?: InputMaybe<Scalars['Int']['input']>;\n  pluginId: Scalars['String']['input'];\n};\n\n\nexport type SubscriptionProjectCreateWithAgentStreamArgs = {\n  id: Scalars['String']['input'];\n};\n\n\nexport type SubscriptionRadarScanMatchAddedArgs = {\n  ruleId: Scalars['String']['input'];\n};\n\n\nexport type SubscriptionReplicationProgressArgs = {\n  volumeInstanceId: Scalars['String']['input'];\n};\n\n\nexport type SubscriptionSandboxInvalidationArgs = {\n  environmentId: Scalars['String']['input'];\n};\n\n\nexport type SubscriptionVolumeLockStatusArgs = {\n  environmentId: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n};\n\n\nexport type SubscriptionWorkspaceDowngradesArgs = {\n  workspaceId: Scalars['String']['input'];\n};\n\nexport type SubscriptionDiscount = {\n  __typename?: 'SubscriptionDiscount';\n  couponId: Scalars['String']['output'];\n  couponName: Scalars['String']['output'];\n};\n\nexport type SubscriptionItem = {\n  __typename?: 'SubscriptionItem';\n  itemId: Scalars['String']['output'];\n  priceDollars?: Maybe<Scalars['Float']['output']>;\n  priceId: Scalars['String']['output'];\n  productId: Scalars['String']['output'];\n  quantity?: Maybe<Scalars['BigInt']['output']>;\n};\n\nexport type SubscriptionModel =\n  | 'FREE'\n  | 'TEAM'\n  | 'USER';\n\nexport type SubscriptionPlanType =\n  | 'free'\n  | 'hobby'\n  | 'pro'\n  | 'trial';\n\nexport type SubscriptionState =\n  | 'ACTIVE'\n  | 'CANCELLED'\n  | 'INACTIVE'\n  | 'PAST_DUE'\n  | 'UNPAID';\n\nexport type SupportMessage = {\n  __typename?: 'SupportMessage';\n  attachments: Array<SupportMessageAttachment>;\n  author?: Maybe<SupportMessageAuthor>;\n  body?: Maybe<Scalars['String']['output']>;\n  createdAt: Scalars['DateTime']['output'];\n  id: Scalars['String']['output'];\n  inReplyTo?: Maybe<SupportMessageReplyRef>;\n  type: Scalars['String']['output'];\n};\n\nexport type SupportMessageAttachment = {\n  __typename?: 'SupportMessageAttachment';\n  filename?: Maybe<Scalars['String']['output']>;\n  id: Scalars['String']['output'];\n  mimetype?: Maybe<Scalars['String']['output']>;\n};\n\nexport type SupportMessageAuthor = {\n  __typename?: 'SupportMessageAuthor';\n  railwayAvatarUrl?: Maybe<Scalars['String']['output']>;\n  railwayIsAdmin: Scalars['Boolean']['output'];\n  railwayUserId?: Maybe<Scalars['String']['output']>;\n  railwayUsername?: Maybe<Scalars['String']['output']>;\n};\n\nexport type SupportMessageReplyRef = {\n  __typename?: 'SupportMessageReplyRef';\n  author?: Maybe<SupportMessageAuthor>;\n  body?: Maybe<Scalars['String']['output']>;\n  id: Scalars['String']['output'];\n};\n\nexport type SupportThread = {\n  __typename?: 'SupportThread';\n  createdAt: Scalars['DateTime']['output'];\n  isPrivate: Scalars['Boolean']['output'];\n  lastActivityAt?: Maybe<Scalars['DateTime']['output']>;\n  replyCount: Scalars['Int']['output'];\n  slug: Scalars['String']['output'];\n  status: Scalars['String']['output'];\n  subject: Scalars['String']['output'];\n  topicDisplayName?: Maybe<Scalars['String']['output']>;\n  topicSlug: Scalars['String']['output'];\n};\n\nexport type SupportThreadActivity = {\n  __typename?: 'SupportThreadActivity';\n  lastActivityAt?: Maybe<Scalars['DateTime']['output']>;\n  slug: Scalars['String']['output'];\n};\n\nexport type SupportThreadDetail = {\n  __typename?: 'SupportThreadDetail';\n  author?: Maybe<SupportMessageAuthor>;\n  createdAt: Scalars['DateTime']['output'];\n  isPrivate: Scalars['Boolean']['output'];\n  lastActivityAt?: Maybe<Scalars['DateTime']['output']>;\n  messages: Array<SupportMessage>;\n  replyCount: Scalars['Int']['output'];\n  slug: Scalars['String']['output'];\n  status: Scalars['String']['output'];\n  subject: Scalars['String']['output'];\n  topicDisplayName?: Maybe<Scalars['String']['output']>;\n  topicSlug: Scalars['String']['output'];\n};\n\nexport type SupportTierOverride =\n  | 'BUSINESS_CLASS'\n  | 'BUSINESS_CLASS_TRIAL';\n\nexport type SyncRoutesInput = {\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\nexport type SyncRoutesResult = {\n  __typename?: 'SyncRoutesResult';\n  message?: Maybe<Scalars['String']['output']>;\n  success: Scalars['Boolean']['output'];\n  syncedTargets: Array<Scalars['String']['output']>;\n};\n\nexport type TcpProxy = {\n  __typename?: 'TCPProxy';\n  applicationPort: Scalars['Int']['output'];\n  createdAt?: Maybe<Scalars['DateTime']['output']>;\n  deletedAt?: Maybe<Scalars['DateTime']['output']>;\n  domain: Scalars['String']['output'];\n  environmentId: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  proxyPort: Scalars['Int']['output'];\n  serviceId: Scalars['String']['output'];\n  syncStatus: TcpProxySyncStatus;\n  updatedAt?: Maybe<Scalars['DateTime']['output']>;\n};\n\nexport type TcpProxyCreateInput = {\n  applicationPort: Scalars['Int']['input'];\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\nexport type TcpProxySyncStatus =\n  | 'ACTIVE'\n  | 'CREATING'\n  | 'DELETED'\n  | 'DELETING'\n  | 'UNSPECIFIED'\n  | 'UPDATING';\n\nexport type TaxIdInput = {\n  type: Scalars['String']['input'];\n  value: Scalars['String']['input'];\n};\n\nexport type Team = Node & {\n  __typename?: 'Team';\n  /** @deprecated Use workspace object instead */\n  adoptionHistory: Array<AdoptionInfo>;\n  /** @deprecated Use workspace object instead */\n  adoptionLevel: Scalars['Float']['output'];\n  /** @deprecated Use workspace object instead */\n  apiTokenRateLimit?: Maybe<ApiTokenRateLimit>;\n  /** @deprecated Use workspace object instead */\n  avatar?: Maybe<Scalars['String']['output']>;\n  /** @deprecated Use workspace object instead */\n  createdAt: Scalars['DateTime']['output'];\n  /** @deprecated Use workspace object instead */\n  customer: Customer;\n  /** @deprecated Use workspace object instead */\n  id: Scalars['ID']['output'];\n  /** @deprecated Use workspace object instead */\n  members: Array<TeamMember>;\n  /** @deprecated Use workspace object instead */\n  name: Scalars['String']['output'];\n  /** @deprecated Use workspace object instead */\n  preferredRegion?: Maybe<Scalars['String']['output']>;\n  /** @deprecated Use workspace object instead */\n  projects: TeamProjectsConnection;\n  /** @deprecated Use workspace object instead */\n  slackChannelId?: Maybe<Scalars['String']['output']>;\n  /** @deprecated Use workspace object instead */\n  supportTierOverride?: Maybe<SupportTierOverride>;\n  /** @deprecated Use workspace object instead */\n  teamPermissions: Array<TeamPermission>;\n  /** @deprecated Use workspace object instead */\n  updatedAt: Scalars['DateTime']['output'];\n  /** @deprecated Use workspace object instead */\n  workspace: Workspace;\n};\n\n\nexport type TeamProjectsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type TeamMember = {\n  __typename?: 'TeamMember';\n  avatar?: Maybe<Scalars['String']['output']>;\n  email: Scalars['String']['output'];\n  /** Only retrieved if requested by an admin */\n  featureFlags?: Maybe<Array<ActiveFeatureFlag>>;\n  id: Scalars['String']['output'];\n  name?: Maybe<Scalars['String']['output']>;\n  role: TeamRole;\n};\n\nexport type TeamPermission = Node & {\n  __typename?: 'TeamPermission';\n  createdAt: Scalars['DateTime']['output'];\n  id: Scalars['ID']['output'];\n  role: TeamRole;\n  updatedAt: Scalars['DateTime']['output'];\n  userId: Scalars['String']['output'];\n  workspaceId: Scalars['String']['output'];\n};\n\nexport type TeamProjectsConnection = {\n  __typename?: 'TeamProjectsConnection';\n  edges: Array<TeamProjectsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type TeamProjectsConnectionEdge = {\n  __typename?: 'TeamProjectsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Project;\n};\n\nexport type TeamRole =\n  | 'ADMIN'\n  | 'MEMBER'\n  | 'VIEWER';\n\nexport type TelemetrySendInput = {\n  command: Scalars['String']['input'];\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  error: Scalars['String']['input'];\n  projectId?: InputMaybe<Scalars['String']['input']>;\n  serviceId?: InputMaybe<Scalars['String']['input']>;\n  stacktrace: Scalars['String']['input'];\n  version?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type Template = Node & {\n  __typename?: 'Template';\n  activeProjects: Scalars['Int']['output'];\n  canvasConfig?: Maybe<Scalars['CanvasConfig']['output']>;\n  category?: Maybe<Scalars['String']['output']>;\n  code: Scalars['String']['output'];\n  communityThreadSlug?: Maybe<Scalars['String']['output']>;\n  /** @deprecated Use serializedConfig instead */\n  config: Scalars['TemplateConfig']['output'];\n  createdAt: Scalars['DateTime']['output'];\n  creator?: Maybe<TemplateCreator>;\n  demoProjectId?: Maybe<Scalars['String']['output']>;\n  description?: Maybe<Scalars['String']['output']>;\n  guides?: Maybe<TemplateGuide>;\n  health?: Maybe<Scalars['Float']['output']>;\n  id: Scalars['ID']['output'];\n  image?: Maybe<Scalars['String']['output']>;\n  isApproved: Scalars['Boolean']['output'];\n  isV2Template: Scalars['Boolean']['output'];\n  isVerified: Scalars['Boolean']['output'];\n  languages?: Maybe<Array<Scalars['String']['output']>>;\n  maintainer?: Maybe<MaintainerWorkspace>;\n  /** @deprecated Deprecated in favor of listing the fields individually. */\n  metadata: Scalars['TemplateMetadata']['output'];\n  name: Scalars['String']['output'];\n  projects: Scalars['Int']['output'];\n  readme?: Maybe<Scalars['String']['output']>;\n  recentProjects: Scalars['Int']['output'];\n  serializedConfig?: Maybe<Scalars['SerializedTemplateConfig']['output']>;\n  services: TemplateServicesConnection;\n  similarTemplates: Array<SimilarTemplate>;\n  status: TemplateStatus;\n  supportHealthMetrics?: Maybe<Scalars['SupportHealthMetrics']['output']>;\n  tags?: Maybe<Array<Scalars['String']['output']>>;\n  /** @deprecated Use workspaceId */\n  teamId?: Maybe<Scalars['String']['output']>;\n  totalPayout: Scalars['Float']['output'];\n  updatedAt: Scalars['DateTime']['output'];\n  workspaceId?: Maybe<Scalars['String']['output']>;\n};\n\n\nexport type TemplateServicesArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type TemplateCloneInput = {\n  code: Scalars['String']['input'];\n  /** @deprecated Use workspaceId instead - teams are now workspaces */\n  teamId?: InputMaybe<Scalars['String']['input']>;\n  workspaceId?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type TemplateCreateV2Input = {\n  canvasConfig?: InputMaybe<Scalars['CanvasConfig']['input']>;\n  metadata: Scalars['TemplateMetadata']['input'];\n  serializedConfig: Scalars['SerializedTemplateConfig']['input'];\n  workspaceId?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type TemplateCreator = {\n  __typename?: 'TemplateCreator';\n  avatar?: Maybe<Scalars['String']['output']>;\n  hasPublicProfile: Scalars['Boolean']['output'];\n  name?: Maybe<Scalars['String']['output']>;\n  username?: Maybe<Scalars['String']['output']>;\n};\n\nexport type TemplateDeleteInput = {\n  /** @deprecated Use workspaceId instead - teams are now workspaces */\n  teamId?: InputMaybe<Scalars['String']['input']>;\n  workspaceId?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type TemplateDeployInput = {\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  /** @deprecated The databases from the template will be used. */\n  plugins?: InputMaybe<Array<Scalars['String']['input']>>;\n  projectId?: InputMaybe<Scalars['String']['input']>;\n  services: Array<TemplateDeployService>;\n  /** @deprecated Use workspaceId instead - teams are now workspaces */\n  teamId?: InputMaybe<Scalars['String']['input']>;\n  templateCode?: InputMaybe<Scalars['String']['input']>;\n  workspaceId?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type TemplateDeployPayload = {\n  __typename?: 'TemplateDeployPayload';\n  projectId: Scalars['String']['output'];\n  workflowId?: Maybe<Scalars['String']['output']>;\n};\n\nexport type TemplateDeployService = {\n  commit?: InputMaybe<Scalars['String']['input']>;\n  hasDomain?: InputMaybe<Scalars['Boolean']['input']>;\n  healthcheckPath?: InputMaybe<Scalars['String']['input']>;\n  id: Scalars['String']['input'];\n  isPrivate?: InputMaybe<Scalars['Boolean']['input']>;\n  name?: InputMaybe<Scalars['String']['input']>;\n  owner?: InputMaybe<Scalars['String']['input']>;\n  preDeployCommand?: InputMaybe<Array<Scalars['String']['input']>>;\n  rootDirectory?: InputMaybe<Scalars['String']['input']>;\n  serviceIcon?: InputMaybe<Scalars['String']['input']>;\n  serviceName: Scalars['String']['input'];\n  startCommand?: InputMaybe<Scalars['String']['input']>;\n  tcpProxyApplicationPort?: InputMaybe<Scalars['Int']['input']>;\n  template: Scalars['String']['input'];\n  variables?: InputMaybe<Scalars['EnvironmentVariables']['input']>;\n  volumes?: InputMaybe<Array<Scalars['TemplateVolume']['input']>>;\n};\n\nexport type TemplateDeployV2Input = {\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  /** Use an existing service as the cluster root instead of creating a new one. Used for HA cluster conversion where an existing postgres becomes the primary. */\n  existingRootServiceId?: InputMaybe<Scalars['String']['input']>;\n  /** The group to deploy the template into */\n  groupId?: InputMaybe<Scalars['String']['input']>;\n  projectId?: InputMaybe<Scalars['String']['input']>;\n  /** Override the auto-generated project name for the newly created project. */\n  projectName?: InputMaybe<Scalars['String']['input']>;\n  serializedConfig: Scalars['SerializedTemplateConfig']['input'];\n  /** If true, create resources and patch but don't deploy. Returns patchId for later commit. */\n  stageOnly?: InputMaybe<Scalars['Boolean']['input']>;\n  /** @deprecated Use workspaceId instead - teams are now workspaces */\n  teamId?: InputMaybe<Scalars['String']['input']>;\n  templateId: Scalars['String']['input'];\n  workspaceId?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type TemplateGenerateInput = {\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  projectId: Scalars['String']['input'];\n  /** @deprecated This argument is unused */\n  teamId?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type TemplateGuide = {\n  __typename?: 'TemplateGuide';\n  post?: Maybe<Scalars['String']['output']>;\n  video?: Maybe<Scalars['String']['output']>;\n};\n\nexport type TemplateMaintainerUpsertInput = {\n  workspaceId: Scalars['String']['input'];\n};\n\nexport type TemplateMetrics = {\n  __typename?: 'TemplateMetrics';\n  activeDeployments: Scalars['Int']['output'];\n  deploymentsLast90Days: Scalars['Int']['output'];\n  earningsLast30Days: Scalars['Float']['output'];\n  earningsLast90Days: Scalars['Float']['output'];\n  eligibleForSupportBonus: Scalars['Boolean']['output'];\n  supportHealth: Scalars['Float']['output'];\n  templateHealth: Scalars['Float']['output'];\n  totalDeployments: Scalars['Int']['output'];\n  totalEarnings: Scalars['Float']['output'];\n};\n\nexport type TemplatePublishInput = {\n  category: Scalars['String']['input'];\n  demoProjectId?: InputMaybe<Scalars['String']['input']>;\n  description: Scalars['String']['input'];\n  image?: InputMaybe<Scalars['String']['input']>;\n  readme: Scalars['String']['input'];\n  /** @deprecated Use workspaceId instead - teams are now workspaces */\n  teamId?: InputMaybe<Scalars['String']['input']>;\n  workspaceId?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type TemplateRevertInput = {\n  /** The environment ID containing the cluster */\n  environmentId: Scalars['String']['input'];\n  /** The group ID to delete when reverting */\n  groupId?: InputMaybe<Scalars['String']['input']>;\n  /** The project ID containing the cluster */\n  projectId: Scalars['String']['input'];\n  /** The root service ID of the HA cluster to revert */\n  rootServiceId: Scalars['String']['input'];\n  /** If true, stage changes instead of deploying. Returns patchId. */\n  stageOnly?: InputMaybe<Scalars['Boolean']['input']>;\n  /** The template code to revert (e.g., 'ha-postgres') */\n  templateCode: Scalars['String']['input'];\n};\n\nexport type TemplateSearchHighlights = {\n  __typename?: 'TemplateSearchHighlights';\n  category?: Maybe<Scalars['String']['output']>;\n  code?: Maybe<Scalars['String']['output']>;\n  description?: Maybe<Scalars['String']['output']>;\n  name?: Maybe<Scalars['String']['output']>;\n  searchTerms?: Maybe<Array<Scalars['String']['output']>>;\n};\n\nexport type TemplateSearchRankingScoreDetail = {\n  __typename?: 'TemplateSearchRankingScoreDetail';\n  details: Scalars['JSON']['output'];\n  order?: Maybe<Scalars['Int']['output']>;\n  rule: Scalars['String']['output'];\n  score?: Maybe<Scalars['Float']['output']>;\n};\n\nexport type TemplateSearchResult = {\n  __typename?: 'TemplateSearchResult';\n  adjustedRankingScore?: Maybe<Scalars['Float']['output']>;\n  code: Scalars['String']['output'];\n  creatorName?: Maybe<Scalars['String']['output']>;\n  deploymentCount: Scalars['Int']['output'];\n  description?: Maybe<Scalars['String']['output']>;\n  healthScore?: Maybe<Scalars['Float']['output']>;\n  highlights?: Maybe<TemplateSearchHighlights>;\n  id: Scalars['String']['output'];\n  image?: Maybe<Scalars['String']['output']>;\n  isVerified: Scalars['Boolean']['output'];\n  matchedFields?: Maybe<Array<Scalars['String']['output']>>;\n  meilisearchRank?: Maybe<Scalars['Int']['output']>;\n  name: Scalars['String']['output'];\n  qualityAdjustment?: Maybe<Scalars['Float']['output']>;\n  rankingScore?: Maybe<Scalars['Float']['output']>;\n  rankingScoreDetails?: Maybe<Array<TemplateSearchRankingScoreDetail>>;\n};\n\nexport type TemplateService = Node & {\n  __typename?: 'TemplateService';\n  config: Scalars['TemplateServiceConfig']['output'];\n  createdAt: Scalars['DateTime']['output'];\n  id: Scalars['ID']['output'];\n  templateId: Scalars['String']['output'];\n  updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type TemplateServiceSourceEjectInput = {\n  projectId: Scalars['String']['input'];\n  repoName: Scalars['String']['input'];\n  repoOwner: Scalars['String']['input'];\n  /** Provide multiple serviceIds when ejecting services from a monorepo. */\n  serviceIds: Array<Scalars['String']['input']>;\n  upstreamUrl: Scalars['String']['input'];\n};\n\nexport type TemplateServicesConnection = {\n  __typename?: 'TemplateServicesConnection';\n  edges: Array<TemplateServicesConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type TemplateServicesConnectionEdge = {\n  __typename?: 'TemplateServicesConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: TemplateService;\n};\n\nexport type TemplateStatus =\n  | 'HIDDEN'\n  | 'PUBLISHED'\n  | 'UNPUBLISHED';\n\nexport type TemplateSupportMetricsUpdate = {\n  supportHealthMetrics: Scalars['SupportHealthMetrics']['input'];\n  templateId: Scalars['String']['input'];\n};\n\nexport type TemplateUpsertConfigInput = {\n  canvasConfig?: InputMaybe<Scalars['CanvasConfig']['input']>;\n  name: Scalars['String']['input'];\n  serializedConfig: Scalars['SerializedTemplateConfig']['input'];\n  workspaceId: Scalars['String']['input'];\n};\n\nexport type TemplateUpsertSettingsInput = {\n  description?: InputMaybe<Scalars['String']['input']>;\n  image?: InputMaybe<Scalars['String']['input']>;\n  name: Scalars['String']['input'];\n  workspaceId: Scalars['String']['input'];\n};\n\nexport type TemporalEvent = {\n  __typename?: 'TemporalEvent';\n  externalId: Scalars['String']['output'];\n  failureDetails: Array<TemporalFailureDetail>;\n  projectName: Scalars['String']['output'];\n  rawData: Scalars['String']['output'];\n  source: Scalars['String']['output'];\n  timestamp: Scalars['DateTime']['output'];\n  userId: Scalars['String']['output'];\n  workspaceId: Scalars['String']['output'];\n  workspaceName: Scalars['String']['output'];\n};\n\nexport type TemporalFailureDetail = {\n  __typename?: 'TemporalFailureDetail';\n  activityType?: Maybe<Scalars['String']['output']>;\n  failure: Scalars['String']['output'];\n  type: Scalars['String']['output'];\n};\n\nexport type ThreadPayout = {\n  __typename?: 'ThreadPayout';\n  resourceId: Scalars['String']['output'];\n};\n\nexport type TogglePlatformFeatureFlagInput = {\n  flag: PlatformFeatureFlag;\n  status: Scalars['Boolean']['input'];\n};\n\nexport type TogglePlatformServiceInput = {\n  platformServiceKey: PlatformServiceKey;\n  reason?: InputMaybe<Scalars['String']['input']>;\n  status: PlatformServiceStatus;\n};\n\n/** The result of a top metrics query. */\nexport type TopMetricsResult = {\n  __typename?: 'TopMetricsResult';\n  metrics: Array<MetricsResult>;\n  projects: Array<Project>;\n};\n\nexport type TotalUsage = {\n  __typename?: 'TotalUsage';\n  current?: Maybe<Scalars['Float']['output']>;\n  estimated?: Maybe<Scalars['Float']['output']>;\n};\n\nexport type TriggerDeploymentDiagnosisResponse = {\n  __typename?: 'TriggerDeploymentDiagnosisResponse';\n  streamId: Scalars['String']['output'];\n  threadId: Scalars['String']['output'];\n};\n\nexport type TriggerDeploymentFixPrResponse = {\n  __typename?: 'TriggerDeploymentFixPRResponse';\n  error?: Maybe<Scalars['String']['output']>;\n  success: Scalars['Boolean']['output'];\n};\n\nexport type TriggerRoutingRepairInput = {\n  environmentId: Scalars['String']['input'];\n  reason?: InputMaybe<Scalars['String']['input']>;\n  serviceId: Scalars['String']['input'];\n};\n\nexport type TrustedDomain = {\n  __typename?: 'TrustedDomain';\n  domainName: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  role: Scalars['String']['output'];\n  status: TrustedDomainStatus;\n  verificationData: TrustedDomainVerificationData;\n  verificationType: Scalars['String']['output'];\n  workspaceId: Scalars['String']['output'];\n};\n\nexport type TrustedDomainStatus =\n  | 'FAILED'\n  | 'PENDING'\n  | 'VERIFIED';\n\nexport type TrustedDomainVerificationData = {\n  __typename?: 'TrustedDomainVerificationData';\n  dnsHost?: Maybe<Scalars['String']['output']>;\n  domainMatch?: Maybe<Domain>;\n  domainStatus?: Maybe<CustomDomainStatus>;\n  token?: Maybe<Scalars['String']['output']>;\n};\n\nexport type TwoFactorInfo = {\n  __typename?: 'TwoFactorInfo';\n  hasRecoveryCodes: Scalars['Boolean']['output'];\n  isVerified: Scalars['Boolean']['output'];\n};\n\nexport type TwoFactorInfoCreateInput = {\n  token: Scalars['String']['input'];\n};\n\nexport type TwoFactorInfoSecret = {\n  __typename?: 'TwoFactorInfoSecret';\n  secret: Scalars['String']['output'];\n  uri: Scalars['String']['output'];\n};\n\nexport type TwoFactorInfoValidateInput = {\n  token: Scalars['String']['input'];\n  twoFactorLinkingKey?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type TwoFactorMethod =\n  | 'AUTHENTICATOR'\n  | 'PASSKEY';\n\nexport type TwoFactorMethodCompliance =\n  | 'AUTHENTICATOR'\n  | 'PASSKEY';\n\nexport type TwoFactorMethodProjectWorkspace =\n  | 'AUTHENTICATOR'\n  | 'PASSKEY';\n\nexport type TwoFactorStatus = {\n  __typename?: 'TwoFactorStatus';\n  enabledMethods: Array<TwoFactorMethod>;\n  isEnabled: Scalars['Boolean']['output'];\n};\n\nexport type UnifiedWithdrawal = CreditWithdrawalInfo | Withdrawal | WithdrawalType;\n\nexport type UpdateNotificationRuleInput = {\n  channelConfigs?: InputMaybe<Array<Scalars['NotificationChannelConfig']['input']>>;\n  ephemeralEnvironments?: InputMaybe<Scalars['Boolean']['input']>;\n  eventTypes?: InputMaybe<Array<Scalars['String']['input']>>;\n  severities?: InputMaybe<Array<NotificationSeverity>>;\n};\n\nexport type UpdateServiceEdgeConfigInput = {\n  config: EdgeConfigInput;\n  environmentId: Scalars['String']['input'];\n  serviceId: Scalars['String']['input'];\n};\n\nexport type UsageAnomaly = Node & {\n  __typename?: 'UsageAnomaly';\n  actedOn?: Maybe<Scalars['DateTime']['output']>;\n  action?: Maybe<UsageAnomalyAction>;\n  actorId?: Maybe<Scalars['String']['output']>;\n  flaggedAt: Scalars['DateTime']['output'];\n  flaggedFor: UsageAnomalyFlagReason;\n  id: Scalars['ID']['output'];\n};\n\n/** Possible actions for a UsageAnomaly. */\nexport type UsageAnomalyAction =\n  | 'ALLOWED'\n  | 'AUTOBANNED'\n  | 'BANNED';\n\nexport type UsageAnomalyAllowInput = {\n  usageAnomalyIds: Array<Scalars['String']['input']>;\n};\n\n/** Possible flag reasons for a UsageAnomaly. */\nexport type UsageAnomalyFlagReason =\n  | 'HIGH_CPU_USAGE'\n  | 'HIGH_DISK_USAGE'\n  | 'HIGH_NETWORK_USAGE';\n\nexport type UsageLimit = Node & {\n  __typename?: 'UsageLimit';\n  agentHardLimitCents?: Maybe<Scalars['Int']['output']>;\n  agentSoftLimitCents?: Maybe<Scalars['Int']['output']>;\n  customerId: Scalars['String']['output'];\n  hardLimit?: Maybe<Scalars['Int']['output']>;\n  id: Scalars['ID']['output'];\n  isOverLimit: Scalars['Boolean']['output'];\n  softLimit: Scalars['Int']['output'];\n};\n\nexport type UsageLimitRemoveInput = {\n  customerId: Scalars['String']['input'];\n};\n\nexport type UsageLimitSetInput = {\n  customerId: Scalars['String']['input'];\n  hardLimitDollars?: InputMaybe<Scalars['Int']['input']>;\n  softLimitDollars: Scalars['Int']['input'];\n};\n\nexport type User = Node & {\n  __typename?: 'User';\n  agreedFairUse: Scalars['Boolean']['output'];\n  apiTokenRateLimit?: Maybe<ApiTokenRateLimit>;\n  avatar?: Maybe<Scalars['String']['output']>;\n  /** @deprecated Resolve via the user's workspaces and check for an active BAN restriction. This field will be removed after the WorkspaceRestriction migration completes. */\n  banReason?: Maybe<Scalars['String']['output']>;\n  createdAt: Scalars['DateTime']['output'];\n  email: Scalars['String']['output'];\n  featureFlags: Array<ActiveFeatureFlag>;\n  flags: Array<UserFlag>;\n  githubProviderId?: Maybe<Scalars['String']['output']>;\n  githubUsername?: Maybe<Scalars['String']['output']>;\n  has2FA: Scalars['Boolean']['output'];\n  hasPasskeys: Scalars['Boolean']['output'];\n  id: Scalars['ID']['output'];\n  isAdmin: Scalars['Boolean']['output'];\n  isConductor: Scalars['Boolean']['output'];\n  isVerified: Scalars['Boolean']['output'];\n  lastLogin: Scalars['DateTime']['output'];\n  name?: Maybe<Scalars['String']['output']>;\n  platformFeatureFlags: Array<ActivePlatformFlag>;\n  profile?: Maybe<UserProfile>;\n  /** @deprecated This field will not return anything anymore, go through the workspace's projects */\n  projects: UserProjectsConnection;\n  providerAuths: UserProviderAuthsConnection;\n  registrationStatus: RegistrationStatus;\n  restrictionHistory: Array<UserRestrictionHistoryEntry>;\n  riskLevel?: Maybe<Scalars['Float']['output']>;\n  termsAgreedOn?: Maybe<Scalars['DateTime']['output']>;\n  username?: Maybe<Scalars['String']['output']>;\n  /** @deprecated Use user.workspaces instead, no user are associated to a workspace */\n  workspace?: Maybe<Workspace>;\n  /** Workspaces user is member of */\n  workspaces: Array<Workspace>;\n};\n\n\nexport type UserProjectsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type UserProviderAuthsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type UserRestrictionHistoryArgs = {\n  first?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type UserBanInput = {\n  reason: Scalars['String']['input'];\n  userId: Scalars['String']['input'];\n};\n\nexport type UserFlag =\n  | 'BETA';\n\nexport type UserFlagsRemoveInput = {\n  flags: Array<UserFlag>;\n  userId?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type UserFlagsSetInput = {\n  flags: Array<UserFlag>;\n  userId?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type UserGithubRepo = Node & {\n  __typename?: 'UserGithubRepo';\n  createdAt: Scalars['DateTime']['output'];\n  defaultBranch: Scalars['String']['output'];\n  description?: Maybe<Scalars['String']['output']>;\n  fullName: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  installationId: Scalars['String']['output'];\n  isPrivate: Scalars['Boolean']['output'];\n  lastPushedAt: Scalars['DateTime']['output'];\n  name: Scalars['String']['output'];\n  ownerAvatarUrl?: Maybe<Scalars['String']['output']>;\n  updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type UserKickbackEarnings = {\n  __typename?: 'UserKickbackEarnings';\n  total_amount: Scalars['Float']['output'];\n};\n\nexport type UserProfile = {\n  __typename?: 'UserProfile';\n  bio?: Maybe<Scalars['String']['output']>;\n  isPublic: Scalars['Boolean']['output'];\n  website?: Maybe<Scalars['String']['output']>;\n};\n\nexport type UserProfileResponse = {\n  __typename?: 'UserProfileResponse';\n  avatar?: Maybe<Scalars['String']['output']>;\n  createdAt: Scalars['DateTime']['output'];\n  customerId?: Maybe<Scalars['String']['output']>;\n  id: Scalars['String']['output'];\n  isTrialing?: Maybe<Scalars['Boolean']['output']>;\n  name?: Maybe<Scalars['String']['output']>;\n  profile: UserProfile;\n  /** Gets all public projects for a user. */\n  publicProjects: UserProfileResponsePublicProjectsConnection;\n  /** @deprecated There are no personal templates anymore, they all belong to a workspace */\n  publishedTemplates: Array<SimilarTemplate>;\n  state?: Maybe<Scalars['String']['output']>;\n  totalDeploys: Scalars['Int']['output'];\n  username?: Maybe<Scalars['String']['output']>;\n};\n\n\nexport type UserProfileResponsePublicProjectsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type UserProfileResponsePublicProjectsConnection = {\n  __typename?: 'UserProfileResponsePublicProjectsConnection';\n  edges: Array<UserProfileResponsePublicProjectsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type UserProfileResponsePublicProjectsConnectionEdge = {\n  __typename?: 'UserProfileResponsePublicProjectsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Project;\n};\n\nexport type UserProfileUpdateInput = {\n  bio?: InputMaybe<Scalars['String']['input']>;\n  isPublic: Scalars['Boolean']['input'];\n  website?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type UserProjectsConnection = {\n  __typename?: 'UserProjectsConnection';\n  edges: Array<UserProjectsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type UserProjectsConnectionEdge = {\n  __typename?: 'UserProjectsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Project;\n};\n\nexport type UserProviderAuthsConnection = {\n  __typename?: 'UserProviderAuthsConnection';\n  edges: Array<UserProviderAuthsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type UserProviderAuthsConnectionEdge = {\n  __typename?: 'UserProviderAuthsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: ProviderAuth;\n};\n\nexport type UserRestrictionHistoryEntry = {\n  __typename?: 'UserRestrictionHistoryEntry';\n  membershipRole?: Maybe<TeamRole>;\n  restriction: WorkspaceRestriction;\n  userAppealedRestriction: Scalars['Boolean']['output'];\n  workspace: Workspace;\n};\n\nexport type UserRiskLevelUpdateInput = {\n  riskLevel?: InputMaybe<Scalars['Float']['input']>;\n  userId: Scalars['String']['input'];\n};\n\nexport type UserStanding = {\n  __typename?: 'UserStanding';\n  goodStandingWorkspaceCount: Scalars['Int']['output'];\n  /** Whether this user is admin of any Enterprise or Enterprise POC workspace */\n  isEnterprise: Scalars['Boolean']['output'];\n  joinDate: Scalars['String']['output'];\n  /** Most recent high-value paid invoice from good standing workspaces */\n  recentHighValueInvoice: InvoiceStandingDetails;\n};\n\nexport type UserUpdateInput = {\n  avatar?: InputMaybe<Scalars['String']['input']>;\n  name?: InputMaybe<Scalars['String']['input']>;\n  username?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type UserWithClashingIp = {\n  __typename?: 'UserWithClashingIP';\n  email: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  isBanned: Scalars['Boolean']['output'];\n};\n\nexport type UsersFilterInput = {\n  admin?: InputMaybe<Scalars['Boolean']['input']>;\n  banned?: InputMaybe<Scalars['Boolean']['input']>;\n  filter?: InputMaybe<Scalars['String']['input']>;\n  referredUsers?: InputMaybe<Scalars['Boolean']['input']>;\n  riskLevel?: InputMaybe<Scalars['Float']['input']>;\n  usageSubscription?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\nexport type Variable = Node & {\n  __typename?: 'Variable';\n  createdAt: Scalars['DateTime']['output'];\n  environment: Environment;\n  environmentId?: Maybe<Scalars['String']['output']>;\n  id: Scalars['ID']['output'];\n  isSealed: Scalars['Boolean']['output'];\n  name: Scalars['String']['output'];\n  plugin: Plugin;\n  /** @deprecated Plugins have been removed */\n  pluginId?: Maybe<Scalars['String']['output']>;\n  references: Array<Scalars['String']['output']>;\n  service: Service;\n  serviceId?: Maybe<Scalars['String']['output']>;\n  updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type VariableCollectionUpsertInput = {\n  environmentId: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n  /** When set to true, removes all existing variables before upserting the new collection. */\n  replace?: InputMaybe<Scalars['Boolean']['input']>;\n  serviceId?: InputMaybe<Scalars['String']['input']>;\n  /** Skip deploys for affected services */\n  skipDeploys?: InputMaybe<Scalars['Boolean']['input']>;\n  variables: Scalars['EnvironmentVariables']['input'];\n};\n\nexport type VariableDeleteInput = {\n  environmentId: Scalars['String']['input'];\n  name: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n  serviceId?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type VariableUpsertInput = {\n  environmentId: Scalars['String']['input'];\n  name: Scalars['String']['input'];\n  projectId: Scalars['String']['input'];\n  serviceId?: InputMaybe<Scalars['String']['input']>;\n  /** Skip deploys for affected services */\n  skipDeploys?: InputMaybe<Scalars['Boolean']['input']>;\n  value: Scalars['String']['input'];\n};\n\nexport type VariablesForEnvironmentInput = {\n  type?: EnvironmentVariableType;\n};\n\nexport type VercelAccount = {\n  __typename?: 'VercelAccount';\n  id: Scalars['String']['output'];\n  integrationAuthId: Scalars['String']['output'];\n  isUser: Scalars['Boolean']['output'];\n  name?: Maybe<Scalars['String']['output']>;\n  projects: Array<VercelProject>;\n  slug?: Maybe<Scalars['String']['output']>;\n};\n\nexport type VercelInfo = {\n  __typename?: 'VercelInfo';\n  accounts: Array<VercelAccount>;\n};\n\nexport type VercelProject = {\n  __typename?: 'VercelProject';\n  accountId: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  name: Scalars['String']['output'];\n};\n\nexport type Volume = Node & {\n  __typename?: 'Volume';\n  createdAt: Scalars['DateTime']['output'];\n  id: Scalars['ID']['output'];\n  name: Scalars['String']['output'];\n  project: Project;\n  projectId: Scalars['String']['output'];\n  /** @deprecated Use environment.volumeInstances for properly scoped access control */\n  volumeInstances: VolumeVolumeInstancesConnection;\n};\n\n\nexport type VolumeVolumeInstancesArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type VolumeCreateInput = {\n  /** The environment to deploy the volume instances into. If `null`, the volume will not be deployed to any environment. `undefined` will deploy to all environments. */\n  environmentId?: InputMaybe<Scalars['String']['input']>;\n  /** The path in the container to mount the volume to */\n  mountPath: Scalars['String']['input'];\n  /** The project to create the volume in */\n  projectId: Scalars['String']['input'];\n  /** The region to create the volume instances in. If not provided, the default region will be used. */\n  region?: InputMaybe<Scalars['String']['input']>;\n  /** The service to attach the volume to. If not provided, the volume will be disconnected. */\n  serviceId?: InputMaybe<Scalars['String']['input']>;\n  /** The size of the volume in MB. If not provided, the default size will be used. */\n  sizeMB?: InputMaybe<Scalars['Int']['input']>;\n  /** The IP address of the stacker to create the volume instances on. */\n  stackerIP?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type VolumeDetachmentReason =\n  | 'ORPHANED_STATEFUL'\n  | 'TRULY_DETACHED';\n\nexport type VolumeInstance = Node & {\n  __typename?: 'VolumeInstance';\n  createdAt: Scalars['DateTime']['output'];\n  currentSizeMB: Scalars['Float']['output'];\n  deletedAt?: Maybe<Scalars['DateTime']['output']>;\n  environment: Environment;\n  environmentId: Scalars['String']['output'];\n  externalId?: Maybe<Scalars['String']['output']>;\n  forks: VolumeInstanceForksConnection;\n  id: Scalars['ID']['output'];\n  isForked: Scalars['Boolean']['output'];\n  isPendingDeletion: Scalars['Boolean']['output'];\n  maxAvailableSizeMB: Scalars['Float']['output'];\n  mountPath: Scalars['String']['output'];\n  mountPathHistory: Array<VolumeInstanceMountPathHistory>;\n  parentVolumeInstanceId?: Maybe<Scalars['String']['output']>;\n  region?: Maybe<Scalars['String']['output']>;\n  service: Service;\n  serviceId?: Maybe<Scalars['String']['output']>;\n  sizeMB: Scalars['Int']['output'];\n  stacker?: Maybe<Scalars['String']['output']>;\n  state?: Maybe<VolumeState>;\n  volume: Volume;\n  volumeId: Scalars['String']['output'];\n};\n\n\nexport type VolumeInstanceForksArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type VolumeInstanceBackup = {\n  __typename?: 'VolumeInstanceBackup';\n  createdAt: Scalars['DateTime']['output'];\n  creatorId?: Maybe<Scalars['String']['output']>;\n  expiresAt?: Maybe<Scalars['DateTime']['output']>;\n  externalId: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  name?: Maybe<Scalars['String']['output']>;\n  referencedMB?: Maybe<Scalars['Int']['output']>;\n  scheduleId?: Maybe<Scalars['String']['output']>;\n  usedMB?: Maybe<Scalars['Int']['output']>;\n  volumeInstanceSizeMB?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type VolumeInstanceBackupSchedule = Node & {\n  __typename?: 'VolumeInstanceBackupSchedule';\n  createdAt: Scalars['DateTime']['output'];\n  cron: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  kind: VolumeInstanceBackupScheduleKind;\n  name: Scalars['String']['output'];\n  retentionSeconds?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type VolumeInstanceBackupScheduleKind =\n  | 'DAILY'\n  | 'MONTHLY'\n  | 'WEEKLY';\n\nexport type VolumeInstanceChangeRegionInput = {\n  /** The region of the volume instance. If provided and different from the current region, a migration of the volume to the new region will be triggered, which will cause downtime for services that have this volume attached. */\n  region: Scalars['String']['input'];\n};\n\nexport type VolumeInstanceForksConnection = {\n  __typename?: 'VolumeInstanceForksConnection';\n  edges: Array<VolumeInstanceForksConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type VolumeInstanceForksConnectionEdge = {\n  __typename?: 'VolumeInstanceForksConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: VolumeInstance;\n};\n\nexport type VolumeInstanceMigration = {\n  __typename?: 'VolumeInstanceMigration';\n  environmentId: Scalars['String']['output'];\n  projectId: Scalars['String']['output'];\n  serviceId?: Maybe<Scalars['String']['output']>;\n  volumeId: Scalars['String']['output'];\n  volumeInstanceExternalId: Scalars['String']['output'];\n  volumeInstanceId: Scalars['String']['output'];\n};\n\nexport type VolumeInstanceMigrationsQueueState = {\n  __typename?: 'VolumeInstanceMigrationsQueueState';\n  error?: Maybe<Scalars['String']['output']>;\n  inProgressMigrations: Array<VolumeInstanceMigration>;\n  isPaused: Scalars['Boolean']['output'];\n  maxConcurrent: Scalars['Int']['output'];\n  queuedMigrations: Array<VolumeInstanceMigration>;\n  stackerId: Scalars['String']['output'];\n  type: Scalars['String']['output'];\n};\n\nexport type VolumeInstanceMountPathHistory = Node & {\n  __typename?: 'VolumeInstanceMountPathHistory';\n  createdAt: Scalars['DateTime']['output'];\n  id: Scalars['ID']['output'];\n  mountPath: Scalars['String']['output'];\n  updatedAt: Scalars['DateTime']['output'];\n  volumeInstance: VolumeInstance;\n};\n\nexport type VolumeInstanceReplicationProgress = {\n  __typename?: 'VolumeInstanceReplicationProgress';\n  bytesTransferred: Scalars['BigInt']['output'];\n  percentComplete: Scalars['Float']['output'];\n  timestamp: Scalars['DateTime']['output'];\n  transferRateMbps?: Maybe<Scalars['Float']['output']>;\n};\n\nexport type VolumeInstanceResizeInput = {\n  /** Whether to perform an online resize. If true, the volume will be resized without detaching it from the service. If false, the volume will be resized by detaching it from the service first. Default is false. */\n  onlineResize?: InputMaybe<Scalars['Boolean']['input']>;\n  /** The size of the volume instance in MB. You can only resize a volume upwards */\n  targetSizeMB: Scalars['Int']['input'];\n};\n\nexport type VolumeInstanceUpdateInput = {\n  /** The mount path of the volume instance. If not provided, the mount path will not be updated. */\n  mountPath?: InputMaybe<Scalars['String']['input']>;\n  /** The service to attach the volume to. If not provided, the volume will be disconnected. */\n  serviceId?: InputMaybe<Scalars['String']['input']>;\n  /** The state of the volume instance. If not provided, the state will not be updated. */\n  state?: InputMaybe<VolumeState>;\n};\n\nexport type VolumeLockStatus = {\n  __typename?: 'VolumeLockStatus';\n  operation?: Maybe<Scalars['String']['output']>;\n  timestamp: Scalars['String']['output'];\n};\n\nexport type VolumeLockStatusUpdate = {\n  __typename?: 'VolumeLockStatusUpdate';\n  lockStatus: VolumeLockStatus;\n  volumeInstanceId: Scalars['String']['output'];\n};\n\nexport type VolumeMigrationEvent = {\n  __typename?: 'VolumeMigrationEvent';\n  acknowledgedAt?: Maybe<Scalars['DateTime']['output']>;\n  completedAt?: Maybe<Scalars['DateTime']['output']>;\n  createdAt: Scalars['DateTime']['output'];\n  deploymentId: Scalars['String']['output'];\n  destVolumeInstance: VolumeMigrationEventVolumeInstance;\n  id: Scalars['String']['output'];\n  reason?: Maybe<Scalars['String']['output']>;\n  sourceServiceId: Scalars['String']['output'];\n  sourceVolumeInstance: VolumeMigrationEventVolumeInstance;\n  updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type VolumeMigrationEventVolume = {\n  __typename?: 'VolumeMigrationEventVolume';\n  id: Scalars['String']['output'];\n  name: Scalars['String']['output'];\n  projectId: Scalars['String']['output'];\n};\n\nexport type VolumeMigrationEventVolumeInstance = {\n  __typename?: 'VolumeMigrationEventVolumeInstance';\n  environmentId: Scalars['String']['output'];\n  externalId: Scalars['String']['output'];\n  id: Scalars['String']['output'];\n  mountPath: Scalars['String']['output'];\n  region?: Maybe<Scalars['String']['output']>;\n  serviceId?: Maybe<Scalars['String']['output']>;\n  volume: VolumeMigrationEventVolume;\n};\n\nexport type VolumeReplicationProgressUpdate = {\n  __typename?: 'VolumeReplicationProgressUpdate';\n  currentSnapshot: VolumeSnapshotReplicationProgressUpdate;\n  destExternalId: Scalars['String']['output'];\n  destRegion?: Maybe<Scalars['String']['output']>;\n  destStackerId?: Maybe<Scalars['String']['output']>;\n  error?: Maybe<Scalars['String']['output']>;\n  estimatedTimeRemainingMs?: Maybe<Scalars['BigInt']['output']>;\n  history: Array<VolumeInstanceReplicationProgress>;\n  nbSnapshots: Scalars['Int']['output'];\n  offlineBytesTransferred: Scalars['BigInt']['output'];\n  offlineTotalBytes: Scalars['BigInt']['output'];\n  onlineBytesTransferred: Scalars['BigInt']['output'];\n  onlineTotalBytes: Scalars['BigInt']['output'];\n  percentComplete: Scalars['Float']['output'];\n  snapshotsSizes: Array<Scalars['BigInt']['output']>;\n  srcExternalId: Scalars['String']['output'];\n  srcRegion?: Maybe<Scalars['String']['output']>;\n  srcStackerId?: Maybe<Scalars['String']['output']>;\n  status: ReplicateVolumeInstanceStatus;\n  transferRateMbps?: Maybe<Scalars['Float']['output']>;\n};\n\nexport type VolumeSnapshotReplicationProgressUpdate = {\n  __typename?: 'VolumeSnapshotReplicationProgressUpdate';\n  bytesTransferred: Scalars['BigInt']['output'];\n  compressedBytesTransferred: Scalars['BigInt']['output'];\n  compressedTransferRateMbps?: Maybe<Scalars['Float']['output']>;\n  elapsedMs: Scalars['Int']['output'];\n  error?: Maybe<Scalars['String']['output']>;\n  estimatedTimeRemainingMs?: Maybe<Scalars['BigInt']['output']>;\n  index: Scalars['Int']['output'];\n  percentComplete: Scalars['Float']['output'];\n  startedAt?: Maybe<Scalars['DateTime']['output']>;\n  status: ReplicateVolumeInstanceSnapshotStatus;\n  totalBytes: Scalars['BigInt']['output'];\n  transferRateMbps?: Maybe<Scalars['Float']['output']>;\n};\n\nexport type VolumeState =\n  | 'DELETED'\n  | 'DELETING'\n  | 'ERROR'\n  | 'MIGRATING'\n  | 'MIGRATION_PENDING'\n  | 'READY'\n  | 'RESTORING'\n  | 'UPDATING';\n\nexport type VolumeUpdateInput = {\n  /** The name of the volume */\n  name?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type VolumeVolumeInstancesConnection = {\n  __typename?: 'VolumeVolumeInstancesConnection';\n  edges: Array<VolumeVolumeInstancesConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type VolumeVolumeInstancesConnectionEdge = {\n  __typename?: 'VolumeVolumeInstancesConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: VolumeInstance;\n};\n\nexport type Withdrawal = Node & {\n  __typename?: 'Withdrawal';\n  amount: Scalars['Float']['output'];\n  createdAt: Scalars['DateTime']['output'];\n  customerId: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  status: WithdrawalStatusType;\n  updatedAt: Scalars['DateTime']['output'];\n  withdrawalAccount: WithdrawalAccount;\n  withdrawalAccountId: Scalars['String']['output'];\n};\n\nexport type WithdrawalAccount = Node & {\n  __typename?: 'WithdrawalAccount';\n  customerId: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  platform: WithdrawalPlatformTypes;\n  platformDetails: Scalars['String']['output'];\n  stripeConnectInfo?: Maybe<WithdrawalAccountStripeConnectInfo>;\n};\n\nexport type WithdrawalAccountInfo = {\n  __typename?: 'WithdrawalAccountInfo';\n  customerId: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  platform: WithdrawalPlatformTypes;\n  platformDetails: Scalars['String']['output'];\n  stripeConnectInfo?: Maybe<WithdrawalAccountStripeConnectInfo>;\n};\n\nexport type WithdrawalAccountStripeConnectInfo = {\n  __typename?: 'WithdrawalAccountStripeConnectInfo';\n  bankLast4?: Maybe<Scalars['String']['output']>;\n  cardLast4?: Maybe<Scalars['String']['output']>;\n  hasOnboarded: Scalars['Boolean']['output'];\n  needsAttention: Scalars['Boolean']['output'];\n};\n\nexport type WithdrawalPlatformTypes =\n  | 'BMAC'\n  | 'GITHUB'\n  | 'PAYPAL'\n  | 'STRIPE_CONNECT';\n\nexport type WithdrawalRequestInput = {\n  amount: Scalars['Float']['input'];\n  customerId: Scalars['String']['input'];\n  withdrawalAccountId: Scalars['String']['input'];\n};\n\nexport type WithdrawalStatusType =\n  | 'CANCELLED'\n  | 'COMPLETED'\n  | 'FAILED'\n  | 'PENDING';\n\nexport type WithdrawalToCreditInput = {\n  amount: Scalars['Float']['input'];\n  customerId: Scalars['String']['input'];\n};\n\nexport type WithdrawalType = {\n  __typename?: 'WithdrawalType';\n  amount: Scalars['Float']['output'];\n  createdAt: Scalars['DateTime']['output'];\n  customerId: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  status: WithdrawalStatusType;\n  updatedAt: Scalars['DateTime']['output'];\n  withdrawalAccount: WithdrawalAccountInfo;\n  withdrawalAccountId: Scalars['String']['output'];\n};\n\nexport type WorkflowId = {\n  __typename?: 'WorkflowId';\n  workflowId?: Maybe<Scalars['String']['output']>;\n};\n\nexport type WorkflowResult = {\n  __typename?: 'WorkflowResult';\n  error?: Maybe<Scalars['String']['output']>;\n  status: WorkflowStatus;\n};\n\nexport type WorkflowStatus =\n  | 'Complete'\n  | 'Error'\n  | 'NotFound'\n  | 'Running';\n\nexport type Workspace = Node & {\n  __typename?: 'Workspace';\n  adoptionHistory: Array<AdoptionInfo>;\n  adoptionLevel: Scalars['Float']['output'];\n  /** @deprecated Deprecated regions are no longer supported. */\n  allowDeprecatedRegions?: Maybe<Scalars['Boolean']['output']>;\n  apiTokenRateLimit?: Maybe<ApiTokenRateLimit>;\n  avatar?: Maybe<Scalars['String']['output']>;\n  /** @deprecated Use `workspace.restriction` and check for an active BAN restriction. This field will be removed after the WorkspaceRestriction migration completes. */\n  banReason?: Maybe<Scalars['String']['output']>;\n  createdAt: Scalars['DateTime']['output'];\n  currentSessionHasAccess?: Maybe<Scalars['Boolean']['output']>;\n  customer: Customer;\n  deploymentsNeedApproval: DeploymentsNeedApproval;\n  discordRole?: Maybe<Scalars['String']['output']>;\n  /** Whether 2FA enforcement is enabled for this workspace. */\n  has2FAEnforcement: Scalars['Boolean']['output'];\n  /** Whether automatic deployment diagnosis is enabled for this workspace. */\n  hasAutomaticDiagnosis: Scalars['Boolean']['output'];\n  /** @deprecated Deprecated in favour of the SpendCommitment schema. */\n  hasBAA?: Maybe<Scalars['Boolean']['output']>;\n  hasCompanyDeploymentSources: Scalars['Boolean']['output'];\n  /** Whether this workspace has access to guardrails policies. */\n  hasGuardrailsAccess: Scalars['Boolean']['output'];\n  /** @deprecated Deprecated in favour of the SpendCommitment schema. */\n  hasRBAC: Scalars['Boolean']['output'];\n  hasSAML: Scalars['Boolean']['output'];\n  id: Scalars['ID']['output'];\n  identityProviders: WorkspaceIdentityProvidersConnection;\n  isVipWorkspace: Scalars['Boolean']['output'];\n  limitsVersion: LimitsVersion;\n  members: Array<WorkspaceMember>;\n  name: Scalars['String']['output'];\n  partnerProfile?: Maybe<PartnerProfile>;\n  plan: Plan;\n  preferredRegion?: Maybe<Scalars['String']['output']>;\n  /** Total number of projects in this workspace. Used by the dashboard to show an exact count without paginating through every project. */\n  projectCount: Scalars['Int']['output'];\n  projects: WorkspaceProjectsConnection;\n  /** Whether the current user's access is redacted due to pending 2FA requirement. Returns true if the user is a workspace member, workspace has 2FA enforcement enabled, and the current user needs to enable 2FA. */\n  redactedDueTo2FAPending: Scalars['Boolean']['output'];\n  referredUsers: Array<ReferralUser>;\n  restriction?: Maybe<WorkspaceRestriction>;\n  restrictions: WorkspaceRestrictionsConnection;\n  slackChannelId?: Maybe<Scalars['String']['output']>;\n  /** @deprecated Use plan field instead */\n  subscriptionModel: SubscriptionModel;\n  subscriptionPlanLimit?: Maybe<Scalars['SubscriptionPlanLimit']['output']>;\n  supportTierOverride?: Maybe<SupportTierOverride>;\n  /** @deprecated Teams are being removed from the system, don't use it */\n  team?: Maybe<Team>;\n  updatedAt: Scalars['DateTime']['output'];\n  /** Get a list of user emails in the workspace who do not have verified 2FA enabled. Returns an empty array if all users have 2FA enabled. */\n  usersWithout2FA: Array<Scalars['String']['output']>;\n  viewerRole?: Maybe<TeamRole>;\n};\n\n\nexport type WorkspaceIdentityProvidersArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type WorkspaceProjectCountArgs = {\n  includeDeleted?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n\nexport type WorkspaceProjectsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\n\nexport type WorkspaceRestrictionsArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type WorkspaceBanInput = {\n  banReason: Scalars['String']['input'];\n  threadId?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type WorkspaceCompletePostCreationTasksInput = {\n  plan: Plan;\n  subscriptionId: Scalars['String']['input'];\n  workspaceId: Scalars['String']['input'];\n};\n\nexport type WorkspaceCreateAndSubscribeInput = {\n  avatar?: InputMaybe<Scalars['String']['input']>;\n  name: Scalars['String']['input'];\n  paymentMethodId: Scalars['String']['input'];\n  plan: Plan;\n};\n\nexport type WorkspaceCreateAndSubscribeV2Response = {\n  __typename?: 'WorkspaceCreateAndSubscribeV2Response';\n  customerId: Scalars['String']['output'];\n  paymentIntentClientSecret?: Maybe<Scalars['String']['output']>;\n  subscriptionId: Scalars['String']['output'];\n  subscriptionStatus: StripeSubscriptionStatus;\n  workspaceId: Scalars['String']['output'];\n};\n\nexport type WorkspaceDowngradesUpdate = {\n  __typename?: 'WorkspaceDowngradesUpdate';\n  blockers: Array<Scalars['String']['output']>;\n  error?: Maybe<Scalars['String']['output']>;\n  userId: Scalars['String']['output'];\n  workspaceId: Scalars['String']['output'];\n};\n\nexport type WorkspaceIdPConnection = {\n  __typename?: 'WorkspaceIdPConnection';\n  createdAt?: Maybe<Scalars['DateTime']['output']>;\n  provider?: Maybe<Scalars['String']['output']>;\n  status: WorkspaceIdPConnectionStatus;\n  updatedAt?: Maybe<Scalars['DateTime']['output']>;\n};\n\nexport type WorkspaceIdPConnectionStatus =\n  | 'ACTIVE'\n  | 'DRAFT'\n  | 'INACTIVE'\n  | 'PENDING'\n  | 'VALIDATING';\n\nexport type WorkspaceIdentityProvider = Node & {\n  __typename?: 'WorkspaceIdentityProvider';\n  connection: WorkspaceIdPConnection;\n  createdAt: Scalars['DateTime']['output'];\n  enforcementEnabledAt?: Maybe<Scalars['DateTime']['output']>;\n  externalId: Scalars['String']['output'];\n  externalLink: Scalars['String']['output'];\n  id: Scalars['ID']['output'];\n  updatedAt: Scalars['DateTime']['output'];\n  workspace: Workspace;\n  workspaceId: Scalars['String']['output'];\n};\n\nexport type WorkspaceIdentityProviderConfigureResponse = {\n  __typename?: 'WorkspaceIdentityProviderConfigureResponse';\n  link: Scalars['String']['output'];\n};\n\nexport type WorkspaceIdentityProviderCreateInput = {\n  externalId?: InputMaybe<Scalars['String']['input']>;\n  organizationName?: InputMaybe<Scalars['String']['input']>;\n  workspaceId: Scalars['String']['input'];\n};\n\nexport type WorkspaceIdentityProvidersConnection = {\n  __typename?: 'WorkspaceIdentityProvidersConnection';\n  edges: Array<WorkspaceIdentityProvidersConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type WorkspaceIdentityProvidersConnectionEdge = {\n  __typename?: 'WorkspaceIdentityProvidersConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: WorkspaceIdentityProvider;\n};\n\nexport type WorkspaceInviteCodeCreateInput = {\n  role: Scalars['String']['input'];\n};\n\nexport type WorkspaceMember = {\n  __typename?: 'WorkspaceMember';\n  avatar?: Maybe<Scalars['String']['output']>;\n  email: Scalars['String']['output'];\n  /** Only retrieved if requested by an admin */\n  featureFlags?: Maybe<Array<ActiveFeatureFlag>>;\n  id: Scalars['String']['output'];\n  name?: Maybe<Scalars['String']['output']>;\n  role: TeamRole;\n  /** Only retrieved if requested by an admin */\n  twoFactorAuthEnabled?: Maybe<Scalars['Boolean']['output']>;\n};\n\nexport type WorkspaceMoverInfo = {\n  __typename?: 'WorkspaceMoverInfo';\n  bottomWorkspaces: Array<AdoptionInfo>;\n  negativeMovement?: Maybe<Scalars['Float']['output']>;\n  positiveMovement?: Maybe<Scalars['Float']['output']>;\n  sumDelta?: Maybe<Scalars['Float']['output']>;\n  topWorkspaces: Array<AdoptionInfo>;\n};\n\nexport type WorkspacePermissionChangeInput = {\n  role: TeamRole;\n  userId: Scalars['String']['input'];\n  workspaceId: Scalars['String']['input'];\n};\n\nexport type WorkspacePolicy = Node & {\n  __typename?: 'WorkspacePolicy';\n  deploySourceAllowlist: WorkspacePolicyDeploySourceAllowlistConnection;\n  id: Scalars['ID']['output'];\n  restrictDeploysToAllowedSources: Scalars['Boolean']['output'];\n  restrictPublicTcpProxies: Scalars['Boolean']['output'];\n  restrictRailwayDomainGeneration: Scalars['Boolean']['output'];\n};\n\n\nexport type WorkspacePolicyDeploySourceAllowlistArgs = {\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  first?: InputMaybe<Scalars['Int']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type WorkspacePolicyDeploySourceAllowlist = Node & {\n  __typename?: 'WorkspacePolicyDeploySourceAllowlist';\n  addedBy?: Maybe<User>;\n  createdAt: Scalars['DateTime']['output'];\n  id: Scalars['ID']['output'];\n  sourceIcon?: Maybe<Scalars['String']['output']>;\n  sourceId: Scalars['String']['output'];\n  sourceName: Scalars['String']['output'];\n  sourceType: WorkspacePolicyDeploySourceType;\n};\n\nexport type WorkspacePolicyDeploySourceAllowlistConnection = {\n  __typename?: 'WorkspacePolicyDeploySourceAllowlistConnection';\n  edges: Array<WorkspacePolicyDeploySourceAllowlistConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type WorkspacePolicyDeploySourceAllowlistConnectionEdge = {\n  __typename?: 'WorkspacePolicyDeploySourceAllowlistConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: WorkspacePolicyDeploySourceAllowlist;\n};\n\nexport type WorkspacePolicyDeploySourceType =\n  | 'GITHUB_ORG';\n\nexport type WorkspacePolicyItemUpdateInput = {\n  enabled: Scalars['Boolean']['input'];\n  policy: WorkspacePolicyName;\n};\n\nexport type WorkspacePolicyName =\n  | 'RESTRICT_DEPLOYS_TO_ALLOWED_SOURCES'\n  | 'RESTRICT_PUBLIC_TCP_PROXIES'\n  | 'RESTRICT_RAILWAY_DOMAIN_GENERATION';\n\nexport type WorkspacePolicySelectableDeploySource = {\n  __typename?: 'WorkspacePolicySelectableDeploySource';\n  sourceIcon?: Maybe<Scalars['String']['output']>;\n  sourceId: Scalars['String']['output'];\n  sourceName: Scalars['String']['output'];\n  sourceType: WorkspacePolicyDeploySourceType;\n};\n\nexport type WorkspaceProjectsConnection = {\n  __typename?: 'WorkspaceProjectsConnection';\n  edges: Array<WorkspaceProjectsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type WorkspaceProjectsConnectionEdge = {\n  __typename?: 'WorkspaceProjectsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: Project;\n};\n\nexport type WorkspaceResourcesStopInput = {\n  reason: Scalars['String']['input'];\n};\n\nexport type WorkspaceRestrictInput = {\n  reason: Scalars['String']['input'];\n  stopDeploys: Scalars['Boolean']['input'];\n  threadId?: InputMaybe<Scalars['String']['input']>;\n  type?: InputMaybe<RestrictionType>;\n};\n\nexport type WorkspaceRestriction = Node & {\n  __typename?: 'WorkspaceRestriction';\n  /** Currently SUBMITTED or REVIEWING appeal on this restriction, if any. */\n  activeAppeal?: Maybe<WorkspaceRestrictionAppeal>;\n  actor?: Maybe<User>;\n  actorId?: Maybe<Scalars['String']['output']>;\n  /** Whether the current viewer can submit a USER-type appeal on this restriction. False when the viewer is the sole member or the sole admin of the restricted workspace — approving such an appeal would orphan the workspace. */\n  allowsUserAppeal: Scalars['Boolean']['output'];\n  appeals: Array<WorkspaceRestrictionAppeal>;\n  createdAt: Scalars['DateTime']['output'];\n  deploysStopped: Scalars['Boolean']['output'];\n  id: Scalars['ID']['output'];\n  liftedBy?: Maybe<User>;\n  reason: Scalars['String']['output'];\n  status: RestrictionStatus;\n  terminatedAt?: Maybe<Scalars['DateTime']['output']>;\n  terminationReason?: Maybe<Scalars['String']['output']>;\n  threadId?: Maybe<Scalars['String']['output']>;\n  type: RestrictionType;\n  /** The viewer's own appeal on this restriction (any type), if any. A user can only submit one appeal per restriction across all types — this field is the form's authoritative gate. */\n  viewerAppeal?: Maybe<WorkspaceRestrictionAppeal>;\n  /** The single WORKSPACE-type appeal on this restriction, if any. Visible to all workspace admins so a co-admin can see when another admin has already filed. */\n  workspaceAppeal?: Maybe<WorkspaceRestrictionAppeal>;\n};\n\nexport type WorkspaceRestrictionAppeal = Node & {\n  __typename?: 'WorkspaceRestrictionAppeal';\n  createdAt: Scalars['DateTime']['output'];\n  id: Scalars['ID']['output'];\n  message: Scalars['String']['output'];\n  resolutionNote?: Maybe<Scalars['String']['output']>;\n  resolvedAt?: Maybe<Scalars['DateTime']['output']>;\n  resolvedBy?: Maybe<User>;\n  reviewStartedAt?: Maybe<Scalars['DateTime']['output']>;\n  status: WorkspaceRestrictionAppealStatus;\n  submittedBy?: Maybe<User>;\n  threadId?: Maybe<Scalars['String']['output']>;\n  type: WorkspaceRestrictionAppealType;\n};\n\nexport type WorkspaceRestrictionAppealStatus =\n  | 'APPROVED'\n  | 'DENIED'\n  | 'REVIEWING'\n  | 'SUBMITTED';\n\nexport type WorkspaceRestrictionAppealType =\n  | 'USER'\n  | 'WORKSPACE';\n\nexport type WorkspaceRestrictionsConnection = {\n  __typename?: 'WorkspaceRestrictionsConnection';\n  edges: Array<WorkspaceRestrictionsConnectionEdge>;\n  pageInfo: PageInfo;\n};\n\nexport type WorkspaceRestrictionsConnectionEdge = {\n  __typename?: 'WorkspaceRestrictionsConnectionEdge';\n  cursor: Scalars['String']['output'];\n  node: WorkspaceRestriction;\n};\n\nexport type WorkspaceStanding = {\n  __typename?: 'WorkspaceStanding';\n  /** Whether this workspace is Enterprise or Enterprise POC */\n  isEnterprise: Scalars['Boolean']['output'];\n  joinDate: Scalars['String']['output'];\n  /** Most recent high-value paid invoice */\n  recentHighValueInvoice: InvoiceStandingDetails;\n};\n\nexport type WorkspaceTopMoversInput = {\n  parameter: ParamMeasurement;\n  /** The start of the period to get metrics for. */\n  startDate: Scalars['DateTime']['input'];\n};\n\nexport type WorkspaceTrustedDomainCreateInput = {\n  domainName: Scalars['String']['input'];\n  role: Scalars['String']['input'];\n  workspaceId: Scalars['String']['input'];\n};\n\nexport type WorkspaceUnbanInput = {\n  reason?: InputMaybe<Scalars['String']['input']>;\n  /** @deprecated We don't accept a thread on resolution yet. */\n  threadId?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type WorkspaceUnrestrictInput = {\n  reason?: InputMaybe<Scalars['String']['input']>;\n  /** @deprecated We don't accept a thread on resolution yet. */\n  threadId?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type WorkspaceUpdateInput = {\n  avatar?: InputMaybe<Scalars['String']['input']>;\n  /** @deprecated Deprecated in favour of the SpendCommitment schema. */\n  hasBAA?: InputMaybe<Scalars['Boolean']['input']>;\n  name?: InputMaybe<Scalars['String']['input']>;\n  preferredRegion?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type WorkspaceUpdatePlanResponse = {\n  __typename?: 'WorkspaceUpdatePlanResponse';\n  paymentIntentClientSecret?: Maybe<Scalars['String']['output']>;\n  subscriptionId?: Maybe<Scalars['String']['output']>;\n  subscriptionStatus?: Maybe<StripeSubscriptionStatus>;\n  success: Scalars['Boolean']['output'];\n};\n\nexport type WorkspaceUserInviteInput = {\n  code: Scalars['String']['input'];\n  email: Scalars['String']['input'];\n};\n\nexport type WorkspaceUserRemoveInput = {\n  userId: Scalars['String']['input'];\n};\n\nexport type CustomerTogglePayoutsToCreditsInput = {\n  isWithdrawingToCredits: Scalars['Boolean']['input'];\n};\n\nexport type RailwaySandboxFieldsFragment = { __typename?: 'Sandbox', id: string, status: SandboxStatus, environmentId: string, region: string, idleTimeoutMinutes?: number | null, createdAt: string };\n\nexport type RailwaySandboxQueryVariables = Exact<{\n  environmentId: Scalars['String']['input'];\n  id: Scalars['String']['input'];\n}>;\n\n\nexport type RailwaySandboxQuery = { __typename?: 'Query', sandbox?: { __typename?: 'Sandbox', id: string, status: SandboxStatus, environmentId: string, region: string, idleTimeoutMinutes?: number | null, createdAt: string } | null };\n\nexport type RailwaySandboxesQueryVariables = Exact<{\n  environmentId: Scalars['String']['input'];\n  first?: InputMaybe<Scalars['Int']['input']>;\n  after?: InputMaybe<Scalars['String']['input']>;\n  before?: InputMaybe<Scalars['String']['input']>;\n  last?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type RailwaySandboxesQuery = { __typename?: 'Query', sandboxes: { __typename?: 'QuerySandboxesConnection', edges: Array<{ __typename?: 'QuerySandboxesConnectionEdge', node: { __typename?: 'Sandbox', id: string, status: SandboxStatus, environmentId: string, region: string, idleTimeoutMinutes?: number | null, createdAt: string } }>, pageInfo: { __typename?: 'PageInfo', hasNextPage: boolean, endCursor?: string | null } } };\n\nexport type RailwaySandboxCreateMutationVariables = Exact<{\n  input: SandboxCreateInput;\n}>;\n\n\nexport type RailwaySandboxCreateMutation = { __typename?: 'Mutation', sandboxCreate: { __typename?: 'Sandbox', id: string, status: SandboxStatus, environmentId: string, region: string, idleTimeoutMinutes?: number | null, createdAt: string } };\n\nexport type RailwaySandboxExecMutationVariables = Exact<{\n  id: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n  command: Scalars['String']['input'];\n  timeoutSec?: InputMaybe<Scalars['Int']['input']>;\n}>;\n\n\nexport type RailwaySandboxExecMutation = { __typename?: 'Mutation', sandboxExec: { __typename?: 'SandboxExecResult', exitCode: number, stdout: string, stderr: string, truncated: boolean, timedOut: boolean } };\n\nexport type RailwaySandboxDestroyMutationVariables = Exact<{\n  id: Scalars['String']['input'];\n  environmentId: Scalars['String']['input'];\n}>;\n\n\nexport type RailwaySandboxDestroyMutation = { __typename?: 'Mutation', sandboxDestroy?: { __typename?: 'Sandbox', id: string, status: SandboxStatus, environmentId: string, region: string, idleTimeoutMinutes?: number | null, createdAt: string } | null };\n\nexport type RailwaySandboxTemplateFieldsFragment = { __typename?: 'SandboxTemplate', id: string, status: SandboxTemplateStatus, environmentId: string };\n\nexport type RailwaySandboxTemplateBuildMutationVariables = Exact<{\n  environmentId: Scalars['String']['input'];\n  input: SandboxTemplateInput;\n}>;\n\n\nexport type RailwaySandboxTemplateBuildMutation = { __typename?: 'Mutation', sandboxTemplateBuild: { __typename?: 'SandboxTemplate', id: string, status: SandboxTemplateStatus, environmentId: string } };\n\nexport type RailwaySandboxTemplateQueryVariables = Exact<{\n  environmentId: Scalars['String']['input'];\n  id: Scalars['ID']['input'];\n}>;\n\n\nexport type RailwaySandboxTemplateQuery = { __typename?: 'Query', sandboxTemplate: { __typename?: 'SandboxTemplate', id: string, status: SandboxTemplateStatus, environmentId: string } };\n\nexport const RailwaySandboxFieldsFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RailwaySandboxFields\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Sandbox\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"region\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"idleTimeoutMinutes\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}}]}}]} as unknown as DocumentNode<RailwaySandboxFieldsFragment, unknown>;\nexport const RailwaySandboxTemplateFieldsFragmentDoc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RailwaySandboxTemplateFields\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"SandboxTemplate\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentId\"}}]}}]} as unknown as DocumentNode<RailwaySandboxTemplateFieldsFragment, unknown>;\nexport const RailwaySandboxDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"RailwaySandbox\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"sandbox\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RailwaySandboxFields\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RailwaySandboxFields\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Sandbox\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"region\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"idleTimeoutMinutes\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}}]}}]} as unknown as DocumentNode<RailwaySandboxQuery, RailwaySandboxQueryVariables>;\nexport const RailwaySandboxesDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"RailwaySandboxes\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"before\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"last\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"sandboxes\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"first\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"after\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"before\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"before\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"last\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"last\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"edges\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"node\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RailwaySandboxFields\"}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endCursor\"}}]}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RailwaySandboxFields\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Sandbox\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"region\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"idleTimeoutMinutes\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}}]}}]} as unknown as DocumentNode<RailwaySandboxesQuery, RailwaySandboxesQueryVariables>;\nexport const RailwaySandboxCreateDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"RailwaySandboxCreate\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"SandboxCreateInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"sandboxCreate\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RailwaySandboxFields\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RailwaySandboxFields\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Sandbox\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"region\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"idleTimeoutMinutes\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}}]}}]} as unknown as DocumentNode<RailwaySandboxCreateMutation, RailwaySandboxCreateMutationVariables>;\nexport const RailwaySandboxExecDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"RailwaySandboxExec\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"command\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"timeoutSec\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"sandboxExec\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"command\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"command\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"timeoutSec\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"timeoutSec\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"exitCode\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"stdout\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"stderr\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"truncated\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"timedOut\"}}]}}]}}]} as unknown as DocumentNode<RailwaySandboxExecMutation, RailwaySandboxExecMutationVariables>;\nexport const RailwaySandboxDestroyDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"RailwaySandboxDestroy\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"sandboxDestroy\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentId\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RailwaySandboxFields\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RailwaySandboxFields\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Sandbox\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentId\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"region\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"idleTimeoutMinutes\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdAt\"}}]}}]} as unknown as DocumentNode<RailwaySandboxDestroyMutation, RailwaySandboxDestroyMutationVariables>;\nexport const RailwaySandboxTemplateBuildDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"RailwaySandboxTemplateBuild\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"SandboxTemplateInput\"}}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"sandboxTemplateBuild\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RailwaySandboxTemplateFields\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RailwaySandboxTemplateFields\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"SandboxTemplate\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentId\"}}]}}]} as unknown as DocumentNode<RailwaySandboxTemplateBuildMutation, RailwaySandboxTemplateBuildMutationVariables>;\nexport const RailwaySandboxTemplateDocument = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"RailwaySandboxTemplate\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentId\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}}},{\"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\":\"sandboxTemplate\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentId\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentId\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"RailwaySandboxTemplateFields\"}}]}}]}},{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"RailwaySandboxTemplateFields\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"SandboxTemplate\"}},\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"environmentId\"}}]}}]} as unknown as DocumentNode<RailwaySandboxTemplateQuery, RailwaySandboxTemplateQueryVariables>;","import { RailwayError } from \"../core/errors.js\";\nimport type { SandboxStatus } from \"./types.js\";\n\nexport class SandboxNotFoundError extends RailwayError {\n  readonly id: string;\n  readonly environmentId: string;\n\n  constructor(args: { id: string; environmentId: string }) {\n    super(\n      `Sandbox \"${args.id}\" was not found in environment \"${args.environmentId}\".`,\n    );\n    this.id = args.id;\n    this.environmentId = args.environmentId;\n  }\n}\n\n/** A sandbox reached FAILED/DESTROYING/DESTROYED before becoming RUNNING. */\nexport class SandboxFailedError extends RailwayError {\n  readonly id: string;\n  readonly status: SandboxStatus;\n\n  constructor(args: { id: string; status: SandboxStatus }) {\n    super(\n      `Sandbox \"${args.id}\" entered terminal state \"${args.status}\" before becoming ready.`,\n    );\n    this.id = args.id;\n    this.status = args.status;\n  }\n}\n\n/** A server-side template build finished in the FAILED state. */\nexport class SandboxTemplateBuildError extends RailwayError {\n  readonly templateId: string;\n  readonly environmentId: string;\n\n  constructor(args: { templateId: string; environmentId: string }) {\n    super(\n      `Sandbox template \"${args.templateId}\" failed to build in environment \"${args.environmentId}\".`,\n    );\n    this.templateId = args.templateId;\n    this.environmentId = args.environmentId;\n  }\n}\n\n/** A readiness wait timed out. */\nexport class SandboxTimeoutError extends RailwayError {\n  readonly resource: \"sandbox\" | \"template\";\n  readonly id: string;\n  readonly lastStatus: string;\n  readonly timeoutMs: number;\n\n  constructor(args: {\n    resource: \"sandbox\" | \"template\";\n    id: string;\n    lastStatus: string;\n    timeoutMs: number;\n  }) {\n    super(\n      `Timed out after ${args.timeoutMs}ms waiting for ${args.resource} \"${args.id}\" ` +\n        `to become ready (last status: ${args.lastStatus}).`,\n    );\n    this.resource = args.resource;\n    this.id = args.id;\n    this.lastStatus = args.lastStatus;\n    this.timeoutMs = args.timeoutMs;\n  }\n}\n","import {\n  normalizeRailwayClientConfig,\n  resolveEnvironmentId,\n  type NormalizedRailwayClientConfig,\n  type RailwayClientConfig,\n} from \"../core/config.js\";\nimport { requestGraphQL } from \"../core/graphql-client.js\";\nimport {\n  RailwaySandboxCreateDocument,\n  RailwaySandboxDestroyDocument,\n  RailwaySandboxDocument,\n  RailwaySandboxesDocument,\n  RailwaySandboxExecDocument,\n  RailwaySandboxTemplateBuildDocument,\n  RailwaySandboxTemplateDocument,\n  type RailwaySandboxCreateMutation,\n  type RailwaySandboxCreateMutationVariables,\n  type RailwaySandboxDestroyMutation,\n  type RailwaySandboxDestroyMutationVariables,\n  type RailwaySandboxExecMutation,\n  type RailwaySandboxExecMutationVariables,\n  type RailwaySandboxesQuery,\n  type RailwaySandboxesQueryVariables,\n  type RailwaySandboxQuery,\n  type RailwaySandboxQueryVariables,\n  type RailwaySandboxTemplateBuildMutation,\n  type RailwaySandboxTemplateBuildMutationVariables,\n  type RailwaySandboxTemplateQuery,\n  type RailwaySandboxTemplateQueryVariables,\n} from \"../generated/graphql.js\";\nimport {\n  SandboxFailedError,\n  SandboxNotFoundError,\n  SandboxTemplateBuildError,\n  SandboxTimeoutError,\n} from \"./errors.js\";\nimport type {\n  CreateOptions,\n  ExecOptions,\n  ExecResult,\n  ListOptions,\n  SandboxInfo,\n  SandboxTemplateInfo,\n} from \"./types.js\";\n\nconst READINESS_TIMEOUT_MS = 5 * 60_000;\nconst POLL_INITIAL_DELAY_MS = 500;\nconst POLL_MAX_DELAY_MS = 5_000;\n\nconst sleep = (ms: number): Promise<void> =>\n  new Promise(resolve => setTimeout(resolve, ms));\n\ninterface SandboxEngineConfig extends NormalizedRailwayClientConfig {\n  environmentId: string;\n}\n\nexport interface SandboxOptions extends RailwayClientConfig {\n  environmentId?: string;\n}\n\n/**\n * Binds resolved credentials and environment to sandbox GraphQL operations.\n */\nexport class SandboxEngine {\n  readonly #config: SandboxEngineConfig;\n\n  constructor(config: SandboxEngineConfig) {\n    this.#config = config;\n  }\n\n  get environmentId(): string {\n    return this.#config.environmentId;\n  }\n\n  async create(\n    options: CreateOptions = {},\n    templateInstructions?: readonly string[],\n  ): Promise<SandboxInfo> {\n    const input: RailwaySandboxCreateMutationVariables[\"input\"] = {\n      environmentId: this.#config.environmentId,\n    };\n    if (options.idleTimeoutMinutes !== undefined) {\n      input.idleTimeoutMinutes = options.idleTimeoutMinutes;\n    }\n    if (templateInstructions !== undefined) {\n      input.template = { instructions: [...templateInstructions] };\n    }\n\n    const data = await requestGraphQL<\n      RailwaySandboxCreateMutation,\n      RailwaySandboxCreateMutationVariables\n    >(this.#config, RailwaySandboxCreateDocument, { input });\n\n    return this.#waitForRunning(data.sandboxCreate);\n  }\n\n  async buildTemplate(\n    instructions: readonly string[],\n  ): Promise<SandboxTemplateInfo> {\n    const variables: RailwaySandboxTemplateBuildMutationVariables = {\n      environmentId: this.#config.environmentId,\n      input: { instructions: [...instructions] },\n    };\n    const data = await requestGraphQL<\n      RailwaySandboxTemplateBuildMutation,\n      RailwaySandboxTemplateBuildMutationVariables\n    >(this.#config, RailwaySandboxTemplateBuildDocument, variables);\n\n    return data.sandboxTemplateBuild;\n  }\n\n  async getTemplate(id: string): Promise<SandboxTemplateInfo> {\n    const variables: RailwaySandboxTemplateQueryVariables = {\n      id,\n      environmentId: this.#config.environmentId,\n    };\n    const data = await requestGraphQL<\n      RailwaySandboxTemplateQuery,\n      RailwaySandboxTemplateQueryVariables\n    >(this.#config, RailwaySandboxTemplateDocument, variables);\n\n    return data.sandboxTemplate;\n  }\n\n  async buildTemplateUntilReady(\n    instructions: readonly string[],\n  ): Promise<SandboxTemplateInfo> {\n    const built = await this.buildTemplate(instructions);\n    if (built.status === \"READY\") return built;\n    if (built.status === \"FAILED\") {\n      throw new SandboxTemplateBuildError({\n        templateId: built.id,\n        environmentId: this.environmentId,\n      });\n    }\n\n    return this.#pollUntilReady({\n      poll: () => this.getTemplate(built.id),\n      isReady: template => template.status === \"READY\",\n      isTerminal: template => template.status === \"FAILED\",\n      onTerminal: template => {\n        throw new SandboxTemplateBuildError({\n          templateId: template.id,\n          environmentId: this.environmentId,\n        });\n      },\n      onTimeout: template => {\n        throw new SandboxTimeoutError({\n          resource: \"template\",\n          id: template.id,\n          lastStatus: template.status,\n          timeoutMs: READINESS_TIMEOUT_MS,\n        });\n      },\n    });\n  }\n\n  async #waitForRunning(created: SandboxInfo): Promise<SandboxInfo> {\n    if (created.status === \"RUNNING\") return created;\n    if (isSandboxTerminal(created.status)) {\n      throw new SandboxFailedError({ id: created.id, status: created.status });\n    }\n\n    return this.#pollUntilReady({\n      poll: () => this.#getOrThrow(created.id),\n      isReady: info => info.status === \"RUNNING\",\n      isTerminal: info => isSandboxTerminal(info.status),\n      onTerminal: info => {\n        throw new SandboxFailedError({ id: info.id, status: info.status });\n      },\n      onTimeout: info => {\n        throw new SandboxTimeoutError({\n          resource: \"sandbox\",\n          id: info.id,\n          lastStatus: info.status,\n          timeoutMs: READINESS_TIMEOUT_MS,\n        });\n      },\n    });\n  }\n\n  async #getOrThrow(id: string): Promise<SandboxInfo> {\n    const info = await this.get(id);\n    if (!info) {\n      throw new SandboxNotFoundError({ id, environmentId: this.environmentId });\n    }\n    return info;\n  }\n\n  async #pollUntilReady<T>(args: {\n    poll: () => Promise<T>;\n    isReady: (value: T) => boolean;\n    isTerminal: (value: T) => boolean;\n    onTerminal: (value: T) => never;\n    onTimeout: (value: T) => never;\n  }): Promise<T> {\n    const start = Date.now();\n    let delay = POLL_INITIAL_DELAY_MS;\n    let last: T;\n    do {\n      await sleep(delay);\n      last = await args.poll();\n      if (args.isReady(last)) return last;\n      if (args.isTerminal(last)) return args.onTerminal(last);\n      delay = Math.min(delay * 2, POLL_MAX_DELAY_MS);\n    } while (Date.now() - start < READINESS_TIMEOUT_MS);\n    return args.onTimeout(last);\n  }\n\n  async exec(\n    id: string,\n    command: string,\n    options: ExecOptions = {},\n  ): Promise<ExecResult> {\n    const variables: RailwaySandboxExecMutationVariables = {\n      id,\n      command,\n      environmentId: this.#config.environmentId,\n    };\n    if (options.timeoutSec !== undefined) variables.timeoutSec = options.timeoutSec;\n\n    const data = await requestGraphQL<\n      RailwaySandboxExecMutation,\n      RailwaySandboxExecMutationVariables\n    >(this.#config, RailwaySandboxExecDocument, variables);\n\n    return data.sandboxExec;\n  }\n\n  async destroy(id: string): Promise<void> {\n    const variables: RailwaySandboxDestroyMutationVariables = {\n      id,\n      environmentId: this.#config.environmentId,\n    };\n    await requestGraphQL<\n      RailwaySandboxDestroyMutation,\n      RailwaySandboxDestroyMutationVariables\n    >(this.#config, RailwaySandboxDestroyDocument, variables);\n  }\n\n  async get(id: string): Promise<SandboxInfo | null> {\n    const variables: RailwaySandboxQueryVariables = {\n      id,\n      environmentId: this.#config.environmentId,\n    };\n    const data = await requestGraphQL<\n      RailwaySandboxQuery,\n      RailwaySandboxQueryVariables\n    >(this.#config, RailwaySandboxDocument, variables);\n\n    return data.sandbox ?? null;\n  }\n\n  async list(options: ListOptions = {}): Promise<SandboxInfo[]> {\n    const variables: RailwaySandboxesQueryVariables = {\n      environmentId: this.#config.environmentId,\n    };\n    if (options.first !== undefined) variables.first = options.first;\n    if (options.after !== undefined) variables.after = options.after;\n\n    const data = await requestGraphQL<\n      RailwaySandboxesQuery,\n      RailwaySandboxesQueryVariables\n    >(this.#config, RailwaySandboxesDocument, variables);\n\n    return data.sandboxes.edges.map(edge => edge.node);\n  }\n}\n\nfunction isSandboxTerminal(status: SandboxInfo[\"status\"]): boolean {\n  return status === \"FAILED\" || status === \"DESTROYED\" || status === \"DESTROYING\";\n}\n\nexport function engineFromOptions(options: SandboxOptions = {}): SandboxEngine {\n  const base = normalizeRailwayClientConfig(options);\n  const environmentId = resolveEnvironmentId(options.environmentId);\n  return new SandboxEngine({ ...base, environmentId });\n}\n","import { engineFromOptions } from \"./engine.js\";\nimport type { TemplateBuildOptions } from \"./types.js\";\n\ninterface TemplateState {\n  readonly instructions: readonly string[];\n  readonly env: ReadonlyArray<readonly [string, string]>;\n  readonly workdir?: string;\n}\n\nconst EMPTY_STATE: TemplateState = { instructions: [], env: [] };\n\n/** Immutable sandbox base recipe returned by `Sandbox.template()`. */\nexport interface SandboxTemplate {\n  /** Add a shell command build step. */\n  run(command: string): SandboxTemplate;\n  /** Install Debian packages with apt. */\n  withPackages(...packages: string[]): SandboxTemplate;\n  /** Set environment variables for later build steps. */\n  withEnv(vars: Record<string, string>): SandboxTemplate;\n  /** Set the working directory for later build steps. */\n  workdir(dir: string): SandboxTemplate;\n  /** Build the template before creating sandboxes from it. */\n  build(options?: TemplateBuildOptions): Promise<SandboxTemplate>;\n}\n\nexport function createSandboxTemplate(): SandboxTemplate {\n  return new SandboxTemplateRecipe(EMPTY_STATE);\n}\n\nexport function isSandboxTemplate(value: unknown): value is SandboxTemplate {\n  return value instanceof SandboxTemplateRecipe;\n}\n\nexport function compileSandboxTemplate(template: SandboxTemplate): string[] {\n  if (!(template instanceof SandboxTemplateRecipe)) {\n    throw new TypeError(\"Expected a SandboxTemplate returned by Sandbox.template().\");\n  }\n  return template.compile();\n}\n\nclass SandboxTemplateRecipe implements SandboxTemplate {\n  readonly #state: TemplateState;\n\n  constructor(state: TemplateState) {\n    this.#state = state;\n  }\n\n  run(command: string): SandboxTemplate {\n    return this.#append(command);\n  }\n\n  withPackages(...packages: string[]): SandboxTemplate {\n    if (packages.length === 0) return this;\n    return this.#append(\n      `apt-get update && apt-get install -y --no-install-recommends ${packages.join(\" \")}`,\n    );\n  }\n\n  withEnv(vars: Record<string, string>): SandboxTemplate {\n    let env = this.#state.env;\n    for (const [key, value] of Object.entries(vars)) {\n      env = upsertEnv(env, key, value);\n    }\n    return new SandboxTemplateRecipe({ ...this.#state, env });\n  }\n\n  workdir(dir: string): SandboxTemplate {\n    return new SandboxTemplateRecipe({ ...this.#state, workdir: dir });\n  }\n\n  async build(options: TemplateBuildOptions = {}): Promise<SandboxTemplate> {\n    const engine = engineFromOptions(options);\n    await engine.buildTemplateUntilReady(this.compile());\n    return this;\n  }\n\n  compile(): string[] {\n    return [...this.#state.instructions];\n  }\n\n  #append(command: string): SandboxTemplate {\n    const instruction = compile(command, this.#state.env, this.#state.workdir);\n    return new SandboxTemplateRecipe({\n      ...this.#state,\n      instructions: [...this.#state.instructions, instruction],\n    });\n  }\n}\n\nfunction compile(\n  command: string,\n  env: ReadonlyArray<readonly [string, string]>,\n  workdir: string | undefined,\n): string {\n  const parts: string[] = [];\n  for (const [key, value] of env) parts.push(`export ${key}=${shellQuote(value)}`);\n  if (workdir !== undefined) {\n    const quoted = shellQuote(workdir);\n    parts.push(`mkdir -p ${quoted}`, `cd ${quoted}`);\n  }\n  parts.push(command);\n  return parts.join(\" && \");\n}\n\nfunction upsertEnv(\n  env: ReadonlyArray<readonly [string, string]>,\n  key: string,\n  value: string,\n): ReadonlyArray<readonly [string, string]> {\n  const index = env.findIndex(([k]) => k === key);\n  if (index === -1) return [...env, [key, value]];\n  const next = env.slice();\n  next[index] = [key, value];\n  return next;\n}\n\nfunction shellQuote(value: string): string {\n  return `'${value.replaceAll(\"'\", \"'\\\\''\")}'`;\n}\n","import {\n  engineFromOptions,\n  type SandboxEngine,\n} from \"./engine.js\";\nimport { SandboxNotFoundError } from \"./errors.js\";\nimport {\n  compileSandboxTemplate,\n  createSandboxTemplate,\n  isSandboxTemplate,\n  type SandboxTemplate,\n} from \"./template.js\";\nimport type {\n  ConnectOptions,\n  CreateOptions,\n  ExecOptions,\n  ExecResult,\n  ListOptions,\n  SandboxInfo,\n  SandboxStatus,\n} from \"./types.js\";\n\n/**\n * A live Railway sandbox. There is no separate client: a sandbox always comes\n * from somewhere — nothing (`Sandbox.create`), an id (`Sandbox.connect`), or a\n * reusable base (`Sandbox.template()`). The constructor is private; use the\n * static factories.\n */\nexport class Sandbox implements AsyncDisposable {\n  readonly #engine: SandboxEngine;\n  #info: SandboxInfo;\n\n  private constructor(engine: SandboxEngine, info: SandboxInfo) {\n    this.#engine = engine;\n    this.#info = info;\n  }\n\n  get id(): string {\n    return this.#info.id;\n  }\n\n  get status(): SandboxStatus {\n    return this.#info.status;\n  }\n\n  get environmentId(): string {\n    return this.#info.environmentId;\n  }\n\n  get region(): string {\n    return this.#info.region;\n  }\n\n  get idleTimeoutMinutes(): number | null {\n    return this.#info.idleTimeoutMinutes ?? null;\n  }\n\n  get createdAt(): string {\n    return this.#info.createdAt;\n  }\n\n  /** Return a new immutable sandbox template. */\n  static template(): SandboxTemplate {\n    return createSandboxTemplate();\n  }\n\n  static create(\n    template: SandboxTemplate,\n    options?: CreateOptions,\n  ): Promise<Sandbox>;\n  static create(options?: CreateOptions): Promise<Sandbox>;\n  static async create(\n    sourceOrOptions: SandboxTemplate | CreateOptions = {},\n    maybeOptions: CreateOptions = {},\n  ): Promise<Sandbox> {\n    if (isSandboxTemplate(sourceOrOptions)) {\n      const engine = engineFromOptions(maybeOptions);\n      const instructions = compileSandboxTemplate(sourceOrOptions);\n      await engine.buildTemplateUntilReady(instructions);\n      const info = await engine.create(maybeOptions, instructions);\n      return new Sandbox(engine, info);\n    }\n\n    const engine = engineFromOptions(sourceOrOptions);\n    const info = await engine.create(sourceOrOptions);\n    return new Sandbox(engine, info);\n  }\n\n  static async connect(\n    id: string,\n    options: ConnectOptions = {},\n  ): Promise<Sandbox> {\n    const engine = engineFromOptions(options);\n    const info = await engine.get(id);\n    if (!info) {\n      throw new SandboxNotFoundError({ id, environmentId: engine.environmentId });\n    }\n    return new Sandbox(engine, info);\n  }\n\n  static async list(options: ListOptions = {}): Promise<SandboxInfo[]> {\n    const engine = engineFromOptions(options);\n    return engine.list(options);\n  }\n\n  exec(command: string, options: ExecOptions = {}): Promise<ExecResult> {\n    return this.#engine.exec(this.id, command, options);\n  }\n\n  async destroy(): Promise<void> {\n    await this.#engine.destroy(this.id);\n  }\n\n  /** Re-reads the sandbox to refresh `status` and other fields in place. */\n  async refresh(): Promise<this> {\n    const info = await this.#engine.get(this.id);\n    if (!info) {\n      throw new SandboxNotFoundError({\n        id: this.id,\n        environmentId: this.environmentId,\n      });\n    }\n    this.#info = info;\n    return this;\n  }\n\n  async [Symbol.asyncDispose](): Promise<void> {\n    await this.destroy();\n  }\n\n  toJSON(): SandboxInfo {\n    return { ...this.#info };\n  }\n}\n"]}