directive @defer(label: String, if: Boolean! = true) on FRAGMENT_SPREAD | INLINE_FRAGMENT """ A user-submitted petition to be granted access to a specific set of fields on an upstream service within an application, following a policy denial. """ type AccessRequest { """Stable identifier for the request.""" id: UUID! """Application the access is being requested for.""" appId: UUID! """Upstream service the access is being requested against.""" serviceId: UUID! """ The principal the request applies to. Null means the caller's own identity. """ principal: PolicyRulePrincipal """ Router-generated integrity token describing the denied fields. Format: `v0..`. The JSON payload contains `blocked_fields`, `app_id`, `service_id`, and request metadata. Pass the `denial_context` value from the router's `CONSTELLATION_ACCESS_DENIED` error extension verbatim. """ denialContext: String! """ Base64url-encoded normalized GraphQL operation that triggered the access check. Decode to display the original query to reviewers. """ sourceOperation: String! """Fields the caller is requesting access to.""" requestedFields: [String!]! """Human-readable justification for the request.""" reason: String! """Lifecycle status of the request.""" status: AccessRequestStatus! """ Fields that have been approved across all approve decisions. Null when no approve decisions exist yet. """ approvedFields: [String!] """Server-side reason for denial; null on non-denied requests.""" denialReason: String """IDs of policy exceptions evaluated while reviewing this request.""" exceptionIds: [UUID!]! """IDs of policy rules evaluated while reviewing this request.""" ruleIds: [UUID!]! """Approval policy governing the quorum requirement.""" approvalPolicyId: UUID """Number of approve decisions required to fully approve the request.""" requiredApproverCount: Int! """ Optional expiry — after this timestamp the request is no longer actionable. """ expiresAt: DateTime """Optional client-supplied key used to deduplicate retries on create.""" idempotencyKey: String """Timestamp when the request was created.""" createdAt: DateTime! """Timestamp when the request was last updated.""" updatedAt: DateTime! """ Decisions recorded against this request, ordered by `decidedAt` ascending, `id` ascending as a tiebreaker. Capped at 500 entries. """ decisions: [AccessRequestDecision!]! } """A single decider's recorded outcome on an access request.""" type AccessRequestDecision { """Stable identifier for the decision row.""" id: UUID! """The access request this decision belongs to.""" requestId: UUID! """ Identifier of the user/system that recorded the decision (the JWT `sub`). """ deciderId: String! """Approve or deny.""" decision: AccessRequestDecisionKind! """ Fields explicitly approved by this decider. Null on deny decisions. A field NOT in this array is implicitly NOT approved by this decider. """ approvedFields: [String!] """Optional caller-facing note (e.g. denial rationale).""" note: String """When the decision was recorded.""" decidedAt: DateTime! } """ The outcome a decider records for an access request. Mirrors `crate::models::ApprovalDecision`; kept distinct so the GraphQL surface owns its naming (`AccessRequestDecisionKind`) without leaking the DB-layer enum. """ enum AccessRequestDecisionKind { """Decider approves access, optionally for a subset of fields.""" APPROVE """Decider denies access.""" DENY } """ Filter options for `Service.accessRequests`. All fields are optional and compose (logical AND). """ input AccessRequestFilterInput { """ Match only requests whose status is one of the supplied values. An empty array is treated the same as null (no status filter). """ status: [AccessRequestStatus!] """Match only requests targeting this application.""" appId: UUID """Match only requests targeting this upstream service.""" serviceId: UUID } """Paginated page of `AccessRequest`s.""" type AccessRequestPage { """Access requests in this page, in stable order (newest first).""" items: [AccessRequest!]! """ Opaque cursor for the next page, or null when there are no more results. """ cursor: String } """Lifecycle status of an access request.""" enum AccessRequestStatus { """Request has been submitted and is awaiting review.""" PENDING """Request has received some approvals but requires additional approvers.""" AWAITING_MORE_APPROVERS """Request has been fully approved.""" APPROVED """Request has been approved for a subset of the requested fields.""" PARTIALLY_APPROVED """Request has been denied.""" DENIED } """ An organization in Apollo Studio. Can have multiple members and graphs. """ type Account { billingInfo: BillingInfo billingInsights(from: Date!, limit: Int, to: Date, windowSize: BillingUsageStatsWindowSize): BillingInsights! """Used by Studio to show the Change Plan button""" canChangePlan: Boolean! capabilities: AccountCapabilities currentBillingMonth: BillingMonth currentPlan: BillingPlan! currentSubscription: BillingSubscription eligibleForUsageBasedPlan: Boolean! expiredTrialDismissedAt: Timestamp expiredTrialSubscription: BillingSubscription hasBeenOnTrial: Boolean! hasBillingInfo: Boolean """ Internal immutable identifier for the account. Only visible to Apollo admins (because it really shouldn't be used in normal client apps). """ internalID: ID! invoices: [Invoice!]! isLocked: Boolean isOnExpiredTrial: Boolean! isOnTrial: Boolean! isSelfServiceDeletable: Boolean limits: AccountLimits lockDetails: AccountLockDetails lockType: AccountLockType """ Fetches an offline license for the account. (If you need this then please contact your Apollo account manager to discuss your requirements.) """ offlineLicense: RouterEntitlement planUpgradeOptions: [OnboardingPlanOption!] requestsInCurrentBillingPeriod: Long routerEntitlement: RouterEntitlement """ Apollo admin only: the stripe customer id associated with the billing account """ stripeCustomerId: String subscriptions: [BillingSubscription!]! survey(id: String!): Survey """Fetch a CloudOnboarding associated with this account""" cloudOnboarding(graphRef: String!): CloudOnboarding """List the private subgraphs associated with your Apollo account""" privateSubgraphs(cloudProvider: CloudProvider!): [PrivateSubgraph!]! """ All active upstream services for this organization, paginated. Exposed as `upstreamServices` in the SDL to avoid colliding with Studio's existing (deprecated) `Account.services` field, which has a different return type. """ upstreamServices(limit: Int, cursor: String): UpstreamServicePage! """ Look up a single upstream service in this organization by id. Exposed as `upstreamService` in the SDL — see `upstream_services` for the rationale. """ upstreamService(id: UUID!): UpstreamService! """All active applications for this organization, paginated.""" applications(limit: Int, cursor: String): ApplicationPage! """Look up a single application in this organization by id.""" application(id: UUID!): ApplicationType! """ Evaluate a GraphQL operation against this organization's policy bundle. Returns a per-field audit trace showing which fields would be DENIED, MASKED, or ALLOWED given the specified principal context. The `principalId` and `groups` must represent the **originator** of the operation (e.g., the application calling the Router), NOT the Studio user making this evaluation request. """ evaluateOperation(input: EvaluateOperationInput!): PolicyEvaluationResult! """ Constellation ("GraphOS for Agents") metadata for this organization. A namespace wrapper so Constellation-specific fields don't crowd the federated `Account`. Always resolvable; the fields inside carry their own auth and nullability. """ graphOsForAgents: GraphOsForAgentsAccount! """Fetches a specific API key by its ID""" apiKey(keyId: ID!): GraphOsKey """ Returns a list of all active Operator, Subgraph, and SCIM API keys for the account. Org Admins can view all keys; Graph Admins can view only keys for graphs they administer. """ apiKeys(after: String, before: String, filter: ApiKeyFilterInput, first: Int, last: Int): GraphOsKeyConnection! """These are the roles that the account is able to use""" availableRoles: [UserPermission!]! companyUrl: String """The time at which the account was created""" createdAt: Timestamp """ The organization's currently-enabled S3 integration configuration, or null if none is configured. """ enabledS3Integration: S3IntegrationConfig """ Globally unique identifier, which isn't guaranteed stable (can be changed by administrators). """ id: ID! invitations(includeAccepted: Boolean! = false): [AccountInvitation!] """The user memberships belonging to an Organization""" memberships: [AccountMembership!] """Name of the organization, which can change over time and isn't unique.""" name: String! """Members of this account for a specific product.""" productMembers(product: String!): [ProductMember!]! roles: AccountRoles """ All of the organization's S3 integration configurations, both enabled and disabled. """ s3Integrations: [S3IntegrationConfig!]! """ How many seats would be included in your next bill, as best estimated today """ seatCountForNextBill: Int seats: Seats secondaryIDs: [ID!]! """Fetches a specific service account by its ID""" serviceAccount(id: ID!): ServiceAccount """The session length in seconds for a user in this org""" sessionDurationInSeconds: Int """ If non-null, this organization tracks its members through an upstream IdP; invitations are not possible on SSO-synchronized account. """ sso: OrganizationSSO ssoV2: SsoConfig """A list of reusable invitations for the organization.""" staticInvitations: [OrganizationInviteLink!] auditLogExports( """ When true, only exports explicitly requested by a user are returned. Set to false to also include exports created by scheduled / system jobs. """ onlyUserInitiated: Boolean! = true ): [AuditLogExport!] """ Get an URL to which an avatar image can be uploaded. Client uploads by sending a PUT request with the image data to MediaUploadInfo.url. Client SHOULD set the "Content-Type" header to the browser-inferred MIME type, and SHOULD set the "x-apollo-content-filename" header to the filename, if such information is available. Client MUST set the "x-apollo-csrf-token" header to MediaUploadInfo.csrfToken. """ avatarUpload: AvatarUploadResult """ Get an image URL for the account's avatar. Note that CORS is not enabled for these URLs. The size argument is used for bandwidth reduction, and should be the size of the image as displayed in the application. Apollo's media server will downscale larger images to at least the requested size, but this will not happen for third-party media servers. """ avatarUrl(size: Int! = 40): String billingContactEmail: String graphIDAvailable(id: ID!): Boolean! """Graphs belonging to this organization.""" graphs(filterBy: GraphFilter, includeDeleted: Boolean): [Service!]! """Graphs belonging to this organization.""" graphsConnection( """Return the elements in the list that come after the specified cursor.""" after: String """Return the elements in the list that come before the specified cursor.""" before: String """ Filtering options for graphs returned from the connection. Defaults to returning all graphs. """ filterBy: GraphFilter """Return the first n elements from the list.""" first: Int """Return the last n elements from the list.""" last: Int ): AccountGraphConnection provisionedAt: Timestamp @deprecated(reason: "use Account.createdAt instead") requests(from: Timestamp!, to: Timestamp!): Long """Graphs belonging to this organization.""" services(includeDeleted: Boolean): [Service!]! @deprecated(reason: "Use graphs field instead") state: AccountState @deprecated(reason: "no longer relevant; it's only ever populated for enterprise accounts") stats( from: Timestamp! """ Granularity of buckets. Defaults to the entire range (aggregate all data into a single durationBucket) when null. """ resolution: Resolution """Defaults to the current time when null.""" to: Timestamp ): AccountStatsWindow! @deprecated(reason: "use Account.statsWindow instead") statsWindow( from: Timestamp! """ Granularity of buckets. Defaults to the entire range (aggregate all data into a single durationBucket) when null. """ resolution: Resolution """Defaults to the current time when null.""" to: Timestamp ): AccountStatsWindow """Returns a different registry related stats pertaining to this account.""" registryStatsWindow(from: Timestamp!, resolution: Resolution, to: Timestamp): RegistryStatsWindow """Gets a ticket for this org, by id""" supportTicket(id: ID!): SupportTicket """List of support tickets submitted for this org""" supportTickets: [SupportTicket!] } """Columns of AccountBillingUsageStats.""" enum AccountBillingUsageStatsColumn { AGENT_ID AGENT_VERSION GRAPH_DEPLOYMENT_TYPE OPERATION_COUNT OPERATION_COUNT_PROVIDED_EXPLICITLY OPERATION_SUBTYPE OPERATION_TYPE ROUTER_FEATURES_ENABLED SCHEMA_TAG SERVICE_ID TIMESTAMP } type AccountBillingUsageStatsDimensions { agentId: String agentVersion: String graphDeploymentType: String operationCountProvidedExplicitly: String operationSubtype: String operationType: String routerFeaturesEnabled: String schemaTag: String serviceId: ID } """ Filter for data in AccountBillingUsageStats. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input AccountBillingUsageStatsFilter { """ Selects rows whose agentId dimension equals the given value if not null. To query for the null value, use {in: {agentId: [null]}} instead. """ agentId: String """ Selects rows whose agentVersion dimension equals the given value if not null. To query for the null value, use {in: {agentVersion: [null]}} instead. """ agentVersion: String and: [AccountBillingUsageStatsFilter!] """ Selects rows whose graphDeploymentType dimension equals the given value if not null. To query for the null value, use {in: {graphDeploymentType: [null]}} instead. """ graphDeploymentType: String in: AccountBillingUsageStatsFilterIn not: AccountBillingUsageStatsFilter """ Selects rows whose operationCountProvidedExplicitly dimension equals the given value if not null. To query for the null value, use {in: {operationCountProvidedExplicitly: [null]}} instead. """ operationCountProvidedExplicitly: String """ Selects rows whose operationSubtype dimension equals the given value if not null. To query for the null value, use {in: {operationSubtype: [null]}} instead. """ operationSubtype: String """ Selects rows whose operationType dimension equals the given value if not null. To query for the null value, use {in: {operationType: [null]}} instead. """ operationType: String or: [AccountBillingUsageStatsFilter!] """ Selects rows whose routerFeaturesEnabled dimension equals the given value if not null. To query for the null value, use {in: {routerFeaturesEnabled: [null]}} instead. """ routerFeaturesEnabled: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serviceId dimension equals the given value if not null. To query for the null value, use {in: {serviceId: [null]}} instead. """ serviceId: ID } """ Filter for data in AccountBillingUsageStats. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input AccountBillingUsageStatsFilterIn { """ Selects rows whose agentId dimension is in the given list. A null value in the list means a row with null for that dimension. """ agentId: [String] """ Selects rows whose agentVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ agentVersion: [String] """ Selects rows whose graphDeploymentType dimension is in the given list. A null value in the list means a row with null for that dimension. """ graphDeploymentType: [String] """ Selects rows whose operationCountProvidedExplicitly dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationCountProvidedExplicitly: [String] """ Selects rows whose operationSubtype dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationSubtype: [String] """ Selects rows whose operationType dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationType: [String] """ Selects rows whose routerFeaturesEnabled dimension is in the given list. A null value in the list means a row with null for that dimension. """ routerFeaturesEnabled: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serviceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serviceId: [ID] } type AccountBillingUsageStatsMetrics { operationCount: Long! } input AccountBillingUsageStatsOrderBySpec { column: AccountBillingUsageStatsColumn! direction: Ordering! } type AccountBillingUsageStatsRecord { """Dimensions of AccountBillingUsageStats that can be grouped by.""" groupBy: AccountBillingUsageStatsDimensions! """Metrics of AccountBillingUsageStats that can be aggregated over.""" metrics: AccountBillingUsageStatsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } type AccountCapabilities { asList: [AccountCapability!]! clientVersions: Boolean! clients: Boolean! cloudGraphs: Boolean! connectorsInRouter: Boolean! contracts: Boolean! customSessionLengths: Boolean! datadog: Boolean! federation: Boolean! launches: Boolean! linting: Boolean! metrics: Boolean! notifications: Boolean! operationRegistry: Boolean! """Whether a plan can use the Operator""" operator: Boolean! persistedQueries: Boolean! proposals: Boolean! schemaValidation: Boolean! sso: Boolean! traces: Boolean! userRoles: Boolean! webhooks: Boolean! } type AccountCapability { description: String label: String! value: Boolean! } """Columns of AccountCardinalityStats.""" enum AccountCardinalityStatsColumn { CLIENT_NAME_CARDINALITY CLIENT_VERSION_CARDINALITY OPERATION_SHAPE_CARDINALITY SCHEMA_COORDINATE_CARDINALITY SCHEMA_TAG SERVICE_ID TIMESTAMP } type AccountCardinalityStatsDimensions { schemaTag: String serviceId: ID } """ Filter for data in AccountCardinalityStats. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input AccountCardinalityStatsFilter { and: [AccountCardinalityStatsFilter!] in: AccountCardinalityStatsFilterIn not: AccountCardinalityStatsFilter or: [AccountCardinalityStatsFilter!] """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serviceId dimension equals the given value if not null. To query for the null value, use {in: {serviceId: [null]}} instead. """ serviceId: ID } """ Filter for data in AccountCardinalityStats. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input AccountCardinalityStatsFilterIn { """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serviceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serviceId: [ID] } type AccountCardinalityStatsMetrics { clientNameCardinality: Float! clientVersionCardinality: Float! operationShapeCardinality: Float! schemaCoordinateCardinality: Float! } input AccountCardinalityStatsOrderBySpec { column: AccountCardinalityStatsColumn! direction: Ordering! } type AccountCardinalityStatsRecord { """Dimensions of AccountCardinalityStats that can be grouped by.""" groupBy: AccountCardinalityStatsDimensions! """Metrics of AccountCardinalityStats that can be aggregated over.""" metrics: AccountCardinalityStatsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } type AccountChecksStatsMetrics { totalFailedChecks: Long! totalSuccessfulChecks: Long! } type AccountChecksStatsRecord { id: ID! timestamp: Timestamp! metrics: AccountChecksStatsMetrics! } """Columns of AccountCoordinateUsage.""" enum AccountCoordinateUsageColumn { CLIENT_NAME CLIENT_VERSION ESTIMATED_EXECUTION_COUNT EXECUTION_COUNT KIND NAMED_ATTRIBUTE NAMED_TYPE OPERATION_SUBTYPE OPERATION_TYPE QUERY_ID QUERY_NAME REFERENCING_OPERATION_COUNT REQUEST_COUNT_NULL REQUEST_COUNT_UNDEFINED SCHEMA_TAG SERVICE_ID TIMESTAMP } type AccountCoordinateUsageDimensions { clientName: String clientVersion: String kind: String namedAttribute: String namedType: String operationSubtype: String operationType: String queryId: String queryName: String schemaTag: String serviceId: ID } """ Filter for data in AccountCoordinateUsage. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input AccountCoordinateUsageFilter { and: [AccountCoordinateUsageFilter!] """ Selects rows whose clientName dimension equals the given value if not null. To query for the null value, use {in: {clientName: [null]}} instead. """ clientName: String """ Selects rows whose clientVersion dimension equals the given value if not null. To query for the null value, use {in: {clientVersion: [null]}} instead. """ clientVersion: String in: AccountCoordinateUsageFilterIn """ Selects rows whose kind dimension equals the given value if not null. To query for the null value, use {in: {kind: [null]}} instead. """ kind: String """ Selects rows whose namedAttribute dimension equals the given value if not null. To query for the null value, use {in: {namedAttribute: [null]}} instead. """ namedAttribute: String """ Selects rows whose namedType dimension equals the given value if not null. To query for the null value, use {in: {namedType: [null]}} instead. """ namedType: String not: AccountCoordinateUsageFilter """ Selects rows whose operationSubtype dimension equals the given value if not null. To query for the null value, use {in: {operationSubtype: [null]}} instead. """ operationSubtype: String """ Selects rows whose operationType dimension equals the given value if not null. To query for the null value, use {in: {operationType: [null]}} instead. """ operationType: String or: [AccountCoordinateUsageFilter!] """ Selects rows whose queryId dimension equals the given value if not null. To query for the null value, use {in: {queryId: [null]}} instead. """ queryId: String """ Selects rows whose queryName dimension equals the given value if not null. To query for the null value, use {in: {queryName: [null]}} instead. """ queryName: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serviceId dimension equals the given value if not null. To query for the null value, use {in: {serviceId: [null]}} instead. """ serviceId: ID } """ Filter for data in AccountCoordinateUsage. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input AccountCoordinateUsageFilterIn { """ Selects rows whose clientName dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientName: [String] """ Selects rows whose clientVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientVersion: [String] """ Selects rows whose kind dimension is in the given list. A null value in the list means a row with null for that dimension. """ kind: [String] """ Selects rows whose namedAttribute dimension is in the given list. A null value in the list means a row with null for that dimension. """ namedAttribute: [String] """ Selects rows whose namedType dimension is in the given list. A null value in the list means a row with null for that dimension. """ namedType: [String] """ Selects rows whose operationSubtype dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationSubtype: [String] """ Selects rows whose operationType dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationType: [String] """ Selects rows whose queryId dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryId: [String] """ Selects rows whose queryName dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryName: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serviceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serviceId: [ID] } type AccountCoordinateUsageMetrics { estimatedExecutionCount: Long! executionCount: Long! referencingOperationCount: Long! requestCountNull: Long! requestCountUndefined: Long! } input AccountCoordinateUsageOrderBySpec { column: AccountCoordinateUsageColumn! direction: Ordering! } type AccountCoordinateUsageRecord { """Dimensions of AccountCoordinateUsage that can be grouped by.""" groupBy: AccountCoordinateUsageDimensions! """Metrics of AccountCoordinateUsage that can be aggregated over.""" metrics: AccountCoordinateUsageMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """Columns of AccountEdgeServerInfos.""" enum AccountEdgeServerInfosColumn { BOOT_ID EXECUTABLE_SCHEMA_ID LIBRARY_VERSION PLATFORM RUNTIME_VERSION SCHEMA_TAG SERVER_ID SERVICE_ID TIMESTAMP USER_VERSION } type AccountEdgeServerInfosDimensions { bootId: ID executableSchemaId: ID libraryVersion: String platform: String runtimeVersion: String schemaTag: String serverId: ID serviceId: ID userVersion: String } """ Filter for data in AccountEdgeServerInfos. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input AccountEdgeServerInfosFilter { and: [AccountEdgeServerInfosFilter!] """ Selects rows whose bootId dimension equals the given value if not null. To query for the null value, use {in: {bootId: [null]}} instead. """ bootId: ID """ Selects rows whose executableSchemaId dimension equals the given value if not null. To query for the null value, use {in: {executableSchemaId: [null]}} instead. """ executableSchemaId: ID in: AccountEdgeServerInfosFilterIn """ Selects rows whose libraryVersion dimension equals the given value if not null. To query for the null value, use {in: {libraryVersion: [null]}} instead. """ libraryVersion: String not: AccountEdgeServerInfosFilter or: [AccountEdgeServerInfosFilter!] """ Selects rows whose platform dimension equals the given value if not null. To query for the null value, use {in: {platform: [null]}} instead. """ platform: String """ Selects rows whose runtimeVersion dimension equals the given value if not null. To query for the null value, use {in: {runtimeVersion: [null]}} instead. """ runtimeVersion: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serverId dimension equals the given value if not null. To query for the null value, use {in: {serverId: [null]}} instead. """ serverId: ID """ Selects rows whose serviceId dimension equals the given value if not null. To query for the null value, use {in: {serviceId: [null]}} instead. """ serviceId: ID """ Selects rows whose userVersion dimension equals the given value if not null. To query for the null value, use {in: {userVersion: [null]}} instead. """ userVersion: String } """ Filter for data in AccountEdgeServerInfos. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input AccountEdgeServerInfosFilterIn { """ Selects rows whose bootId dimension is in the given list. A null value in the list means a row with null for that dimension. """ bootId: [ID] """ Selects rows whose executableSchemaId dimension is in the given list. A null value in the list means a row with null for that dimension. """ executableSchemaId: [ID] """ Selects rows whose libraryVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ libraryVersion: [String] """ Selects rows whose platform dimension is in the given list. A null value in the list means a row with null for that dimension. """ platform: [String] """ Selects rows whose runtimeVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ runtimeVersion: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serverId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serverId: [ID] """ Selects rows whose serviceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serviceId: [ID] """ Selects rows whose userVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ userVersion: [String] } input AccountEdgeServerInfosOrderBySpec { column: AccountEdgeServerInfosColumn! direction: Ordering! } type AccountEdgeServerInfosRecord { """Dimensions of AccountEdgeServerInfos that can be grouped by.""" groupBy: AccountEdgeServerInfosDimensions! """Starting segment timestamp.""" timestamp: Timestamp! } """Columns of AccountErrorStats.""" enum AccountErrorStatsColumn { CLIENT_NAME CLIENT_VERSION ERRORS_COUNT PATH QUERY_ID QUERY_NAME REQUESTS_WITH_ERRORS_COUNT SCHEMA_HASH SCHEMA_TAG SERVICE_ID TIMESTAMP } type AccountErrorStatsDimensions { clientName: String clientVersion: String path: String queryId: ID queryName: String schemaHash: String schemaTag: String serviceId: ID } """ Filter for data in AccountErrorStats. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input AccountErrorStatsFilter { and: [AccountErrorStatsFilter!] """ Selects rows whose clientName dimension equals the given value if not null. To query for the null value, use {in: {clientName: [null]}} instead. """ clientName: String """ Selects rows whose clientVersion dimension equals the given value if not null. To query for the null value, use {in: {clientVersion: [null]}} instead. """ clientVersion: String in: AccountErrorStatsFilterIn not: AccountErrorStatsFilter or: [AccountErrorStatsFilter!] """ Selects rows whose path dimension equals the given value if not null. To query for the null value, use {in: {path: [null]}} instead. """ path: String """ Selects rows whose queryId dimension equals the given value if not null. To query for the null value, use {in: {queryId: [null]}} instead. """ queryId: ID """ Selects rows whose queryName dimension equals the given value if not null. To query for the null value, use {in: {queryName: [null]}} instead. """ queryName: String """ Selects rows whose schemaHash dimension equals the given value if not null. To query for the null value, use {in: {schemaHash: [null]}} instead. """ schemaHash: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serviceId dimension equals the given value if not null. To query for the null value, use {in: {serviceId: [null]}} instead. """ serviceId: ID } """ Filter for data in AccountErrorStats. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input AccountErrorStatsFilterIn { """ Selects rows whose clientName dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientName: [String] """ Selects rows whose clientVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientVersion: [String] """ Selects rows whose path dimension is in the given list. A null value in the list means a row with null for that dimension. """ path: [String] """ Selects rows whose queryId dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryId: [ID] """ Selects rows whose queryName dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryName: [String] """ Selects rows whose schemaHash dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaHash: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serviceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serviceId: [ID] } type AccountErrorStatsMetrics { errorsCount: Long! requestsWithErrorsCount: Long! } input AccountErrorStatsOrderBySpec { column: AccountErrorStatsColumn! direction: Ordering! } type AccountErrorStatsRecord { """Dimensions of AccountErrorStats that can be grouped by.""" groupBy: AccountErrorStatsDimensions! """Metrics of AccountErrorStats that can be aggregated over.""" metrics: AccountErrorStatsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """Columns of AccountFederatedErrorStats.""" enum AccountFederatedErrorStatsColumn { AGENT_VERSION CLIENT_NAME CLIENT_VERSION ERROR_CODE ERROR_COUNT ERROR_PATH ERROR_SERVICE OPERATION_ID OPERATION_NAME OPERATION_TYPE SCHEMA_TAG SERVICE_ID SEVERITY TIMESTAMP } type AccountFederatedErrorStatsDimensions { agentVersion: String clientName: String clientVersion: String errorCode: String errorPath: String errorService: String operationId: String operationName: String operationType: String schemaTag: String serviceId: ID severity: String } """ Filter for data in AccountFederatedErrorStats. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input AccountFederatedErrorStatsFilter { """ Selects rows whose agentVersion dimension equals the given value if not null. To query for the null value, use {in: {agentVersion: [null]}} instead. """ agentVersion: String and: [AccountFederatedErrorStatsFilter!] """ Selects rows whose clientName dimension equals the given value if not null. To query for the null value, use {in: {clientName: [null]}} instead. """ clientName: String """ Selects rows whose clientVersion dimension equals the given value if not null. To query for the null value, use {in: {clientVersion: [null]}} instead. """ clientVersion: String """ Selects rows whose errorCode dimension equals the given value if not null. To query for the null value, use {in: {errorCode: [null]}} instead. """ errorCode: String """ Selects rows whose errorPath dimension equals the given value if not null. To query for the null value, use {in: {errorPath: [null]}} instead. """ errorPath: String """ Selects rows whose errorService dimension equals the given value if not null. To query for the null value, use {in: {errorService: [null]}} instead. """ errorService: String in: AccountFederatedErrorStatsFilterIn not: AccountFederatedErrorStatsFilter """ Selects rows whose operationId dimension equals the given value if not null. To query for the null value, use {in: {operationId: [null]}} instead. """ operationId: String """ Selects rows whose operationName dimension equals the given value if not null. To query for the null value, use {in: {operationName: [null]}} instead. """ operationName: String """ Selects rows whose operationType dimension equals the given value if not null. To query for the null value, use {in: {operationType: [null]}} instead. """ operationType: String or: [AccountFederatedErrorStatsFilter!] """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serviceId dimension equals the given value if not null. To query for the null value, use {in: {serviceId: [null]}} instead. """ serviceId: ID """ Selects rows whose severity dimension equals the given value if not null. To query for the null value, use {in: {severity: [null]}} instead. """ severity: String } """ Filter for data in AccountFederatedErrorStats. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input AccountFederatedErrorStatsFilterIn { """ Selects rows whose agentVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ agentVersion: [String] """ Selects rows whose clientName dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientName: [String] """ Selects rows whose clientVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientVersion: [String] """ Selects rows whose errorCode dimension is in the given list. A null value in the list means a row with null for that dimension. """ errorCode: [String] """ Selects rows whose errorPath dimension is in the given list. A null value in the list means a row with null for that dimension. """ errorPath: [String] """ Selects rows whose errorService dimension is in the given list. A null value in the list means a row with null for that dimension. """ errorService: [String] """ Selects rows whose operationId dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationId: [String] """ Selects rows whose operationName dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationName: [String] """ Selects rows whose operationType dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationType: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serviceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serviceId: [ID] """ Selects rows whose severity dimension is in the given list. A null value in the list means a row with null for that dimension. """ severity: [String] } type AccountFederatedErrorStatsMetrics { errorCount: Long! } input AccountFederatedErrorStatsOrderBySpec { column: AccountFederatedErrorStatsColumn! direction: Ordering! } type AccountFederatedErrorStatsRecord { """Dimensions of AccountFederatedErrorStats that can be grouped by.""" groupBy: AccountFederatedErrorStatsDimensions! """Metrics of AccountFederatedErrorStats that can be aggregated over.""" metrics: AccountFederatedErrorStatsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """Columns of AccountFieldExecutions.""" enum AccountFieldExecutionsColumn { ERRORS_COUNT ESTIMATED_EXECUTION_COUNT FIELD_HISTOGRAM FIELD_NAME OBSERVED_EXECUTION_COUNT PARENT_TYPE REFERENCING_OPERATION_COUNT REQUESTS_WITH_ERRORS_COUNT SCHEMA_TAG SERVICE_ID TIMESTAMP } type AccountFieldExecutionsDimensions { field: String fieldName: String parentType: String schemaTag: String serviceId: ID } """ Filter for data in AccountFieldExecutions. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input AccountFieldExecutionsFilter { and: [AccountFieldExecutionsFilter!] """ Selects rows whose fieldName dimension equals the given value if not null. To query for the null value, use {in: {fieldName: [null]}} instead. """ fieldName: String in: AccountFieldExecutionsFilterIn not: AccountFieldExecutionsFilter or: [AccountFieldExecutionsFilter!] """ Selects rows whose parentType dimension equals the given value if not null. To query for the null value, use {in: {parentType: [null]}} instead. """ parentType: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serviceId dimension equals the given value if not null. To query for the null value, use {in: {serviceId: [null]}} instead. """ serviceId: ID } """ Filter for data in AccountFieldExecutions. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input AccountFieldExecutionsFilterIn { """ Selects rows whose fieldName dimension is in the given list. A null value in the list means a row with null for that dimension. """ fieldName: [String] """ Selects rows whose parentType dimension is in the given list. A null value in the list means a row with null for that dimension. """ parentType: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serviceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serviceId: [ID] } type AccountFieldExecutionsMetrics { errorsCount: Long! estimatedExecutionCount: Long! fieldHistogram: DurationHistogram! observedExecutionCount: Long! referencingOperationCount: Long! requestsWithErrorsCount: Long! } input AccountFieldExecutionsOrderBySpec { column: AccountFieldExecutionsColumn! direction: Ordering! } type AccountFieldExecutionsRecord { """Dimensions of AccountFieldExecutions that can be grouped by.""" groupBy: AccountFieldExecutionsDimensions! """Metrics of AccountFieldExecutions that can be aggregated over.""" metrics: AccountFieldExecutionsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """Columns of AccountFieldUsage.""" enum AccountFieldUsageColumn { CLIENT_NAME CLIENT_VERSION ESTIMATED_EXECUTION_COUNT EXECUTION_COUNT FIELD_NAME OPERATION_SUBTYPE OPERATION_TYPE PARENT_TYPE QUERY_ID QUERY_NAME REFERENCING_OPERATION_COUNT SCHEMA_HASH SCHEMA_TAG SERVICE_ID TIMESTAMP } type AccountFieldUsageDimensions { clientName: String clientVersion: String fieldName: String operationSubtype: String operationType: String parentType: String queryId: ID queryName: String schemaHash: String schemaTag: String serviceId: ID } """ Filter for data in AccountFieldUsage. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input AccountFieldUsageFilter { and: [AccountFieldUsageFilter!] """ Selects rows whose clientName dimension equals the given value if not null. To query for the null value, use {in: {clientName: [null]}} instead. """ clientName: String """ Selects rows whose clientVersion dimension equals the given value if not null. To query for the null value, use {in: {clientVersion: [null]}} instead. """ clientVersion: String """ Selects rows whose fieldName dimension equals the given value if not null. To query for the null value, use {in: {fieldName: [null]}} instead. """ fieldName: String in: AccountFieldUsageFilterIn not: AccountFieldUsageFilter """ Selects rows whose operationSubtype dimension equals the given value if not null. To query for the null value, use {in: {operationSubtype: [null]}} instead. """ operationSubtype: String """ Selects rows whose operationType dimension equals the given value if not null. To query for the null value, use {in: {operationType: [null]}} instead. """ operationType: String or: [AccountFieldUsageFilter!] """ Selects rows whose parentType dimension equals the given value if not null. To query for the null value, use {in: {parentType: [null]}} instead. """ parentType: String """ Selects rows whose queryId dimension equals the given value if not null. To query for the null value, use {in: {queryId: [null]}} instead. """ queryId: ID """ Selects rows whose queryName dimension equals the given value if not null. To query for the null value, use {in: {queryName: [null]}} instead. """ queryName: String """ Selects rows whose schemaHash dimension equals the given value if not null. To query for the null value, use {in: {schemaHash: [null]}} instead. """ schemaHash: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serviceId dimension equals the given value if not null. To query for the null value, use {in: {serviceId: [null]}} instead. """ serviceId: ID } """ Filter for data in AccountFieldUsage. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input AccountFieldUsageFilterIn { """ Selects rows whose clientName dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientName: [String] """ Selects rows whose clientVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientVersion: [String] """ Selects rows whose fieldName dimension is in the given list. A null value in the list means a row with null for that dimension. """ fieldName: [String] """ Selects rows whose operationSubtype dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationSubtype: [String] """ Selects rows whose operationType dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationType: [String] """ Selects rows whose parentType dimension is in the given list. A null value in the list means a row with null for that dimension. """ parentType: [String] """ Selects rows whose queryId dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryId: [ID] """ Selects rows whose queryName dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryName: [String] """ Selects rows whose schemaHash dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaHash: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serviceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serviceId: [ID] } type AccountFieldUsageMetrics { estimatedExecutionCount: Long! executionCount: Long! referencingOperationCount: Long! } input AccountFieldUsageOrderBySpec { column: AccountFieldUsageColumn! direction: Ordering! } type AccountFieldUsageRecord { """Dimensions of AccountFieldUsage that can be grouped by.""" groupBy: AccountFieldUsageDimensions! """Metrics of AccountFieldUsage that can be aggregated over.""" metrics: AccountFieldUsageMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """A list of graphs that belong to an account.""" type AccountGraphConnection { """A list of edges from the account to its graphs.""" edges: [AccountGraphEdge!] """A list of graphs attached to the account.""" nodes: [Service!] """Information to aid in pagination.""" pageInfo: PageInfo! } """An edge between an account and a graph.""" type AccountGraphEdge { """A cursor for use in pagination.""" cursor: String! """A graph attached to the account.""" node: Service } """Columns of AccountGraphosCloudMetrics.""" enum AccountGraphosCloudMetricsColumn { AGENT_VERSION CLOUD_PROVIDER RESPONSE_SIZE RESPONSE_SIZE_THROTTLED ROUTER_ID ROUTER_OPERATIONS ROUTER_OPERATIONS_THROTTLED SCHEMA_TAG SERVICE_ID SUBGRAPH_FETCHES SUBGRAPH_FETCHES_THROTTLED TIER TIMESTAMP } type AccountGraphosCloudMetricsDimensions { agentVersion: String cloudProvider: String routerId: String schemaTag: String serviceId: ID tier: String } """ Filter for data in AccountGraphosCloudMetrics. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input AccountGraphosCloudMetricsFilter { """ Selects rows whose agentVersion dimension equals the given value if not null. To query for the null value, use {in: {agentVersion: [null]}} instead. """ agentVersion: String and: [AccountGraphosCloudMetricsFilter!] """ Selects rows whose cloudProvider dimension equals the given value if not null. To query for the null value, use {in: {cloudProvider: [null]}} instead. """ cloudProvider: String in: AccountGraphosCloudMetricsFilterIn not: AccountGraphosCloudMetricsFilter or: [AccountGraphosCloudMetricsFilter!] """ Selects rows whose routerId dimension equals the given value if not null. To query for the null value, use {in: {routerId: [null]}} instead. """ routerId: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serviceId dimension equals the given value if not null. To query for the null value, use {in: {serviceId: [null]}} instead. """ serviceId: ID """ Selects rows whose tier dimension equals the given value if not null. To query for the null value, use {in: {tier: [null]}} instead. """ tier: String } """ Filter for data in AccountGraphosCloudMetrics. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input AccountGraphosCloudMetricsFilterIn { """ Selects rows whose agentVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ agentVersion: [String] """ Selects rows whose cloudProvider dimension is in the given list. A null value in the list means a row with null for that dimension. """ cloudProvider: [String] """ Selects rows whose routerId dimension is in the given list. A null value in the list means a row with null for that dimension. """ routerId: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serviceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serviceId: [ID] """ Selects rows whose tier dimension is in the given list. A null value in the list means a row with null for that dimension. """ tier: [String] } type AccountGraphosCloudMetricsMetrics { responseSize: Long! responseSizeThrottled: Long! routerOperations: Long! routerOperationsThrottled: Long! subgraphFetches: Long! subgraphFetchesThrottled: Long! } input AccountGraphosCloudMetricsOrderBySpec { column: AccountGraphosCloudMetricsColumn! direction: Ordering! } type AccountGraphosCloudMetricsRecord { """Dimensions of AccountGraphosCloudMetrics that can be grouped by.""" groupBy: AccountGraphosCloudMetricsDimensions! """Metrics of AccountGraphosCloudMetrics that can be aggregated over.""" metrics: AccountGraphosCloudMetricsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """An invitation for a user to join an organization.""" type AccountInvitation { """An accepted invitation cannot be used anymore""" acceptedAt: Timestamp """Who accepted the invitation""" acceptedBy: User """Time the invitation was created""" createdAt: Timestamp! """Who created the invitation""" createdBy: User email: String! id: ID! """Last time we sent an email for the invitation""" lastSentAt: Timestamp """Access role for the invitee""" role: UserPermission! } type AccountLimit { description: String label: String! value: Long } type AccountLimits { asList: [AccountLimit!]! maxAuditInDays: Int maxGraphOSSeats: Long maxRangeInDays: Int maxRangeInDaysForChecks: Int maxRequestsPerMonth: Long } type AccountLockDetails { actor: String reason: String timestamp: Timestamp type: AccountLockType } enum AccountLockType { AUTOMATED_TRIAL_END MANUAL MANUAL_BY_APOLLO_ADMIN MANUAL_BY_ORG_ADMIN PLAN_EOL_MIGRATION_REQUIRED } """The membership association between a user and an organization.""" type AccountMembership { account: Account! """The timestamp when the user was added to the organization.""" createdAt: Timestamp! """If this membership is a free seat (based on role)""" free: Boolean permission: UserPermission! @deprecated(reason: "Use role instead.") """The user's role within the organization'.""" role: UserPermission! """The user that belongs to the organization.""" user: User! } type AccountMutation { """ Cancel account subscriptions, subscriptions will remain active until the end of the paid period. Currently only works for Recurly subscriptions on team plans. """ cancelSubscriptions: Account """ Apollo admins only: create a Stripe customer and link it to an existing billing account """ createAndLinkStripeCustomer: Account currentSubscription: BillingSubscriptionMutation ensureRecurlyAccountExists: RecurlyAccountDetails """ If the org is on an enterprise trial, extend the trial by the given number of days, or the default number of days for that plan if numDays is not set. """ extendTrial(numDays: Int): Account """Get reference to the account ID""" internalID: String """See Account type. Field is needed by extending subgraph.""" name: String """ Reactivate a canceled current subscription. Currently only works for Recurly subscriptions on team plans. """ reactivateCurrentSubscription: Account """See Account type. Field is needed by extending subgraph.""" seats: Seats """ Apollo admins only: set the billing plan to an arbitrary plan effective immediately terminating any current paid plan. """ setPlan(id: ID!): Void """ Apollo admins only: Terminate the ongoing subscription in the account as soon as possible, without refunds. """ terminateSubscription(providerId: ID!): Account """ Apollo admins only: terminate any ongoing subscriptions in the account, without refunds Currently only works for Recurly subscriptions. """ terminateSubscriptions: Account """Update the billing address for a Recurly token""" updateBillingAddress(billingAddress: BillingAddressInput!): Account """Update the billing information from a Recurly token""" updateBillingInfo(token: String!): Void """Create a CloudOnboarding for this account""" createCloudOnboarding(input: CloudOnboardingInput!): CreateOnboardingResult! """ Mutations for interacting with an Apollo account's private subgraphs on GraphOS """ privateSubgraph: PrivateSubgraphMutation! """Creates a new upstream service for this account.""" createUpstreamService(input: CreateUpstreamServiceInput!): UpstreamService! """Updates an existing upstream service by id within this account.""" updateUpstreamService(id: UUID!, input: UpdateUpstreamServiceInput!): UpstreamService! """ Soft-deletes an upstream service by id within this account. Returns true if the service was deleted. """ deleteUpstreamService(id: UUID!): Boolean! """ Creates a new application for this account. AGENTIC_APP starts in PENDING status; INTERACTIVE is auto-approved. """ createApplication(input: CreateApplicationInput!): ApplicationType! """Updates an existing application by id within this account.""" updateApplication(id: UUID!, input: UpdateApplicationInput!): ApplicationType! """ Soft-deletes an application by id within this account. Returns true if the application was deleted. """ deleteApplication(id: UUID!): Boolean! addOidcConfigurationToBaseConnection(config: OidcConfigurationInput!, connectionId: ID!, enabled: Boolean): OidcConnection addSamlMetadataToBaseConnection(connectionId: ID!, enabled: Boolean, metadata: SamlConfigurationInput!): SamlConnection addSamlVerificationCert(pem: String!): Void @deprecated(reason: "Use saml { addVerificationCert } instead") """ Create a new AI Agent and mint a v2 API key tied to it. The returned GraphOsKey includes the plaintext secret, shown exactly once. """ createAgenticAppApiKey(name: String!): GraphOsKey! createBaseSsoConnection( domains: [String!]! idpId: String """ Whether to use the org's existing legacy 'idpid' field for the connection. If true, the existing value is used instead of the one provided in the input. Defaults to false. """ useLegacyIdpId: Boolean ): BaseConnection """Create an ApiKey""" createKey(name: String!, resources: ApiKeyResourceInput, type: GraphOsKeyType!): GraphOsKey! createOidcConfigurationUrl(id: ID!): String """ Create the S3 integration configuration for this organization. Generates (or accepts) a per-customer external ID. """ createS3Integration( bucket: String! """ If externalId is null, a value will be auto generated and returned in the mutation result. If a value is passed in, that will be used and still returned in the mutation result. """ externalId: String """ Optional customer KMS key ARN used to encrypt audit files written to the bucket (SSE-KMS). Omit for no SSE-KMS settings. """ kmsKeyArn: String prefix: String region: String! roleArn: String! ): CreateS3IntegrationResult! createStaticInvitation(role: UserPermission!): OrganizationInviteLink """Delete an ApiKey""" deleteKey(keyId: ID!): ID! finalizeSsoReconfiguration( deleteExistingWebApiKeys: Boolean = false newConnectionId: ID! """ Whether to verify that at least one user has successfully logged in with the connection before finalizing. Defaults to true. """ verifySsoSessionExists: Boolean = true ): Void finalizeSsoV2Migration( deleteExistingWebApiKeys: Boolean = false deleteNonSsoMemberships: Boolean = false """ Whether to verify that at least one user has successfully logged in with the connection before finalizing. Defaults to true. """ verifySsoSessionExists: Boolean = true ): Void """Hard delete an account and all associated services""" hardDelete: Void """Send an invitation to join the organization by E-mail""" invite(email: String!, role: UserPermission): AccountInvitation """ Send an invitation to join the organization for a specific product by E-mail """ inviteToProduct(email: String!, product: String!, role: String!): AccountProductInvitation! reAddSsoUser(role: UserPermission!, userId: ID!): Void """Delete an invitation""" removeInvitation(id: ID): Void """Remove a member of the account""" removeMember(id: ID!): Account """Remove a user's membership from this account for a specific product.""" removeProductMember(product: String!, userId: ID!): Account """Updates the name of an ApiKey""" renameKey(keyId: ID!, name: String!): GraphOsKey! replaceSsoConnectionDomains(domains: [String!]!, id: ID!): SsoConnection """Send a new E-mail for an existing invitation""" resendInvitation(id: ID): AccountInvitation """Revoke an API Key""" revokeKey(keyId: ID!): ID! revokeStaticInvitation(token: String!): OrganizationInviteLink """Revokes a user's sessions within the organization""" revokeUserSessions(userId: ID!): Void """ Rotate an ApiKey by creating a new key and expiring the old one. Returns the new key """ rotateKey(expireOldKeyAt: Timestamp, keyId: ID!, newKeyName: String): GraphOsKey! """ Mutations scoped to an existing S3 integration configuration for this organization """ s3Integration( """The id of the S3 integration configuration to mutate.""" id: ID! ): S3IntegrationMutation! saml: SamlConnectionMutation """Create or update a custom session length for an org""" setCustomSessionLength(sessionDurationInSeconds: Int!): Int! """Updates the expiration of an ApiKey""" setKeyExpiration(expiration: Timestamp!, keyId: ID!): GraphOsKey! trackTermsAccepted(at: Timestamp!): Void updateCompanyUrl(companyUrl: String): Account """Update the account ID""" updateID(id: ID!): Account """Update the company name""" updateName(name: String!): Void """ Updates the OIDC metadata for an existing SSO connection. Connection must be disabled prior to the update. """ updateOidcConnectionMetadata(connectionId: ID!, metadata: OidcConfigurationUpdateInput!): OidcConnection """Updates the role assigned to new SSO users.""" updateSSODefaultRole(role: UserPermission!): OrganizationSSO """ Updates the SAML metadata for an existing SSO connection. Connection must be disabled prior to the update. """ updateSamlConnectionMetadata(connectionId: ID!, metadata: SamlConfigurationInput!): SamlConnection """Update a user's role within an organization""" updateUserPermission(permission: UserPermission!, userID: ID!): User @deprecated(reason: "Use updateUserRole instead.") """Update a user's role within an organization""" updateUserRole(role: UserPermission!, userID: ID!): User auditExport(id: String!): AuditLogExportMutation createGraph(graphType: GraphType!, hiddenFromUninvitedNonAdmin: Boolean!, id: ID!, title: String!, variantCreationConfig: VariantCreationConfig): GraphCreationResult! """ Delete the account's avatar. Requires Account.canUpdateAvatar to be true. """ deleteAvatar: AvatarDeleteError """ Lock an account, which limits the functionality available with regard to its graphs. """ lock(reason: String, type: AccountLockType): Account """Trigger a request for an audit export""" requestAuditExport(actors: [ActorInput!], from: Timestamp!, graphIds: [String!], to: Timestamp!): Account """ This is called by the form shown to users after they cancel their team subscription. """ submitTeamCancellationFeedback(feedback: String!): Void """Unlock a locked account.""" unlock: Account """Set the E-mail address of the account, used notably for billing""" updateEmail(email: String!): Void } """Columns of AccountOperationCheckStats.""" enum AccountOperationCheckStatsColumn { CACHED_REQUESTS_COUNT CLIENT_NAME CLIENT_VERSION OPERATION_SUBTYPE OPERATION_TYPE QUERY_ID QUERY_NAME SCHEMA_TAG SERVICE_ID TIMESTAMP UNCACHED_REQUESTS_COUNT } type AccountOperationCheckStatsDimensions { clientName: String clientVersion: String operationSubtype: String operationType: String queryId: ID queryName: String schemaTag: String serviceId: ID } """ Filter for data in AccountOperationCheckStats. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input AccountOperationCheckStatsFilter { and: [AccountOperationCheckStatsFilter!] """ Selects rows whose clientName dimension equals the given value if not null. To query for the null value, use {in: {clientName: [null]}} instead. """ clientName: String """ Selects rows whose clientVersion dimension equals the given value if not null. To query for the null value, use {in: {clientVersion: [null]}} instead. """ clientVersion: String in: AccountOperationCheckStatsFilterIn not: AccountOperationCheckStatsFilter """ Selects rows whose operationSubtype dimension equals the given value if not null. To query for the null value, use {in: {operationSubtype: [null]}} instead. """ operationSubtype: String """ Selects rows whose operationType dimension equals the given value if not null. To query for the null value, use {in: {operationType: [null]}} instead. """ operationType: String or: [AccountOperationCheckStatsFilter!] """ Selects rows whose queryId dimension equals the given value if not null. To query for the null value, use {in: {queryId: [null]}} instead. """ queryId: ID """ Selects rows whose queryName dimension equals the given value if not null. To query for the null value, use {in: {queryName: [null]}} instead. """ queryName: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serviceId dimension equals the given value if not null. To query for the null value, use {in: {serviceId: [null]}} instead. """ serviceId: ID } """ Filter for data in AccountOperationCheckStats. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input AccountOperationCheckStatsFilterIn { """ Selects rows whose clientName dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientName: [String] """ Selects rows whose clientVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientVersion: [String] """ Selects rows whose operationSubtype dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationSubtype: [String] """ Selects rows whose operationType dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationType: [String] """ Selects rows whose queryId dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryId: [ID] """ Selects rows whose queryName dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryName: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serviceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serviceId: [ID] } type AccountOperationCheckStatsMetrics { cachedRequestsCount: Long! uncachedRequestsCount: Long! } input AccountOperationCheckStatsOrderBySpec { column: AccountOperationCheckStatsColumn! direction: Ordering! } type AccountOperationCheckStatsRecord { """Dimensions of AccountOperationCheckStats that can be grouped by.""" groupBy: AccountOperationCheckStatsDimensions! """Metrics of AccountOperationCheckStats that can be aggregated over.""" metrics: AccountOperationCheckStatsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """Columns of AccountOperationFetchStats.""" enum AccountOperationFetchStatsColumn { CLIENT_NAME CLIENT_VERSION CONNECTOR_SOURCE FETCHES_WITH_ERRORS_COUNT FETCH_COUNT FETCH_LATENCY_HISTOGRAM FETCH_SERVICE_ID FETCH_SERVICE_NAME OPERATION_ID OPERATION_NAME OPERATION_TYPE SCHEMA_TAG SERVICE_ID TIMESTAMP } type AccountOperationFetchStatsDimensions { clientName: String clientVersion: String connectorSource: String fetchServiceId: ID fetchServiceName: String operationId: String operationName: String operationType: String schemaTag: String serviceId: ID } """ Filter for data in AccountOperationFetchStats. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input AccountOperationFetchStatsFilter { and: [AccountOperationFetchStatsFilter!] """ Selects rows whose clientName dimension equals the given value if not null. To query for the null value, use {in: {clientName: [null]}} instead. """ clientName: String """ Selects rows whose clientVersion dimension equals the given value if not null. To query for the null value, use {in: {clientVersion: [null]}} instead. """ clientVersion: String """ Selects rows whose connectorSource dimension equals the given value if not null. To query for the null value, use {in: {connectorSource: [null]}} instead. """ connectorSource: String """ Selects rows whose fetchServiceId dimension equals the given value if not null. To query for the null value, use {in: {fetchServiceId: [null]}} instead. """ fetchServiceId: ID """ Selects rows whose fetchServiceName dimension equals the given value if not null. To query for the null value, use {in: {fetchServiceName: [null]}} instead. """ fetchServiceName: String in: AccountOperationFetchStatsFilterIn not: AccountOperationFetchStatsFilter """ Selects rows whose operationId dimension equals the given value if not null. To query for the null value, use {in: {operationId: [null]}} instead. """ operationId: String """ Selects rows whose operationName dimension equals the given value if not null. To query for the null value, use {in: {operationName: [null]}} instead. """ operationName: String """ Selects rows whose operationType dimension equals the given value if not null. To query for the null value, use {in: {operationType: [null]}} instead. """ operationType: String or: [AccountOperationFetchStatsFilter!] """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serviceId dimension equals the given value if not null. To query for the null value, use {in: {serviceId: [null]}} instead. """ serviceId: ID } """ Filter for data in AccountOperationFetchStats. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input AccountOperationFetchStatsFilterIn { """ Selects rows whose clientName dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientName: [String] """ Selects rows whose clientVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientVersion: [String] """ Selects rows whose connectorSource dimension is in the given list. A null value in the list means a row with null for that dimension. """ connectorSource: [String] """ Selects rows whose fetchServiceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ fetchServiceId: [ID] """ Selects rows whose fetchServiceName dimension is in the given list. A null value in the list means a row with null for that dimension. """ fetchServiceName: [String] """ Selects rows whose operationId dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationId: [String] """ Selects rows whose operationName dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationName: [String] """ Selects rows whose operationType dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationType: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serviceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serviceId: [ID] } type AccountOperationFetchStatsMetrics { fetchCount: Long! fetchLatencyHistogram: DurationHistogram! fetchesWithErrorsCount: Long! } input AccountOperationFetchStatsOrderBySpec { column: AccountOperationFetchStatsColumn! direction: Ordering! } type AccountOperationFetchStatsRecord { """Dimensions of AccountOperationFetchStats that can be grouped by.""" groupBy: AccountOperationFetchStatsDimensions! """Metrics of AccountOperationFetchStats that can be aggregated over.""" metrics: AccountOperationFetchStatsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """ An invitation for a user to join an organization for a specific product. """ type AccountProductInvitation { """When the invitation was accepted""" acceptedAt: Timestamp """When the invitation was created""" createdAt: Timestamp! """Email address the invitation was sent to""" email: String! """When the invitation expires""" expiresAt: Timestamp! """Unique identifier for the invitation""" id: ID! """Last time an invitation email was sent""" lastSentAt: Timestamp """The product this invitation is for""" product: String! """Access role for the invitee""" role: String! """Current status of the invitation""" status: String! } type AccountPublishesStatsMetrics { totalPublishes: Long! } type AccountPublishesStatsRecord { id: ID! timestamp: Timestamp! metrics: AccountPublishesStatsMetrics! } """Columns of AccountQueryStats.""" enum AccountQueryStatsColumn { CACHED_HISTOGRAM CACHED_REQUESTS_COUNT CACHE_TTL_HISTOGRAM CLIENT_NAME CLIENT_VERSION FORBIDDEN_OPERATION_COUNT FROM_ENGINEPROXY OPERATION_SUBTYPE OPERATION_TYPE PERSISTED_QUERY_ID QUERY_ID QUERY_NAME REGISTERED_OPERATION_COUNT REQUESTS_WITH_ERRORS_COUNT SCHEMA_HASH SCHEMA_TAG SERVICE_ID TIMESTAMP UNCACHED_HISTOGRAM UNCACHED_REQUESTS_COUNT } type AccountQueryStatsDimensions { clientName: String clientVersion: String fromEngineproxy: String operationSubtype: String operationType: String persistedQueryId: String queryId: ID queryName: String querySignature: String querySignatureLength: Int schemaHash: String schemaTag: String serviceId: ID } """ Filter for data in AccountQueryStats. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input AccountQueryStatsFilter { and: [AccountQueryStatsFilter!] """ Selects rows whose clientName dimension equals the given value if not null. To query for the null value, use {in: {clientName: [null]}} instead. """ clientName: String """ Selects rows whose clientVersion dimension equals the given value if not null. To query for the null value, use {in: {clientVersion: [null]}} instead. """ clientVersion: String """ Selects rows whose fromEngineproxy dimension equals the given value if not null. To query for the null value, use {in: {fromEngineproxy: [null]}} instead. """ fromEngineproxy: String in: AccountQueryStatsFilterIn not: AccountQueryStatsFilter """ Selects rows whose operationSubtype dimension equals the given value if not null. To query for the null value, use {in: {operationSubtype: [null]}} instead. """ operationSubtype: String """ Selects rows whose operationType dimension equals the given value if not null. To query for the null value, use {in: {operationType: [null]}} instead. """ operationType: String or: [AccountQueryStatsFilter!] """ Selects rows whose persistedQueryId dimension equals the given value if not null. To query for the null value, use {in: {persistedQueryId: [null]}} instead. """ persistedQueryId: String """ Selects rows whose queryId dimension equals the given value if not null. To query for the null value, use {in: {queryId: [null]}} instead. """ queryId: ID """ Selects rows whose queryName dimension equals the given value if not null. To query for the null value, use {in: {queryName: [null]}} instead. """ queryName: String """ Selects rows whose schemaHash dimension equals the given value if not null. To query for the null value, use {in: {schemaHash: [null]}} instead. """ schemaHash: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serviceId dimension equals the given value if not null. To query for the null value, use {in: {serviceId: [null]}} instead. """ serviceId: ID } """ Filter for data in AccountQueryStats. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input AccountQueryStatsFilterIn { """ Selects rows whose clientName dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientName: [String] """ Selects rows whose clientVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientVersion: [String] """ Selects rows whose fromEngineproxy dimension is in the given list. A null value in the list means a row with null for that dimension. """ fromEngineproxy: [String] """ Selects rows whose operationSubtype dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationSubtype: [String] """ Selects rows whose operationType dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationType: [String] """ Selects rows whose persistedQueryId dimension is in the given list. A null value in the list means a row with null for that dimension. """ persistedQueryId: [String] """ Selects rows whose queryId dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryId: [ID] """ Selects rows whose queryName dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryName: [String] """ Selects rows whose schemaHash dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaHash: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serviceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serviceId: [ID] } type AccountQueryStatsMetrics { cacheTtlHistogram: DurationHistogram! cachedHistogram: DurationHistogram! cachedRequestsCount: Long! forbiddenOperationCount: Long! registeredOperationCount: Long! requestsWithErrorsCount: Long! totalLatencyHistogram: DurationHistogram! totalRequestCount: Long! uncachedHistogram: DurationHistogram! uncachedRequestsCount: Long! } input AccountQueryStatsOrderBySpec { column: AccountQueryStatsColumn! direction: Ordering! } type AccountQueryStatsRecord { """Dimensions of AccountQueryStats that can be grouped by.""" groupBy: AccountQueryStatsDimensions! """Metrics of AccountQueryStats that can be aggregated over.""" metrics: AccountQueryStatsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } type AccountRoles { canAudit: Boolean! canCreateService: Boolean! canDelete: Boolean! canManageMembers: Boolean! canManageSessions: Boolean! canProvisionSSO: Boolean! canQuery: Boolean! canQueryAudit: Boolean! canQueryBillingInfo: Boolean! canQueryMembers: Boolean! canQueryStats: Boolean! canReadTickets: Boolean! canRemoveMembers: Boolean! canSetConstrainedPlan: Boolean! canUpdateBillingInfo: Boolean! canUpdateMetadata: Boolean! canViewApiKeyManagementPage: Boolean! } enum AccountState { ACTIVE CLOSED UNKNOWN UNPROVISIONED } """A time window with a specified granularity over a given account.""" type AccountStatsWindow { billingUsageStats( """Filter to select what rows to return.""" filter: AccountBillingUsageStatsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order AccountBillingUsageStats by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [AccountBillingUsageStatsOrderBySpec!] ): [AccountBillingUsageStatsRecord!]! cardinalityStats( """Filter to select what rows to return.""" filter: AccountCardinalityStatsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order AccountCardinalityStats by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [AccountCardinalityStatsOrderBySpec!] ): [AccountCardinalityStatsRecord!]! coordinateUsage( """Filter to select what rows to return.""" filter: AccountCoordinateUsageFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order AccountCoordinateUsage by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [AccountCoordinateUsageOrderBySpec!] ): [AccountCoordinateUsageRecord!]! edgeServerInfos( """Filter to select what rows to return.""" filter: AccountEdgeServerInfosFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order AccountEdgeServerInfos by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [AccountEdgeServerInfosOrderBySpec!] ): [AccountEdgeServerInfosRecord!]! errorStats( """Filter to select what rows to return.""" filter: AccountErrorStatsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order AccountErrorStats by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [AccountErrorStatsOrderBySpec!] ): [AccountErrorStatsRecord!]! federatedErrorStats( """Filter to select what rows to return.""" filter: AccountFederatedErrorStatsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order AccountFederatedErrorStats by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [AccountFederatedErrorStatsOrderBySpec!] ): [AccountFederatedErrorStatsRecord!]! fieldExecutions( """Filter to select what rows to return.""" filter: AccountFieldExecutionsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order AccountFieldExecutions by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [AccountFieldExecutionsOrderBySpec!] ): [AccountFieldExecutionsRecord!]! fieldUsage( """Filter to select what rows to return.""" filter: AccountFieldUsageFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order AccountFieldUsage by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [AccountFieldUsageOrderBySpec!] ): [AccountFieldUsageRecord!]! graphosCloudMetrics( """Filter to select what rows to return.""" filter: AccountGraphosCloudMetricsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order AccountGraphosCloudMetrics by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [AccountGraphosCloudMetricsOrderBySpec!] ): [AccountGraphosCloudMetricsRecord!]! operationCheckStats( """Filter to select what rows to return.""" filter: AccountOperationCheckStatsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order AccountOperationCheckStats by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [AccountOperationCheckStatsOrderBySpec!] ): [AccountOperationCheckStatsRecord!]! operationFetchStats( """Filter to select what rows to return.""" filter: AccountOperationFetchStatsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order AccountOperationFetchStats by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [AccountOperationFetchStatsOrderBySpec!] ): [AccountOperationFetchStatsRecord!]! queryStats( """Filter to select what rows to return.""" filter: AccountQueryStatsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order AccountQueryStats by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [AccountQueryStatsOrderBySpec!] ): [AccountQueryStatsRecord!]! """From field rounded down to the nearest resolution.""" roundedDownFrom: Timestamp! """To field rounded up to the nearest resolution.""" roundedUpTo: Timestamp! tracePathErrorsRefs( """Filter to select what rows to return.""" filter: AccountTracePathErrorsRefsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order AccountTracePathErrorsRefs by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [AccountTracePathErrorsRefsOrderBySpec!] ): [AccountTracePathErrorsRefsRecord!]! traceRefs( """Filter to select what rows to return.""" filter: AccountTraceRefsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order AccountTraceRefs by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [AccountTraceRefsOrderBySpec!] ): [AccountTraceRefsRecord!]! } """Columns of AccountTracePathErrorsRefs.""" enum AccountTracePathErrorsRefsColumn { AGENT_VERSION CLIENT_NAME CLIENT_VERSION DURATION_BUCKET ERRORS_COUNT_IN_PATH ERRORS_COUNT_IN_TRACE ERROR_CODE ERROR_MESSAGE ERROR_SERVICE PATH QUERY_ID QUERY_NAME SCHEMA_HASH SCHEMA_TAG SERVICE_ID TIMESTAMP TRACE_HTTP_STATUS_CODE TRACE_ID TRACE_SIZE_BYTES TRACE_STARTS_AT } type AccountTracePathErrorsRefsDimensions { agentVersion: String clientName: String clientVersion: String durationBucket: Int errorCode: String errorMessage: String errorService: String path: String queryId: ID queryName: String schemaHash: String schemaTag: String serviceId: ID traceHttpStatusCode: Int traceId: ID traceStartsAt: Timestamp } """ Filter for data in AccountTracePathErrorsRefs. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input AccountTracePathErrorsRefsFilter { """ Selects rows whose agentVersion dimension equals the given value if not null. To query for the null value, use {in: {agentVersion: [null]}} instead. """ agentVersion: String and: [AccountTracePathErrorsRefsFilter!] """ Selects rows whose clientName dimension equals the given value if not null. To query for the null value, use {in: {clientName: [null]}} instead. """ clientName: String """ Selects rows whose clientVersion dimension equals the given value if not null. To query for the null value, use {in: {clientVersion: [null]}} instead. """ clientVersion: String """ Selects rows whose durationBucket dimension equals the given value if not null. To query for the null value, use {in: {durationBucket: [null]}} instead. """ durationBucket: Int """ Selects rows whose errorCode dimension equals the given value if not null. To query for the null value, use {in: {errorCode: [null]}} instead. """ errorCode: String """ Selects rows whose errorMessage dimension equals the given value if not null. To query for the null value, use {in: {errorMessage: [null]}} instead. """ errorMessage: String """ Selects rows whose errorService dimension equals the given value if not null. To query for the null value, use {in: {errorService: [null]}} instead. """ errorService: String in: AccountTracePathErrorsRefsFilterIn not: AccountTracePathErrorsRefsFilter or: [AccountTracePathErrorsRefsFilter!] """ Selects rows whose path dimension equals the given value if not null. To query for the null value, use {in: {path: [null]}} instead. """ path: String """ Selects rows whose queryId dimension equals the given value if not null. To query for the null value, use {in: {queryId: [null]}} instead. """ queryId: ID """ Selects rows whose queryName dimension equals the given value if not null. To query for the null value, use {in: {queryName: [null]}} instead. """ queryName: String """ Selects rows whose schemaHash dimension equals the given value if not null. To query for the null value, use {in: {schemaHash: [null]}} instead. """ schemaHash: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serviceId dimension equals the given value if not null. To query for the null value, use {in: {serviceId: [null]}} instead. """ serviceId: ID """ Selects rows whose traceHttpStatusCode dimension equals the given value if not null. To query for the null value, use {in: {traceHttpStatusCode: [null]}} instead. """ traceHttpStatusCode: Int """ Selects rows whose traceId dimension equals the given value if not null. To query for the null value, use {in: {traceId: [null]}} instead. """ traceId: ID } """ Filter for data in AccountTracePathErrorsRefs. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input AccountTracePathErrorsRefsFilterIn { """ Selects rows whose agentVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ agentVersion: [String] """ Selects rows whose clientName dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientName: [String] """ Selects rows whose clientVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientVersion: [String] """ Selects rows whose durationBucket dimension is in the given list. A null value in the list means a row with null for that dimension. """ durationBucket: [Int] """ Selects rows whose errorCode dimension is in the given list. A null value in the list means a row with null for that dimension. """ errorCode: [String] """ Selects rows whose errorMessage dimension is in the given list. A null value in the list means a row with null for that dimension. """ errorMessage: [String] """ Selects rows whose errorService dimension is in the given list. A null value in the list means a row with null for that dimension. """ errorService: [String] """ Selects rows whose path dimension is in the given list. A null value in the list means a row with null for that dimension. """ path: [String] """ Selects rows whose queryId dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryId: [ID] """ Selects rows whose queryName dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryName: [String] """ Selects rows whose schemaHash dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaHash: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serviceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serviceId: [ID] """ Selects rows whose traceHttpStatusCode dimension is in the given list. A null value in the list means a row with null for that dimension. """ traceHttpStatusCode: [Int] """ Selects rows whose traceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ traceId: [ID] } type AccountTracePathErrorsRefsMetrics { errorsCountInPath: Long! errorsCountInTrace: Long! traceSizeBytes: Long! } input AccountTracePathErrorsRefsOrderBySpec { column: AccountTracePathErrorsRefsColumn! direction: Ordering! } type AccountTracePathErrorsRefsRecord { """Dimensions of AccountTracePathErrorsRefs that can be grouped by.""" groupBy: AccountTracePathErrorsRefsDimensions! """Metrics of AccountTracePathErrorsRefs that can be aggregated over.""" metrics: AccountTracePathErrorsRefsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """Columns of AccountTraceRefs.""" enum AccountTraceRefsColumn { CLIENT_NAME CLIENT_VERSION DURATION_BUCKET OPERATION_SUBTYPE OPERATION_TYPE QUERY_ID QUERY_NAME SCHEMA_HASH SCHEMA_TAG SERVICE_ID TIMESTAMP TRACE_COUNT TRACE_ID } type AccountTraceRefsDimensions { clientName: String clientVersion: String durationBucket: Int generatedTraceId: String operationSubtype: String operationType: String queryId: ID queryName: String querySignature: String schemaHash: String schemaTag: String serviceId: ID traceId: ID } """ Filter for data in AccountTraceRefs. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input AccountTraceRefsFilter { and: [AccountTraceRefsFilter!] """ Selects rows whose clientName dimension equals the given value if not null. To query for the null value, use {in: {clientName: [null]}} instead. """ clientName: String """ Selects rows whose clientVersion dimension equals the given value if not null. To query for the null value, use {in: {clientVersion: [null]}} instead. """ clientVersion: String """ Selects rows whose durationBucket dimension equals the given value if not null. To query for the null value, use {in: {durationBucket: [null]}} instead. """ durationBucket: Int in: AccountTraceRefsFilterIn not: AccountTraceRefsFilter """ Selects rows whose operationSubtype dimension equals the given value if not null. To query for the null value, use {in: {operationSubtype: [null]}} instead. """ operationSubtype: String """ Selects rows whose operationType dimension equals the given value if not null. To query for the null value, use {in: {operationType: [null]}} instead. """ operationType: String or: [AccountTraceRefsFilter!] """ Selects rows whose queryId dimension equals the given value if not null. To query for the null value, use {in: {queryId: [null]}} instead. """ queryId: ID """ Selects rows whose queryName dimension equals the given value if not null. To query for the null value, use {in: {queryName: [null]}} instead. """ queryName: String """ Selects rows whose schemaHash dimension equals the given value if not null. To query for the null value, use {in: {schemaHash: [null]}} instead. """ schemaHash: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serviceId dimension equals the given value if not null. To query for the null value, use {in: {serviceId: [null]}} instead. """ serviceId: ID """ Selects rows whose traceId dimension equals the given value if not null. To query for the null value, use {in: {traceId: [null]}} instead. """ traceId: ID } """ Filter for data in AccountTraceRefs. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input AccountTraceRefsFilterIn { """ Selects rows whose clientName dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientName: [String] """ Selects rows whose clientVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientVersion: [String] """ Selects rows whose durationBucket dimension is in the given list. A null value in the list means a row with null for that dimension. """ durationBucket: [Int] """ Selects rows whose operationSubtype dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationSubtype: [String] """ Selects rows whose operationType dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationType: [String] """ Selects rows whose queryId dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryId: [ID] """ Selects rows whose queryName dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryName: [String] """ Selects rows whose schemaHash dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaHash: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serviceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serviceId: [ID] """ Selects rows whose traceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ traceId: [ID] } type AccountTraceRefsMetrics { traceCount: Long! } input AccountTraceRefsOrderBySpec { column: AccountTraceRefsColumn! direction: Ordering! } type AccountTraceRefsRecord { """Dimensions of AccountTraceRefs that can be grouped by.""" groupBy: AccountTraceRefsDimensions! """Metrics of AccountTraceRefs that can be aggregated over.""" metrics: AccountTraceRefsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """ Represents an actor that performs actions in Apollo Studio. Most actors are either a `USER` or a `GRAPH` (based on a request's provided API key), and they have the corresponding `ActorType`. """ type Actor { actorId: ID! type: ActorType! } """ Input type to provide when specifying an `Actor` in operation arguments. See also the `Actor` object type. """ input ActorInput { actorId: ID! type: ActorType! } enum ActorType { ANONYMOUS_USER BACKFILL CRON GRAPH INTERNAL_IDENTITY SERVICE_ACCOUNT SYNCHRONIZATION SYSTEM USER } """ parentCommentId is only present for replies. schemaCoordinate & subgraph are only present for initial change comments. If all are absent, this is a general parent comment on the proposal. """ input AddCommentInput { message: String! parentCommentId: String revisionId: String! schemaCoordinate: String schemaScope: String usersToNotify: [String!] } union AddCommentResult = NotFoundError | ParentChangeProposalComment | ParentGeneralProposalComment | ReplyChangeProposalComment | ReplyGeneralProposalComment | ValidationError union AddOperationCollectionEntriesResult = AddOperationCollectionEntriesSuccess | PermissionError | ValidationError type AddOperationCollectionEntriesSuccess { operationCollectionEntries: [OperationCollectionEntry!]! } union AddOperationCollectionEntryResult = OperationCollectionEntry | PermissionError | ValidationError union AddOperationCollectionToVariantResult = GraphVariant | InvalidTarget | PermissionError | ValidationError input AddOperationInput { """The operation's fields.""" document: OperationCollectionEntryStateInput! """The operation's name.""" name: String! } type AffectedClient { """ ID, often the name, of the client set by the user and reported alongside metrics """ clientReferenceId: ID @deprecated(reason: "Unsupported.") """version of the client set by the user and reported alongside metrics""" clientVersion: String @deprecated(reason: "Unsupported.") } enum AffectedEnv { NON_PRODUCTION PRODUCTION } """Filter options available when searching affected queries for a check.""" input AffectedQueriesFilterInput { """Filter by a keyword to match against the query's operation name or ID.""" search: String """ Filter affected queries by one or more statuses. For example, use `[BROKEN]` to return only queries that are broken, or `[BROKEN, POTENTIALLY_AFFECTED]` to include queries that are broken OR possibly affected. """ status: [AffectedQueryStatus!] } type AffectedQuery { id: ID! """First 128 characters of query signature for display""" signature: String """Name to display to the user for the operation""" displayName: String """ Name provided for the operation, which can be empty string if it is an anonymous operation """ name: String """Determines if this query validates against the proposed schema""" isValid: Boolean """ List of changes affecting this query. Returns null if queried from SchemaDiff.changes.affectedQueries.changes """ changes: [ChangeOnOperation!] """ Whether this operation was ignored and its severity was downgraded for that reason """ markedAsIgnored: Boolean """ Whether the changes were marked as safe and its severity was downgraded for that reason """ markedAsSafe: Boolean """ If the operation would be approved if the check ran again. Returns null if queried from SchemaDiff.changes.affectedQueries.alreadyApproved """ alreadyApproved: Boolean """If the operation would be ignored if the check ran again""" alreadyIgnored: Boolean } enum AffectedQueryStatus { """This query will break as a result of the changes in this check.""" BROKEN """This query is valid but may be affected by the changes in this check.""" POTENTIALLY_AFFECTED """ This query is affected by the changes, but was marked as safe in a previous check. """ SAFE """ This query is affected by the changes, but was ignored in a previous check """ IGNORED } """An agent gateway represents a gateway entity that serves MCP requests.""" type AgentGateway { """The unique identifier for this agent gateway.""" id: ID! """MCP insights timeseries report for this agent gateway.""" mcpInsightsTimeseriesReport( """The dimensions to group by.""" dimensions: [McpInsightsTimeseriesReportDimension!]! """An optional filter for records to include / exclude.""" filter: McpInsightsTimeseriesReportFilterInput """ The starting timestamp for the report. Must be in the format: 2025-01-01T00:00:00Z (ISO 8601). """ from: Timestamp! """Maximum number of records to return (default: 100, max 10000).""" limit: Int! = 100 """The metrics to be returned.""" metrics: [McpInsightsTimeseriesReportMetric!]! """The resolution of the time groups for the report.""" resolution: TimeseriesReportResolution! """ The ending timestamp for the report. Must be in the format: 2025-01-01T08:00:00Z (ISO 8601). """ to: Timestamp! ): McpInsightsTimeseriesReportResult! """The human-readable name of this agent gateway.""" name: String } """ Returned from createS3Integration when the organization already has an enabled S3 integration configuration. Use s3Integration(id).update to modify the existing configuration. """ type AlreadyConfiguredError { """Human-readable error message.""" message: String! } """ Represents an API key that's used to authenticate a particular Apollo user or graph. """ interface ApiKey { """The API key's ID.""" id: ID! """The API key's name, for distinguishing it from other keys.""" keyName: String """ The timestamp when the API key was last used for authentication, if available. """ lastUsed: Timestamp """The value of the API key. **This is a secret credential!**""" token: String! } """Filtering options for API key queries""" input ApiKeyFilterInput { """Filter by key status. If not specified, defaults to ACTIVE.""" apiKeyStatus: ApiKeyStatusFilter """Filter by key type. If not specified, all key types are returned.""" apiKeyType: ApiKeyTypeFilter } type ApiKeyProvision { apiKey: ApiKey! created: Boolean! } """ Represents a resource that an API key has access to, including its type and identifier. """ type ApiKeyResource { """The identifier of the resource that the key has access to.""" resourceId: String! """The type of resource that the key has access to.""" resourceType: String! } """The target resource(s) that a key has access to""" input ApiKeyResourceInput { """One or more gateways that a key has access to""" gateways: [GatewayIdentifierInput!] """One or more subgraphs that a key has access to""" subgraphs: [SubgraphIdentifierInput!] } """Filter API keys by their status""" enum ApiKeyStatusFilter { """ Only return active keys that are active, not revoked, expired, or deleted """ ACTIVE """Filter for all non-deleted keys""" ALL """Only return expired keys that are not deleted""" EXPIRED """Only return revoked keys that are not deleted""" REVOKED } """Filter API keys by their type""" enum ApiKeyTypeFilter { """Filter for Gateway keys""" GATEWAY """Filter for Operator keys""" OPERATOR """Filter for SCIM keys""" SCIM """Filter for Subgraph keys""" SUBGRAPH } """A generic event for the `trackApolloKotlinUsage` mutation""" input ApolloKotlinUsageEventInput { """When the event occurred""" date: Timestamp! """Optional parameters attached to the event""" payload: Object """Type of event""" type: ID! } """A generic property for the `trackApolloKotlinUsage` mutation""" input ApolloKotlinUsagePropertyInput { """Optional parameters attached to the property""" payload: Object """Type of property""" type: ID! } """ Whether the application is agentic (requires review) or interactive (auto-approved). """ enum ApplicationKind { """ An agentic application — starts in PENDING status and requires human review. """ AGENTIC_APP """An interactive application — automatically approved at creation.""" INTERACTIVE } """A page of applications with an optional cursor for the next page.""" type ApplicationPage { """Applications in this page.""" items: [ApplicationType!]! """Cursor for the next page of data, or null on the last page.""" cursor: String } """ Lifecycle status of an application registered in the constellation registry. """ enum ApplicationStatus { """Application has been submitted and is awaiting review.""" PENDING """Application has been reviewed and approved for service access.""" APPROVED """Application has been reviewed and denied service access.""" DENIED """Application has been disabled and can no longer access services.""" DISABLED } """An application that consumes services in the constellation registry.""" type ApplicationType { """Unique identifier for this application.""" id: UUID! """Human-readable name of the application.""" name: String! """Optional description of the application's purpose.""" description: String """Current lifecycle status of the application.""" status: ApplicationStatus! """Whether this is an agentic or interactive application.""" kind: ApplicationKind! """Timestamp when the application was created.""" createdAt: DateTime! """Timestamp when the application was last updated.""" updatedAt: DateTime! """Timestamp when the application was soft-deleted, or null if active.""" deletedAt: DateTime } """Input for assigning a survey to one or more courses""" input AssignSurveyToCoursesInput { """The survey to assign""" surveyId: ID! """ The courses to assign this survey to; existing assignments are replaced """ courseIds: [ID!]! } """Return payload for the assignSurveyToCourses mutation""" type AssignSurveyToCoursesPayload { """The survey that was assigned, or null if validation failed""" survey: FeedbackSurvey """The course IDs that were assigned (deduplicated)""" assignedCourseIds: [ID!]! """Any validation errors that occurred""" userErrors: [UserError!]! } """The payload from adding a tag to a graph artifact.""" type AssignTagToGraphArtifactPayload { """Any errors encountered while adding the tag.""" errors: [Error!]! """The graph artifact where the tag was added.""" graphArtifact: GraphArtifact """The tag that was added.""" tag: GraphArtifactTag } """The possible result of adding a tag to a graph artifact.""" union AssignTagToGraphArtifactResult = AssignTagToGraphArtifactPayload | BadInputError | GraphArtifactDigestInvalidError | GraphArtifactNotFoundError | GraphArtifactTagInvalidError | GraphArtifactTagVariantAssignError | GraphArtifactTaggingLimitError | GraphArtifactTotalTagsLimitError | GraphNotFoundError | OperationInProgressError type AuditLogExport { """The list of actors to filter the audit export""" actors: [Identity!] bigqueryTriggeredAt: Timestamp """The time when the audit export was completed""" completedAt: Timestamp """The time when the audit export was reqeusted""" createdAt: Timestamp! """List of URLs to download the audits for the requested range""" downloadUrls: [String!] exportedFiles: [String!] """The starting point of audits to include in export""" from: Timestamp! """The list of graphs to filter the audit export""" graphs: [Service!] """The id for the audit export""" id: ID! """The user that initiated the audit export""" requester: User @deprecated(reason: "Use requesterActor instead, which is also populated for non-user (e.g. scheduled / system) exports.") """ The actor that initiated the audit export. Unlike `requester`, this is populated for non-user actors such as scheduled / system exports. """ requesterActor: Actor! """The status of the audit export""" status: AuditStatus! """ The outcome of delivering this export to the customer's configured S3 bucket. Null for exports that are not synced to S3 (no integration), or whose delivery has not yet been attempted. A `TRANSIENT_FAILURE` while `status` is still `SYNCING` indicates delivery will be retried automatically; any other non-null outcome is terminal. """ syncOutcome: AuditSyncOutcome """The end point of audits to include in export""" to: Timestamp! } type AuditLogExportMutation { cancel: Account delete: Account } enum AuditStatus { CANCELLED COMPLETED EXPIRED FAILED IN_PROGRESS QUEUED """The audit export is being delivered to the configured S3 destination""" SYNCING } """ The outcome of delivering an audit-log export to the customer's configured S3 destination. See individual values for whether each outcome is retried automatically (transient) or terminal. """ enum AuditSyncOutcome { """ Terminal: Apollo was denied access to the destination bucket (check the bucket policy and role trust). """ ACCESS_DENIED """ Terminal: delivery kept failing until the retry window elapsed and was abandoned. """ DELIVERY_TIMED_OUT """Terminal: delivery was skipped because the S3 integration is disabled.""" INTEGRATION_DISABLED """Terminal: delivery was skipped because the S3 integration was removed.""" INTEGRATION_REMOVED """ Terminal: an internal error — the export was marked for sync but had no associated S3 integration. """ MISSING_INTEGRATION_ID """Terminal: the configured destination bucket does not exist.""" NO_SUCH_BUCKET """ The export was delivered successfully to the configured S3 destination. """ SUCCESS """ Transient: a retryable error occurred; delivery is retried automatically while `status` remains `SYNCING`. """ TRANSIENT_FAILURE } type AvatarDeleteError { clientMessage: String! code: AvatarDeleteErrorCode! serverMessage: String! } enum AvatarDeleteErrorCode { SSO_USERS_CANNOT_DELETE_SELF_AVATAR } type AvatarUploadError { clientMessage: String! code: AvatarUploadErrorCode! serverMessage: String! } enum AvatarUploadErrorCode { SSO_USERS_CANNOT_UPLOAD_SELF_AVATAR } union AvatarUploadResult = AvatarUploadError | MediaUploadInfo """AWS Load Balancer information""" type AwsLoadBalancer { """DNS endpoint for the load balancer""" endpoint: String! """ARN for the load balancer""" arn: String! """ARN for the HTTPS listener for the load balancer""" listenerArn: String! } """Input for AWS Load Balancer""" input AwsLoadBalancerInput { endpoint: String! arn: String! listenerArn: String! } """AWS-specific information for a Shard""" type AwsShard { """AWS Account ID where the Shard is hosted""" accountId: String! """ARN of the ECS Cluster""" ecsClusterArn: String! """ARN of the IAM role to perform provisioning operations on this shard""" iamRoleArn: String! """Load balancers for this Cloud Router""" loadbalancers: [AwsLoadBalancer!]! """ID of the security group for the load balancer""" loadbalancerSecurityGroupId: String! """ ARN of the IAM permissions boundaries for IAM roles provisioned in this shard """ permissionsBoundaryArn: String! """IDs of the subnets""" subnetIds: [String!]! """ID of the VPC""" vpcId: String! """ARNs of the target groups for sleeping Cloud Routers""" coldStartTargetGroupArns: [String!] } """The error returned when the required inputs are not passed""" type BadInputError implements Error { """The error message""" message: String! } type BaseConnection implements SsoConnection { domains: [String!]! id: ID! idpId: ID! scim: SsoScimProvisioningDetails state: SsoConnectionState! @deprecated(reason: "Use stateV2 instead") stateV2: SsoConnectionStateV2! updatedAt: Timestamp! } type BillingAddress { address1: String address2: String city: String country: String state: String zip: String } """Billing address input""" input BillingAddressInput { address1: String! address2: String city: String! country: String! state: String! zip: String! } type BillingAdminQuery { """Look up the current plan of an account by calling the grpc service""" currentPlanFromGrpc(internalAccountId: ID!): GQLBillingPlanFromGrpc } type BillingCapability { defaultValue: Boolean! intendedUse: String! label: String! } enum BillingCycleAnchor { CUSTOM START_OF_MONTH } type BillingInfo { address: BillingAddress! cardType: String firstName: String lastFour: Int lastName: String month: Int name: String vatNumber: String year: Int } type BillingInsights { totalOperations: [BillingInsightsUsage!]! totalSampledOperations: [BillingInsightsUsage!]! } type BillingInsightsUsage { timestamp: Timestamp! totalOperationCount: Long! } type BillingLimit { defaultValue: Long intendedUse: String! label: String! } enum BillingModel { REQUEST_BASED SEAT_BASED } type BillingMonth { end: Timestamp! requests: Long! start: Timestamp! } type BillingMutation { """ Temporary utility mutation to convert annual team plan orgs to monthly team plans """ convertAnnualTeamOrgToMonthly(internalAccountId: ID!): Void createSetupIntent(internalAccountId: ID!): SetupIntentResult """Admin mutation for creating new log entry for failed usage export log.""" createUsageExportLogFromFailed(usageExportLogId: ID!): Void """ Admin mutation for manually creating usage exports for usage-based pricing of Scale plans. Note that for subscriptions that were activated and/or canceled within the given interval, we truncate the interval to that for which the subscription was active. """ createUsageExportLogs(endAt: Timestamp!, internalAccountIds: [ID!]!, startAt: Timestamp!): Void """ Admin mutation for creating new log entry for failed validation intervals. """ createUsageExportLogsForFailedValidationIntervals(billingPeriodsAgo: Int = 0, subscriptionIds: [ID!]!): Void """Admin mutation for reactivating a soft-canceled subscription""" reactivateSoftCanceledSubscription(subscriptionId: ID!): Void reloadPlans: [BillingPlan!]! """ Admin mutation for manually syncing usage data for usage-based data of Scale plans. """ syncOldestPendingUsage: Void """ Admin mutation for manually syncing usage data for usage-based data of Scale plans. """ syncRecentScaleUsage(hoursAgo: Int!): Void """Mutation to sync an Apollo Plan with a Stripe product""" syncStripePlan(planKind: BillingPlanKind!, planReadableId: String, stripeProductId: ID!): Void """ Admin mutation for syncing subscription with Stripe. Currently only updates the current period start and end dates, and the state if the Stripe subscription is canceled. We can expand this in the future if we want to! """ syncStripeSubscription(subscriptionId: ID!): BillingSubscription """Admin only:terminate never activated subscriptions""" terminateNeverActivatedSubscriptions(internalAccountIds: [String!]!): Void """Admin mutation for cancelling subscription in Stripe.""" terminateStripeSubscriptionFromSoftCanceledState(skipUsageSyncValidation: Boolean = false, subscriptionId: ID!): Void updatePaymentMethod(internalAccountId: ID!, paymentMethodId: String!): UpdatePaymentMethodResult """Admin mutation for validating usage data exports.""" validateUsageSync(billingPeriodsAgo: Int = 0, subscriptionId: ID!): BillingPeriodUsageSyncValidationResult } enum BillingPeriod { MONTHLY QUARTERLY SEMI_ANNUALLY YEARLY } type BillingPeriodUsageSyncValidation { billingPeriodEndAt: Timestamp! billingPeriodStartAt: Timestamp! lastValidatedDruidIntervalEndAt: Timestamp! lastValidatedDruidQueryExecutedAt: Timestamp lastValidationAt: Timestamp! lastValidationSuccessful: Boolean! lastValidationUsageReport: [JointUsageData!]! } """Result of validating usage data sync for a billing period""" union BillingPeriodUsageSyncValidationResult = UsageSyncValidationFailed | UsageSyncValidationSkipped | UsageSyncValidationSucceeded type BillingPlan { addons: [BillingPlanAddon!]! """Retrieve all capabilities for the plan""" allCapabilities: [BillingPlanCapability!]! """Retrieve a list of all effective capability limits for this plan""" allLimits: [BillingPlanLimit!]! billingModel: BillingModel! billingPeriod: BillingPeriod clientVersions: Boolean! @deprecated(reason: "use AccountCapabilities.clientVersions") clients: Boolean! @deprecated(reason: "use AccountCapabilities.clients") contracts: Boolean! @deprecated(reason: "use AccountCapabilities.contracts") datadog: Boolean! @deprecated(reason: "use AccountCapabilities.datadog") description: String """Retrieve the limit applied to this plan for a capability""" effectiveLimit(label: String!): Long errors: Boolean! """Check whether a capability is enabled for the plan""" hasCapability(label: String!): Boolean id: ID! isTrial: Boolean! kind: BillingPlanKind! launches: Boolean! @deprecated(reason: "use AccountCapabilities.launches") maxAuditInDays: Int! @deprecated(reason: "use AccountLimits.maxAuditInDays") maxRangeInDays: Int @deprecated(reason: "use AccountLimits.maxRangeInDays") """The maximum number of days that checks stats will be stored""" maxRangeInDaysForChecks: Int @deprecated(reason: "use AccountLimits.maxRangeInDaysForChecks") maxRequestsPerMonth: Long @deprecated(reason: "use AccountLimits.maxRequestsPerMonth") name: String! notifications: Boolean! @deprecated(reason: "use AccountCapabilities.notifications") operationRegistry: Boolean! @deprecated(reason: "use AccountCapabilities.operationRegistry") persistedQueries: Boolean! @deprecated(reason: "use AccountCapabilities.persistedQueries") """The price of every seat""" pricePerSeatInUsdCents: Int """ The price of subscribing to this plan with a quantity of 1 (currently always the case) """ pricePerUnitInUsdCents: Int! provider: BillingProvider """ Whether the plan is accessible by all users in QueryRoot.allPlans, QueryRoot.plan, or AccountMutation.setPlan """ public: Boolean! ranges: [String!]! readableId: ID! schemaValidation: Boolean! @deprecated(reason: "use AccountCapabilities.schemaValidation") tier: BillingPlanTier! traces: Boolean! @deprecated(reason: "use AccountCapabilities.traces") userRoles: Boolean! @deprecated(reason: "use AccountCapabilities.userRoles") webhooks: Boolean! @deprecated(reason: "use AccountCapabilities.webhooks") } type BillingPlanAddon { id: ID! pricePerUnitInUsdCents: Int! } type BillingPlanCapability { label: String! plan: BillingPlan! value: Boolean! } """ Overall class that a billing plan falls into. This is slightly more granular than BillingPlanTier because it differentiates between trials, pilots, internal-only plans, etc. """ enum BillingPlanKind { """ Original version of the default free plan that we still support but is no longer offered """ COMMUNITY """ Custom plan for serverless customers that is configured and billed manually in Stripe """ DEDICATED """2025 entry-level paid plan, known as 'scale' internally""" DEVELOPER ENTERPRISE_INTERNAL ENTERPRISE_PAID ENTERPRISE_PILOT ENTERPRISE_TRIAL """2025 version of the default free plan""" FREE """Placeholder for no billing plan""" NONE ONE_FREE @deprecated(reason: "Part of initial 2022 serverless implementation; was never used in production") ONE_PAID @deprecated(reason: "Part of initial 2022 serverless implementation; was never used in production") PLACEHOLDER_FREE PLACEHOLDER_PAID """Sales assisted Scale plan currently configured in Recurly.""" SCALE SCALE_ADVANCED """New Scale plans configured in Stripe.""" SCALE_BASIC SCALE_PLATFORM SERVERLESS @deprecated(reason: "Part of initial 2022 serverless implementation; was never used in production") """ 2022 version of the 'serverless' free plan that we still support but is no longer offered """ SERVERLESS_FREE """ 2022 version of the 'serverless' paid plan that we still support but is no longer offered """ SERVERLESS_PAID """2025 mid-tier paid plan, known as 'scale' internally""" STANDARD_SALES_ASSISTED """2025 mid-tier paid plan, known as 'scale' internally""" STANDARD_SELF_SERVICE STARTER @deprecated(reason: "Part of initial 2022 serverless implementation; was never used in production") """ Original version of the non-enterprise paid plan (configured in Recurly) that we still support but is no longer offered """ TEAM_PAID """ Original version of the non-enterprise trial plan (configured in Recurly) that we still support but is no longer offered """ TEAM_TRIAL UNKNOWN } type BillingPlanLimit { label: String! plan: BillingPlan! value: Long } type BillingPlanMutation { """Archive this billing plan""" archive: Void id: ID! """ Reset the specified capability on this plan to the global default value for the capability """ resetCapability(label: String!): BillingPlanCapability """ Reset the specified limit on this plan to the global default value for the limit """ resetLimit(label: String!): BillingPlanLimit """Sets the specified capability on this plan to the provided value""" setCapability(label: String!, value: Boolean!): BillingPlanCapability """Sets the specified limit on this plan to the provided value""" setLimit(label: String!, value: Long): BillingPlanLimit """ The legacy billing plan columns for capabilities and limits are still used for some internal integrations, but we do not always set them automatically, so this mutation syncs the newer values with the legacy columns. """ syncEntitlementsToLegacyColumns: Void updateDescriptors(input: UpdateBillingPlanDescriptorsInput): BillingPlan """Update a plan""" updatePlan(input: UpdateBillingPlanInput): BillingPlan """ Add Stripe pricing rates for this plan, and optionally remove the existing ones """ upsertStripeRates(priceIds: [String!]!, removeExisting: Boolean = false): Void } enum BillingPlanTier { """ Original version of the default free plan that we still support but is no longer offered """ COMMUNITY DEVELOPER ENTERPRISE """2025 version of the 'serverless' free plan""" FREE NONE ONE @deprecated(reason: "Part of initial 2022 serverless implementation; was never used in production") """2025 version of the 'serverless' paid plan""" SCALE STANDARD """ Original version of the non-enterprise paid plan (configured in Recurly) that we still support but is no longer offered """ TEAM UNKNOWN """ 2022 version of the 'serverless' free plan that we still support but is no longer offered """ USAGE_BASED } enum BillingProvider { APOLLO_NO_INVOICING METRONOME NONE RECURLY STRIPE } type BillingSubscription { activatedAt: Timestamp! addons: [BillingSubscriptionAddon!]! """Retrieve all capabilities for this subscription""" allCapabilities: [SubscriptionCapability!]! """ Retrieve a list of all effective capability limits for this subscription """ allLimits: [SubscriptionLimit!]! autoRenew: Boolean! canceledAt: Timestamp """Draft invoice for this subscription""" currentDraftInvoice: DraftInvoice @deprecated(reason: "This data came from Metronome and we no longer use Metronome") currentPeriodEndsAt: Timestamp! currentPeriodStartedAt: Timestamp! """Retrieve the limit applied to this subscription for a capability""" effectiveLimit(label: String!): Long expiresAt: Timestamp """Renewal grace time for updating seat count""" graceTimeForNextRenewal: Timestamp """Check whether a capability is enabled for the subscription""" hasCapability(label: String!): Boolean maxSelfHostedRequestsPerMonth: Int maxServerlessRequestsPerMonth: Int meteredBillingSummary: MeteredBillingSummary plan: BillingPlan! """The price of every seat""" pricePerSeatInUsdCents: Int """ The price of every unit in the subscription (hence multiplied by quantity to get to the basePriceInUsdCents) """ pricePerUnitInUsdCents: Int! """Returns all active promotional credit grants for this subscription""" promoCreditSummaries: [CreditGrant!]! """Returns promo credit for developer plan""" promoCredits: CreditGrant quantity: Int! """ Total price of the subscription when it next renews, including add-ons (such as seats) """ renewalTotalPriceInUsdCents: Long! state: SubscriptionState! """ When this subscription's trial period expires (if it is a trial). Not the same as the subscription's Recurly expiration). """ trialExpiresAt: Timestamp usageSyncValidations: [BillingPeriodUsageSyncValidation!] uuid: ID! } type BillingSubscriptionAddon { id: ID! pricePerUnitInUsdCents: Int! quantity: Int! } type BillingSubscriptionMutation { """Remove the specified capability override for this subscription""" clearCapability(label: String!): Void """Remove the specified limit override for this subscription""" clearLimit(label: String!): Void """ Sets the capability override on this subscription to the provided value """ setCapability(label: String!, value: Boolean!): SubscriptionCapability """Sets the limit override on this subscription to the provided value""" setLimit(label: String!, value: Long): SubscriptionLimit uuid: ID! } type BillingTier { tier: BillingPlanTier! searchAccounts(search: String): [Account!]! } """Columns of BillingUsageStats.""" enum BillingUsageStatsColumn { ACCOUNT_ID AGENT_ID AGENT_VERSION GRAPH_DEPLOYMENT_TYPE OPERATION_COUNT OPERATION_COUNT_PROVIDED_EXPLICITLY OPERATION_SUBTYPE OPERATION_TYPE ROUTER_FEATURES_ENABLED SCHEMA_TAG SERVICE_ID TIMESTAMP } type BillingUsageStatsDimensions { accountId: ID agentId: String agentVersion: String graphDeploymentType: String operationCountProvidedExplicitly: String operationSubtype: String operationType: String routerFeaturesEnabled: String schemaTag: String serviceId: ID } """ Filter for data in BillingUsageStats. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input BillingUsageStatsFilter { """ Selects rows whose accountId dimension equals the given value if not null. To query for the null value, use {in: {accountId: [null]}} instead. """ accountId: ID """ Selects rows whose agentId dimension equals the given value if not null. To query for the null value, use {in: {agentId: [null]}} instead. """ agentId: String """ Selects rows whose agentVersion dimension equals the given value if not null. To query for the null value, use {in: {agentVersion: [null]}} instead. """ agentVersion: String and: [BillingUsageStatsFilter!] """ Selects rows whose graphDeploymentType dimension equals the given value if not null. To query for the null value, use {in: {graphDeploymentType: [null]}} instead. """ graphDeploymentType: String in: BillingUsageStatsFilterIn not: BillingUsageStatsFilter """ Selects rows whose operationCountProvidedExplicitly dimension equals the given value if not null. To query for the null value, use {in: {operationCountProvidedExplicitly: [null]}} instead. """ operationCountProvidedExplicitly: String """ Selects rows whose operationSubtype dimension equals the given value if not null. To query for the null value, use {in: {operationSubtype: [null]}} instead. """ operationSubtype: String """ Selects rows whose operationType dimension equals the given value if not null. To query for the null value, use {in: {operationType: [null]}} instead. """ operationType: String or: [BillingUsageStatsFilter!] """ Selects rows whose routerFeaturesEnabled dimension equals the given value if not null. To query for the null value, use {in: {routerFeaturesEnabled: [null]}} instead. """ routerFeaturesEnabled: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serviceId dimension equals the given value if not null. To query for the null value, use {in: {serviceId: [null]}} instead. """ serviceId: ID } """ Filter for data in BillingUsageStats. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input BillingUsageStatsFilterIn { """ Selects rows whose accountId dimension is in the given list. A null value in the list means a row with null for that dimension. """ accountId: [ID] """ Selects rows whose agentId dimension is in the given list. A null value in the list means a row with null for that dimension. """ agentId: [String] """ Selects rows whose agentVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ agentVersion: [String] """ Selects rows whose graphDeploymentType dimension is in the given list. A null value in the list means a row with null for that dimension. """ graphDeploymentType: [String] """ Selects rows whose operationCountProvidedExplicitly dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationCountProvidedExplicitly: [String] """ Selects rows whose operationSubtype dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationSubtype: [String] """ Selects rows whose operationType dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationType: [String] """ Selects rows whose routerFeaturesEnabled dimension is in the given list. A null value in the list means a row with null for that dimension. """ routerFeaturesEnabled: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serviceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serviceId: [ID] } type BillingUsageStatsMetrics { operationCount: Long! } input BillingUsageStatsOrderBySpec { column: BillingUsageStatsColumn! direction: Ordering! } type BillingUsageStatsRecord { """Dimensions of BillingUsageStats that can be grouped by.""" groupBy: BillingUsageStatsDimensions! """Metrics of BillingUsageStats that can be aggregated over.""" metrics: BillingUsageStatsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } enum BillingUsageStatsWindowSize { DAY HOUR MONTH NONE } """A blob (base64'ed in JSON & GraphQL)""" scalar Blob """ The building of a Studio variant (including supergraph composition and any contract filtering) as part of a launch. """ type Build { """The unique identifier for this build.""" id: ID! """ The inputs provided to the build, including subgraph and contract details. """ input: BuildInput! """The result of the build. This value is null until the build completes.""" result: BuildResult } interface BuildCheckFailed implements BuildCheckResult { """The input to the build task.""" buildInputs: BuildInputs! """ The build pipeline track of the build task, which indicates what gateway/router versions the build pipeline is intended to support (and accordingly controls the version of code). """ buildPipelineTrack: BuildPipelineTrack! """A list of errors generated by this build.""" errors: [BuildError!]! """ The Federation version of the build task, which indicates what gateway/router versions the build pipeline is intended to support (and accordingly controls the version of code). """ federationVersion: FederationVersion! id: ID! """Whether the build task passed or failed.""" passed: Boolean! """The workflow build task that generated this result.""" workflowTask: BuildCheckTask! } interface BuildCheckPassed implements BuildCheckResult { """The input to the build task.""" buildInputs: BuildInputs! """ The build pipeline track of the build task, which indicates what gateway/router versions the build pipeline is intended to support (and accordingly controls the version of code). """ buildPipelineTrack: BuildPipelineTrack! """ The Federation version of the build task, which indicates what gateway/router versions the build pipeline is intended to support (and accordingly controls the version of code). """ federationVersion: FederationVersion! id: ID! """Whether the build task passed or failed.""" passed: Boolean! """The SHA-256 of the supergraph schema document generated by this build.""" supergraphSchemaHash: SHA256! """The workflow build task that generated this result.""" workflowTask: BuildCheckTask! } interface BuildCheckResult { """The input to the build task.""" buildInputs: BuildInputs! """ The build pipeline track of the build task, which indicates what gateway/router versions the build pipeline is intended to support (and accordingly controls the version of code). """ buildPipelineTrack: BuildPipelineTrack! """ The Federation version of the build task, which indicates what gateway/router versions the build pipeline is intended to support (and accordingly controls the version of code). """ federationVersion: FederationVersion! id: ID! """Whether the build task passed or failed.""" passed: Boolean! """The workflow build task that generated this result.""" workflowTask: BuildCheckTask! } interface BuildCheckTask implements CheckWorkflowTask { """ The result of the build check. This will be null when the task is initializing or running. """ buildResult: BuildCheckResult completedAt: Timestamp createdAt: Timestamp! id: ID! """ The build input change proposed for this check workflow. Note that for triggered downstream workflows, this is not the upstream variant's proposed change, but the changes for the downstream variant that are derived from the upstream workflow's results (e.g. the input supergraph schema). """ proposedBuildInputChanges: ProposedBuildInputChanges! """ The status of this task. All tasks start with the PENDING status while initializing. If any prerequisite task fails, then the task status becomes BLOCKED. Otherwise, if all prerequisite tasks pass, then this task runs (still having the PENDING status). Once the task completes, the task status will become either PASSED or FAILED. """ status: CheckWorkflowTaskStatus! """A studio UI url to view the details of this check workflow task""" targetURL: String """The workflow that this task belongs to.""" workflow: CheckWorkflow! } """The configuration for building a composition graph variant""" type BuildConfig { buildPipelineTrack: BuildPipelineTrack! federationVersion: FederationVersion! """ Show all uses of @tag directives to consumers in Schema Reference and Explorer """ tagInApiSchema: Boolean! } """ Exactly one of the inputs must be set in a build configuration. Which build configuration type is set will determine the type of variant that is created. Existing variants of a given type cannot be updated in-place to be of a different type. """ input BuildConfigInput { """ This list will contain any directives that should get passed through to the api schema from the core schema. Anything included in this list will appear in the consumer facing schema """ apiDirectivePassThrough: [String!]! """if buildPipelineTrack is null use the graph default""" buildPipelineTrack: BuildPipelineTrack composition: CompositionConfigInput contract: ContractConfigInput """if federationVersion is null use the graph default""" federationVersion: FederationVersion } """A single error that occurred during the failed execution of a build.""" type BuildError { code: String failedStep: String locations: [SourceLocation!]! message: String! } """Contains the details of an executed build that failed.""" type BuildFailure { errorCount: Int! """A list of all errors that occurred during the failed build.""" errorMessages: [BuildError!]! } union BuildInput = CompositionBuildInput | FilterBuildInput union BuildInputs = CompositionBuildInputs | FilterBuildInputs enum BuildPipelineTrack { FED_1_0 FED_1_1 FED_2_0 FED_2_1 FED_2_10 FED_2_11 """Federation 2.12""" FED_2_12 """Federation 2.13""" FED_2_13 """Federation 2.14""" FED_2_14 """Federation 2.15""" FED_2_15 FED_2_3 FED_2_4 FED_2_5 FED_2_6 FED_2_7 FED_2_8 FED_2_9 FED_NEXT } enum BuildPipelineTrackBadge { DEPRECATED EXPERIMENTAL LATEST LONG_TERM_SUPPORT UNSUPPORTED } type BuildPipelineTrackDetails { badge: BuildPipelineTrackBadge buildPipelineTrack: BuildPipelineTrack! """ currently running version of composition for this track, includes patch updates """ compositionVersion: String! deprecatedAt: Timestamp displayName: String! federationVersion: FederationVersion! minimumGatewayVersion: String """ Minimum supported router and gateway versions. Min router version can be null since fed 1 doesn't have router support. """ minimumRouterVersion: String notSupportedAt: Timestamp } union BuildResult = BuildFailure | BuildSuccess input BuildRouterVersionInput { routerRepository: String routerBranch: String cloudRouterBranch: String } union BuildRouterVersionResult = BuildRouterVersionSuccess | CloudRouterTestingInvalidInputErrors type BuildRouterVersionSuccess { jobId: ID! } """Contains the details of an executed build that succeeded.""" type BuildSuccess { """Contains the supergraph and API schemas created by composition.""" coreSchema: CoreSchema! } """Cache control scope either public or private""" enum CacheControlScope { """Public scope to indicate that data is public""" PUBLIC """Public scope to indicate that data is private""" PRIVATE } enum CacheScope { PRIVATE PUBLIC UNKNOWN UNRECOGNIZED } """ The result of a failed call to PersistedQueryListMutation.delete due to linked variant(s). """ type CannotDeleteLinkedPersistedQueryListError implements Error { message: String! } type CannotModifyOperationBodyError implements Error { message: String! } """Columns of CardinalityStats.""" enum CardinalityStatsColumn { CLIENT_NAME_CARDINALITY CLIENT_VERSION_CARDINALITY OPERATION_SHAPE_CARDINALITY SCHEMA_COORDINATE_CARDINALITY SCHEMA_TAG SERVICE_ID TIMESTAMP } type CardinalityStatsDimensions { schemaTag: String serviceId: ID } """ Filter for data in CardinalityStats. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input CardinalityStatsFilter { and: [CardinalityStatsFilter!] in: CardinalityStatsFilterIn not: CardinalityStatsFilter or: [CardinalityStatsFilter!] """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serviceId dimension equals the given value if not null. To query for the null value, use {in: {serviceId: [null]}} instead. """ serviceId: ID } """ Filter for data in CardinalityStats. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input CardinalityStatsFilterIn { """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serviceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serviceId: [ID] } type CardinalityStatsMetrics { clientNameCardinality: Float! clientVersionCardinality: Float! operationShapeCardinality: Float! schemaCoordinateCardinality: Float! } input CardinalityStatsOrderBySpec { column: CardinalityStatsColumn! direction: Ordering! } type CardinalityStatsRecord { """Dimensions of CardinalityStats that can be grouped by.""" groupBy: CardinalityStatsDimensions! """Metrics of CardinalityStats that can be aggregated over.""" metrics: CardinalityStatsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """A single change that was made to a definition in a schema.""" type Change { """ Indication of the success of the overall change, either failure, warning, or notice. """ type: ChangeType! @deprecated(reason: "use severity instead") """The severity of the change (e.g., `FAILURE` or `NOTICE`)""" severity: ChangeSeverity! """ Indicates the type of change that was made, and to what (e.g., 'TYPE_REMOVED'). """ code: String! """ Indication of the category of the change (e.g. addition, removal, edit). """ category: ChangeCategory! """A human-readable description of the change.""" description: String! affectedQueries: [AffectedQuery!] """Top level node affected by the change.""" parentNode: NamedIntrospectionType """ Node related to the top level node that was changed, such as a field in an object, a value in an enum or the object of an interface. """ childNode: NamedIntrospectionValue """Target arg of change made.""" argNode: NamedIntrospectionArg """Short description of the change""" shortDescription: String } """ Defines a set of categories that a schema change can be grouped by. """ enum ChangeCategory { ADDITION EDIT REMOVAL DEPRECATION } """ These schema change codes represent all of the possible changes that can occur during the schema diff algorithm. """ enum ChangeCode { """Field was removed from the type.""" FIELD_REMOVED """Type (object or scalar) was removed from the schema.""" TYPE_REMOVED """Argument to a field was removed.""" ARG_REMOVED """Type is no longer included in the union.""" TYPE_REMOVED_FROM_UNION """Field was removed from the input object.""" FIELD_REMOVED_FROM_INPUT_OBJECT """Value was removed from the enum.""" VALUE_REMOVED_FROM_ENUM """Type no longer implements the interface.""" TYPE_REMOVED_FROM_INTERFACE """Non-nullable argument was added to the field.""" REQUIRED_ARG_ADDED """Non-nullable field was added to the input object. (Deprecated.)""" NON_NULLABLE_FIELD_ADDED_TO_INPUT_OBJECT """Required field was added to the input object.""" REQUIRED_FIELD_ADDED_TO_INPUT_OBJECT """Return type for the field was changed.""" FIELD_CHANGED_TYPE """Type of the field in the input object was changed.""" FIELD_ON_INPUT_OBJECT_CHANGED_TYPE """ Type was changed from one kind to another. Ex: scalar to object or enum to union. """ TYPE_CHANGED_KIND """Type of the argument was changed.""" ARG_CHANGED_TYPE """Argument was changed from nullable to non-nullable.""" ARG_CHANGED_TYPE_OPTIONAL_TO_REQUIRED """A new value was added to the enum.""" VALUE_ADDED_TO_ENUM """A new value was added to the enum.""" TYPE_ADDED_TO_UNION """Type now implements the interface.""" TYPE_ADDED_TO_INTERFACE """Default value added or changed for the argument.""" ARG_DEFAULT_VALUE_CHANGE """Nullable argument was added to the field.""" OPTIONAL_ARG_ADDED """Nullable field was added to the input type. (Deprecated.)""" NULLABLE_FIELD_ADDED_TO_INPUT_OBJECT """Optional field was added to the input type.""" OPTIONAL_FIELD_ADDED_TO_INPUT_OBJECT """The default value of an input object field was changed.""" INPUT_OBJECT_FIELD_DEFAULT_VALUE_CHANGE """A default value was added to an input object field.""" INPUT_OBJECT_FIELD_DEFAULT_VALUE_ADDED """The default value of an input object field was removed.""" INPUT_OBJECT_FIELD_DEFAULT_VALUE_REMOVED """Field was added to the type.""" FIELD_ADDED """Type was added to the schema.""" TYPE_ADDED """Enum was deprecated.""" ENUM_DEPRECATED """Enum deprecation was removed.""" ENUM_DEPRECATION_REMOVED """Reason for enum deprecation changed.""" ENUM_DEPRECATED_REASON_CHANGE """Field was deprecated.""" FIELD_DEPRECATED """Field deprecation removed.""" FIELD_DEPRECATION_REMOVED """Reason for field deprecation changed.""" FIELD_DEPRECATED_REASON_CHANGE """Description was added, removed, or updated for type.""" TYPE_DESCRIPTION_CHANGE """Description was added, removed, or updated for field.""" FIELD_DESCRIPTION_CHANGE """Description was added, removed, or updated for enum value.""" ENUM_VALUE_DESCRIPTION_CHANGE """Description was added, removed, or updated for argument.""" ARG_DESCRIPTION_CHANGE """Directive was removed.""" DIRECTIVE_REMOVED """Argument to the directive was removed.""" DIRECTIVE_ARG_REMOVED """Location of the directive was removed.""" DIRECTIVE_LOCATION_REMOVED """Repeatable flag was removed for directive.""" DIRECTIVE_REPEATABLE_REMOVED """Non-nullable argument added to directive.""" REQUIRED_DIRECTIVE_ARG_ADDED } """ Represents the tuple of static information about a particular kind of schema change. """ type ChangeDefinition { code: ChangeCode! defaultSeverity: ChangeSeverity! category: ChangeCategory! } """An addition made to a Studio variant's changelog after a launch.""" type ChangelogLaunchResult { createdAt: Timestamp! schemaTagID: ID! } """Info about a change in the context of an operation it affects""" type ChangeOnOperation { """ The semantic info about this change, i.e. info about the change that doesn't depend on the operation """ semanticChange: SemanticChange! """ Human-readable explanation of the impact of this change on the operation """ impact: String @deprecated(reason: "No longer maintained") } interface ChangeProposalComment implements ProposalComment { createdAt: Timestamp! """null if the user is deleted""" createdBy: Identity id: ID! message: String! """ true if the schemaCoordinate this comment is on doesn't exist in the diff between the most recent revision & the base sdl """ outdated: Boolean! schemaCoordinate: String! """ '#@!api!@#' for api schema, '#@!supergraph!@#' for supergraph schema, subgraph otherwise """ schemaScope: String! status: CommentStatus! """null if never updated""" updatedAt: Timestamp } enum ChangeSeverity { FAILURE NOTICE } """ Summary of the changes for a schema diff, computed by placing the changes into categories and then counting the size of each category. This categorization can be done in different ways, and accordingly there are multiple fields here for each type of categorization. Note that if an object or interface field is added/removed, there won't be any addition/removal changes generated for its arguments or @deprecated usages. If an enum type is added/removed, there will be addition/removal changes generated for its values, but not for those values' @deprecated usages. Description changes won't be generated for a schema element if that element (or an ancestor) was added/removed. """ type ChangeSummary { """ Counts for changes to non-field aspects of objects, input objects, and interfaces, and all aspects of enums, unions, and scalars. """ type: TypeChangeSummaryCounts! """ Counts for changes to fields of objects, input objects, and interfaces. """ field: FieldChangeSummaryCounts! """Counts for all changes.""" total: TotalChangeSummaryCounts! } enum ChangeType { FAILURE NOTICE } """Destination for notifications""" interface Channel { id: ID! name: String! subscriptions: [ChannelSubscription!]! } interface ChannelSubscription { channels: [Channel!]! enabled: Boolean! id: ID! variant: String } """Graph-level configuration of checks.""" type CheckConfiguration { """ How submitted build input diffs are handled when they match (or don't) a Proposal """ proposalChangeMismatchSeverity: ProposalChangeMismatchSeverity! """ID of the check configuration""" id: ID! """Graph that this check configuration belongs to""" graphID: ID! """Operations to ignore during validation""" excludedOperations: [ExcludedOperation!]! """Clients to ignore during validation""" excludedClients: [ClientFilter!]! """Operation names to ignore during validation""" excludedOperationNames: [OperationNameFilter] """Variant overrides for validation""" includedVariants: [String!]! """Whether to run Linting during schema checks.""" enableLintChecks: Boolean! """Time when check configuration was created""" createdAt: Timestamp! """Time when check configuration was last updated""" updatedAt: Timestamp! """Identity of the last user to update the check configuration""" updatedBy: Identity """ Only check operations from the last seconds. The default is 7 days (604,800 seconds). """ timeRangeSeconds: Long! """ Minimum number of requests within the window for an operation to be considered. """ operationCountThreshold: Int! """ Number of requests within the window for an operation to be considered, relative to total request count. Expected values are between 0 and 0.05 (minimum 5% of total request volume) """ operationCountThresholdPercentage: Float! """Default configuration to include operations on the base variant.""" includeBaseVariant: Boolean! """ During operation checks, if this option is enabled, it evaluates a check run against zero operations as a pass instead of a failure. """ downgradeStaticChecks: Boolean! """ During operation checks, if this option is enabled, the check will not fail or mark any operations as broken/changed if the default value has changed, only if the default value is removed completely. """ downgradeDefaultValueChange: Boolean! enableCustomChecks: Boolean! } """Filter options available when listing checks.""" input CheckFilterInput { """A list of git commiters. For cli triggered checks, this is the author.""" authors: [String!] """ A list of actors triggering this check. For non cli triggered checks, this is the Studio User / author. """ createdBy: [ActorInput!] branches: [String!] subgraphs: [String!] status: CheckFilterInputStatusOption variants: [String!] ids: [String!] includeProposalChecks: Boolean = false } """ Options for filtering CheckWorkflows by status This should always match CheckWorkflowStatus """ enum CheckFilterInputStatusOption { FAILED PENDING PASSED } """The result of performing a subgraph check, including all steps.""" type CheckPartialSchemaResult { """Result of compostion run as part of the overall subgraph check.""" compositionValidationResult: CompositionValidationResult! """ Overall result of the check. This will be null if composition validation was unsuccessful. """ checkSchemaResult: CheckSchemaResult """Check workflow associated with the overall subgraph check.""" workflow: CheckWorkflow """Whether any modifications were detected in the composed core schema.""" coreSchemaModified: Boolean! } """ The possible results of a request to initiate schema checks (either a success object or one of multiple `Error` objects). """ union CheckRequestResult = CheckRequestSuccess | InvalidInputError | PermissionError | PlanError | RateLimitExceededError """ Represents a successfully initiated execution of schema checks. This does not indicate the _result_ of the checks, only that they were initiated. """ type CheckRequestSuccess { """The URL of the Apollo Studio page for this check.""" targetURL: String! """The unique ID for this execution of schema checks.""" workflowID: ID! } """ Input type to provide when running schema checks asynchronously for a non-federated graph. """ input CheckSchemaAsyncInput { """Configuration options for the check execution.""" config: HistoricQueryParametersInput! """The GitHub context to associate with the check.""" gitContext: GitContextInput! """ The URL of the GraphQL endpoint that Apollo Sandbox introspected to obtain the proposed schema. Required if `isSandbox` is `true`. """ introspectionEndpoint: String """If `true`, the check was initiated automatically by a Proposal update.""" isProposal: Boolean """If `true`, the check was initiated by Apollo Sandbox.""" isSandbox: Boolean! proposedSchemaDocument: String } """The result of running schema checks on a graph variant.""" type CheckSchemaResult { """The unique ID of this execution of checks.""" operationsCheckID: ID! """The schema diff and affected operations generated by the schema check.""" diffToPrevious: SchemaDiff! """The URL to view the schema diff in Studio.""" targetUrl: String """Workflow associated with this check result""" workflow: CheckWorkflow } type CheckStepCompleted { id: ID! status: CheckStepStatus! } type CheckStepFailed { message: String! } input CheckStepInput { graphID: String! graphVariant: String! taskID: ID! workflowID: ID! } union CheckStepResult = CheckStepCompleted | CheckStepFailed | PermissionError | ValidationError enum CheckStepStatus { FAILURE SUCCESS } """An individual diagnostic violation of a custom check task.""" type CheckViolation { """ The schema coordinate of this rule violation as defined by RFC: https://github.com/graphql/graphql-wg/blob/main/rfcs/SchemaCoordinates.md Optional for violations that aren't specific to a single schema element """ coordinate: String """The violation level for the rule.""" level: ViolationLevel! """ A human-readable message describing the rule violation, rendered as markdown in Apollo Studio. Maximum length: 512 characters. """ message: String! """ The rule being violated. This is used to group multiple violations together in Studio. Max character length is 128. """ rule: String! """ The start and end position in the file of the rule violation. Used to display rule violations in the context of your schema diff. """ sourceLocations: [FileLocation!] } """An individual diagnostic violation of a custom check task.""" input CheckViolationInput { """ The schema coordinate of this rule violation as defined by RFC: https://github.com/graphql/graphql-wg/blob/main/rfcs/SchemaCoordinates.md Optional for violations that aren't specific to a single schema element """ coordinate: String """The violation level for the rule.""" level: ViolationLevel! """ A human-readable message describing the rule violation, rendered as markdown in Apollo Studio. Maximum length: 512 characters. """ message: String! """ The rule being violated. This is used to group multiple violations together in Studio. Max character length is 128. """ rule: String! """ The start and end position in the file of the rule violation. Used to display rule violations in the context of your schema diff. """ sourceLocations: [FileLocationInput!] } type CheckWorkflow { """The supergraph schema provided as the base to check against.""" baseSchemaHash: String """The base subgraphs provided as the base to check against.""" baseSubgraphs: [Subgraph!] """ The variant provided as a base to check against. Only the differences from the base schema will be tested in operations checks. """ baseVariant: GraphVariant """ The build task associated with this workflow, or null if no such task was scheduled. """ buildTask: BuildCheckTask """The timestamp when the check workflow completed.""" completedAt: Timestamp """ The downstream task associated with this workflow, or null if no such task kind was scheduled. """ downstreamTask: DownstreamCheckTask """The graph this check workflow belongs to.""" graph: Service! id: ID! """ The name of the implementing service that was responsible for triggering the validation. """ implementingServiceName: String """ The operations task associated with this workflow, or null if no such task was scheduled. """ operationsTask: OperationsCheckTask """The proposed supergraph schema being checked by this check workflow.""" proposedSchemaHash: String """The proposed subgraphs for this check workflow.""" proposedSubgraphs: [Subgraph!] """ If this check was created by rerunning, the original check workflow that was rerun. """ rerunOf: CheckWorkflow """Checks created by re-running this check, most recent first.""" reruns(limit: Int! = 20): [CheckWorkflow!] """The timestamp when the check workflow started.""" startedAt: Timestamp """Overall status of the workflow, based on the underlying task statuses.""" status: CheckWorkflowStatus! """The names of the subgraphs with changes that triggered the validation.""" subgraphNames: [String!]! """ The set of check tasks associated with this workflow, e.g. composition, operations, etc. """ tasks: [CheckWorkflowTask!]! """Identity of the user who ran this check""" triggeredBy: Identity """ The upstream workflow that triggered this workflow, or null if such an upstream workflow does not exist. """ upstreamWorkflow: CheckWorkflow """ If this check came from a proposal, this is the revision that triggered the check. """ proposalRevision: ProposalRevision """ Contextual parameters supplied by the runtime environment where the check was run. """ gitContext: GitContext """Configuration of validation at the time the check was run.""" validationConfig: SchemaDiffValidationConfig createdAt: Timestamp! """Only true if the check was triggered from Sandbox Checks page.""" isSandboxCheck: Boolean! """Only true if the check was triggered from a proposal update.""" isProposalCheck: Boolean! """ If this check is triggered for an sdl fetched using introspection, this is the endpoint where that schema was being served. """ introspectionEndpoint: String } type CheckWorkflowMutation { """The graph this check workflow belongs to.""" graph: Service! id: ID! """ Re-run a check workflow using the current check configuration. The result is either a workflow ID that can be used to check the status or an error message that explains what went wrong. """ rerunAsync(input: RerunAsyncInput): CheckRequestResult! } enum CheckWorkflowStatus { FAILED PASSED PENDING } interface CheckWorkflowTask { completedAt: Timestamp createdAt: Timestamp! id: ID! """ The status of this task. All tasks start with the PENDING status while initializing. If any prerequisite task fails, then the task status becomes BLOCKED. Otherwise, if all prerequisite tasks pass, then this task runs (still having the PENDING status). Once the task completes, the task status will become either PASSED or FAILED. """ status: CheckWorkflowTaskStatus! """A studio UI url to view the details of this check workflow task""" targetURL: String """The workflow that this task belongs to.""" workflow: CheckWorkflow! } enum CheckWorkflowTaskStatus { BLOCKED FAILED PASSED PENDING } """A client to be filtered.""" type ClientFilter { """Name of the client is required.""" name: String! """Version string of the client.""" version: String } """ Options to filter by client reference ID, client name, and client version. If passing client version, make sure to either provide a client reference ID or client name. """ input ClientFilterInput { """name of the client set by the user and reported alongside metrics""" name: String! """version of the client set by the user and reported alongside metrics""" version: String } """ Filter options to exclude by client reference ID, client name, and client version. """ input ClientInfoFilter { name: String! """Ignored""" referenceID: ID version: String } """ Filter options to exclude clients. Used as an output type for SchemaDiffValidationConfig. """ type ClientInfoFilterOutput { name: String! version: String } """Cloud queries""" type Cloud { """Return all RouterConfigVersions""" configVersions(first: Int, offset: Int): [RouterConfigVersion!]! """Return a given RouterConfigVersion""" configVersion(name: String!): RouterConfigVersion """Cloud Router constants""" constants: CloudConstants! """The regions where a cloud router can be deployed""" regions(provider: CloudProvider!, tier: CloudTier): [RegionDescription!]! order(orderId: String!): Order """A list of Cloud Router versions""" versions(input: RouterVersionsInput!): RouterVersionsResult! """Information about a specific Cloud Router version""" version(version: String!): RouterVersionResult! """Retrieve all routers""" routers(first: Int, offset: Int, statuses: [RouterStatus!]): [Router!]! """Return the Cloud Router associated with the provided graphRef""" router(id: ID!): Router """Retrieve a Cloud Router by its internal ID""" routerByInternalId(internalId: ID!): Router """Return the Shard associated with the provided id""" shard(id: ID!): Shard """Return all Shards""" shards(provider: CloudProvider, tier: CloudTier, first: Int, offset: Int): [Shard!]! } """Constants for Cloud Routers""" type CloudConstants { """ Minimum duration between last request and auto-pausing a Serverless Cloud Router """ durationBeforeSleepSecs: Int! """ Minimum duration between last request and the auto-pause warning for a Serverless Cloud Router """ durationBeforeSleepWarningSecs: Int! """ Minimum duration between last request and auto-deleting a Serverless Cloud Router """ durationBeforeDeleteSecs: Int! """ Minimum duration between last request and the auto-delete warning for a Serverless Cloud Router """ durationBeforeDeleteWarningSecs: Int! } """Invalid input error""" type CloudInvalidInputError { """Argument related to the error""" argument: String! """Location of the error""" location: String """Reason for the error""" reason: String! } """Cloud mutations""" type CloudMutation { """Create a new RouterConfigVersion""" createConfigVersion(input: RouterConfigVersionInput!): RouterVersionConfigResult! """Update a RouterConfigVersion""" updateConfigVersion(input: RouterConfigVersionInput!): RouterVersionConfigResult! """Create a new Shard""" createShard(input: CreateShardInput!): ShardResult! """Update an existing Shard""" updateShard(input: UpdateShardInput!): ShardResult! order(orderId: String!): OrderMutation """Create a new router version""" createVersion(version: RouterVersionCreateInput!): CreateRouterVersionResult! """Update an existing router version""" updateVersion(version: RouterVersionUpdateInput!): UpdateRouterVersionResult! """Fetch a Cloud Router for mutations""" router(id: ID!): RouterMutation """Create a new Cloud Router""" createRouter(id: ID!, input: CreateRouterInput!): CreateRouterResult! """Destroy an existing Cloud Router""" destroyRouter(id: ID!): DestroyRouterResult! """Update an existing Cloud Router""" updateRouter(id: ID!, input: UpdateRouterInput!): UpdateRouterResult! } """Cloud onboarding information""" type CloudOnboarding { """Graph variant reference for Cloud Onboarding""" graphRef: String! """Cloud provider for Cloud Onboarding""" provider: CloudProvider! """Tier for Cloud Onboarding""" tier: CloudTier! """Region for Cloud Onboarding""" region: RegionDescription! } """Input to create a new Cloud Onboarding""" input CloudOnboardingInput { """graph variant name for the onboarding""" graphRef: String! """The cloud provider""" provider: CloudProvider! """Tier for the Cloud Onboarding""" tier: CloudTier! """Region for the Cloud Onboarding""" region: String! } """List of supported cloud providers""" enum CloudProvider { """Amazon Web Services""" AWS """Fly.io""" FLY } """Generic input error""" type CloudRouterTestingInvalidInputErrors { errors: [String!]! message: String! } input CloudRouterTestingToolPaginationInput { cursor: Cursor limit: Int } type CloudTesting { routerVersionBuilds(input: RouterVersionBuildsInput!): RouterVersionBuildPageResults! routerVersionBuild(id: ID!): RouterVersionBuildResult testRouter(id: ID!): TestRouter } type CloudTestingMutation { launchTestRouter(input: LaunchTestRouterInput!): LaunchTestRouterResult! deleteAllRouterLaunches: Boolean! deleteTestRouter(id: ID!): DeleteTestRouterResult! buildRouterVersion(input: BuildRouterVersionInput!): BuildRouterVersionResult! cancelRouterVersionBuild(id: ID!): Boolean! cancelAllRouterVersionBuilds: Boolean! deleteAllRouterVersionBuilds: Boolean! } """Cloud Router tiers""" enum CloudTier { """Serverless tier""" SERVERLESS """Dedicated tier""" DEDICATED """Enterprise Cloud tier""" ENTERPRISE } """Validation result""" union CloudValidationResult = CloudValidationSuccess | InvalidInputErrors | InternalServerError """Config validation success""" type CloudValidationSuccess { message: String! } input CommentFilter { schemaScope: String status: [CommentStatus!] type: [CommentType!]! } enum CommentStatus { DELETED OPEN RESOLVED } enum CommentType { CHANGE GENERAL REVIEW } enum ComparisonOperator { EQUALS GREATER_THAN GREATER_THAN_OR_EQUAL_TO LESS_THAN LESS_THAN_OR_EQUAL_TO NOT_EQUALS UNRECOGNIZED } type ComposeAndFilterPreviewBuildResults { """The API schema document/SDL generated from composition/filtering.""" apiSchemaDocument: String! """ The supergraph core schema document/SDL generated from composition/filtering. """ supergraphSchemaDocument: String! } type ComposeAndFilterPreviewComposeError { """ A machine-readable error code. See https://www.apollographql.com/docs/federation/errors/for more info. """ code: String """The step at which composition failed.""" failedStep: String """Source locations related to the error.""" locations: [SourceLocation!] """A human-readable message describing the error.""" message: String! } type ComposeAndFilterPreviewComposeFailure { """The list of errors from failed composition.""" composeErrors: [ComposeAndFilterPreviewComposeError!]! } type ComposeAndFilterPreviewFilterError { """ The step at which filtering failed. See https://www.apollographql.com/docs/studio/contracts/#contract-errors for more info. """ failedStep: String """A human-readable message describing the error.""" message: String! } type ComposeAndFilterPreviewFilterFailure { """The results from successful composition.""" composeResults: ComposeAndFilterPreviewBuildResults! """The list of errors from failed filtering.""" filterErrors: [ComposeAndFilterPreviewFilterError!]! } union ComposeAndFilterPreviewResult = ComposeAndFilterPreviewComposeFailure | ComposeAndFilterPreviewFilterFailure | ComposeAndFilterPreviewSuccess input ComposeAndFilterPreviewSubgraphChange { """ The info being changed in the named subgraph. If null, indicates that the named subgraph should be removed prior to composition. """ info: ComposeAndFilterPreviewSubgraphChangeInfo """The name of the subgraph being changed.""" name: String! } input ComposeAndFilterPreviewSubgraphChangeInfo { """ The routing URL of the subgraph. If a subgraph with the same name exists, then this field can be null to indicate the existing subgraph's info should be used; using null otherwise results in an error. """ routingUrl: String """ The schema document/SDL of the subgraph. If a subgraph with the same name exists, then this field can be null to indicate the existing subgraph's info should be used; using null otherwise results in an error. """ schemaDocument: String } type ComposeAndFilterPreviewSuccess { """The results from successful composition.""" composeResults: ComposeAndFilterPreviewBuildResults! """ The results from successful filtering, or null if filtering was skipped. """ filterResults: ComposeAndFilterPreviewBuildResults } """ The result of supergraph composition that Studio performed in response to an attempted deletion of a subgraph. """ type CompositionAndRemoveResult { """The produced composition config. Will be null if there are any errors""" compositionConfig: CompositionConfig """ A list of errors that occurred during composition. Errors mean that Apollo was unable to compose the graph variant's subgraphs into a supergraph schema. If any errors are present, gateways / routers are not updated. """ errors: [SchemaCompositionError]! """ Whether this composition result resulted in a new supergraph schema passed to Uplink (`true`), or the build failed for any reason (`false`). For dry runs, this value is `true` if Uplink _would have_ been updated with the result. """ updatedGateway: Boolean! """Whether the removed implementing service existed.""" didExist: Boolean! """ID that points to the results of composition.""" graphCompositionID: String! """List of subgraphs that are included in this composition.""" subgraphConfigs: [SubgraphConfig!]! createdAt: Timestamp! } """ The result of supergraph composition that Studio performed in response to an attempted publish of a subgraph. """ type CompositionAndUpsertResult { """The generated composition config, or null if any errors occurred.""" compositionConfig: CompositionConfig """ A list of errors that occurred during composition. Errors mean that Apollo was unable to compose the graph variant's subgraphs into a supergraph schema. If any errors are present, gateways / routers are not updated. """ errors: [SchemaCompositionError]! """ Whether this composition result resulted in a new supergraph schema passed to Uplink (`true`), or the build failed for any reason (`false`). For dry runs, this value is `true` if Uplink _would have_ been updated with the result. """ updatedGateway: Boolean! """Whether a new subgraph was created as part of this publish.""" wasCreated: Boolean! """Whether an implementingService was updated as part of this mutation""" wasUpdated: Boolean! """All subgraphs that were created from this mutation""" subgraphsCreated: [String!]! """All subgraphs that were updated from this mutation""" subgraphsUpdated: [String!]! """ID that points to the results of composition.""" graphCompositionID: String! """List of subgraphs that are included in this composition.""" subgraphConfigs: [SubgraphConfig!]! """The Launch result part of this subgraph publish.""" launch: Launch """ The URL of the Studio page for this update's associated launch, if available. """ launchUrl: String """ Human-readable text describing the launch result of the subgraph publish. """ launchCliCopy: String createdAt: Timestamp! } type CompositionBuildCheckFailed implements BuildCheckFailed & BuildCheckResult & CompositionBuildCheckResult { buildInputs: CompositionBuildInputs! buildPipelineTrack: BuildPipelineTrack! compositionPackageVersion: String errors: [BuildError!]! federationVersion: FederationVersion! id: ID! passed: Boolean! workflowTask: CompositionCheckTask! } type CompositionBuildCheckPassed implements BuildCheckPassed & BuildCheckResult & CompositionBuildCheckResult { buildInputs: CompositionBuildInputs! buildPipelineTrack: BuildPipelineTrack! compositionPackageVersion: String federationVersion: FederationVersion! id: ID! passed: Boolean! supergraphSchemaHash: SHA256! workflowTask: CompositionCheckTask! } interface CompositionBuildCheckResult implements BuildCheckResult { buildInputs: CompositionBuildInputs! """ The build pipeline track of the build task, which indicates what gateway/router versions the build pipeline is intended to support (and accordingly controls the version of code). """ buildPipelineTrack: BuildPipelineTrack! """The version of the OSS apollo composition package used during build""" compositionPackageVersion: String """ The Federation version of the build task, which indicates what gateway/router versions the build pipeline is intended to support (and accordingly controls the version of code). """ federationVersion: FederationVersion! id: ID! """Whether the build task passed or failed.""" passed: Boolean! workflowTask: CompositionCheckTask! } type CompositionBuildInput { subgraphs: [Subgraph!]! version: String } type CompositionBuildInputs { """ The build pipeline track used for composition. Note this is also the build pipeline track used for any triggered downstream check workflows as well. """ buildPipelineTrack: BuildPipelineTrack! """ The Federation version used for composition. Note this is also the Federation version used for any triggered downstream check workflows as well. """ federationVersion: FederationVersion! """The subgraphs used for composition.""" subgraphs: [CompositionBuildInputSubgraph!]! } type CompositionBuildInputSubgraph { """The name of the subgraph.""" name: String! """The routing URL of the subgraph.""" routingUrl: String! """The SHA-256 of the schema document of the subgraph.""" schemaHash: SHA256! } type CompositionCheckTask implements BuildCheckTask & CheckWorkflowTask { """ The result of the composition build check. This will be null when the task is initializing or running. """ buildResult: CompositionBuildCheckResult completedAt: Timestamp """ Whether the build's output supergraph core schema differs from that of the active publish for the workflow's variant at the time this field executed (NOT at the time the check workflow started). """ coreSchemaModified: Boolean! createdAt: Timestamp! graphID: ID! id: ID! proposedBuildInputChanges: ProposedCompositionBuildInputChanges! status: CheckWorkflowTaskStatus! targetURL: String workflow: CheckWorkflow! """ An old version of buildResult that returns a very old GraphQL type that generally should be avoided. This field will soon be deprecated. """ result: CompositionResult } """Composition configuration exposed to the gateway.""" type CompositionConfig { """ List of GCS links for implementing services that comprise a composed graph. Is empty if tag/inaccessible is enabled. """ implementingServiceLocations: [ImplementingServiceLocation!]! @deprecated(reason: "Soon we will stop writing to GCS locations") """ The resulting API schema's SHA256 hash, represented as a hexadecimal string. """ schemaHash: String! } input CompositionConfigInput { subgraphs: [SubgraphInput!]! } """The result of supergraph composition that Studio performed.""" type CompositionPublishResult implements CompositionResult { """The unique ID for this instance of composition.""" graphCompositionID: ID! graphID: ID! """Null if CompositionPublishResult was not on a Proposal Variant""" proposalRevision: ProposalRevision """The generated composition config, or null if any errors occurred.""" compositionConfig: CompositionConfig """ A list of errors that occurred during composition. Errors mean that Apollo was unable to compose the graph variant's subgraphs into a supergraph schema. If any errors are present, gateways / routers are not updated. """ errors: [SchemaCompositionError!]! """ Whether this composition result updated gateway/router instances via Uplink (`true`), or it was a dry run (`false`). """ updatedGateway: Boolean! """The supergraph SDL generated by composition.""" supergraphSdl: GraphQLDocument """List of subgraphs that are included in this composition.""" subgraphConfigs: [SubgraphConfig!]! """ Cloud router configuration associated with this build event. It will be non-null for any cloud-router variant, and null for any not cloudy variant/graph """ routerConfig: String createdAt: Timestamp! } """ The result of supergraph composition performed by Apollo Studio, often as the result of a subgraph check or subgraph publish. See individual implementations for more details. """ interface CompositionResult { """The unique ID for this instance of composition.""" graphCompositionID: ID! """ A list of errors that occurred during composition. Errors mean that Apollo was unable to compose the graph variant's subgraphs into a supergraph schema. If any errors are present, gateways / routers are not updated. """ errors: [SchemaCompositionError!]! """Supergraph SDL generated by composition.""" supergraphSdl: GraphQLDocument """List of subgraphs included in this composition.""" subgraphConfigs: [SubgraphConfig!]! """ Cloud router configuration associated with this build event. It will be non-null for any cloud-router variant, and null for any not cloudy variant/graph """ routerConfig: String createdAt: Timestamp! } type CompositionStatusSubscription implements ChannelSubscription { channels: [Channel!]! createdAt: Timestamp! enabled: Boolean! id: ID! lastUpdatedAt: Timestamp! variant: String } """The composition config exposed to the gateway""" type CompositionValidationDetails { """Hash of the composed schema""" schemaHash: String } """ The result of composition validation run by Apollo Studio during a subgraph check. """ type CompositionValidationResult implements CompositionResult { """The unique ID for this instance of composition.""" graphCompositionID: ID! """ A list of errors that occurred during composition. Errors mean that Apollo was unable to compose the graph variant's subgraphs into a supergraph schema. If any errors are present, gateways / routers are not updated. """ errors: [SchemaCompositionError!]! """ Akin to a composition config, represents the subgraph schemas and corresponding subgraphs that were used in running composition. Will be null if any errors are encountered. Also may contain a schema hash if one could be computed, which can be used for schema validation. """ compositionValidationDetails: CompositionValidationDetails """ DO NOT USE, NOT YET IMPLEMENTED. The subgraphs with changes that were responsible for triggering the validation """ proposedSubgraphs: [FederatedImplementingServicePartialSchema!]! """ The implementing service that was responsible for triggering the validation """ proposedImplementingService: FederatedImplementingServicePartialSchema! @deprecated(reason: "The proposed subgraph is now exposed under proposedSubgraphs, a list. If a single subgraph check was run the list will be one subgraph long.") """Describes whether composition succeeded.""" compositionSuccess: Boolean! """The supergraph schema document generated by composition.""" supergraphSdl: GraphQLDocument """List of subgraphs that are included in this composition.""" subgraphConfigs: [SubgraphConfig!]! """If created as part of a check workflow, the associated workflow task.""" workflowTask: CompositionCheckTask """ Cloud router configuration associated with this build event. It will be non-null for any cloud-router variant, and null for any not cloudy variant/graph """ routerConfig: String createdAt: Timestamp! } """A subgraph in a federated Studio supergraph.""" type ConnectorTools { """A prompt for generating supergraphs using Apollo Connectors""" architect: String! """A specification for Apollo Connectors""" spec: String! } """Represents a section of documentation content""" type ContentSlice { """The index of the section""" index: Int! """Total number of sections available""" totalCount: Int! """The content of the section""" content: String! } input ContractConfigInput { baseGraphRef: String! filterConfigInput: FilterConfigInput! } type ContractPreview { result: ContractPreviewResult! upstreamLaunch: Launch! } type ContractPreviewErrors { errors: [String!]! failedAt: ContractVariantFailedStep! } union ContractPreviewResult = ContractPreviewErrors | ContractPreviewSuccess type ContractPreviewSuccess { apiDocument: String! coreDocument: String! fieldCount: Int! typeCount: Int! } enum ContractVariantFailedStep { ADD_DIRECTIVE_DEFINITIONS_IF_NOT_PRESENT ADD_INACCESSIBLE_SPEC_PURPOSE DIRECTIVE_DEFINITION_LOCATION_AUGMENTING EMPTY_ENUM_MASKING EMPTY_INPUT_OBJECT_MASKING EMPTY_OBJECT_AND_INTERFACE_FIELD_MASKING EMPTY_OBJECT_AND_INTERFACE_MASKING EMPTY_UNION_MASKING INPUT_VALIDATION PARSING PARSING_TAG_DIRECTIVES PARTIAL_INTERFACE_MASKING SCHEMA_RETRIEVAL TAG_INHERITING TAG_MATCHING TO_API_SCHEMA TO_FILTER_SCHEMA UNKNOWN UNREACHABLE_TYPE_MASKING VERSION_CHECK } type ContractVariantUpsertErrors { """ A list of all errors that occurred when attempting to create or update a contract variant. """ errorMessages: [String!]! } union ContractVariantUpsertResult = ContractVariantUpsertErrors | ContractVariantUpsertSuccess type ContractVariantUpsertSuccess { """The updated contract variant""" contractVariant: GraphVariant! """ Human-readable text describing the launch result of the contract update. """ launchCliCopy: String """ The URL of the Studio page for this update's associated launch, if available. """ launchUrl: String } type Coordinate { byteOffset: Int! column: Int! line: Int! } """ Metadata about when a coordinate was first and last seen in operation traces """ type CoordinateInsights { """ If the first or last seen timestamps are earlier than this timestamp, we can't tell the exact date that we saw this coordinate since our data is bound by the retention period. """ earliestRetentionTime: Timestamp """ The earliest time we saw references or executions for this coordinate. Null if the coordinate has never been seen or it is not in the schema. """ firstSeen: Timestamp """ The most recent time we saw references or executions for this coordinate. Null if the coordinate has never been seen or it is not in the schema. """ lastSeen: Timestamp } input CoordinateInsightsListFilterInInput { """ Filters results to coordinates whose usage was reported with any of the given client names. """ clientName: [String] """ Filters results to coordinates whose usage was reported with any of the given client versions. """ clientVersion: [String] } input CoordinateInsightsListFilterInput { """ Filters results to coordinates whose usage was reported with this exact client name. """ clientName: String """ Filters results to coordinates whose usage was reported with this exact client version. """ clientVersion: String """ Restricts results to coordinates of the given kind (e.g. object field, input field, enum value). """ coordinateKind: CoordinateKind """ Filters that match if the value is one of the given values. Multiple conditions inside `in` are ANDed together. """ in: CoordinateInsightsListFilterInInput """ If set, restricts results to coordinates whose `@deprecated` status matches this value in the active schema. """ isDeprecated: Boolean """ If set, restricts results to coordinates whose observed usage in the selected time range matches this value. """ isUnused: Boolean """ A list of alternative filter conditions; results match if any of them match. """ or: [CoordinateInsightsListFilterInput!] """Filters on partial string matches of Named Type and Named Attribute""" search: String } type CoordinateInsightsListItem { """ The estimated number of field executions for this field, based on the field execution sample rate. This can be null depending on the sort order. """ estimatedExecutionCount: Long """ The number of field executions recorded for this field. This can be null depending on the sort order. """ executionCount: Long """ Whether the coordinate is marked `@deprecated` in the active schema for the variant. """ isDeprecated: Boolean! """ Whether the coordinate has had no observed usage in the selected time range. """ isUnused: Boolean! """ The named attribute portion of the schema coordinate (e.g. `email` for `User.email`, or `VALUE` for `MyEnum.VALUE`). """ namedAttribute: String! """ The named type portion of the schema coordinate (e.g. `User` for `User.email`, or `MyEnum` for `MyEnum.VALUE`). """ namedType: String! """ The count of operations that reference the coordinate. This can be null depending on the sort order. """ referencingOperationCount: Long """ The count of operations that reference the coordinate per minute. This can be null depending on the sort order. """ referencingOperationCountPerMin: Float } enum CoordinateInsightsListOrderByColumn { ESTIMATED_EXECUTION_COUNT EXECUTION_COUNT REFERENCING_OPERATION_COUNT REFERENCING_OPERATION_COUNT_PER_MIN SCHEMA_COORDINATE } input CoordinateInsightsListOrderByInput { """The column to order results by.""" column: CoordinateInsightsListOrderByColumn! """The order direction, ascending or descending.""" direction: Ordering! } """Information about pagination in a connection.""" type CoordinateInsightsListPageInfo { """When paginating forwards, the cursor to continue.""" endCursor: String """When paginating backwards, the cursor to continue.""" startCursor: String } enum CoordinateKind { ENUM_VALUE INPUT_OBJECT_FIELD OBJECT_FIELD } """Columns of CoordinateUsage.""" enum CoordinateUsageColumn { CLIENT_NAME CLIENT_VERSION ESTIMATED_EXECUTION_COUNT EXECUTION_COUNT KIND NAMED_ATTRIBUTE NAMED_TYPE OPERATION_SUBTYPE OPERATION_TYPE QUERY_ID QUERY_NAME REFERENCING_OPERATION_COUNT REQUEST_COUNT_NULL REQUEST_COUNT_UNDEFINED SCHEMA_TAG SERVICE_ID TIMESTAMP } type CoordinateUsageDimensions { clientName: String clientVersion: String kind: String namedAttribute: String namedType: String operationSubtype: String operationType: String queryId: String queryName: String schemaTag: String serviceId: ID } """ Filter for data in CoordinateUsage. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input CoordinateUsageFilter { and: [CoordinateUsageFilter!] """ Selects rows whose clientName dimension equals the given value if not null. To query for the null value, use {in: {clientName: [null]}} instead. """ clientName: String """ Selects rows whose clientVersion dimension equals the given value if not null. To query for the null value, use {in: {clientVersion: [null]}} instead. """ clientVersion: String in: CoordinateUsageFilterIn """ Selects rows whose kind dimension equals the given value if not null. To query for the null value, use {in: {kind: [null]}} instead. """ kind: String """ Selects rows whose namedAttribute dimension equals the given value if not null. To query for the null value, use {in: {namedAttribute: [null]}} instead. """ namedAttribute: String """ Selects rows whose namedType dimension equals the given value if not null. To query for the null value, use {in: {namedType: [null]}} instead. """ namedType: String not: CoordinateUsageFilter """ Selects rows whose operationSubtype dimension equals the given value if not null. To query for the null value, use {in: {operationSubtype: [null]}} instead. """ operationSubtype: String """ Selects rows whose operationType dimension equals the given value if not null. To query for the null value, use {in: {operationType: [null]}} instead. """ operationType: String or: [CoordinateUsageFilter!] """ Selects rows whose queryId dimension equals the given value if not null. To query for the null value, use {in: {queryId: [null]}} instead. """ queryId: String """ Selects rows whose queryName dimension equals the given value if not null. To query for the null value, use {in: {queryName: [null]}} instead. """ queryName: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serviceId dimension equals the given value if not null. To query for the null value, use {in: {serviceId: [null]}} instead. """ serviceId: ID } """ Filter for data in CoordinateUsage. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input CoordinateUsageFilterIn { """ Selects rows whose clientName dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientName: [String] """ Selects rows whose clientVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientVersion: [String] """ Selects rows whose kind dimension is in the given list. A null value in the list means a row with null for that dimension. """ kind: [String] """ Selects rows whose namedAttribute dimension is in the given list. A null value in the list means a row with null for that dimension. """ namedAttribute: [String] """ Selects rows whose namedType dimension is in the given list. A null value in the list means a row with null for that dimension. """ namedType: [String] """ Selects rows whose operationSubtype dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationSubtype: [String] """ Selects rows whose operationType dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationType: [String] """ Selects rows whose queryId dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryId: [String] """ Selects rows whose queryName dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryName: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serviceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serviceId: [ID] } type CoordinateUsageMetrics { estimatedExecutionCount: Long! executionCount: Long! referencingOperationCount: Long! requestCountNull: Long! requestCountUndefined: Long! } input CoordinateUsageOrderBySpec { column: CoordinateUsageColumn! direction: Ordering! } type CoordinateUsageRecord { """Dimensions of CoordinateUsage that can be grouped by.""" groupBy: CoordinateUsageDimensions! """Metrics of CoordinateUsage that can be aggregated over.""" metrics: CoordinateUsageMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """Contains the supergraph and API schemas generated by composition.""" type CoreSchema { """The composed API schema document.""" apiDocument: GraphQLDocument! """ The API schema document's SHA256 hash, represented as a hexadecimal string. """ apiHash: String! """The composed supergraph schema document.""" coreDocument: GraphQLDocument! """ The supergraph schema document's SHA256 hash, represented as a hexadecimal string. """ coreHash: String! fieldCount: Int! @deprecated(reason: "Use metadata instead") """Metadata associated with the schema.""" metadata: SchemaMetadata tags: [String!]! typeCount: Int! @deprecated(reason: "Use metadata instead") } """A learner's feedback submission for a course""" type CourseFeedback { """Unique identifier for this feedback record""" id: ID! """The course this feedback was submitted for""" courseId: ID! """All question-answer pairs in this submission""" responses: [QuestionResponse!]! """When this feedback was submitted""" submittedAt: Timestamp! } """Input for submitting feedback for a course""" input CourseFeedbackInput { """The course this feedback is for""" courseId: ID! """All question-answer pairs in this submission""" responses: [QuestionResponseInput!]! } """Input for `createAccessRequestByServiceName`.""" input CreateAccessRequestByServiceNameInput { """Application the access is being requested for.""" appId: UUID! """Upstream service name the access is being requested against.""" serviceName: String! """ Principal the request applies to. Null means the caller's own identity. """ principal: PolicyRulePrincipalInput """ Router-generated integrity token describing the denied fields. Format: `v0..`. The JSON payload contains `blocked_fields`, `app_id`, `service_id`, and request metadata. Pass the `denial_context` value from the router's `CONSTELLATION_ACCESS_DENIED` error extension verbatim. """ denialContext: String! """ Base64url-encoded normalized GraphQL operation that triggered the access check. Pass the `source_operation` value from the router's `CONSTELLATION_ACCESS_DENIED` error extension verbatim. Reviewers can base64-decode this to display the original query. """ sourceOperation: String! """Fields the caller is requesting access to.""" requestedFields: [String!]! """Human-readable justification for the request.""" reason: String! """ Approval policy governing the quorum requirement. Server-side default applies when omitted. """ approvalPolicyId: UUID """ Required approver count override. Server-side default applies when omitted. """ requiredApproverCount: Int """ Optional expiry — after this timestamp the request is no longer actionable. """ expiresAt: DateTime """Optional client-supplied key used to deduplicate retries.""" idempotencyKey: String } """Input for `createAccessRequest`.""" input CreateAccessRequestInput { """Application the access is being requested for.""" appId: UUID! """Upstream service the access is being requested against.""" serviceId: UUID! """ Principal the request applies to. Null means the caller's own identity. """ principal: PolicyRulePrincipalInput """ Router-generated integrity token describing the denied fields. Format: `v0..`. The JSON payload contains `blocked_fields`, `app_id`, `service_id`, and request metadata. Pass the `denial_context` value from the router's `CONSTELLATION_ACCESS_DENIED` error extension verbatim. """ denialContext: String! """ Base64url-encoded normalized GraphQL operation that triggered the access check. Pass the `source_operation` value from the router's `CONSTELLATION_ACCESS_DENIED` error extension verbatim. Reviewers can base64-decode this to display the original query. """ sourceOperation: String! """Fields the caller is requesting access to.""" requestedFields: [String!]! """Human-readable justification for the request.""" reason: String! """ Approval policy governing the quorum requirement. Server-side default applies when omitted. """ approvalPolicyId: UUID """ Required approver count override. Server-side default applies when omitted. """ requiredApproverCount: Int """ Optional expiry — after this timestamp the request is no longer actionable. """ expiresAt: DateTime """Optional client-supplied key used to deduplicate retries.""" idempotencyKey: String } """Input for creating a new application.""" input CreateApplicationInput { """Human-readable name for the new application.""" name: String! """Optional description of the application's purpose.""" description: String """ Whether this is an agentic or interactive application. Determines initial status: AGENTIC_APP starts PENDING; INTERACTIVE starts APPROVED. """ kind: ApplicationKind! } """Input to create a new AWS shard""" input CreateAwsShardInput { region: String! accountId: String! iamRoleArn: String! loadbalancers: [AwsLoadBalancerInput!]! loadbalancerSecurityGroupId: String! ecsClusterArn: String! vpcId: String! subnetIds: [String!]! permissionsBoundaryArn: String! coldStartTargetGroupArns: [String!] } """Input for creating a new feedback survey""" input CreateFeedbackSurveyInput { """Human-readable name for the survey""" name: String! """The ordered list of questions for this survey""" questions: [FeedbackQuestionInput!]! } """Return payload for the createSurvey mutation""" type CreateFeedbackSurveyPayload { """The survey that was created, or null if validation failed""" survey: FeedbackSurvey """Any validation errors that occurred""" userErrors: [UserError!]! } """Result from the createCloudOnboarding mutation""" union CreateOnboardingResult = CreateOnboardingSuccess | InvalidInputErrors | InternalServerError """Success creating a CloudOnboarding""" type CreateOnboardingSuccess { onboarding: CloudOnboarding! } union CreateOperationCollectionResult = NotFoundError | OperationCollection | PermissionError | ValidationError """ The result of a successful call to GraphMutation.createPersistedQueryList. """ type CreatePersistedQueryListResult { persistedQueryList: PersistedQueryList! } """ The result/error union returned by GraphMutation.createPersistedQueryList. """ union CreatePersistedQueryListResultOrError = CreatePersistedQueryListResult | PermissionError """Input for creating a new policy exception.""" input CreatePolicyExceptionInput { """Application the exception applies to.""" scopeAppId: UUID! """Principal to grant. Null means "all principals in scope".""" principal: PolicyRulePrincipalInput """Upstream service the exception covers.""" serviceId: UUID! """Classification label being granted.""" classification: String! """Optional reference to the originating access request.""" accessRequestId: String """Identifier of the user/system approving the exception.""" approvedBy: String! """Human-readable justification for the grant.""" reason: String! """ Optional expiry timestamp. Null means the exception does not auto-expire. """ expiresAt: DateTime """Initial lifecycle status. Defaults to `ACTIVE` when omitted.""" status: PolicyExceptionStatus } """Input for creating a new policy rule.""" input CreatePolicyRuleInput { """Scope at which the rule applies.""" scope: PolicyRuleScopeInput! """Principal binding. Null means "all principals in scope".""" principal: PolicyRulePrincipalInput """Target — classification or service.""" target: PolicyRuleTargetInput! """Effect taken when the rule matches.""" effect: PolicyEffect! """ Effect-specific configuration. Required for `ALLOW`/`DENY`, must be absent or all-null for `MASK`. """ effectConfig: PolicyEffectConfigInput """Optional human-readable description.""" description: String """ Operational configuration overrides; server-side defaults apply when omitted. """ config: PolicyRuleConfigInput } """An error that occurs when creating a proposal fails.""" type CreateProposalError implements Error { """The error's details.""" message: String! } input CreateProposalInput { description: String displayName: String! sourceVariantName: String! } input CreateProposalLifecycleSubscriptionInput { """ The ID of the channel to subscribe. Accepts any channel type; use instead of webhookChannelID. """ channelId: ID events: [ProposalLifecycleEvent!]! webhookChannelID: ID! } union CreateProposalLifecycleSubscriptionResult = PermissionError | ProposalLifecycleSubscription | ValidationError union CreateProposalResult = CreateProposalError | GraphVariant | PermissionError | ValidationError """Input to create a new Cloud Router""" input CreateRouterInput { """Router version for the Cloud Router""" routerVersion: String """Configuration for the Cloud Router""" routerConfig: String """Graph composition ID, also known as launch ID""" graphCompositionId: String """ Number of GCUs allocated for the Cloud Router This is ignored for serverless Cloud Routers """ gcus: Int """Unique identifier for ordering orders""" orderingId: String! } """Represents the possible outcomes of a createRouter mutation""" union CreateRouterResult = CreateRouterSuccess | InvalidInputErrors | InternalServerError """ Success branch of a createRouter mutation id of the order can be polled via Query.cloud().order(id: ID!) to check-in on the progress of the underlying operation """ type CreateRouterSuccess { order: Order! } """Result of a createVersion mutation""" union CreateRouterVersionResult = RouterVersion | InvalidInputErrors | InternalServerError input CreateRuleEnforcementInput { graphVariant: String params: [StringToStringInput!] policy: EnforcementPolicy! } """ Result of createS3Integration: the created configuration, or an error explaining why it could not be created. """ union CreateS3IntegrationResult = AlreadyConfiguredError | InvalidInputError | PermissionError | S3IntegrationConfig """Input for creating a new service catalog entry.""" input CreateServiceCatalogInput { """Identifier of the service connector this catalog entry describes.""" serviceId: String! """ Version timestamp for this catalog entry; defaults to the current time if omitted. """ version: DateTime """GraphQL schema template for this version of the service connector.""" schemaTemplate: String """Human-readable name for this catalog entry (e.g. "Slack").""" displayName: String """Description of what this connector does.""" description: String """Suggested base URL to prefill when creating a service from this entry.""" defaultBaseUrl: String """ Suggested auth configuration to prefill when creating a service from this entry. """ defaultAuth: JSON } """Input to create a new Shard""" input CreateShardInput { shardId: String! gcuCapacity: Int gcuUsage: Int routerCapacity: Int routerUsage: Int provider: CloudProvider! tier: CloudTier! status: ShardStatus reason: String aws: CreateAwsShardInput } """Input for creating a new service.""" input CreateUpstreamServiceInput { """Human-readable name for the new service.""" name: String! """Optional description of the service's purpose.""" description: String """Reference to a service catalog entry to use as the template.""" templateId: UUID! """Base URL for the service's API endpoint.""" baseUrl: String! """ Authentication configuration as a JSON object. If the service template references `{{TOKEN_VAR}}`, include `env_var` (string) here naming the environment variable that holds the secret. """ auth: JSON """Tags to categorize this service.""" tags: [String!] } type CreditGrant { expiresAt: Timestamp remainingCreditsInUsdCents: Int! totalCreditsInUsdCents: Int! } type CronExecution { completedAt: Timestamp failure: String id: ID! job: CronJob! resolvedAt: Timestamp resolvedBy: Actor schedule: String! startedAt: Timestamp! } type CronJob { group: String! name: String! recentExecutions(n: Int): [CronExecution!]! } scalar Cursor input CustomCheckCallbackInput { """ Sets the status of your check task. Setting this status to FAILURE will cause the entire check workflow to fail. """ status: CheckStepStatus! """The ID of the custom check task, provided in the webhook payload.""" taskId: ID! """The violations found by your check task. Max length is 1000""" violations: [CheckViolationInput!] """ The ID of the workflow that the custom check task is a member of, provided in the webhook payload. """ workflowId: ID! } """Result of a custom check task callback mutation.""" union CustomCheckCallbackResult = CustomCheckResult | PermissionError | TaskError | ValidationError """Custom check configuration detailing webhook integration.""" type CustomCheckConfiguration { channel: CustomCheckWebhookChannel! id: ID! } """Result of a custom check configuration update mutation.""" union CustomCheckConfigurationResult = CustomCheckConfiguration | PermissionError | ValidationError type CustomCheckResult { violations: [CheckViolation!]! } type CustomCheckTask implements CheckWorkflowTask { graphID: ID! id: ID! result: CustomCheckResult completedAt: Timestamp createdAt: Timestamp! status: CheckWorkflowTaskStatus! targetURL: String workflow: CheckWorkflow! } """Configuration of a webhook integration for a custom check.""" type CustomCheckWebhookChannel { """The time when this CustomCheckWebhookChannel was created.""" createdAt: Timestamp! """ The Identity that created this CustomCheckWebhookChannel. null if the Identity has been deleted. """ createdBy: Identity """The ID for this webhook channel""" id: ID! """ The last time this subscription was updated, if never updated will be the createdAt time. """ lastUpdatedAt: Timestamp! """ The Identity that last updated this CustomCheckWebhookChannel, or the creator if no one has updated. null if the Identity has been deleted. """ lastUpdatedBy: Identity """Whether or not a secret token has been set on this channel.""" secretTokenIsSet: Boolean! """The URL to send the webhook to.""" url: String! """ The variant name if this channel is only configured for a specific variant. If null, this configuration applies to all variants. """ variant: String } enum DatadogApiRegion { EU EU1 US US1 US1FED US3 US5 } type DatadogMetricsConfig { apiKey: String! apiRegion: DatadogApiRegion! enabled: Boolean! legacyMetricNames: Boolean! } """ISO 8601 date format, e.g. 'yyyy-MM-dd'""" scalar Date """ Implement the DateTime scalar The input/output is a string in RFC3339 format. """ scalar DateTime input DeleteCommentInput { id: String! } union DeleteCommentResult = DeleteCommentSuccess | NotFoundError | PermissionError | ValidationError type DeleteCommentSuccess { comment: DeleteCommentSuccessResult } union DeleteCommentSuccessResult = ParentChangeProposalComment | ParentGeneralProposalComment """The payload from deleting a tag from a graph artifact.""" type DeleteGraphArtifactTagPayload { """The name of the tag that was deleted.""" tag: String! } """The possible result of deleting a tag from a graph artifact.""" union DeleteGraphArtifactTagResult = BadInputError | DeleteGraphArtifactTagPayload | GraphArtifactNotFoundError | GraphNotFoundError | OperationInProgressError union DeleteOperationCollectionResult = DeleteOperationCollectionSuccess | PermissionError type DeleteOperationCollectionSuccess { sandboxOwner: User variants: [GraphVariant!]! } """ The result of a successful call to PersistedQueryListMutation.deleteOperationsByFilter. """ type DeleteOperationsByFilterResult { """The build created by this delete operation.""" build: PersistedQueryListBuild """ Returns `true` if no changes were made by this operation (and no new revision was created). Otherwise, returns `false`. """ unchanged: Boolean! } """ The result/error union returned by PersistedQueryListMutation.deleteOperationsByFilter. """ union DeleteOperationsByFilterResultOrError = DeleteOperationsByFilterResult | PermissionError """The result of a successful call to PersistedQueryListMutation.delete.""" type DeletePersistedQueryListResult { graph: Service! } """The result/error union returned by PersistedQueryListMutation.delete.""" union DeletePersistedQueryListResultOrError = CannotDeleteLinkedPersistedQueryListError | DeletePersistedQueryListResult | PermissionError input DeleteProposalLifecycleSubscriptionInput { id: String! } union DeleteProposalLifecycleSubscriptionResult = DeleteProposalLifecycleSubscriptionSuccess | NotFoundError | PermissionError | ValidationError type DeleteProposalLifecycleSubscriptionSuccess { """The id of the ProposalLifecycleSubscription that was deleted""" id: ID! } input DeleteProposalSubgraphInput { previousLaunchId: ID subgraphName: String! summary: String! } union DeleteProposalSubgraphResult = PermissionError | Proposal | ValidationError """ Result of delete: the owning account, or an error explaining why it could not be deleted. """ union DeleteS3IntegrationResult = Account | InvalidInputError | NotFoundError | PermissionError """The result of attempting to delete a graph variant.""" type DeleteSchemaTagResult { """Whether the variant was deleted or not.""" deleted: Boolean! } union DeleteTestRouterResult = DeleteTestRouterSuccess | CloudRouterTestingInvalidInputErrors type DeleteTestRouterSuccess { jobId: String! } enum DeletionTargetType { ACCOUNT USER } """Represents the possible outcomes of a destroyRouter mutation""" union DestroyRouterResult = DestroyRouterSuccess | InvalidInputErrors | InternalServerError """Success branch of a destroyRouter mutation""" type DestroyRouterSuccess { """ Order for the destroyRouter mutation This could be empty if the router is already destroyed or doesn't exist, but should still be treated as a success. """ order: Order } """Support for a single directive on a graph variant""" type DirectiveSupportStatus { """whether the directive is supported on the current graph variant""" enabled: Boolean! """name of the directive""" name: String! } """Documentation access and search functionality""" type Documentation { """Retrieve a specific documentation page by its slug""" page(slug: String!): DocumentationPage """Search for documentation pages matching the query""" search(query: String!, maxResults: Int): [DocumentationPage!]! } """Input parameters for slicing documentation content""" input DocumentationContentSliceInput { """The section index to start from""" sectionIndex: Int """Maximum number of characters to return""" maxCharacters: Int } """Represents a single documentation page""" type DocumentationPage { """Unique slug identifier for the page""" slug: String! """The content of the page, optionally sliced based on input parameters""" contentSlice(slice: DocumentationContentSliceInput): ContentSlice! """The full URL of the documentation page""" url: String! } """ The result of a schema checks workflow that was run on a downstream variant as part of checks for the corresponding source variant. Most commonly, these downstream checks are [contract checks](https://www.apollographql.com/docs/studio/contracts#contract-checks). """ type DownstreamCheckResult { """ Whether the downstream check workflow blocks the upstream check workflow from completing. """ blocking: Boolean! """The ID of the graph that the downstream variant belongs to.""" downstreamGraphID: String! """The name of the downstream variant.""" downstreamVariantName: String! """ The downstream checks workflow that this result corresponds to. This value is null if the workflow hasn't been initialized yet, or if the downstream variant was deleted. """ downstreamWorkflow: CheckWorkflow """ Whether the downstream check workflow is causing the upstream check workflow to fail. This occurs when the downstream check workflow is both blocking and failing. This may be null while the downstream check workflow is pending. """ failsUpstreamWorkflow: Boolean """The downstream checks task that this result corresponds to.""" workflowTask: DownstreamCheckTask! } type DownstreamCheckTask implements CheckWorkflowTask { completedAt: Timestamp createdAt: Timestamp! id: ID! """ A list of results for all downstream checks triggered as part of the source variant's checks workflow. This value is null if the task hasn't been initialized yet, or if the build task fails (the build task is a prerequisite to this task). This value is _not_ null _while_ the task is running. The returned list is empty if the source variant has no downstream variants. """ results: [DownstreamCheckResult!] status: CheckWorkflowTaskStatus! targetURL: String workflow: CheckWorkflow! } enum DownstreamLaunchInitiation { """ Initiate the creation of downstream launches associated with this subgraph publication asynchronously. The resulting API response may not provide specific details about triggered downstream launches. """ ASYNC """ Initiate the creation of downstream Launches associated with this subgraph publication synchronously. Use this option to ensure that any downstream launches will be started before the publish mutation returns. Note that this does not require launches to complete, but it does ensure that the downstream launch IDs are available to be queried from a `CompositionAndUpsertResult`. """ SYNC } type DraftInvoice { billingPeriodEndsAt: Timestamp! @deprecated(reason: "This data came from Metronome and we no longer use Metronome") billingPeriodStartsAt: Timestamp! @deprecated(reason: "This data came from Metronome and we no longer use Metronome") """ The approximate date in the future we expect the customer to be billed if they fully complete the billing cycle """ expectedInvoiceAt: Timestamp! @deprecated(reason: "This data came from Metronome and we no longer use Metronome") """When this invoice was sent to the customer, if it's been sent""" invoicedAt: Timestamp @deprecated(reason: "This data came from Metronome and we no longer use Metronome") """ Breakdown of this invoice's charges. May be empty if we don't have a breakdown """ lineItems: [InvoiceLineItem!] @deprecated(reason: "This data came from Metronome and we no longer use Metronome") subtotalInCents: Int! @deprecated(reason: "This data came from Metronome and we no longer use Metronome") totalInCents: Int! @deprecated(reason: "This data came from Metronome and we no longer use Metronome") } union DuplicateOperationCollectionResult = OperationCollection | PermissionError | ValidationError type DurationHistogram { averageDurationMs: Float buckets: [DurationHistogramBucket!]! durationMs( """Percentile (between 0 and 1)""" percentile: Float! ): Float """ Counts per durationBucket, where sequences of zeroes are replaced with the negative of their size """ sparseBuckets: [Long!]! totalCount: Long! totalDurationMs: Float! } type DurationHistogramBucket { count: Long! index: Int! rangeBeginMs: Float! rangeEndMs: Float! } input EdgeServerInfo { """ A randomly generated UUID, immutable for the lifetime of the edge server runtime. """ bootId: String! """ A unique identifier for the executable GraphQL served by the edge server. length must be <= 64 characters. """ executableSchemaId: String! """The graph variant, defaults to 'current'""" graphVariant: String! = "current" """ The version of the edge server reporting agent, e.g. apollo-server-2.8, graphql-java-3.1, etc. length must be <= 256 characters. """ libraryVersion: String """ The infra environment in which this edge server is running, e.g. localhost, Kubernetes, AWS Lambda, Google CloudRun, AWS ECS, etc. length must be <= 256 characters. """ platform: String """ The runtime in which the edge server is running, e.g. node 12.03, zulu8.46.0.19-ca-jdk8.0.252-macosx_x64, etc. length must be <= 256 characters. """ runtimeVersion: String """ If available, an identifier for the edge server instance, such that when restarting this instance it will have the same serverId, with a different bootId. For example, in Kubernetes this might be the pod name. Length must be <= 256 characters. """ serverId: String """ An identifier used to distinguish the version (from the user's perspective) of the edge server's code itself. For instance, the git sha of the server's repository or the docker sha of the associated image this server runs with. Length must be <= 256 characters. """ userVersion: String } """Columns of EdgeServerInfos.""" enum EdgeServerInfosColumn { BOOT_ID EXECUTABLE_SCHEMA_ID LIBRARY_VERSION PLATFORM RUNTIME_VERSION SCHEMA_TAG SERVER_ID SERVICE_ID TIMESTAMP USER_VERSION } type EdgeServerInfosDimensions { bootId: ID executableSchemaId: ID libraryVersion: String platform: String runtimeVersion: String schemaTag: String serverId: ID serviceId: ID userVersion: String } """ Filter for data in EdgeServerInfos. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input EdgeServerInfosFilter { and: [EdgeServerInfosFilter!] """ Selects rows whose bootId dimension equals the given value if not null. To query for the null value, use {in: {bootId: [null]}} instead. """ bootId: ID """ Selects rows whose executableSchemaId dimension equals the given value if not null. To query for the null value, use {in: {executableSchemaId: [null]}} instead. """ executableSchemaId: ID in: EdgeServerInfosFilterIn """ Selects rows whose libraryVersion dimension equals the given value if not null. To query for the null value, use {in: {libraryVersion: [null]}} instead. """ libraryVersion: String not: EdgeServerInfosFilter or: [EdgeServerInfosFilter!] """ Selects rows whose platform dimension equals the given value if not null. To query for the null value, use {in: {platform: [null]}} instead. """ platform: String """ Selects rows whose runtimeVersion dimension equals the given value if not null. To query for the null value, use {in: {runtimeVersion: [null]}} instead. """ runtimeVersion: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serverId dimension equals the given value if not null. To query for the null value, use {in: {serverId: [null]}} instead. """ serverId: ID """ Selects rows whose serviceId dimension equals the given value if not null. To query for the null value, use {in: {serviceId: [null]}} instead. """ serviceId: ID """ Selects rows whose userVersion dimension equals the given value if not null. To query for the null value, use {in: {userVersion: [null]}} instead. """ userVersion: String } """ Filter for data in EdgeServerInfos. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input EdgeServerInfosFilterIn { """ Selects rows whose bootId dimension is in the given list. A null value in the list means a row with null for that dimension. """ bootId: [ID] """ Selects rows whose executableSchemaId dimension is in the given list. A null value in the list means a row with null for that dimension. """ executableSchemaId: [ID] """ Selects rows whose libraryVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ libraryVersion: [String] """ Selects rows whose platform dimension is in the given list. A null value in the list means a row with null for that dimension. """ platform: [String] """ Selects rows whose runtimeVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ runtimeVersion: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serverId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serverId: [ID] """ Selects rows whose serviceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serviceId: [ID] """ Selects rows whose userVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ userVersion: [String] } input EdgeServerInfosOrderBySpec { column: EdgeServerInfosColumn! direction: Ordering! } type EdgeServerInfosRecord { """Dimensions of EdgeServerInfos that can be grouped by.""" groupBy: EdgeServerInfosDimensions! """Starting segment timestamp.""" timestamp: Timestamp! } input EditCommentInput { id: String! message: String! usersToNotify: [String!] } union EditCommentResult = NotFoundError | ParentChangeProposalComment | ParentGeneralProposalComment | PermissionError | ReplyChangeProposalComment | ReplyGeneralProposalComment | ValidationError """Education-specific data and functionality for a user""" type Education { """Recent pages visited by the user""" recentPages( """Maximum number of recent pages to return""" limit: Int ): [RecentPage!]! } enum EmailCategory { EDUCATIONAL } type EmailPreferences { email: String! subscriptions: [EmailCategory!]! unsubscribedFromAll: Boolean! } enum EnforcementPolicy { CLIENT_NAME_CARDINALITY CLIENT_VERSION_CARDINALITY OPERATION_ID_CARDINALITY } """ Usage stats describing extended-reference reporting for enhanced operation checks. """ type EnhancedModeStats { """Number of executions reporting extended references.""" queriesWithEnhancedMode: Int! """Number of executions not reporting extended references.""" queriesWithoutEnhancedMode: Int! """Timestamp of the latest usage report without extended references.""" latestTimeWithoutEnhancedMode: Timestamp } type EntitiesError { message: String! } type EntitiesErrorResponse { errors: [EntitiesError!]! } type EntitiesResponse { entities: [Entity!]! } union EntitiesResponseOrError = EntitiesResponse | EntitiesErrorResponse type Entity { typename: String! subgraphKeys: [SubgraphKeyMap!] } """GraphQL Error""" interface Error { """The error message""" message: String! } input ErrorInsightsListFilterInInput { """ Filters results to errors reported by any of the given agents (e.g. `apollo-router`). """ agent: [String] """ Filters results to errors whose requests were reported with any of the given client names. """ clientName: [String] """ Filters results to errors whose requests were reported with any of the given client versions. """ clientVersion: [String] """ Filters results to errors that were reported with any of the given error codes. """ code: [String] """ Filters results to errors attributed to any of the given downstream subgraph or connector services. """ service: [String] """ Filters results by service when grouping by service, otherwise by reporting agent. """ serviceOrAgent: [String] } input ErrorInsightsListFilterInput { """ Filters results to errors reported by this agent (e.g. `apollo-router`). """ agent: String """ Filters results to errors whose requests were reported with this exact client name. """ clientName: String """ Filters results to errors whose requests were reported with this exact client version. """ clientVersion: String """ Filters results to errors that were reported with this exact error code. """ code: String """ Filters that match if the value is one of the given values. Multiple conditions inside `in` are ANDed together. """ in: ErrorInsightsListFilterInInput """Filters results to errors observed for this operation id.""" operationId: String """ A list of alternative filter conditions; results match if any of them match. """ or: [ErrorInsightsListFilterInput!] """Filters results to errors that occurred at this response path.""" path: String """ Filters results to errors attributed to this downstream subgraph or connector service. """ service: String """ Filters results by service when grouping by service, otherwise by reporting agent. """ serviceOrAgent: String } enum ErrorInsightsListGroupByColumn { AGENT CLIENT_NAME CLIENT_VERSION CODE OPERATION_ID OPERATION_NAME PATH SERVICE SERVICE_OR_AGENT SEVERITY } type ErrorInsightsListItem { """ The reporting agent (e.g. `apollo-router`) attributed to these errors (if grouped by agent). """ agent: String """ The client name that issued the requests resulting in these errors (if grouped by client). """ clientName: String """ The client version that issued the requests resulting in these errors (if grouped by client). """ clientVersion: String """The error code reported with these errors (if grouped by error code).""" code: String """ The number of errors observed in the selected time range, matching the grouping. Deprecated alias for errorCount. """ count: Long! @deprecated(reason: "Use errorCount instead") """ The number of errors observed in the selected time range, matching the grouping. """ errorCount: Long! """ The number of operations that produced errors in the selected time range, if available for the grouping. """ operationCount: Long """ The unique id of the operation associated with the errors (if grouped by operation). """ operationId: String """ The name of the operation associated with the errors (if grouped by operation). """ operationName: String """The response path at which the errors occurred (if grouped by path).""" path: String """ The downstream subgraph or connector service that produced the errors (if grouped by service). """ service: String """ The service name when grouping by service, otherwise the reporting agent name. """ serviceOrAgent: String """The severity classification reported with the errors.""" severity: ErrorInsightsSeverity """ A sample of traces that contain the errors represented by this row, up to the given limit. """ traceRefs(limit: Int! = 3): ErrorTraceRefsResult } enum ErrorInsightsListOrderByColumn { AGENT CLIENT_NAME CLIENT_VERSION CODE COUNT OPERATION_ID OPERATION_NAME PATH SERVICE_OR_AGENT SEVERITY TIMESTAMP } input ErrorInsightsListOrderByInput { """The column to order results by.""" column: ErrorInsightsListOrderByColumn! """The order direction, ascending or descending.""" direction: Ordering! } """Information about pagination in a connection.""" type ErrorInsightsListPageInfo { """When paginating forwards, the cursor to continue.""" endCursor: String """When paginating backwards, the cursor to continue.""" startCursor: String } enum ErrorInsightsSeverity { ERROR UNKNOWN WARN } enum ErrorInsightsStrategy { ERROR_STATS FEDERATED_ERROR_STATS MIXED } """A single time-bucketed record in an error insights timeseries result.""" type ErrorInsightsTimeseriesRecord { """ The aggregated error insights data for this time bucket, matching the grouping. """ data: ErrorInsightsListItem! """The query strategy used to produce this record.""" strategy: ErrorInsightsStrategy! """The start of the time bucket for this record.""" timestamp: Timestamp! } """ A timeseries of error counts bucketed by time over the requested range. """ type ErrorInsightsTimeseriesResult { """ The list of time-bucketed records returned for the requested range and grouping. """ records: [ErrorInsightsTimeseriesRecord!]! """ The requested `from` timestamp, rounded down to the nearest bucket boundary. """ roundedDownFrom: Timestamp! """ The requested `to` timestamp, rounded up to the nearest bucket boundary. """ roundedUpTo: Timestamp! """The total number of errors observed across all records in this result.""" totalErrors: Int! } """Columns of ErrorStats.""" enum ErrorStatsColumn { ACCOUNT_ID CLIENT_NAME CLIENT_VERSION ERRORS_COUNT PATH QUERY_ID QUERY_NAME REQUESTS_WITH_ERRORS_COUNT SCHEMA_HASH SCHEMA_TAG SERVICE_ID TIMESTAMP } type ErrorStatsDimensions { accountId: ID clientName: String clientVersion: String path: String queryId: ID queryName: String schemaHash: String schemaTag: String serviceId: ID } """ Filter for data in ErrorStats. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input ErrorStatsFilter { """ Selects rows whose accountId dimension equals the given value if not null. To query for the null value, use {in: {accountId: [null]}} instead. """ accountId: ID and: [ErrorStatsFilter!] """ Selects rows whose clientName dimension equals the given value if not null. To query for the null value, use {in: {clientName: [null]}} instead. """ clientName: String """ Selects rows whose clientVersion dimension equals the given value if not null. To query for the null value, use {in: {clientVersion: [null]}} instead. """ clientVersion: String in: ErrorStatsFilterIn not: ErrorStatsFilter or: [ErrorStatsFilter!] """ Selects rows whose path dimension equals the given value if not null. To query for the null value, use {in: {path: [null]}} instead. """ path: String """ Selects rows whose queryId dimension equals the given value if not null. To query for the null value, use {in: {queryId: [null]}} instead. """ queryId: ID """ Selects rows whose queryName dimension equals the given value if not null. To query for the null value, use {in: {queryName: [null]}} instead. """ queryName: String """ Selects rows whose schemaHash dimension equals the given value if not null. To query for the null value, use {in: {schemaHash: [null]}} instead. """ schemaHash: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serviceId dimension equals the given value if not null. To query for the null value, use {in: {serviceId: [null]}} instead. """ serviceId: ID } """ Filter for data in ErrorStats. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input ErrorStatsFilterIn { """ Selects rows whose accountId dimension is in the given list. A null value in the list means a row with null for that dimension. """ accountId: [ID] """ Selects rows whose clientName dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientName: [String] """ Selects rows whose clientVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientVersion: [String] """ Selects rows whose path dimension is in the given list. A null value in the list means a row with null for that dimension. """ path: [String] """ Selects rows whose queryId dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryId: [ID] """ Selects rows whose queryName dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryName: [String] """ Selects rows whose schemaHash dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaHash: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serviceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serviceId: [ID] } type ErrorStatsMetrics { errorsCount: Long! requestsWithErrorsCount: Long! } input ErrorStatsOrderBySpec { column: ErrorStatsColumn! direction: Ordering! } type ErrorStatsRecord { """Dimensions of ErrorStats that can be grouped by.""" groupBy: ErrorStatsDimensions! """Metrics of ErrorStats that can be aggregated over.""" metrics: ErrorStatsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """ A reference to a recorded trace that contains an error matching the parent row's grouping. """ type ErrorTraceRef { """The error message recorded in the trace, if available.""" errorMessage: String """The unique id of the operation associated with the trace.""" operationId: String! """The timestamp at which the error was observed in the trace.""" timestamp: Timestamp! """The unique id of the trace that contains the error.""" traceId: String! } """ A list of sample traces that contain errors matching the parent row's grouping. """ type ErrorTraceRefsResult { """ A bounded sample of trace references matching the parent row's grouping. """ items: [ErrorTraceRef!]! """ The total number of matching traces available, even if only a subset is returned in `items`. """ totalCount: Int! } """Input for the evaluateOperation query.""" input EvaluateOperationInput { """The GraphQL operation text to evaluate (query or mutation).""" operation: String! """ The principal_id of the operation originator (the caller whose access is being simulated — NOT the Studio user making this request). Defaults to `""` when omitted; only wildcard rules (no principal target) fire. """ principalId: String """ The groups the operation originator belongs to. Defaults to `[]` when omitted. """ groups: [String!] """ Optional: the Application record the operation originated from. When provided, its UUID string is passed as `app_id` to OPA, activating app-scoped policy rules. """ applicationId: UUID """ Optional: the Service record being queried. When provided, its UUID string is passed as `service_id` to OPA, activating service-targeted policy rules. """ serviceId: UUID } """ Input parameters for run explorer operation event.""" enum EventEnum { CLICK_CHECK_LIST CLICK_GO_TO_GRAPH_SETTINGS RUN_EXPLORER_OPERATION } """Excluded operation for a graph.""" type ExcludedOperation { """Operation ID to exclude from schema check.""" ID: ID! } """Option to filter by operation ID.""" input ExcludedOperationInput { """Operation ID to exclude from schema check.""" ID: ID! } type ExtendedRefsUsage { """ The first time usage of this feature was reported for this variant to Apollo by the Router, or null if such usage has never been reported. """ firstSeenAt: Timestamp """ The last time usage of this feature was reported for this variant to Apollo by the Router, or null if such usage has never been reported. """ lastSeenAt: Timestamp } """A recorded report that a specific diff item is a false positive.""" type FalsePositiveFlag { """When this false-positive report was created.""" createdAt: Timestamp! """ The type of diff change that was flagged as a false positive. Null for note-only reports. """ diffItemType: FlatDiffType """Unique identifier for this false-positive report.""" id: ID! """ The schema coordinate that was flagged, e.g. "User.name" or "Query.users". Null for note-only reports. """ schemaCoordinate: String """ '#@!api!@#' for api schema, '#@!supergraph!@#' for supergraph schema, subgraph otherwise """ schemaScope: String! } type FeatureIntros { devGraph: Boolean! @deprecated federatedGraph: Boolean! freeConsumerSeats: Boolean! } """Feature Intros Input Type""" input FeatureIntrosInput { federatedGraph: Boolean freeConsumerSeats: Boolean } """Columns of FederatedErrorStats.""" enum FederatedErrorStatsColumn { AGENT_VERSION CLIENT_NAME CLIENT_VERSION ERROR_CODE ERROR_COUNT ERROR_PATH ERROR_SERVICE OPERATION_ID OPERATION_NAME OPERATION_TYPE SCHEMA_TAG SERVICE_ID SEVERITY TIMESTAMP } type FederatedErrorStatsDimensions { agentVersion: String clientName: String clientVersion: String errorCode: String errorPath: String errorService: String operationId: String operationName: String operationType: String schemaTag: String serviceId: ID severity: String } """ Filter for data in FederatedErrorStats. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input FederatedErrorStatsFilter { """ Selects rows whose agentVersion dimension equals the given value if not null. To query for the null value, use {in: {agentVersion: [null]}} instead. """ agentVersion: String and: [FederatedErrorStatsFilter!] """ Selects rows whose clientName dimension equals the given value if not null. To query for the null value, use {in: {clientName: [null]}} instead. """ clientName: String """ Selects rows whose clientVersion dimension equals the given value if not null. To query for the null value, use {in: {clientVersion: [null]}} instead. """ clientVersion: String """ Selects rows whose errorCode dimension equals the given value if not null. To query for the null value, use {in: {errorCode: [null]}} instead. """ errorCode: String """ Selects rows whose errorPath dimension equals the given value if not null. To query for the null value, use {in: {errorPath: [null]}} instead. """ errorPath: String """ Selects rows whose errorService dimension equals the given value if not null. To query for the null value, use {in: {errorService: [null]}} instead. """ errorService: String in: FederatedErrorStatsFilterIn not: FederatedErrorStatsFilter """ Selects rows whose operationId dimension equals the given value if not null. To query for the null value, use {in: {operationId: [null]}} instead. """ operationId: String """ Selects rows whose operationName dimension equals the given value if not null. To query for the null value, use {in: {operationName: [null]}} instead. """ operationName: String """ Selects rows whose operationType dimension equals the given value if not null. To query for the null value, use {in: {operationType: [null]}} instead. """ operationType: String or: [FederatedErrorStatsFilter!] """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serviceId dimension equals the given value if not null. To query for the null value, use {in: {serviceId: [null]}} instead. """ serviceId: ID """ Selects rows whose severity dimension equals the given value if not null. To query for the null value, use {in: {severity: [null]}} instead. """ severity: String } """ Filter for data in FederatedErrorStats. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input FederatedErrorStatsFilterIn { """ Selects rows whose agentVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ agentVersion: [String] """ Selects rows whose clientName dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientName: [String] """ Selects rows whose clientVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientVersion: [String] """ Selects rows whose errorCode dimension is in the given list. A null value in the list means a row with null for that dimension. """ errorCode: [String] """ Selects rows whose errorPath dimension is in the given list. A null value in the list means a row with null for that dimension. """ errorPath: [String] """ Selects rows whose errorService dimension is in the given list. A null value in the list means a row with null for that dimension. """ errorService: [String] """ Selects rows whose operationId dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationId: [String] """ Selects rows whose operationName dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationName: [String] """ Selects rows whose operationType dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationType: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serviceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serviceId: [ID] """ Selects rows whose severity dimension is in the given list. A null value in the list means a row with null for that dimension. """ severity: [String] } type FederatedErrorStatsMetrics { errorCount: Long! } input FederatedErrorStatsOrderBySpec { column: FederatedErrorStatsColumn! direction: Ordering! } type FederatedErrorStatsRecord { """Dimensions of FederatedErrorStats that can be grouped by.""" groupBy: FederatedErrorStatsDimensions! """Metrics of FederatedErrorStats that can be aggregated over.""" metrics: FederatedErrorStatsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """ A single subgraph in a supergraph. Every supergraph managed by Apollo Studio includes at least one subgraph. See https://www.apollographql.com/docs/federation/managed-federation/overview/ for more information. """ type FederatedImplementingService { """The subgraph's name.""" name: String! """The URL of the subgraph's GraphQL endpoint.""" url: String """ The current user-provided version/edition of the subgraph. Typically a Git SHA or docker image ID. """ revision: String! """The ID of the graph this subgraph belongs to.""" graphID: String! """The name of the graph variant this subgraph belongs to.""" graphVariant: String! """ The subgraph's current active schema, used in supergraph composition for the the associated variant. """ activePartialSchema: PartialSchema! """The timestamp when the subgraph was created.""" createdAt: Timestamp! """ The timestamp when the subgraph was deleted. Null if it wasn't deleted. """ deletedAt: Timestamp """The timestamp when the subgraph was most recently updated.""" updatedAt: Timestamp! } """ A minimal representation of a federated implementing service, using only a name and partial schema SDL """ type FederatedImplementingServicePartialSchema { """The name of the implementing service""" name: String! """The partial schema of the implementing service""" sdl: String! } """Container for a list of subgraphs composing a supergraph.""" type FederatedImplementingServices { """The list of underlying subgraphs.""" services: [FederatedImplementingService!]! } """The Federation Version of a Supergraph.""" scalar FederationVersion """A single question within a feedback survey""" type FeedbackQuestion { """Stable identifier for this question, used as questionId in responses""" id: ID! """The question text to display to the learner""" text: String! """ Additional instructions or context for the question, such as scale explanations (e.g. 1 = strongly disagree, 7 = strongly agree) """ description: String """The input type the client should render""" type: FeedbackQuestionKind! """Whether the learner must answer this question before submitting""" required: Boolean! """Predefined answer options, populated for MULTIPLE_CHOICE questions""" options: [String!] } """Input for a single question within a feedback survey""" input FeedbackQuestionInput { """ Stable identifier for this question — reuse across versions to preserve response continuity """ id: ID! """The question text to display to the learner""" text: String! """ Additional instructions or context for the question, such as scale explanations (e.g. 1 = strongly disagree, 7 = strongly agree) """ description: String """The input type the client should render""" type: FeedbackQuestionKind! """Whether the learner must answer this question before submitting""" required: Boolean! """Predefined answer options, required for MULTIPLE_CHOICE questions""" options: [String!] } """ The display type of a feedback question, used by the client to render the correct input """ enum FeedbackQuestionKind { """A numeric rating input (e.g. 1–5 stars)""" RATING """A single-select list of predefined options""" MULTIPLE_CHOICE """An open-ended text input""" FREE_TEXT """A yes/no input""" BOOLEAN """A 0–10 Net Promoter Score input""" NPS } """A reusable, versioned feedback survey definition""" type FeedbackSurvey { """Unique identifier for this survey""" id: ID! """Human-readable name for this survey""" name: String! """The current version of this survey, auto-incremented on each update""" version: String! """The ordered list of questions in this survey""" questions: [FeedbackQuestion!]! } """ Counts of changes at the field level, including objects, interfaces, and input fields. """ type FieldChangeSummaryCounts { """ Number of changes that are additions of fields to object, interface, and input types. """ additions: Int! """ Number of changes that are removals of fields from object, interface, and input types. """ removals: Int! """ Number of changes that are field edits. This includes fields changing type and any field deprecation and description changes, but also includes any argument changes and any input object field changes. """ edits: Int! } """Full audit trace for a single field's policy decision.""" type FieldDecision { """The winning effect. One of: `"allow"`, `"deny"`, `"mask"`.""" baseEffect: String! """True if this is a shadow-mode evaluation (not enforced in production).""" shadow: Boolean! """The IDs of policy rules that were matched.""" matchedRuleIds: [String!]! """ For deny rules: controls how the field appears in schema/UI. One of: `"hidden"`, `"visible"`, `"requestable"`. """ denyVisibility: String """Human-readable reason for denial.""" reason: String """ID of the exception that overrode this decision (when active=false).""" overriddenBy: String """ Whether the rule decision is active (false = overridden by an exception). """ active: Boolean! """`config_priority` of the winning rule — higher values take precedence.""" priority: Int } """Policy evaluation result for one field in the operation.""" type FieldEvaluation { """Qualified field path, e.g. "AshbyJob.salary".""" fieldPath: String! """Classification tags on this field (e.g. ["sensitivity:PII"]).""" classifications: [String!]! """ The winning policy decision for this field. Null when no rule matched (field is effectively ALLOWED with no policy consideration). """ decision: FieldDecision } """Columns of FieldExecutions.""" enum FieldExecutionsColumn { ERRORS_COUNT ESTIMATED_EXECUTION_COUNT FIELD_HISTOGRAM FIELD_NAME OBSERVED_EXECUTION_COUNT PARENT_TYPE REFERENCING_OPERATION_COUNT REQUESTS_WITH_ERRORS_COUNT SCHEMA_TAG SERVICE_ID TIMESTAMP } type FieldExecutionsDimensions { field: String fieldName: String parentType: String schemaTag: String serviceId: ID } """ Filter for data in FieldExecutions. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input FieldExecutionsFilter { and: [FieldExecutionsFilter!] """ Selects rows whose fieldName dimension equals the given value if not null. To query for the null value, use {in: {fieldName: [null]}} instead. """ fieldName: String in: FieldExecutionsFilterIn not: FieldExecutionsFilter or: [FieldExecutionsFilter!] """ Selects rows whose parentType dimension equals the given value if not null. To query for the null value, use {in: {parentType: [null]}} instead. """ parentType: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serviceId dimension equals the given value if not null. To query for the null value, use {in: {serviceId: [null]}} instead. """ serviceId: ID } """ Filter for data in FieldExecutions. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input FieldExecutionsFilterIn { """ Selects rows whose fieldName dimension is in the given list. A null value in the list means a row with null for that dimension. """ fieldName: [String] """ Selects rows whose parentType dimension is in the given list. A null value in the list means a row with null for that dimension. """ parentType: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serviceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serviceId: [ID] } type FieldExecutionsMetrics { errorsCount: Long! estimatedExecutionCount: Long! fieldHistogram: DurationHistogram! observedExecutionCount: Long! referencingOperationCount: Long! requestsWithErrorsCount: Long! } input FieldExecutionsOrderBySpec { column: FieldExecutionsColumn! direction: Ordering! } type FieldExecutionsRecord { """Dimensions of FieldExecutions that can be grouped by.""" groupBy: FieldExecutionsDimensions! """Metrics of FieldExecutions that can be aggregated over.""" metrics: FieldExecutionsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """ Metadata about when a field was first and last seen in operation traces """ type FieldInsights { """ If the first or last seen timestamps are earlier than this timestamp, we can't tell the exact date that we saw this field since our data is bound by the retention period. """ earliestRetentionTime: Timestamp """ The earliest time we saw references or executions for this field. Null if the field has never been seen or it is not in the schema. """ firstSeen: Timestamp """ The most recent time we saw references or executions for this field. Null if the field has never been seen or it is not in the schema. """ lastSeen: Timestamp } input FieldInsightsListFilterInInput { """ Filters results to fields whose usage was reported with any of the given client names. """ clientName: [String] """ Filters results to fields whose usage was reported with any of the given client versions. """ clientVersion: [String] } input FieldInsightsListFilterInput { """ Filters results to fields whose usage was reported with this exact client name. """ clientName: String """ Filters results to fields whose usage was reported with this exact client version. """ clientVersion: String """ Filters that match if the value is one of the given values. Multiple conditions inside `in` are ANDed together. """ in: FieldInsightsListFilterInInput """ If set, restricts results to fields whose `@deprecated` status matches this value in the active schema. """ isDeprecated: Boolean """ If set, restricts results to fields whose observed usage in the selected time range matches this value. """ isUnused: Boolean """ A list of alternative filter conditions; results match if any of them match. """ or: [FieldInsightsListFilterInput!] """Filters on partial string matches of Parent Type and Field Name""" search: String } type FieldInsightsListItem { """ The count of errors seen for this field. This can be null depending on the sort order. """ errorCount: Long """ The count of errors seen for this field per minute. This can be null depending on the sort order. """ errorCountPerMin: Float """ The percentage of errors vs successful resolutions for this field. This can be null depending on the sort order. """ errorPercentage: Float """ The estimated number of field executions for this field, based on the field execution sample rate. This can be null depending on the sort order. """ estimatedExecutionCount: Long """ The number of field executions recorded for this field. This can be null depending on the sort order. """ executionCount: Long """The name of the field (e.g. `email` for `User.email`).""" fieldName: String! """ Whether the field is marked `@deprecated` in the active schema for the variant. """ isDeprecated: Boolean! """ Whether the field has had no observed usage in the selected time range. """ isUnused: Boolean! """ The p50 of the latency of the resolution of this field. This can be null depending on the filter and sort order. """ p50LatencyMs: Float """ The p90 of the latency of the resolution of this field. This can be null depending on the filter and sort order. """ p90LatencyMs: Float """ The p95 of the latency of the resolution of this field. This can be null depending on the filter and sort order. """ p95LatencyMs: Float """ The p99 of the latency of the resolution of this field. This can be null depending on the filter and sort order. """ p99LatencyMs: Float """ The name of the type that declares the field (e.g. `User` for `User.email`). """ parentType: String! """ The count of operations that reference the field. This can be null depending on the sort order. """ referencingOperationCount: Long """ The count of operations that reference the field per minute. This can be null depending on the sort order. """ referencingOperationCountPerMin: Float } enum FieldInsightsListOrderByColumn { ERROR_COUNT ERROR_COUNT_PER_MIN ERROR_PERCENTAGE ESTIMATED_EXECUTION_COUNT EXECUTION_COUNT PARENT_TYPE_AND_FIELD_NAME REFERENCING_OPERATION_COUNT REFERENCING_OPERATION_COUNT_PER_MIN SERVICE_TIME_P50 SERVICE_TIME_P90 SERVICE_TIME_P95 SERVICE_TIME_P99 } input FieldInsightsListOrderByInput { """The column to order results by.""" column: FieldInsightsListOrderByColumn! """The order direction, ascending or descending.""" direction: Ordering! } """Information about pagination in a connection.""" type FieldInsightsListPageInfo { """When paginating forwards, the cursor to continue.""" endCursor: String """When paginating backwards, the cursor to continue.""" startCursor: String } """Columns of FieldUsage.""" enum FieldUsageColumn { CLIENT_NAME CLIENT_VERSION ESTIMATED_EXECUTION_COUNT EXECUTION_COUNT FIELD_NAME OPERATION_SUBTYPE OPERATION_TYPE PARENT_TYPE QUERY_ID QUERY_NAME REFERENCING_OPERATION_COUNT SCHEMA_HASH SCHEMA_TAG SERVICE_ID TIMESTAMP } type FieldUsageDimensions { clientName: String clientVersion: String fieldName: String operationSubtype: String operationType: String parentType: String queryId: ID queryName: String schemaHash: String schemaTag: String serviceId: ID } """ Filter for data in FieldUsage. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input FieldUsageFilter { and: [FieldUsageFilter!] """ Selects rows whose clientName dimension equals the given value if not null. To query for the null value, use {in: {clientName: [null]}} instead. """ clientName: String """ Selects rows whose clientVersion dimension equals the given value if not null. To query for the null value, use {in: {clientVersion: [null]}} instead. """ clientVersion: String """ Selects rows whose fieldName dimension equals the given value if not null. To query for the null value, use {in: {fieldName: [null]}} instead. """ fieldName: String in: FieldUsageFilterIn not: FieldUsageFilter """ Selects rows whose operationSubtype dimension equals the given value if not null. To query for the null value, use {in: {operationSubtype: [null]}} instead. """ operationSubtype: String """ Selects rows whose operationType dimension equals the given value if not null. To query for the null value, use {in: {operationType: [null]}} instead. """ operationType: String or: [FieldUsageFilter!] """ Selects rows whose parentType dimension equals the given value if not null. To query for the null value, use {in: {parentType: [null]}} instead. """ parentType: String """ Selects rows whose queryId dimension equals the given value if not null. To query for the null value, use {in: {queryId: [null]}} instead. """ queryId: ID """ Selects rows whose queryName dimension equals the given value if not null. To query for the null value, use {in: {queryName: [null]}} instead. """ queryName: String """ Selects rows whose schemaHash dimension equals the given value if not null. To query for the null value, use {in: {schemaHash: [null]}} instead. """ schemaHash: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serviceId dimension equals the given value if not null. To query for the null value, use {in: {serviceId: [null]}} instead. """ serviceId: ID } """ Filter for data in FieldUsage. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input FieldUsageFilterIn { """ Selects rows whose clientName dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientName: [String] """ Selects rows whose clientVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientVersion: [String] """ Selects rows whose fieldName dimension is in the given list. A null value in the list means a row with null for that dimension. """ fieldName: [String] """ Selects rows whose operationSubtype dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationSubtype: [String] """ Selects rows whose operationType dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationType: [String] """ Selects rows whose parentType dimension is in the given list. A null value in the list means a row with null for that dimension. """ parentType: [String] """ Selects rows whose queryId dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryId: [ID] """ Selects rows whose queryName dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryName: [String] """ Selects rows whose schemaHash dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaHash: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serviceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serviceId: [ID] } type FieldUsageMetrics { estimatedExecutionCount: Long! executionCount: Long! referencingOperationCount: Long! } input FieldUsageOrderBySpec { column: FieldUsageColumn! direction: Ordering! } type FieldUsageRecord { """Dimensions of FieldUsage that can be grouped by.""" groupBy: FieldUsageDimensions! """Metrics of FieldUsage that can be aggregated over.""" metrics: FieldUsageMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } type FileCoordinate { byteOffset: Int! column: Int! line: Int! } input FileCoordinateInput { byteOffset: Int! column: Int! line: Int! } type FileLocation { end: FileCoordinate! start: FileCoordinate! subgraphName: String } input FileLocationInput { end: FileCoordinateInput! start: FileCoordinateInput! subgraphName: String } type FilterBuildCheckFailed implements BuildCheckFailed & BuildCheckResult & FilterBuildCheckResult { buildInputs: FilterBuildInputs! buildPipelineTrack: BuildPipelineTrack! errors: [BuildError!]! federationVersion: FederationVersion! id: ID! passed: Boolean! workflowTask: FilterCheckTask! } type FilterBuildCheckPassed implements BuildCheckPassed & BuildCheckResult & FilterBuildCheckResult { buildInputs: FilterBuildInputs! buildPipelineTrack: BuildPipelineTrack! federationVersion: FederationVersion! id: ID! passed: Boolean! supergraphSchemaHash: SHA256! workflowTask: FilterCheckTask! } interface FilterBuildCheckResult implements BuildCheckResult { buildInputs: FilterBuildInputs! """ The build pipeline track of the build task, which indicates what gateway/router versions the build pipeline is intended to support (and accordingly controls the version of code). """ buildPipelineTrack: BuildPipelineTrack! """ The Federation version of the build task, which indicates what gateway/router versions the build pipeline is intended to support (and accordingly controls the version of code). """ federationVersion: FederationVersion! id: ID! """Whether the build task passed or failed.""" passed: Boolean! workflowTask: FilterCheckTask! } """ Inputs provided to the build for a contract variant, which filters types and fields from a source variant's schema. """ type FilterBuildInput { """ Schema filtering rules for the build, such as tags to include or exclude from the source variant schema. """ filterConfig: FilterConfig! """ The source variant schema document's SHA256 hash, represented as a hexadecimal string. """ schemaHash: String! } type FilterBuildInputs { """ The build pipeline track used for filtering. Note this is taken from upstream check workflow or launch. """ buildPipelineTrack: BuildPipelineTrack! """The exclude filters used for filtering.""" exclude: [String!]! """ The Federation version used for filtering. Note this is taken from upstream check workflow or launch. """ federationVersion: FederationVersion! """ Whether to hide unreachable objects, interfaces, unions, inputs, enums and scalars from the resulting contract schema. """ hideUnreachableTypes: Boolean! """The include filters used for filtering.""" include: [String!]! """The SHA-256 of the supergraph schema document used for filtering.""" supergraphSchemaHash: SHA256! } input FilterCheckAsyncInput { config: HistoricQueryParametersInput! filterChanges: FilterCheckFilterChanges! gitContext: GitContextInput! } input FilterCheckFilterChanges { excludeAdditions: [String!] excludeRemovals: [String!] hideUnreachableTypesChange: Boolean includeAdditions: [String!] includeRemovals: [String!] } type FilterCheckTask implements BuildCheckTask & CheckWorkflowTask { """ The result of the filter build check. This will be null when the task is initializing or running. """ buildResult: FilterBuildCheckResult completedAt: Timestamp createdAt: Timestamp! id: ID! proposedBuildInputChanges: ProposedFilterBuildInputChanges! status: CheckWorkflowTaskStatus! targetURL: String workflow: CheckWorkflow! } """ The filter configuration used to build a contract schema. The configuration consists of lists of tags for schema elements to include or exclude in the resulting schema. """ type FilterConfig { """Tags of schema elements to exclude from the contract schema.""" exclude: [String!]! """ Whether to hide unreachable objects, interfaces, unions, inputs, enums and scalars from the resulting contract schema. """ hideUnreachableTypes: Boolean! """Tags of schema elements to include in the contract schema.""" include: [String!]! } input FilterConfigInput { """ A list of tags for schema elements to exclude from the resulting contract schema. """ exclude: [String!]! """ Whether to hide unreachable objects, interfaces, unions, inputs, enums and scalars from the resulting contract schema. Defaults to `false`. """ hideUnreachableTypes: Boolean! = false """ A list of tags for schema elements to include in the resulting contract schema. """ include: [String!]! } """ Represents a diff between two versions of a schema as a flat list of changes """ type FlatDiff { diff: [FlatDiffItem!]! id: ID! summary: FlatDiffSummary! } type FlatDiffAddArgument implements FlatDiffItem & FlatDiffItemCoordinate & FlatDiffItemValue { coordinate: String! type: FlatDiffType! value: String! } type FlatDiffAddDirective implements FlatDiffItem & FlatDiffItemCoordinate { coordinate: String! type: FlatDiffType! } type FlatDiffAddDirectiveUsage implements FlatDiffItem & FlatDiffItemCoordinate & FlatDiffItemValue { coordinate: String! type: FlatDiffType! value: String! } type FlatDiffAddEnum implements FlatDiffItem & FlatDiffItemCoordinate { coordinate: String! type: FlatDiffType! } type FlatDiffAddEnumValue implements FlatDiffItem & FlatDiffItemCoordinate { coordinate: String! type: FlatDiffType! } type FlatDiffAddField implements FlatDiffItem & FlatDiffItemCoordinate & FlatDiffItemValue { coordinate: String! type: FlatDiffType! value: String! } type FlatDiffAddImplementation implements FlatDiffItem & FlatDiffItemCoordinate & FlatDiffItemValue { coordinate: String! type: FlatDiffType! value: String! } type FlatDiffAddInput implements FlatDiffItem & FlatDiffItemCoordinate { coordinate: String! type: FlatDiffType! } type FlatDiffAddInterface implements FlatDiffItem & FlatDiffItemCoordinate { coordinate: String! type: FlatDiffType! } type FlatDiffAddObject implements FlatDiffItem & FlatDiffItemCoordinate { coordinate: String! type: FlatDiffType! } type FlatDiffAddScalar implements FlatDiffItem & FlatDiffItemCoordinate { coordinate: String! type: FlatDiffType! } type FlatDiffAddSchemaDefinition implements FlatDiffItem { type: FlatDiffType! } type FlatDiffAddSchemaDirectiveUsage implements FlatDiffItem & FlatDiffItemValue { type: FlatDiffType! value: String! } type FlatDiffAddSchemaRootOperation implements FlatDiffItem & FlatDiffItemRootType & FlatDiffItemValue { rootType: String! type: FlatDiffType! value: String! } type FlatDiffAddUnion implements FlatDiffItem & FlatDiffItemCoordinate { coordinate: String! type: FlatDiffType! } type FlatDiffAddUnionMember implements FlatDiffItem & FlatDiffItemCoordinate & FlatDiffItemValue { coordinate: String! type: FlatDiffType! value: String! } type FlatDiffAddValidLocation implements FlatDiffItem & FlatDiffItemCoordinate & FlatDiffItemValue { coordinate: String! type: FlatDiffType! value: String! } type FlatDiffChangeArgumentDefault implements FlatDiffItem & FlatDiffItemCoordinate & FlatDiffItemNullableValue { coordinate: String! type: FlatDiffType! value: String } type FlatDiffChangeDescription implements FlatDiffItem & FlatDiffItemCoordinate & FlatDiffItemNullableValue { coordinate: String! type: FlatDiffType! value: String } type FlatDiffChangeDirectiveRepeatable implements FlatDiffItem & FlatDiffItemCoordinate { coordinate: String! type: FlatDiffType! value: Boolean! } type FlatDiffChangeInputFieldDefault implements FlatDiffItem & FlatDiffItemCoordinate & FlatDiffItemNullableValue { coordinate: String! type: FlatDiffType! value: String } type FlatDiffChangeSchemaDescription implements FlatDiffItem & FlatDiffItemNullableValue { type: FlatDiffType! value: String } interface FlatDiffItem { type: FlatDiffType! } interface FlatDiffItemCoordinate implements FlatDiffItem { coordinate: String! type: FlatDiffType! } interface FlatDiffItemNullableValue implements FlatDiffItem { type: FlatDiffType! value: String } interface FlatDiffItemRootType implements FlatDiffItem { rootType: String! type: FlatDiffType! } interface FlatDiffItemValue implements FlatDiffItem { type: FlatDiffType! value: String! } type FlatDiffRemoveArgument implements FlatDiffItem & FlatDiffItemCoordinate & FlatDiffItemValue { coordinate: String! type: FlatDiffType! value: String! } type FlatDiffRemoveDirective implements FlatDiffItem & FlatDiffItemCoordinate { coordinate: String! type: FlatDiffType! } type FlatDiffRemoveDirectiveUsage implements FlatDiffItem & FlatDiffItemCoordinate & FlatDiffItemValue { coordinate: String! type: FlatDiffType! value: String! } type FlatDiffRemoveEnum implements FlatDiffItem & FlatDiffItemCoordinate { coordinate: String! type: FlatDiffType! } type FlatDiffRemoveEnumValue implements FlatDiffItem & FlatDiffItemCoordinate { coordinate: String! type: FlatDiffType! } type FlatDiffRemoveField implements FlatDiffItem & FlatDiffItemCoordinate & FlatDiffItemValue { coordinate: String! type: FlatDiffType! value: String! } type FlatDiffRemoveImplementation implements FlatDiffItem & FlatDiffItemCoordinate & FlatDiffItemValue { coordinate: String! type: FlatDiffType! value: String! } type FlatDiffRemoveInput implements FlatDiffItem & FlatDiffItemCoordinate { coordinate: String! type: FlatDiffType! } type FlatDiffRemoveInterface implements FlatDiffItem & FlatDiffItemCoordinate { coordinate: String! type: FlatDiffType! } type FlatDiffRemoveObject implements FlatDiffItem & FlatDiffItemCoordinate { coordinate: String! type: FlatDiffType! } type FlatDiffRemoveScalar implements FlatDiffItem & FlatDiffItemCoordinate { coordinate: String! type: FlatDiffType! } type FlatDiffRemoveSchemaDefinition implements FlatDiffItem { type: FlatDiffType! } type FlatDiffRemoveSchemaDirectiveUsage implements FlatDiffItem & FlatDiffItemValue { type: FlatDiffType! value: String! } type FlatDiffRemoveSchemaRootOperation implements FlatDiffItem & FlatDiffItemRootType { rootType: String! type: FlatDiffType! } type FlatDiffRemoveUnion implements FlatDiffItem & FlatDiffItemCoordinate { coordinate: String! type: FlatDiffType! } type FlatDiffRemoveUnionMember implements FlatDiffItem & FlatDiffItemCoordinate & FlatDiffItemValue { coordinate: String! type: FlatDiffType! value: String! } type FlatDiffRemoveValidLocation implements FlatDiffItem & FlatDiffItemCoordinate & FlatDiffItemValue { coordinate: String! type: FlatDiffType! value: String! } union FlatDiffResult = FlatDiff | NotFoundError | SchemaValidationError """Represents a summary of a diff between two versions of a schema.""" type FlatDiffSummary { directive: FlatDiffTypeSummary! enum: FlatDiffTypeSummary! input: FlatDiffTypeSummary! interface: FlatDiffTypeSummary! object: FlatDiffTypeSummary! scalar: FlatDiffTypeSummary! schema: FlatDiffTypeSummary! union: FlatDiffTypeSummary! } enum FlatDiffType { ADD_ARGUMENT ADD_DIRECTIVE ADD_DIRECTIVE_USAGE ADD_ENUM ADD_ENUM_VALUE ADD_FIELD ADD_IMPLEMENTATION ADD_INPUT ADD_INTERFACE ADD_OBJECT ADD_SCALAR ADD_SCHEMA_DEFINITION ADD_SCHEMA_DIRECTIVE_USAGE ADD_SCHEMA_ROOT_OPERATION ADD_UNION ADD_UNION_MEMBER ADD_VALID_LOCATION CHANGE_ARGUMENT_DEFAULT CHANGE_DESCRIPTION CHANGE_INPUT_FIELD_DEFAULT CHANGE_REPEATABLE CHANGE_SCHEMA_DESCRIPTION REMOVE_ARGUMENT REMOVE_DIRECTIVE REMOVE_DIRECTIVE_USAGE REMOVE_ENUM REMOVE_ENUM_VALUE REMOVE_FIELD REMOVE_IMPLEMENTATION REMOVE_INPUT REMOVE_INTERFACE REMOVE_OBJECT REMOVE_SCALAR REMOVE_SCHEMA_DEFINITION REMOVE_SCHEMA_DIRECTIVE_USAGE REMOVE_SCHEMA_ROOT_OPERATION REMOVE_UNION REMOVE_UNION_MEMBER REMOVE_VALID_LOCATION } type FlatDiffTypeSummary { add: Int! change: Int! remove: Int! typeCount: Int! } """Fly-specific information for a Shard""" type FlyShard { """DNS endpoint for the orchestrator""" endpoint: String! """Fly organization ID""" organizationId: String! """Endpoints of the Etcd cluster""" etcdEndpoints: [String!]! } """Details to identify a gateway""" input GatewayIdentifierInput { """The gateway id""" gatewayId: String! } interface GeneralProposalComment implements ProposalComment { createdAt: Timestamp! """null if the user is deleted""" createdBy: Identity id: ID! message: String! status: CommentStatus! """null if never updated""" updatedAt: Timestamp } type GitContext { remoteUrl: String remoteHost: GitRemoteHost commit: ID commitUrl: String committer: String message: String branch: String } """This is stored with a schema when it is uploaded""" input GitContextInput { """The Git repository branch used in the check.""" branch: String """The ID of the Git commit used in the check.""" commit: ID """The username of the user who created the Git commit used in the check.""" committer: String """The commit message of the Git commit used in the check.""" message: String """The Git repository's remote URL.""" remoteUrl: String } enum GitRemoteHost { GITHUB GITLAB BITBUCKET } type GQLBillingPlanFromGrpc { dbPlan: BillingPlan matchesDbPlan: Boolean rawProtoJson: String } """ A single diff element being reported as a false positive. beforeText and afterText are the full type-level SDL blocks (oldType.printed / newType.printed from the diff view) captured at report time. """ input GQLFalsePositiveFlagElementInput { """ Full type-level SDL for the after state. Empty string when the type was fully removed. """ afterText: String! """ Full type-level SDL for the before state. Empty string when the type had no before state. """ beforeText: String! """The type of diff change being flagged.""" diffItemType: FlatDiffType! """ The schema coordinate being flagged, e.g. "User.name" or "Query.users". """ schemaCoordinate: String! } """ Input for reporting one or more diff items as false positives on a proposal revision. """ input GQLReportFalsePositiveDiffItemsInput { """ The individual diff elements being flagged. May be empty when submitting a note-only report. """ elements: [GQLFalsePositiveFlagElementInput!]! """Optional free-text note that applies to all elements in this batch.""" notes: String """The revision whose diff contains the suspected false positives.""" revisionId: ID! """ '#@!api!@#' for api schema, '#@!supergraph!@#' for supergraph schema, subgraph otherwise """ schemaScope: String! } """ Represents a graph API key, which has permissions scoped to a user role for a single Apollo graph. """ type GraphApiKey implements ApiKey { """The timestamp when the API key was created.""" createdAt: Timestamp! """Details of the user or graph that created the API key.""" createdBy: Identity """The API key's ID.""" id: ID! """The API key's name, for distinguishing it from other keys.""" keyName: String """ The timestamp when the API key was last used for authentication, if available. """ lastUsed: Timestamp """The permission level assigned to the API key upon creation.""" role: UserPermission! """The value of the API key. **This is a secret credential!**""" token: String! } """Apollo Graph Artifact; contains references to OCI artifacts""" type GraphArtifact { """The time the Graph Artifact was completed""" completedAt: DateTime """The artifacts deployed to the Graph Artifact""" content: GraphArtifactContent! """The time the Graph Artifact was created""" createdAt: DateTime! """The unique, content-addressable identifier (SHA) of the artifact""" digest: String """Errors related to this graph artifact""" errors: [GraphArtifactError!]! """The Graph Variant this Graph Artifact is associated with""" graphVariant: GraphVariant! """The ID of the Graph Artifact""" id: ID! """ The location where the graph artifact can be retrieved from the registry itself """ location: GraphArtifactLocation """The status of the Graph Artifact""" status: GraphArtifactStatus! """The OCI tags applied to the Graph Artifact""" tags( """The cursor to start pagination after (for forward pagination)""" after: String """ The number of tags to return (for forward pagination), defaults to 10, maximum is 20 """ first: Int ): GraphArtifactTagConnection! """The last time the Graph Artifact was updated""" updatedAt: DateTime! } """A paginated connection for Graph Artifacts""" type GraphArtifactConnection { """The list of Graph Artifact edges containing nodes and cursors""" edges: [GraphArtifactEdge!]! """Information about pagination state""" pageInfo: PageInfo! """The total number of Graph Artifacts in the connection""" totalCount: Int! } """Artifacts associated to a Graph Artifact""" type GraphArtifactContent { """The Build associated with the Graph Artifact""" build: Build """The Launch associated with the Graph Artifact""" launch: Launch! } """The error returned when a graph artifact digest is invalid.""" type GraphArtifactDigestInvalidError implements Error { """The error message""" message: String! } """An edge containing a Graph Artifact node and cursor for pagination""" type GraphArtifactEdge { """ The cursor describing the location of the edge within the pagination result """ cursor: String! """The Graph Artifact that the edge represents""" node: GraphArtifact! } """Error related to a graph artifact""" type GraphArtifactError { message: String! } """ The ways a graph artifact can be identified. Only one of these options should be provided. """ input GraphArtifactInput { """The specific graph artifact digest (SHA).""" digest: String """The graph artifact ID.""" id: ID } """The location of the graph artifact within the registry itself""" type GraphArtifactLocation { """ The identifier that points to a specific resource in the registry. In the case of a graph artifact, an immutable digest SHA. In the case of a tag, the human-readable tag name. """ reference: String! """The service that handles the required registry requests""" registry: String! """The repository name/scope of the graph artifact""" repository: String! """ The full URI that can be used to interact with the graph artifact within the registry itself """ uri: String! } """The error returned when a graph artifact was not found""" type GraphArtifactNotFoundError implements Error { """The error message""" message: String! } """The status of a Graph Artifact""" enum GraphArtifactStatus { """The Graph Artifact was successfully created""" GRAPH_ARTIFACT_COMPLETED """The Graph Artifact failed to be successfully created""" GRAPH_ARTIFACT_FAILED """The Graph Artifact is in the process of being created""" GRAPH_ARTIFACT_PENDING } """A tag for a Graph Artifact""" type GraphArtifactTag { """The Graph the tag is associated with""" graph: Service! """The Graph Artifact the tag is associated with""" graphArtifact: GraphArtifact! """The OCI tag history of the Graph Artifact""" history( """The cursor to start pagination after (for forward pagination)""" after: String """ The number of Graph Artifacts to return (for forward pagination), defaults to 10, maximum is 20 """ first: Int ): GraphArtifactTagHistoryConnection! """ The location where the graph artifact tag can be retrieved from the registry itself """ location: GraphArtifactLocation """The name of the Graph Artifact tag""" tag: String! } """A paginated connection for Graph Artifact Tags""" type GraphArtifactTagConnection { """The list of Graph Artifact Tag edges containing nodes and cursors""" edges: [GraphArtifactTagEdge!]! """Information about pagination state""" pageInfo: PageInfo! """The total number of Graph Artifact Tags in the connection""" totalCount: Int! } """An edge containing a Graph Artifact Tag node and cursor for pagination""" type GraphArtifactTagEdge { """ The cursor describing the location of the edge within the pagination result """ cursor: String! """The Graph Artifact Tag that the edge represents""" node: GraphArtifactTag! } """ The error returned when the number of tags assigned to a single graph artifact will exceed the limit. """ type GraphArtifactTaggingLimitError implements Error { """The error message""" message: String! } """A paginated connection for Graph Artifact Tags history""" type GraphArtifactTagHistoryConnection { """ The list of Graph Artifact Tag history edges containing nodes and cursors """ edges: [GraphArtifactTagHistoryEdge!]! """Information about pagination state""" pageInfo: PageInfo! """ The total number of Graph Artifact Tag history entries in the connection """ totalCount: Int! } """ An edge containing a Graph Artifact Tag history node and cursor for pagination """ type GraphArtifactTagHistoryEdge { """ The cursor describing the location of the edge within the pagination result """ cursor: String! """The Graph Artifact Tag history entry that the edge represents""" node: GraphArtifactTagHistoryEntry! } """A single graph artifact tag history entry""" type GraphArtifactTagHistoryEntry { """When the change occurred""" changedAt: DateTime! """The graph artifact to which the tag was assigned""" graphArtifactAssigned: GraphArtifact! """ The graph artifact from which the tag was removed. This will be null if it is a new tag """ graphArtifactUnassigned: GraphArtifact """The graph artifact tag that was effected as part of the history event""" tag: GraphArtifactTag! } """The error returned when a graph artifact tag name is invalid.""" type GraphArtifactTagInvalidError implements Error { """The error message""" message: String! } """The repository and tag names for a Graph Variant""" type GraphArtifactTagLocation { """The repository the tag is associated with""" repository: String! """The name of the tag""" tag: String! } """ The error returned when a variant graph artifact tag is attempted to be re-assigned. Variant graph artifact tags are automatically created and assigned and represent the "latest" for a variant's graph artifact. They cannot be re-assigned. """ type GraphArtifactTagVariantAssignError implements Error { """The error message""" message: String! } """ The error returned when the total number of tags created for a graph will exceed the limit. """ type GraphArtifactTotalTagsLimitError implements Error { """The error message""" message: String! } type GraphCapabilities { """ False if this graph is a cloud supergraph.""" canPublishMonograph: Boolean! """ Currently, graph URL is not updatable for cloud supergraphs.""" canUpdateURL: Boolean! """ Minimum Federation Version track required for all variants of this graph. """ minimumBuildPipelineTrack: BuildPipelineTrack! """ Minimum Federation Version track required for all variants of this graph. """ minimumFederationVersion: FederationVersion! } """The timing details for the build step of a launch.""" type GraphCreationError { message: String! } union GraphCreationResult = GraphCreationError | Service """Filtering options for graph connections.""" input GraphFilter { """Only include graphs in a certain state.""" state: GraphState """Only include graphs of certain types.""" type: [GraphType!] } """ A union of all containers that can comprise the components of a Studio graph """ union GraphImplementors = NonFederatedImplementingService | FederatedImplementingServices """The linter configuration for this graph.""" type GraphLinterConfiguration { """The set of @tag names allowed in the schema.""" allowedTagNames: [String!]! """Whether to ignore @deprecated elements from linting violations.""" ignoreDeprecated: Boolean! """Whether to ignore @inaccessible elements from linting violations.""" ignoreInaccessible: Boolean! """The set of lint rules configured for this graph.""" rules: [LinterRuleLevelConfiguration!]! } """The changes to the linter configuration for this graph.""" input GraphLinterConfigurationChangesInput { """ A set of allowed @tag names to be added to the linting configuration for this graph or null if no changes should be made. """ allowedTagNameAdditions: [String!] """ A set of @tag names to be removed from the allowed @tag list for this graphs linting configuration or null if no changes should be made. """ allowedTagNameRemovals: [String!] """ Change whether @deprecated elements should be linted or null if no changes should be made. """ ignoreDeprecated: Boolean """ Change whether @inaccessible elements should be linted or null if no changes should be made. """ ignoreInaccessible: Boolean """A set of rule changes or null if no changes should be made.""" rules: [LinterRuleLevelConfigurationChangesInput!] } """The error returned when a graph is not found.""" type GraphNotFoundError implements Error { """The error message""" message: String! } """Columns of GraphosCloudMetrics.""" enum GraphosCloudMetricsColumn { ACCOUNT_ID AGENT_VERSION CLOUD_PROVIDER RESPONSE_SIZE RESPONSE_SIZE_THROTTLED ROUTER_ID ROUTER_OPERATIONS ROUTER_OPERATIONS_THROTTLED SCHEMA_TAG SERVICE_ID SUBGRAPH_FETCHES SUBGRAPH_FETCHES_THROTTLED TIER TIMESTAMP } type GraphosCloudMetricsDimensions { accountId: ID agentVersion: String cloudProvider: String routerId: String schemaTag: String serviceId: ID tier: String } """ Filter for data in GraphosCloudMetrics. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input GraphosCloudMetricsFilter { """ Selects rows whose accountId dimension equals the given value if not null. To query for the null value, use {in: {accountId: [null]}} instead. """ accountId: ID """ Selects rows whose agentVersion dimension equals the given value if not null. To query for the null value, use {in: {agentVersion: [null]}} instead. """ agentVersion: String and: [GraphosCloudMetricsFilter!] """ Selects rows whose cloudProvider dimension equals the given value if not null. To query for the null value, use {in: {cloudProvider: [null]}} instead. """ cloudProvider: String in: GraphosCloudMetricsFilterIn not: GraphosCloudMetricsFilter or: [GraphosCloudMetricsFilter!] """ Selects rows whose routerId dimension equals the given value if not null. To query for the null value, use {in: {routerId: [null]}} instead. """ routerId: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serviceId dimension equals the given value if not null. To query for the null value, use {in: {serviceId: [null]}} instead. """ serviceId: ID """ Selects rows whose tier dimension equals the given value if not null. To query for the null value, use {in: {tier: [null]}} instead. """ tier: String } """ Filter for data in GraphosCloudMetrics. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input GraphosCloudMetricsFilterIn { """ Selects rows whose accountId dimension is in the given list. A null value in the list means a row with null for that dimension. """ accountId: [ID] """ Selects rows whose agentVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ agentVersion: [String] """ Selects rows whose cloudProvider dimension is in the given list. A null value in the list means a row with null for that dimension. """ cloudProvider: [String] """ Selects rows whose routerId dimension is in the given list. A null value in the list means a row with null for that dimension. """ routerId: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serviceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serviceId: [ID] """ Selects rows whose tier dimension is in the given list. A null value in the list means a row with null for that dimension. """ tier: [String] } type GraphosCloudMetricsMetrics { responseSize: Long! responseSizeThrottled: Long! routerOperations: Long! routerOperationsThrottled: Long! subgraphFetches: Long! subgraphFetchesThrottled: Long! } input GraphosCloudMetricsOrderBySpec { column: GraphosCloudMetricsColumn! direction: Ordering! } type GraphosCloudMetricsRecord { """Dimensions of GraphosCloudMetrics that can be grouped by.""" groupBy: GraphosCloudMetricsDimensions! """Metrics of GraphosCloudMetrics that can be aggregated over.""" metrics: GraphosCloudMetricsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """Constellation ("GraphOS for Agents") metadata for an organization.""" type GraphOsForAgentsAccount { """ The graph ref (`graph@variant`) this org's agentic subgraphs publish to. Returns the org's stored `graph_ref` when an `organizations` row exists. For an org that has not been onboarded yet (no row), returns the per-org computed default — the exact ref the first write would auto-vivify — so callers never have to reconstruct the slug convention themselves. """ defaultGraphRef: String! } """Represents an API key that's used to authenticate an Apollo principal.""" type GraphOsKey implements ApiKey { """The time when this API key was created.""" createdAt: Timestamp! """The actor that created this API key.""" createdBy: Actor! """The time when this API key expires, if applicable.""" expiresAt: Timestamp """The API key's ID.""" id: ID! """The API key's name, for distinguishing it from other keys.""" keyName: String """The type of API key (e.g., OPERATOR, SUBGRAPH, GATEWAY, SCIM).""" keyType: GraphOsKeyType """ The timestamp when the API key was last used for authentication, if available. """ lastUsed: Timestamp """ Permissions associated with this API key, defining what actions it can perform. """ resources: [ApiKeyResource!]! """The time when this API key was revoked.""" revokedAt: Timestamp """The actor that revoked this API key.""" revokedBy: Actor """The value of the API key. **This is a secret credential!**""" token: String! } """ Represent a connection of GraphOS API keys, used for pagination in GraphQL queries. """ type GraphOsKeyConnection { """List of edges in the connection, each containing a node and a cursor.""" edges: [GraphOsKeyEdge!]! """List of of API keys in the connection.""" nodes: [GraphOsKey!]! """Information about the pagination state of the connection.""" pageInfo: GraphOsKeyPageInfo! """Total number of API keys in the connection, regardless of pagination.""" totalCount: Int! } """ An edge in a connection of GraphOS API keys, containing a node and a cursor. """ type GraphOsKeyEdge { """ A cursor for use in pagination, representing the position of this edge in the connection. """ cursor: String! """The API key node in the edge.""" node: GraphOsKey! } """ Information about the pagination state of a connection of GraphOS API keys. """ type GraphOsKeyPageInfo { """The cursor to use for fetching the previous page of items.""" endCursor: String """Indicates if there are more items after the current page.""" hasNextPage: Boolean! """Indicates if there are more items before the current page.""" hasPreviousPage: Boolean! """The cursor to use for fetching the next page of items.""" startCursor: String } enum GraphOsKeyType { """A key used by a Gateway instance""" GATEWAY OPERATOR ROUTER SCIM """A key with one or more subgraphs as its target resource(s)""" SUBGRAPH } type GraphQLDoc { graph: Service! hash: ID! source: GraphQLDocument! } """A GraphQL document, such as the definition of an operation or schema.""" scalar GraphQLDocument """Various states a graph can be in.""" enum GraphState { """The graph has not been configured with any variants.""" CONFIGURED """The graph has not been configured with any variants.""" NOT_CONFIGURED } enum GraphType { CLASSIC CLOUD_SUPERGRAPH SELF_HOSTED_SUPERGRAPH } """A graph variant""" type GraphVariant { """The variant's global identifier in the form `graphID@variant`.""" id: ID! """Graph ID of the variant. Prefer using graph { id } when feasible.""" graphId: String! """The variant's name (e.g., `staging`).""" name: String! """Router associated with this graph variant""" router: Router """Validate router configuration for this graph variant""" validateRouter(config: RouterConfigInput!): CloudValidationResult! checkConfiguration: VariantCheckConfiguration! """Custom check configuration for this graph.""" customCheckConfiguration: CustomCheckConfiguration """The graph that this variant belongs to.""" graph: Service! """ Get a specific graph artifact tag assigned to a graph artifact of the associated variant. If the tag is assigned to another variant of the same graph, this field will return 'null'. For example, querying graph 'MyGraph', variant 'prod' for tag 'v1' would return null if tag `v1` is currently assigned to the `dev` variant. """ graphArtifactTag( """The name of the tag""" tag: String! ): GraphArtifactTag """ The graph artifact tags currently assigned to graph artifacts of this variant """ graphArtifactTags( """The cursor to start pagination after (for forward pagination)""" after: String """ The number of tags to return (for forward pagination), defaults to 10, maximum is 20 """ first: Int ): GraphArtifactTagConnection! """The graph artifacts associated with a specific graph variant""" graphArtifacts( """The cursor to start pagination after (for forward pagination)""" after: String """ The number of artifacts to return (for forward pagination), defaults to 10, maximum is 20 """ first: Int ): GraphArtifactConnection! """ Returns details about a coordinate in the schema. Unless an error occurs, we will currently always return a non-null response here, with the timestamps set to null if there is no usage of the coordinate or if coordinate doesn't exist in the schema. However, we are keeping the return type as nullable in case we want to update this later in a backwards-compatible way (e.g. a null response meaning that the coordinate doesn't exist in the schema at all). """ coordinateInsights(coordinateKind: CoordinateKind!, namedAttribute: String!, namedType: String!): CoordinateInsights """ Returns a paginated list of coordinate insights list items, including all coordinates from the active schema for this variant. """ coordinateInsightsList(after: String, before: String, filter: CoordinateInsightsListFilterInput, first: Int, from: Timestamp!, last: Int, orderBy: CoordinateInsightsListOrderByInput, to: Timestamp!): GraphVariantCoordinateInsightsListItemConnection! """ Returns a paginated list of error insights list items, including service and code for which the error originated from. """ errorInsightsList( after: String before: String filter: ErrorInsightsListFilterInput first: Int from: Timestamp! """ Defines how to group the data. Order matters for nesting and structuring the results. """ groupBy: [ErrorInsightsListGroupByColumn!] last: Int orderBy: ErrorInsightsListOrderByInput to: Timestamp! ): GraphVariantErrorInsightsListItemConnection! """ Returns a time series list of error counts over time for this variant within a given time range. """ errorInsightsTimeseries(filter: ErrorInsightsListFilterInput, from: Timestamp!, groupBy: ErrorInsightsListGroupByColumn!, resolution: Resolution!, to: Timestamp!): ErrorInsightsTimeseriesResult! """ Details about 'enhanced reference' reporting for traces sent to Apollo by Router for this variant. """ extendedRefsUsage: ExtendedRefsUsage! """ The last instant that field execution information (resolver execution via field-level instrumentation) was reported for this variant """ fieldExecutionsLastReportedAt: Timestamp """ Returns details about a field in the schema. Unless an error occurs, we will currently always return a non-null response here, with the timestamps set to null if there is no usage of the field or if field doesn't exist in the schema. However, we are keeping the return type as nullable in case we want to update this later in a backwards-compatible way (e.g. a null response meaning that the field doesn't exist in the schema at all). """ fieldInsights(fieldName: String!, parentType: String!): FieldInsights """ Returns a paginated list of field insights list items, including all fields from the active schema for this variant. """ fieldInsightsList(after: String, before: String, filter: FieldInsightsListFilterInput, first: Int, from: Timestamp!, last: Int, orderBy: FieldInsightsListOrderByInput, to: Timestamp!): GraphVariantFieldInsightsListItemConnection! """ The last instant that field usage information (usage of fields via referencing operations) was reported for this variant """ fieldUsageLastReportedAt: Timestamp """ The most recent agent that reported data to Apollo for this variant, or null if the agent is unknown. """ lastReportedAgent: ReportingAgent """Returns a paginated list of operation insights list items.""" operationInsightsList(after: String, before: String, filter: OperationInsightsListFilterInput, first: Int, from: Timestamp!, last: Int, orderBy: OperationInsightsListOrderByInput, to: Timestamp!): GraphVariantOperationInsightsListItemConnection! """The total number of requests for this variant in the last 24 hours""" requestsInLastDay: Long """The first time the Router reported usage of this variant to Apollo.""" routerFirstSeenAt: Timestamp """The last time the Router reported usage of this variant to Apollo.""" routerLastSeenAt: Timestamp """The list of rule enforcements for this variant, if any.""" ruleEnforcements: [RuleEnforcement!]! """ Returns the current state of every schema coordinate (object field, input object field, and enum value) for this variant, describing whether each coordinate is used and whether it is deprecated. Unlike the timeseries reports, this returns a single snapshot row per coordinate rather than metrics bucketed over time. A coordinate is reported as 'used' if it was referenced or executed at any point since the 'since' timestamp. The report can be filtered by coordinate kind, used status, deprecation status, and client. Using the groupByClient input flag will cause the report to output one record per combination of schema coordinate, client, and version name instead of one record per schema coordinate. Note that insights on enum values and input object types are only supported if extended reference reporting is enabled (see https://www.apollographql.com/docs/graphos/routing/configuration/yaml#extended-reference-reporting). """ schemaCoordinateInsightsUsageReport( """ Filtering criteria for the results. Defaults to showing all unfiltered results. """ filters: SchemaCoordinateInsightsUsageReportFilterInput """ When false (default), each row represents a single schema coordinate aggregated across all clients. When true, each row represents a single (coordinate, client name, client version) combination with per-client metrics. """ groupByClient: Boolean! = false """Maximum number of records to return (default: 1000, max 100000).""" limit: Int! = 1000 """ Sorting criteria for the results. Defaults to ordering by coordinate kind, then named type, then named attribute. """ orderBy: SchemaCoordinateInsightsUsageReportOrderByInput """ The lower bound of the usage window. A schema coordinate is reported as 'used' if it was referenced or executed at any point at or after this timestamp. Must be within the last 90 days and in the format: 2025-01-01T00:00:00Z (ISO 8601). """ since: Timestamp! ): SchemaCoordinateInsightsUsageReportResult! """ The most recent time subgraph insights metrics were reported, or null if none have been reported for this variant. """ subgraphInsightsLastReportedAt: Timestamp """Returns a list of subgraph insights items.""" subgraphInsightsList( after: String before: String filter: SubgraphInsightsListFilterInput first: Int from: Timestamp! """ Defines how to group the data and determines which columns will be available in the resulting SubgraphListItems. By default, only groups by subgraph name. """ groupBy: [SubgraphInsightsListGroupByColumn!] last: Int orderBy: SubgraphInsightsListOrderByInput """ If true, additional latency metrics (p50-p99 and histograms) will be available in the results. This will generally result in a slower query, so it defaults to false. """ requireLatencyMetrics: Boolean! = false to: Timestamp! ): GraphVariantSubgraphInsightsListItemConnection! """ Returns a time-indexed set of subgraph metrics for this variant within a given time range. """ subgraphInsightsTimeseries( filter: SubgraphInsightsListFilterInput from: Timestamp! """ If true, additional latency metrics (p50-p99 and histograms) will be available in the results. This will generally result in a slower query, so it defaults to false. """ requireLatencyMetrics: Boolean! = false resolution: Resolution! to: Timestamp! ): SubgraphInsightsTimeseriesResult! """Returns the top N operations by a few different metrics""" topNOperations(filter: TopNOperationsFilterInput, from: Timestamp!, to: Timestamp!, topN: Int): TopNOperationsResult! """ Returns a list of the top operations reported for this variant within a given time range. This API is rate limited, and will return an error if too many requests are made for a graph. """ topOperationsReport( """Optional filters to refine the results""" filter: TopOperationsReportVariantFilterInput """ The starting timestamp for the report. - Must be in the format: 2025-01-01T00:00:00Z (ISO 8601). - Must be within the last 549 days. - The duration between 'from' and 'to' must not exceed 31 days. """ from: Timestamp! """Maximum number of records to return (default: 10)""" limit: Int! = 10 """Sorting criteria for the report""" orderBy: TopOperationsReportOrderByInput """ The ending timestamp for the report. - Must be in the format: 2025-01-01T08:00:00Z (ISO 8601). - Must be at least 6 hours from the current time. - The duration between 'from' and 'to' must not exceed 31 days. """ to: Timestamp! ): [TopOperationRecord!]! """ The last instant that usage information (e.g. operation stat, client stats) was reported for this variant """ usageLastReportedAt: Timestamp """ The list of BuildPipelineTracks and their associated details that this variant is allowed to set in their build configuration. """ allowedTracks: [BuildPipelineTrackDetails]! """ If this variant doesn't conduct a build (monograph) then this field will be null For contract variants the build config is set based on the upstream composition variant. """ buildConfig: BuildConfig """ The time the variant's federation version and/or the supported directives was last updated """ buildConfigUpdatedAt: Timestamp """ Compose and filter preview contract schema built from this source variant. """ composeAndFilterPreview( """ The filter configuration of a hypothetical contract variant on this variant. Null indicates that filtering should be skipped/not run, in which case ComposeAndFilterPreviewSuccess.filterResults will be null. """ filterConfig: FilterConfigInput """ Any hypothetical changes desired for the subgraphs of this variant. Null is the same as the empty list. """ subgraphChanges: [ComposeAndFilterPreviewSubgraphChange!] ): ComposeAndFilterPreviewResult """Federation version this variant uses""" compositionVersion: String @deprecated(reason: "Use federationVersion instead.") """ The filter configuration used to build a contract schema. The configuration consists of lists of tags for schema elements to include or exclude in the resulting schema. """ contractFilterConfig: FilterConfig """ A human-readable description of the filter configuration of this contract variant, or null if this isn't a contract variant. """ contractFilterConfigDescription: String """Preview a Contract schema built from this source variant.""" contractPreview(filters: FilterConfigInput!): ContractPreview! """Time the variant was created""" createdAt: Timestamp! derivedVariantCount: Int! """ Returns the list of variants derived from this variant. This currently includes contracts only. """ derivedVariants: [GraphVariant!] """Federation version this variant uses""" federationVersion: String """ Represents whether this variant has a supergraph schema. Note that this can only be true for variants with build steps (running e.g. federation composition or contracts filtering). This will be false for a variant with a build step if it has never successfully published. """ hasSupergraphSchema: Boolean! internalVariantUUID: String! """Represents whether this variant is a Contract.""" isContract: Boolean """Is this variant one of the current user's favorite variants?""" isFavoriteOfCurrentUser: Boolean! """Represents whether this variant is a Proposal.""" isProposal: Boolean isPublic: Boolean! """ Represents whether this variant should be listed in the public variants directory. This can only be true if the variant is also public. """ isPubliclyListed: Boolean! """ Represents whether Apollo has verified the authenticity of this public variant. This can only be true if the variant is also public. """ isVerified: Boolean! """ Latest approved launch for the variant, and what is served through Uplink. """ latestApprovedLaunch: Launch """Latest launch for the variant, whether successful or not.""" latestLaunch: Launch """Retrieve a launch for this variant by ID.""" launch(id: ID!): Launch """ A list of launches ordered by date, asc or desc depending on orderBy. The maximum limit is 100. """ launchHistory(limit: Int! = 100, offset: Int! = 0, orderBy: LaunchHistoryOrder! = CREATED_DESC): [Launch!] """Count of total launch history""" launchHistoryLength: Long """ A list of launches metadata ordered by date, asc or desc depending on orderBy. The maximum limit is 100. """ launchSummaries(limit: Int! = 100, offset: Int! = 0, orderBy: LaunchHistoryOrder! = CREATED_DESC): [LaunchSummary!] links: [LinkInfo!] """ The merged/computed/effective check configuration for the operations check task. """ operationsCheckConfiguration(overrides: OperationsCheckConfigurationOverridesInput): OperationsCheckConfiguration """ Which permissions the current user has for interacting with this variant """ permissions: GraphVariantPermissions! readme: Readme! """ The variant this variant is derived from. This property currently only exists on contract variants. """ sourceVariant: GraphVariant """ Which permissions the currently authenticated principal has for interacting with the given subgraph """ subgraphPermissions(subgraphNames: [String!]!): [SubgraphPermissions!]! """A list of supported directives""" supportedDirectives: [DirectiveSupportStatus!] """ A list of the subgraphs that have been published to since the variant was created. Does not include subgraphs that were created & deleted since the variant was created since that is not a change compared to initial; however includes subgraphs that were only deleted because that is a change compared to the initial. """ updatedSubgraphsSinceCreation: [Subgraph!] """ The default collection MCP servers will use if no explicit collection is provided. Auto-creates a collection if it does not exist. """ mcpDefaultCollection: McpDefaultCollectionResult! """ A list of the saved [operation collections](https://www.apollographql.com/docs/studio/explorer/operation-collections/) associated with this variant. This field accepts up to 400 requests per minute. This rate may be temporarily adjusted based on system conditions. """ operationCollections: [OperationCollection!]! """ A list of the saved [operation collections](https://www.apollographql.com/docs/studio/explorer/operation-collections/) associated with this variant, paged. """ operationCollectionsConnection(after: String, before: String, first: Int, last: Int): GraphVariantOperationCollectionConnection """The Persisted Query List linked to this variant, if any.""" persistedQueryList: PersistedQueryList """ Returns the proposal-related fields for this graph variant if the variant is a proposal; otherwise, returns null. This field accepts up to 1000 requests per minute. This rate may be temporarily adjusted based on system conditions. """ proposal: Proposal """ The URL of the variant's GraphQL endpoint for query and mutation operations. For subscription operations, use `subscriptionUrl`. """ url: String """If the graphql endpoint is set up to accept cookies.""" sendCookies: Boolean """The URL of the variant's GraphQL endpoint for subscription operations.""" subscriptionUrl: String """ Explorer setting for preflight script to run before the actual GraphQL operations is run. """ preflightScript: String """ Explorer setting for postflight script to run before the actual GraphQL operations is run. """ postflightScript: String """Explorer setting for shared headers for a graph""" sharedHeaders: String """ As new schema tags keep getting published, activeSchemaPublish refers to the latest. """ activeSchemaPublish: SchemaTag """The details of the variant's most recent publication.""" latestPublication: SchemaTag """If the variant is protected""" isProtected: Boolean! """Generate a federated operation plan for a given operation""" plan(document: GraphQLDocument!, operationName: String): QueryPlan """If the variant has managed subgraphs.""" isFederated: Boolean @deprecated(reason: "Replaced by hasManagedSubgraphs") """If the variant has managed subgraphs.""" hasManagedSubgraphs: Boolean """ A list of the subgraphs included in this variant. This value is null for non-federated variants. Set `includeDeleted` to `true` to include deleted subgraphs. """ subgraphs(includeDeleted: Boolean! = false): [FederatedImplementingService!] """ The number of subgraphs included in this variant. This value is null for non-federated variants. Set `includeDeleted` to `true` to include deleted subgraphs. """ subgraphCount(includeDeleted: Boolean! = false): Int """ A list of the subgraphs that have been published to since the variant was created. Does not include subgraphs that were created & deleted since the variant was created. TODO: @deprecated(reason: "use GraphVariant.updatedSubgraphsSinceCreation instead") """ updatedSubgraphs: [FederatedImplementingService!] """ A list of the entities across all subgraphs, exposed to consumers & up. This value is null for non-federated variants. """ entities: EntitiesResponseOrError """ Returns the details of the subgraph with the provided `name`, or null if this variant doesn't include a subgraph with that name. """ subgraph(name: ID!): FederatedImplementingService """Registry stats for this particular graph variant""" registryStatsWindow(from: Timestamp!, resolution: Resolution, to: Timestamp): RegistryStatsWindow routerConfig: String } """ A list of coordinate insights list items that belong to a graph variant. """ type GraphVariantCoordinateInsightsListItemConnection { """ A list of edges from the graph variant to its coordinate insights list items. """ edges: [GraphVariantCoordinateInsightsListItemEdge!] """ A list of coordinate insights list items that belong to a graph variant. """ nodes: [CoordinateInsightsListItem!] """Information to aid in pagination.""" pageInfo: CoordinateInsightsListPageInfo! """ The total number of coordinate insights list items connected to the graph variant """ totalCount: Int! } """An edge between a graph variant and a coordinate insights list item.""" type GraphVariantCoordinateInsightsListItemEdge { """A cursor for use in pagination.""" cursor: String! """A coordinate insights list item attached to the graph variant.""" node: CoordinateInsightsListItem } """A list of error insights list items that belong to a graph variant.""" type GraphVariantErrorInsightsListItemConnection { """ A list of edges from the graph variant to its error insights list items. """ edges: [GraphVariantErrorInsightsListItemEdge!] """A list of error insights list items that belong to a graph variant.""" nodes: [ErrorInsightsListItem!] """Information to aid in pagination.""" pageInfo: ErrorInsightsListPageInfo! """ The total number of error insights list items connected to the graph variant. """ totalCount: Int! } """An edge between a graph variant and an error insights list item.""" type GraphVariantErrorInsightsListItemEdge { """A cursor for use in pagination.""" cursor: String! """A error insights list items attached to the graph variant.""" node: ErrorInsightsListItem } """A list of field insights list items that belong to a graph variant.""" type GraphVariantFieldInsightsListItemConnection { """ A list of edges from the graph variant to its field insights list items. """ edges: [GraphVariantFieldInsightsListItemEdge!] """A list of field insights list items that belong to a graph variant.""" nodes: [FieldInsightsListItem!] """Information to aid in pagination.""" pageInfo: FieldInsightsListPageInfo! """ The total number of field insights list items connected to the graph variant """ totalCount: Int! } """An edge between a graph variant and a field insights list item.""" type GraphVariantFieldInsightsListItemEdge { """A cursor for use in pagination.""" cursor: String! """A field insights list item attached to the graph variant.""" node: FieldInsightsListItem } """Result of looking up a variant by ref""" union GraphVariantLookup = GraphVariant | InvalidRefFormat """ Modifies a variant of a graph, also called a schema tag in parts of our product. """ type GraphVariantMutation { """Global identifier for the graph variant, in the form `graph@variant`.""" id: ID! """Gets the router attached to a graph variant""" router: RouterMutation createRouter(input: CreateRouterInput!): CreateRouterResult! destroyRouter: DestroyRouterResult! updateRouter(input: UpdateRouterInput!): UpdateRouterResult! """ Callback mutation for submitting custom check results once your validation has run. Results are returned with the SUCCESS or FAILURE of your validations, the task and workflow ids to associate results, with and an optional list of violations to provide more details to users. The Schema Check will wait for this response for 10 minutes and not complete until the results are returned. After 10 minutes have passed without a callback request being received, the task will be marked as timed out. """ customCheckCallback(input: CustomCheckCallbackInput!): CustomCheckCallbackResult! """Graph ID of the variant""" graphId: String! """Name of the variant, like `variant`.""" name: String! """ Send a custom check request with a fake task id to your configured endpoint. """ queueTestCustomChecksRequest: QueueTestCustomChecksRequestResult! setCustomCheckConfiguration(input: SetCustomCheckConfigurationInput!): CustomCheckConfigurationResult! variant: GraphVariant! addLinkToVariant(title: String, type: LinkInfoType!, url: String!): GraphVariant! buildConfig( federationVersion: FederationVersion """When this flag is true, indicates to skip the new launch initiation""" skipLaunch: Boolean = false tagInApiSchema: Boolean! = false version: BuildPipelineTrack ): GraphVariant relaunch: RelaunchResult! removeLinkFromVariant(linkInfoId: ID!): GraphVariant! service: Service! setIsFavoriteOfCurrentUser(favorite: Boolean!): GraphVariant! """ _Asynchronously_ kicks off operation checks for a proposed non-federated schema change against its associated graph. Returns a `CheckRequestSuccess` object with a workflow ID that you can use to check status, or an error object if the checks workflow failed to start. Rate limited to 3000 per min. Schema checks cannot be performed on contract variants. """ submitCheckSchemaAsync(input: CheckSchemaAsyncInput!): CheckRequestResult! """ Submit a request for a Filter Schema Check and receive a result with a workflow ID that can be used to check status, or an error message that explains what went wrong. """ submitFilterCheckAsync(input: FilterCheckAsyncInput!): CheckRequestResult! """ _Asynchronously_ kicks off composition and operation checks for all proposed subgraphs schema changes against its associated supergraph. Returns a `CheckRequestSuccess` object with a workflow ID that you can use to check status, or an error object if the checks workflow failed to start. Rate limited to 3000 per min. Subgraph checks cannot be performed on contract variants. """ submitMultiSubgraphCheckAsync(input: MultiSubgraphCheckAsyncInput!): CheckRequestResult! """ _Asynchronously_ kicks off composition and operation checks for a proposed subgraph schema change against its associated supergraph. Returns a `CheckRequestSuccess` object with a workflow ID that you can use to check status, or an error object if the checks workflow failed to start. Rate limited to 3000 per min. Subgraph checks cannot be performed on contract variants. """ submitSubgraphCheckAsync(input: SubgraphCheckAsyncInput!): CheckRequestResult! updateCheckConfigurationCustomChecks( """ Whether custom checks is enabled for this variant. If the useGraphSettings argument is true, this argument is ignored. If the useGraphSettings argument is false and this argument is null, defaults to false. """ enableCustomChecks: Boolean """ When this argument is true, indicates that graph-level configuration is used for this variant setting. """ useGraphSettings: Boolean! ): VariantCheckConfiguration! updateCheckConfigurationDowngradeChecks( """ During operation checks, when this argument is true, the check will not fail or mark any operations as broken/changed if the default value has changed, only if the default value is removed completely. If this argument is null, the value is unchanged. """ downgradeDefaultValueChange: Boolean """ During operation checks, when this argument is true, it evaluates a check run against zero operations as a pass instead of a failure. If this argument is null, the value is unchanged. """ downgradeStaticChecks: Boolean """ When this argument is true, indicates that graph-level configuration is used for this variant setting. """ useGraphSettings: Boolean! ): VariantCheckConfiguration! updateCheckConfigurationDownstreamVariants( """ During downstream checks, this variant's check workflow will wait for all downstream check workflows for variants to complete, and if any of them fail, then this variant's check workflow will fail. If this argument is null, the value is unchanged. """ blockingDownstreamVariants: [String!] ): VariantCheckConfiguration! updateCheckConfigurationEnableOperationsCheck(enabled: Boolean!): VariantCheckConfiguration updateCheckConfigurationExcludedClients( """ When this argument is true, indicates that graph-level configuration is appended to the variant-level configuration. """ appendGraphSettings: Boolean! """ During operation checks, ignore clients matching any of the filters. If this argument is null, the value is unchanged. """ excludedClients: [ClientFilterInput!] ): VariantCheckConfiguration! updateCheckConfigurationExcludedOperations( """ When this argument is true, indicates that graph-level configuration is appended to the variant-level configuration. """ appendGraphSettings: Boolean! """ During operation checks, ignore operations matching any of the filters. If this argument is null, the value is unchanged. """ excludedOperationNames: [OperationNameFilterInput!] """ During operation checks, ignore operations matching any of the filters. If this argument is null, the value is unchanged. """ excludedOperations: [OperationInfoFilterInput!] ): VariantCheckConfiguration! updateCheckConfigurationIncludedVariants( """ During operation checks, fetch operations from the metrics data for variants. If the useGraphSettings argument is true, this argument is ignored. If the useGraphSettings argument is false and this argument is null, the value is unchanged (if useGraphSettings was previously true, the default of a list containing just this variant is used instead). """ includedVariants: [String!] """ When this argument is true, indicates that graph-level configuration is used for this variant setting. """ useGraphSettings: Boolean! ): VariantCheckConfiguration! updateCheckConfigurationProposalChangeMismatchSeverity( """ How submitted build input diffs are handled when they match (or don't) a Proposal at the variant level. """ proposalChangeMismatchSeverity: ProposalChangeMismatchSeverity ): VariantCheckConfiguration! updateCheckConfigurationTimeRange( """ During operation checks, ignore operations that executed less than times in the time range. If the useGraphSettings argument is true, this argument is ignored. If the useGraphSettings argument is false and this argument is null, the value is unchanged (if useGraphSettings was previously true, the default of 1 is used instead). """ operationCountThreshold: Int """ Duration operation checks, ignore operations that constituted less than % of the operations in the time range. Expected values are between 0% and 5%. If the useGraphSettings argument is true, this argument is ignored. If the useGraphSettings argument is false and this argument is null, the value is unchanged (if useGraphSettings was previously true, the default of 0% is used instead). """ operationCountThresholdPercentage: Float """ During operation checks, fetch operations from the last seconds. If the useGraphSettings argument is true, this argument is ignored. If the useGraphSettings argument is false and this argument is null, the value is unchanged (if useGraphSettings was previously true, the default of 7 days is used instead). """ timeRangeSeconds: Long """ When this argument is true, indicates that graph-level configuration is used for this variant setting. """ useGraphSettings: Boolean! ): VariantCheckConfiguration! """ Updates the [federation version](https://www.apollographql.com/docs/graphos/reference/router/federation-version-support) of this variant """ updateVariantFederationVersion(federationVersion: FederationVersion, version: BuildPipelineTrack): GraphVariant updateVariantIsPublic(isPublic: Boolean!): GraphVariant updateVariantIsPubliclyListed(isPubliclyListed: Boolean!): GraphVariant updateVariantIsVerified(isVerified: Boolean!): GraphVariant """ Updates the [README](https://www.apollographql.com/docs/studio/org/graphs/#the-readme-page) of this variant. """ updateVariantReadme( """The full new text of the README, as a Markdown-formatted string.""" readme: String! ): GraphVariant runLintCheck(input: RunLintCheckInput!): CheckStepResult! """ Links a specified PersistedQueryList to the variant of the parent GraphVariantMutation. """ linkPersistedQueryList(persistedQueryListId: ID!): LinkPersistedQueryListResultOrError! """ Unlinks a specified PersistedQueryList from the variant of the parent GraphVariantMutation. """ unlinkPersistedQueryList: UnlinkPersistedQueryListResultOrError! """ Provides access to mutation fields for modifying a GraphOS Schema Proposal, if this GraphVariant is a proposal variant; else returns NotFoundError. Learn more at https://www.apollographql.com/docs/graphos/delivery/schema-proposals """ proposal: ProposalMutationResult! """ Mutation called by CheckCoordinator to find associated proposals to the schema diffs in a check workflow """ runProposalsCheck(input: RunProposalsCheckInput!): CheckStepResult! """ Triggers the Proposals implementation check for active proposals that are sourced from this variant for a given graph composition id """ triggerProposalsImplementationHandler(graphCompositionId: ID!): GraphVariant internalVariantUUID: String! updateURL(url: String): GraphVariant updateSubscriptionURL(subscriptionUrl: String): GraphVariant updateSendCookies(sendCookies: Boolean!): GraphVariant updateIsProtected(isProtected: Boolean!): GraphVariant updatePreflightScript(preflightScript: String): GraphVariant updatePostflightScript(postflightScript: String): GraphVariant updateSharedHeaders(sharedHeaders: String): GraphVariant """Delete the variant.""" delete: DeleteSchemaTagResult! upsertRouterConfig(configuration: String!): UpsertRouterResult } type GraphVariantOperationCollectionConnection { """A list of edges from the graph variant to its operation collections.""" edges: [GraphVariantOperationCollectionEdge!] """A list of operation collections attached to a graph variant.""" nodes: [OperationCollection!] """Information to aid in pagination.""" pageInfo: PageInfo! totalCount: Int! } """An edge between a graph variant and an operation collection.""" type GraphVariantOperationCollectionEdge { """A cursor for use in pagination.""" cursor: String! """An operation collection attached to a graph variant.""" node: OperationCollection } """ A list of operation insights list items that belong to a graph variant. """ type GraphVariantOperationInsightsListItemConnection { """ A list of edges from the graph variant to its operation insights list items. """ edges: [GraphVariantOperationInsightsListItemEdge!] """ A list of operation insights list items that belong to a graph variant. """ nodes: [OperationInsightsListItem!] """Information to aid in pagination.""" pageInfo: OperationInsightsListPageInfo! """ The total number of operation insights list items connected to the graph variant. """ totalCount: Int! } """An edge between a graph variant and an operation insights list item.""" type GraphVariantOperationInsightsListItemEdge { """A cursor for use in pagination.""" cursor: String! """A operation insights list items attached to the graph variant.""" node: OperationInsightsListItem } """ Individual permissions for the current user when interacting with a particular Studio graph variant. """ type GraphVariantPermissions { """ Whether the currently authenticated user is permitted to manage/update this variant's build configuration (e.g., build pipeline version). """ canManageBuildConfig: Boolean! """ Whether the currently authenticated user is permitted to manage/update cloud routers """ canManageCloudRouter: Boolean! """ Whether the currently authenticated user is permitted to update variant-level settings for the Apollo Studio Explorer. """ canManageExplorerSettings: Boolean! """ Whether the currently authenticated user is permitted to publish schemas to this variant. """ canPushSchemas: Boolean! """ Whether the currently authenticated user can read any information about this variant. """ canQuery: Boolean! """ Whether the currently authenticated user is permitted to view this variant's build configuration details (e.g., build pipeline version). """ canQueryBuildConfig: Boolean! """ Whether the currently authenticated user is permitted to view details regarding cloud routers """ canQueryCloudRouter: Boolean! """ Whether the currently authenticated user is permitted to view cloud router logs """ canQueryCloudRouterLogs: Boolean! """ Whether the currently authenticated user is permitted to view launch history """ canQueryLaunches: Boolean! """ Whether the currently authenticated user is permitted to download schemas associated to this variant. """ canQuerySchemas: Boolean! canUpdateVariantLinkInfo: Boolean! """ Whether the currently authenticated user is permitted to update the README for this variant. """ canUpdateVariantReadme: Boolean! variantId: ID! canCreateCollectionInVariant: Boolean! canShareCollectionInVariant: Boolean! """ If this variant is a Proposal, will match the Proposal.canEditProposal field (can the current user can edit this Proposal either by authorship or role level). False if this GraphVariant is not a Proposal. """ canEditProposal: Boolean! } type GraphVariantSubgraphInsightsListItemConnection { """ A list of edges from the graph variant to its subgraph insights list items. """ edges: [GraphVariantSubgraphInsightsListItemEdge!] """A list of subgraph insights list items that belong to a graph variant.""" nodes: [SubgraphInsightsListItem!] """Information to aid in pagination.""" pageInfo: SubgraphInsightsListPageInfo! """ The total number of subgraph insights list items connected to the graph variant. """ totalCount: Int! } type GraphVariantSubgraphInsightsListItemEdge { """A cursor for use in pagination.""" cursor: String! """A error insights list items attached to the graph variant.""" node: SubgraphInsightsListItem } """ Returned when the organization has cloudy graphs and the plan does not support them """ type HasCloudyGraphs implements PlanIneligibilityReason { """The severity of the ineligibility reason""" severity: PlanIneligibilityReasonSeverity! } input HistoricQueryParameters { from: String = "-86400" to: String = "0" """ Minimum number of requests within the window for a query to be considered. """ queryCountThreshold: Int = 1 """ Number of requests within the window for a query to be considered, relative to total request count. Expected values are between 0 and 0.05 (minimum 5% of total request volume) """ queryCountThresholdPercentage: Float = 0 """A list of operation IDs to filter out during validation.""" ignoredOperations: [ID!] = null """A list of clients to filter out during validation.""" excludedClients: [ClientInfoFilter!] = null """A list of operation names to filter out during validation.""" excludedOperationNames: [OperationNameFilterInput!] = null """ A list of variants to include in the validation. If no variants are provided then this defaults to the "current" variant along with the base variant. The base variant indicates the schema that generates diff and marks the metrics that are checked for broken queries. We union this base variant with the untagged values('', same as null inside of `in`, and 'current') in this metrics fetch. This strategy supports users who have not tagged their metrics or schema. """ includedVariants: [String!] = null } """ Input type to provide when specifying configuration details for schema checks. """ input HistoricQueryParametersInput { """Clients to be excluded from check.""" excludedClients: [ClientInfoFilter!] """ Operations to be ignored in this schema check, specified by operation name. """ excludedOperationNames: [OperationNameFilterInput!] """ Start time for operations to be checked against. Specified as either a) an ISO formatted date/time string or b) a negative number of seconds relative to the time the check request was submitted. """ from: String """Operations to be ignored in this schema check, specified by ID.""" ignoredOperations: [ID!] """Graph variants to be included in check.""" includedVariants: [String!] """Maximum number of queries to be checked against the change.""" queryCountThreshold: Int """ Only fail check if this percentage of operations would be negatively impacted. """ queryCountThresholdPercentage: Float """ End time for operations to be checked against. Specified as either a) an ISO formatted date/time string or b) a negative number of seconds relative to the time the check request was submitted. """ to: String } enum HTTPMethod { CONNECT DELETE GET HEAD OPTIONS PATCH POST PUT TRACE UNKNOWN UNRECOGNIZED } """ An identity (such as a `User` or `Graph`) in Apollo Studio. See implementing types for details. """ interface Identity { """Returns a representation of the identity as an `Actor` type.""" asActor: Actor! """The identity's identifier, which is unique among objects of its type.""" id: ID! """The identity's human-readable name.""" name: String! } """ An actor's identity and info about the client they used to perform the action """ type IdentityAndClientInfo { """Identity info about the actor""" identity: Identity """Client name provided when the actor performed the action""" clientName: String """Client version provided when the actor performed the action""" clientVersion: String } union IdentityMutation = ServiceMutation | UserMutation type IgnoredRule { ignoredRule: LintRule! schemaCoordinate: String! subgraphName: String } input IgnoredRuleInput { ignoredRule: LintRule! schemaCoordinate: String! subgraphName: String } type IgnoreOperationsInChecksResult { """The graph that was updated.""" graph: Service! """Whether or not the request succeeded.""" success: Boolean! """An error or success message.""" message: String! } """The location of the implementing service config file in storage""" type ImplementingServiceLocation { """The name of the implementing service""" name: String! """The path in storage to access the implementing service config file""" path: String! } type InternalAdminUser { role: InternalMdgAdminRole! userID: String! } type InternalIdentity implements Identity { asActor: Actor! id: ID! name: String! email: String accounts: [Account!]! } enum InternalMdgAdminRole { INTERNAL_MDG_ADMIN INTERNAL_MDG_READ_ONLY INTERNAL_MDG_SALES INTERNAL_MDG_SUPER_ADMIN INTERNAL_MDG_SUPPORT } """ Generic server error. This should only ever return 'internal server error' as a message """ type InternalServerError implements Error { """Message related to the internal error""" message: String! } type IntrospectionDirective { name: String! description: String locations: [IntrospectionDirectiveLocation!]! args: [IntrospectionInputValue!]! } input IntrospectionDirectiveInput { name: String! description: String locations: [IntrospectionDirectiveLocation!]! args: [IntrospectionInputValueInput!]! isRepeatable: Boolean } """__DirectiveLocation introspection type""" enum IntrospectionDirectiveLocation { """Location adjacent to a query operation.""" QUERY """Location adjacent to a mutation operation.""" MUTATION """Location adjacent to a subscription operation.""" SUBSCRIPTION """Location adjacent to a field.""" FIELD """Location adjacent to a fragment definition.""" FRAGMENT_DEFINITION """Location adjacent to a fragment spread.""" FRAGMENT_SPREAD """Location adjacent to an inline fragment.""" INLINE_FRAGMENT """Location adjacent to a variable definition.""" VARIABLE_DEFINITION """Location adjacent to a schema definition.""" SCHEMA """Location adjacent to a scalar definition.""" SCALAR """Location adjacent to an object type definition.""" OBJECT """Location adjacent to a field definition.""" FIELD_DEFINITION """Location adjacent to an argument definition.""" ARGUMENT_DEFINITION """Location adjacent to an interface definition.""" INTERFACE """Location adjacent to a union definition.""" UNION """Location adjacent to an enum definition.""" ENUM """Location adjacent to an enum value definition.""" ENUM_VALUE """Location adjacent to an input object type definition.""" INPUT_OBJECT """Location adjacent to an input object field definition.""" INPUT_FIELD_DEFINITION } """Values associated with introspection result for an enum value""" type IntrospectionEnumValue { name: String! description: String isDeprecated: Boolean! depreactionReason: String @deprecated(reason: "Use deprecationReason instead") deprecationReason: String } """__EnumValue introspection type""" input IntrospectionEnumValueInput { name: String! description: String isDeprecated: Boolean! deprecationReason: String } """Values associated with introspection result for field""" type IntrospectionField { name: String! description: String args: [IntrospectionInputValue!]! type: IntrospectionType! isDeprecated: Boolean! deprecationReason: String } """__Field introspection type""" input IntrospectionFieldInput { name: String! description: String args: [IntrospectionInputValueInput!]! type: IntrospectionTypeInput! isDeprecated: Boolean! deprecationReason: String } """Values associated with introspection result for an input field""" type IntrospectionInputValue { name: String! description: String type: IntrospectionType! defaultValue: String } """__Value introspection type""" input IntrospectionInputValueInput { name: String! description: String type: IntrospectionTypeInput! defaultValue: String isDeprecated: Boolean deprecationReason: String } type IntrospectionSchema { types(filter: TypeFilterConfig = {includeAbstractTypes: true, includeBuiltInTypes: true, includeIntrospectionTypes: true}): [IntrospectionType!]! queryType: IntrospectionType! mutationType: IntrospectionType subscriptionType: IntrospectionType directives: [IntrospectionDirective!]! } """__Schema introspection type""" input IntrospectionSchemaInput { types: [IntrospectionTypeInput!] queryType: IntrospectionTypeRefInput! mutationType: IntrospectionTypeRefInput subscriptionType: IntrospectionTypeRefInput directives: [IntrospectionDirectiveInput!]! description: String } """Object containing all possible values for an introspectionType""" type IntrospectionType { kind: IntrospectionTypeKind name: String """ printed representation of type, including nested nullability and list ofTypes """ printed: String! """ the base kind of the type this references, ignoring lists and nullability """ baseKind: IntrospectionTypeKind description: String fields: [IntrospectionField!] interfaces: [IntrospectionType!] possibleTypes: [IntrospectionType!] enumValues(includeDeprecated: Boolean = false): [IntrospectionEnumValue!] inputFields: [IntrospectionInputValue!] ofType: IntrospectionType } """__Type introspection type""" input IntrospectionTypeInput { kind: IntrospectionTypeKind! name: String description: String specifiedByUrl: String fields: [IntrospectionFieldInput!] interfaces: [IntrospectionTypeInput!] possibleTypes: [IntrospectionTypeInput!] enumValues: [IntrospectionEnumValueInput!] inputFields: [IntrospectionInputValueInput!] ofType: IntrospectionTypeInput } enum IntrospectionTypeKind { """Indicates this type is a scalar.""" SCALAR """ Indicates this type is an object. 'fields' and 'interfaces' are valid fields. """ OBJECT """ Indicates this type is an interface. 'fields' and 'possibleTypes' are valid fields """ INTERFACE """Indicates this type is a union. 'possibleTypes' is a valid field.""" UNION """Indicates this type is an enum. 'enumValues' is a valid field.""" ENUM """ Indicates this type is an input object. 'inputFields' is a valid field. """ INPUT_OBJECT """Indicates this type is a list. 'ofType' is a valid field.""" LIST """Indicates this type is a non-null. 'ofType' is a valid field.""" NON_NULL } """Shallow __Type introspection type""" input IntrospectionTypeRefInput { name: String! kind: String } """ An error caused by providing invalid input for a task, such as schema checks. """ type InvalidInputError { """The error message.""" message: String! } """Generic input error""" type InvalidInputErrors implements Error { errors: [CloudInvalidInputError!]! message: String! } type InvalidOperation { signature: ID! errors: [OperationValidationError!] } """ This object is returned when a request to fetch a Studio graph variant provides an invalid graph ref. """ type InvalidRefFormat implements Error { message: String! } type InvalidTarget implements Error { message: String! } type Invoice { closedAt: Timestamp collectionMethod: String createdAt: Timestamp! id: ID! invoiceNumber: Int! invoiceNumberV2: String! state: InvoiceState! totalInCents: Int! updatedAt: Timestamp! uuid: ID! } type InvoiceLineItem { """ Line items may be grouped to help the customer better understand their charges """ groupKey: String @deprecated(reason: "This data came from Metronome and we no longer use Metronome") """ Line items may be grouped to help the customer better understand their charges """ groupValue: String @deprecated(reason: "This data came from Metronome and we no longer use Metronome") name: String! @deprecated(reason: "This data came from Metronome and we no longer use Metronome") """ The quantity of 'things' in this line item. (e.g. number of operations, seats, etc). May be null for flat charges. """ quantity: Int @deprecated(reason: "This data came from Metronome and we no longer use Metronome") """The amount this line item costs.""" totalInCents: Int! @deprecated(reason: "This data came from Metronome and we no longer use Metronome") } enum InvoiceState { COLLECTED FAILED OPEN PAST_DUE UNKNOWN VOID } type JointUsageData { druidCount: Long! meterEventName: String! stripeCount: Long! timestamp: Timestamp! } """A scalar that can represent any JSON value.""" scalar JSON """ Represents the complete process of making a set of updates to a deployed graph variant. """ type Launch { """The unique identifier for this launch.""" id: ID! """The ID of the launch's associated graph.""" graphId: String! """The name of the launch's associated variant.""" graphVariant: String! """Cloud Router order for this launch ID""" order: OrderOrError! orders: [Order!]! """The launch's associated graph.""" graph: Service """The Graph Artifact created from this launch.""" graphArtifact: GraphArtifact """The timestamp when the launch was approved.""" approvedAt: Timestamp """ The associated build for this launch (a build includes schema composition and contract filtering). This value is null until the build is initiated. """ build: Build """ The inputs provided to this launch's associated build, including subgraph schemas and contract filters. """ buildInput: BuildInput! """ The timestamp when the launch completed. This value is null until the launch completes. """ completedAt: Timestamp """The timestamp when the launch was initiated.""" createdAt: Timestamp! """Contract launches that were triggered by this launch.""" downstreamLaunches: [Launch!]! """Whether the launch completed.""" isCompleted: Boolean """ Whether the result of the launch has been published to the associated graph and variant. This is always false for a failed launch. """ isPublished: Boolean """ The most recent launch sequence step that has started but not necessarily completed. """ latestSequenceStep: LaunchSequenceStep """ The launch immediately prior to this one. If successOnly is true, returns the most recent successful launch; if false, returns the most recent launch, regardless of success. If no such previous launch exists, returns null. """ previousLaunch( """Controls if only successful launches are returned. Defaults to false.""" successOnly: Boolean ): Launch """A specific publication of a graph variant pertaining to this launch.""" publication: SchemaTag """ A list of results from the completed launch. The items included in this list vary depending on whether the launch succeeded, failed, or was superseded. """ results: [LaunchResult!]! """ Cloud router configuration associated with this build event. It will be non-null for any cloud-router variant, and null for any not cloudy variant/graph. """ routerConfig: String schemaTag: SchemaTag """ A list of all serial steps in the launch sequence. This list can change as the launch progresses. For example, a `LaunchCompletedStep` is appended after a launch completes. """ sequence: [LaunchSequenceStep!]! """ A shortened version of `Launch.id` that includes only the first 8 characters. """ shortenedID: String! """ The launch's status. If a launch is superseded, its status remains `LAUNCH_INITIATED`. To check for a superseded launch, use `supersededAt`. """ status: LaunchStatus! """A list of subgraph changes that are included in this launch.""" subgraphChanges: [SubgraphChange!] """ The timestamp when this launch was superseded by another launch. If an active launch is superseded, it terminates. """ supersededAt: Timestamp """ The launch that superseded this launch, if any. If an active launch is superseded, it terminates. """ supersededBy: Launch """ The source variant launch that caused this launch to be initiated. This value is present only for contract variant launches. Otherwise, it's null. """ upstreamLaunch: Launch """ Returns the proposal revision associated with this launch, if it exists. This field accepts up to 1000 requests per minute. This rate may be temporarily adjusted based on system conditions. """ proposalRevision: ProposalRevision } enum LaunchHistoryOrder { CREATED_ASC CREATED_DESC } """Types of results that can be associated with a `Launch`""" union LaunchResult = ChangelogLaunchResult """The timing details for the build step of a launch.""" type LaunchSequenceBuildStep { """The timestamp when the step completed.""" completedAt: Timestamp """The timestamp when the step started.""" startedAt: Timestamp } """The timing details for the completion step of a launch.""" type LaunchSequenceCompletedStep { """The timestamp when the step (and therefore the launch) completed.""" completedAt: Timestamp } """The timing details for the initiation step of a launch.""" type LaunchSequenceInitiatedStep { """The timestamp when the step (and therefore the launch) started.""" startedAt: Timestamp } """The timing details for the publish step of a launch.""" type LaunchSequencePublishStep { """The timestamp when the step completed.""" completedAt: Timestamp """The timestamp when the step started.""" startedAt: Timestamp } """ Represents the various steps that occur in sequence during a single launch. """ union LaunchSequenceStep = LaunchSequenceBuildStep | LaunchSequenceCompletedStep | LaunchSequenceInitiatedStep | LaunchSequencePublishStep | LaunchSequenceSupersededStep """ The timing details for the superseded step of a launch. This step occurs only if the launch is superseded by another launch. """ type LaunchSequenceSupersededStep { """ The timestamp when the step completed, thereby ending the execution of this launch in favor of the superseding launch. """ completedAt: Timestamp } enum LaunchStatus { LAUNCH_COMPLETED LAUNCH_FAILED LAUNCH_INITIATED } """ The summarized information about the complete process of making a set of updates to a deployed graph variant. For full information about the update, refer to the `GraphVariant.launch` using the `LaunchSummary.id`. """ type LaunchSummary { """The timestamp when the launch was approved.""" approvedAt: Timestamp """ Identifier of the associated build for this launch. This value is null until the build is initiated. """ buildID: ID """ The inputs provided to this launch's associated build, including subgraph schemas and contract filters. """ buildInput: BuildInput! """ The timestamp when the launch completed. This value is null until the launch completes. """ completedAt: Timestamp """The timestamp when the launch was initiated.""" createdAt: Timestamp! """The ID of the launch's associated graph.""" graphId: String! """The name of the launch's associated variant.""" graphVariant: String! """The unique identifier for this launch.""" id: ID! """ A list of results from the completed launch. The items included in this list vary depending on whether the launch succeeded, failed, or was superseded. """ results: [LaunchResult!]! """ The launch's status. If a launch is superseded, its status remains `LAUNCH_INITIATED`. To check for a superseded launch, use `supersededAt`. """ status: LaunchStatus! """A list of subgraph changes that are included in this launch.""" subgraphChanges: [SubgraphChange!] } input LaunchTestRouterInput { routerVersion: String! provider: CloudProvider tier: CloudTier config: JSON } union LaunchTestRouterResult = LaunchTestRouterSuccess | CloudRouterTestingInvalidInputErrors type LaunchTestRouterSuccess { jobId: ID! graphRef: String! } type LinkInfo { createdAt: Timestamp! id: ID! title: String type: LinkInfoType! url: String! } enum LinkInfoType { DEVELOPER_PORTAL OTHER REPOSITORY } type LinkPersistedQueryListResult { graphVariant: GraphVariant! persistedQueryList: PersistedQueryList! } """ The result/error union returned by GraphVariantMutation.linkPersistedQueryList. """ union LinkPersistedQueryListResultOrError = LinkPersistedQueryListResult | ListNotFoundError | PermissionError | VariantAlreadyLinkedError type LintCheckTask implements CheckWorkflowTask { completedAt: Timestamp createdAt: Timestamp! graphID: ID! id: ID! status: CheckWorkflowTaskStatus! targetURL: String workflow: CheckWorkflow! result: LintResult } """A single rule violation.""" type LintDiagnostic { """The category used for grouping similar rules.""" category: LinterRuleCategory! """The schema coordinate of this diagnostic.""" coordinate: String! """The graph's configured level for the rule.""" level: LintDiagnosticLevel! """The message describing the rule violation.""" message: String! """The lint rule being violated.""" rule: LintRule! """The human readable position in the file of the rule violation.""" sourceLocations: [Location!]! } """The severity level of an lint result.""" enum LintDiagnosticLevel { ERROR IGNORED WARNING } input LinterIgnoredRuleChangesInput { ruleViolationsToEnable: [IgnoredRuleInput!]! ruleViolationsToIgnore: [IgnoredRuleInput!]! } """The category used for grouping similar rules.""" enum LinterRuleCategory { """These rules are generated during composition.""" COMPOSITION """These rules enforce naming conventions.""" NAMING """ These rules define conventions for the entire schema and directive usage outside of composition. """ OTHER } type LinterRuleLevelConfiguration { """Illustrative code showcasing the potential violation of this rule.""" badExampleCode: String """The category used for grouping similar rules.""" category: LinterRuleCategory! """A human readable description of the rule.""" description: String! """ Illustrative code showcasing the fix for the potential violation of this rule. """ goodExampleCode: String """The configured level for the rule.""" level: LintDiagnosticLevel! """The name for this lint rule.""" rule: LintRule! } input LinterRuleLevelConfigurationChangesInput { level: LintDiagnosticLevel! rule: LintRule! } """The result of linting a schema.""" type LintResult { """The set of lint rule violations found in the schema.""" diagnostics: [LintDiagnostic!]! """Stats generated from the resulting diagnostics.""" stats: LintStats! } enum LintRule { ALL_ELEMENTS_REQUIRE_DESCRIPTION CONTACT_DIRECTIVE_MISSING DEFINED_TYPES_ARE_UNUSED DEPRECATED_DIRECTIVE_MISSING_REASON DIRECTIVE_COMPOSITION DIRECTIVE_NAMES_SHOULD_BE_CAMEL_CASE DOES_NOT_PARSE ENUM_PREFIX ENUM_SUFFIX ENUM_USED_AS_INPUT_WITHOUT_SUFFIX ENUM_USED_AS_OUTPUT_DESPITE_SUFFIX ENUM_VALUES_SHOULD_BE_SCREAMING_SNAKE_CASE FIELD_NAMES_SHOULD_BE_CAMEL_CASE FROM_SUBGRAPH_DOES_NOT_EXIST INCONSISTENT_ARGUMENT_PRESENCE INCONSISTENT_BUT_COMPATIBLE_ARGUMENT_TYPE INCONSISTENT_BUT_COMPATIBLE_FIELD_TYPE INCONSISTENT_DEFAULT_VALUE_PRESENCE INCONSISTENT_DESCRIPTION INCONSISTENT_ENTITY INCONSISTENT_ENUM_VALUE_FOR_INPUT_ENUM INCONSISTENT_ENUM_VALUE_FOR_OUTPUT_ENUM INCONSISTENT_EXECUTABLE_DIRECTIVE_LOCATIONS INCONSISTENT_EXECUTABLE_DIRECTIVE_PRESENCE INCONSISTENT_EXECUTABLE_DIRECTIVE_REPEATABLE INCONSISTENT_INPUT_OBJECT_FIELD INCONSISTENT_INTERFACE_VALUE_TYPE_FIELD INCONSISTENT_NON_REPEATABLE_DIRECTIVE_ARGUMENTS INCONSISTENT_OBJECT_VALUE_TYPE_FIELD INCONSISTENT_RUNTIME_TYPES_FOR_SHAREABLE_RETURN INCONSISTENT_TYPE_SYSTEM_DIRECTIVE_LOCATIONS INCONSISTENT_TYPE_SYSTEM_DIRECTIVE_REPEATABLE INCONSISTENT_UNION_MEMBER INPUT_ARGUMENT_NAMES_SHOULD_BE_CAMEL_CASE INPUT_TYPE_SUFFIX INTERFACE_PREFIX INTERFACE_SUFFIX MERGED_NON_REPEATABLE_DIRECTIVE_ARGUMENTS NO_EXECUTABLE_DIRECTIVE_INTERSECTION NULLABLE_PATH_VARIABLE OBJECT_PREFIX OBJECT_SUFFIX OVERRIDDEN_FIELD_CAN_BE_REMOVED OVERRIDE_DIRECTIVE_CAN_BE_REMOVED OVERRIDE_MIGRATION_IN_PROGRESS QUERY_DOCUMENT_DECLARATION RESTY_FIELD_NAMES TAG_DIRECTIVE_USES_UNKNOWN_NAME TYPE_NAMES_SHOULD_BE_PASCAL_CASE TYPE_PREFIX TYPE_SUFFIX UNUSED_ENUM_TYPE } """ Stats generated from linting a schema against the graph's linter configuration. """ type LintStats { """Total number of lint errors.""" errorsCount: Int! """Total number of lint rules ignored.""" ignoredCount: Int! """Total number of lint rules violated.""" totalCount: Int! """Total number of lint warnings.""" warningsCount: Int! } """ The result of a failed call to GraphVariantMutation.linkPersistedQueryList when the specified list can't be found. """ type ListNotFoundError implements Error { listId: ID! message: String! } type Location { end: Coordinate start: Coordinate subgraphName: String } enum LoginFlowSource { INTERNAL_SSO } """Level of the log entry""" enum LogLevel { """Debug log entry""" DEBUG """Informational log entry""" INFO """Warning log entry""" WARN """Error log entry""" ERROR } """Order log message""" type LogMessage { """Timestamp in UTC""" timestamp: DateTime! """Log message contents""" message: String! """Log level""" level: LogLevel! } """Long type""" scalar Long type MarkChangesForOperationAsSafeResult { success: Boolean! message: String! """ Nice to have for the frontend since the Apollo cache is already watching for AffectedQuery to update. This might return null if no behavior changes were found for the affected operation ID. This is a weird situation that should never happen. """ affectedOperation: AffectedQuery } """ The result of the markCheckOperationsAsSafe and unmarkCheckOperationsAsSafe operations. """ type MarkCheckOperationsAsSafeResult { """True if the operations were updated successfully, false otherwise""" success: Boolean! """ A message indicating what was changed or what could not be changed successfully """ message: String! } union McpDefaultCollectionResult = OperationCollection | PermissionError """Dimensions that can be used for grouping / filtering MCP insights.""" enum McpInsightsTimeseriesReportDimension { """The ID of the agent gateway""" GATEWAY_ID """The ID of the agent gateway instance""" GATEWAY_INSTANCE_ID """The name of the MCP method being requested, e.g. `tools/call`""" MCP_METHOD_NAME """The ID of the tool being used if available""" TOOL_ID """The ID of the upstream service being called through the gateway""" UPSTREAM_ID } """The type and value for an MCP insights timeseries report dimension.""" type McpInsightsTimeseriesReportDimensionValue { """The type of dimension this represents.""" type: McpInsightsTimeseriesReportDimension! """The string value of this dimension.""" value: String } """ Lists of dimensions to include or exclude in the MCP insights timeseries report. Each list can have a maximum of 1000 entries. """ input McpInsightsTimeseriesReportFilterInInput { """Matches any MCP requests whose gateway instance ID is in this list.""" gatewayInstanceId: [String!] """Matches any MCP requests whose method name is in this list.""" mcpMethodName: [String!] """Matches any MCP requests whose tool ID is in this list.""" toolId: [String!] """Matches any MCP requests whose upstream ID is in this list.""" upstreamId: [String!] } """The filters available when using the MCP timeseries report.""" input McpInsightsTimeseriesReportFilterInput { """ Exclude MCP requests that match a specified set of dimensions. If the same dimension exists in both 'include' and 'exclude', an REQUEST_INVALID error will be returned. """ exclude: McpInsightsTimeseriesReportFilterInInput """Include MCP requests that match a specified set of dimensions.""" include: McpInsightsTimeseriesReportFilterInInput } """Metrics that are available from MCP insights.""" enum McpInsightsTimeseriesReportMetric { """The number of operations requested""" REQUEST_COUNT """The number of operations that resulted in at least one error""" REQUEST_WITH_ERROR_COUNT } """The type and value for an MCP insights timeseries report metric.""" type McpInsightsTimeseriesReportMetricValue { """The type of metric this represents.""" type: McpInsightsTimeseriesReportMetric! """The floating point value of this metric.""" value: Float! } """The data that is returned by the MCP insights timeseries report.""" type McpInsightsTimeseriesReportResult { """ A CSV representation of the results. This includes a header and rows that have a column for start and end timestamp and all requested dimensions and metrics. """ csv: String """ The result records, with each row having a start and end timestamp and a set of dimensions and metrics. """ records: [McpInsightsTimeseriesReportRow!]! } """ A single row of data that is returned by the MCP insights timeseries report. """ type McpInsightsTimeseriesReportRow { """The dimension values for this row, matching the requested dimensions.""" dimensions: [McpInsightsTimeseriesReportDimensionValue!]! """The exclusive end of the time bucket for this row.""" endExclusiveTimestamp: Timestamp! """The metric values for this row, matching the requested metrics.""" metrics: [McpInsightsTimeseriesReportMetricValue!]! """The start of the time bucket for this row.""" startTimestamp: Timestamp! } type MediaUploadInfo { csrfToken: String! maxContentLength: Int! url: String! } """ This type represents a conflict between two versions of a schema i.e. the current proposal and the updated source variant schema """ type MergeConflict { """The diffs that caused the conflict""" diffItems: [FlatDiffItem!]! """location of conflicts in the partialMergeSdl""" locationCoordinate: ParsedSchemaCoordinate """message explaining the conflict""" message: String } type MergedSdlWithConflictsData { subgraphsWithConflicts: [SubgraphWithConflicts!]! } union MergedSdlWithConflictsResult = MergedSdlWithConflictsData | NotFoundError type MeteredBillCreditGrantLineItem { amountInCents: Int! } """Represents an invoice-level discount applied to the upcoming bill""" type MeteredBillDiscountLineItem { """Amount in USD cents.""" amountInCents: Int! } type MeteredBillFlatFeeLineItem { amountInCents: Int! name: String! } type MeteredBillingSummary { """ Aggregated meter usage that has already been exported to our third-party billing provider (e.g. Stripe). Currently only supports monthly granularity. """ exportedMeterValues(end: Date, start: Date!): [MeterSummaries!]! upcomingBill: UpcomingMeteredBill! } type MeteredBillMeteredLineItem { amountInCents: Int! meterKind: MeterKind! } enum MeterKind { PERFORMANCE_ADDON_OPERATIONS STANDARD_OPERATIONS SUBSCRIPTION_MESSAGES } type MeterSummaries { aggregatedValues: [MeterValue!]! end: Date! start: Date! } type MeterValue { meterKind: MeterKind! value: Long! } union MoveOperationCollectionEntryResult = InvalidTarget | MoveOperationCollectionEntrySuccess | PermissionError type MoveOperationCollectionEntrySuccess { operation: OperationCollectionEntry! originCollection: OperationCollection! targetCollection: OperationCollection! } """ Input type to provide when running schema checks against multiple subgraph changes asynchronously for a federated supergraph. """ input MultiSubgraphCheckAsyncInput { """Configuration options for the check execution.""" config: HistoricQueryParametersInput! """The GitHub context to associate with the check.""" gitContext: GitContextInput! """ The graph ref of the Studio graph and variant to run checks against (such as `my-graph@current`). """ graphRef: ID """ The URL of the GraphQL endpoint that Apollo Sandbox introspected to obtain the proposed schema. Required if `isSandbox` is `true`. """ introspectionEndpoint: String """If `true`, the check was initiated automatically by a Proposal update.""" isProposal: Boolean """If `true`, the check was initiated by Apollo Sandbox.""" isSandbox: Boolean! """ The source variant that this check should use the operations check configuration from """ sourceVariant: String """The changed subgraph schemas to check.""" subgraphsToCheck: [SubgraphSdlCheckInput]! """ The user that triggered this check. If null, defaults to authContext to determine user. """ triggeredBy: ActorInput } """GraphQL mutations""" type Mutation { billing: BillingMutation plan(id: ID!): BillingPlanMutation updateSurvey(internalAccountId: String!, surveyId: String!, surveyIdVersion: Int!, surveyState: [SurveyQuestionInput!]!): Survey! """Cloud mutations""" cloud: CloudMutation! cloudTesting: CloudTestingMutation! """ Creates a new service catalog entry for a service connector schema template. """ createServiceCatalogEntry(input: CreateServiceCatalogInput!): ServiceCatalogType! """ Updates an existing service catalog entry by ID. Each input field is optional; fields left unset retain their current value. """ updateServiceCatalogEntry(id: UUID!, input: UpdateServiceCatalogInput!): ServiceCatalogType! """ Soft-deletes a service catalog entry by ID. Returns true if the entry was deleted. """ deleteServiceCatalogEntry(id: UUID!): Boolean! """ Soft-deletes every active version of a service, removing it from the catalog entirely. Returns the number of versions deleted. Distinct from `deleteServiceCatalogEntry`, which removes a single version by id. """ deleteServiceCatalog(serviceId: String!): Int! """ Grants an org access to a restricted catalog entry. Idempotent — a no-op if the org already has access. If `service_id` was previously unrestricted, this is its first grant and it becomes restricted to just the orgs with a grant from this point on. """ grantServiceCatalogAccess(serviceId: String!, orgId: String!): Boolean! """ Revokes an org's access to a restricted catalog entry. Returns whether a grant was actually removed. Revoking every remaining grant leaves the entry public again (no rows = public, per the spec). """ revokeServiceCatalogAccess(serviceId: String!, orgId: String!): Boolean! """ Add a tag to a specific graph artifact. - If the tag does not already exist, it will be created. - If the tag already exists, it will be reassigned to the provided graph artifact. """ assignGraphArtifactTag(artifact: GraphArtifactInput!, graphID: String!, tag: String!): AssignTagToGraphArtifactResult! """ Delete a tag from a graph. The tag and its full history are removed. Tags managed by Apollo cannot be deleted, such as variant latest tags. """ deleteGraphArtifactTag(graphID: String!, tag: String!): DeleteGraphArtifactTagResult! account(id: ID!): AccountMutation @deprecated(reason: "Use Mutation.organization instead.") addOidcConfigurationToBaseConnection(config: OidcConfigurationInput!, configurationKey: String!): SsoConnection """ Allows the frontend to check if a SSO configuration key is valid. This helps restrict access to the public SSO configuration page. """ checkSsoConfigurationKey(key: String!): Boolean! """ Finalize a password reset with a token included in the E-mail link, returns the corresponding login email when successful """ finalizePasswordReset(newPassword: String!, resetToken: String!): String """Join an account with a token""" joinAccount(accountId: ID!, joinToken: String!): Account me: IdentityMutation newAccount(companyUrl: String, id: ID!, organizationName: String, planId: String): Account """ Provides access to mutation fields for modifying a an organization with the provided ID. """ organization(id: ID!): AccountMutation """Ask for a user's password to be reset by E-mail""" resetPassword(email: String!): Void """Set the studio settings for the current user""" setUserSettings(newSettings: UserSettingsInput): UserSettings signUp(email: String!, fullName: String!, password: String!, trackingValues: UserTrackingInput): User ssoV2: SsoMutation! """ Provides access to mutation fields for modifying an Apollo user with the provided ID. """ user(id: ID!): UserMutation """ Provides access to mutation fields for modifying a Studio graph with the provided ID. """ graph(id: ID!): ServiceMutation newService(accountId: ID!, description: String, hiddenFromUninvitedNonAdminAccountMembers: Boolean! = false, id: ID!, name: String, onboardingArchitecture: OnboardingArchitecture, title: String): Service """Report a running GraphQL server's schema.""" reportSchema( """ Only sent if previously requested i.e. received ReportSchemaResult with withCoreSchema = true. This is a GraphQL schema document as a string. Note that for a GraphQL server with a core schema, this should be the core schema, not the API schema. """ coreSchema: String """Information about server and its schema.""" report: SchemaReport! ): ReportSchemaResult resolveAllInternalCronExecutions(group: String, name: String): Void resolveInternalCronExecution(id: ID!): CronExecution service(id: ID!): ServiceMutation """Set the subscriptions for a given email""" setSubscriptions(email: String!, subscriptions: [EmailCategory!]!, token: String!): EmailPreferences """ This is called by the form shown to users after they delete their user or organization account. """ submitPostDeletionFeedback(feedback: String!, targetIdentifier: ID!, targetType: DeletionTargetType!): Void """Mutation for basic engagement tracking in studio""" track(event: EventEnum!, graphID: String!, graphVariant: String! = "current"): Void """Apollo Kotlin usage tracking.""" trackApolloKotlinUsage( """Events to log""" events: [ApolloKotlinUsageEventInput!]! """ A random ID that is generated on first initialization of the Apollo Kotlin IJ/AS plugin on a given project """ instanceId: ID! """Properties to log""" properties: [ApolloKotlinUsagePropertyInput!]! ): Void """ Router usage tracking. Reserved to https://router.apollo.dev/telemetry (https://github.com/apollographql/orbiter). """ trackRouterUsage( """ If we think the router is being run on continuous integration then this will be populated """ ci: String """The OS that the router is running on""" os: String! """ A random ID that is generated on first startup of the Router. It is not persistent between restarts of the Router, but will be persistent for hot reloads """ sessionId: ID! """ A list of key count pairs that represents the a path into the config/arguments and the number of times that it occurred """ usage: [RouterUsageInput!]! """The version of the Router""" version: String! ): Void """ Rover session tracking. Reserved to https://rover.apollo.dev/telemetry (https://github.com/apollographql/orbiter). """ trackRoverSession(anonymousId: ID!, arguments: [RoverArgumentInput!]!, ci: String, command: String!, cwdHash: SHA256!, os: String!, remoteUrlHash: SHA256, sessionId: ID!, version: String!): Void """Unsubscribe a given email from all emails""" unsubscribeFromAll(email: String!, token: String!): EmailPreferences """Push a lead to Marketo by program ID""" pushMarketoLead( """Marketo program ID""" programId: ID! """Marketo program status""" programStatus: String """Marketo lead source""" source: String input: PushMarketoLeadInput! """Marketo cookie value (_mkto_trk)""" cookie: String ): Boolean! """Transfer Odyssey progress from one user to another""" transferOdysseyProgress( """Source user ID to transfer progress from""" from: ID! """Target user ID to transfer progress to""" to: ID! ): Boolean! """Publish an education event to the event system""" publishEDUEvent( """Type of the event being published""" type: String! """JSON string containing the event data""" data: String! ): Boolean! """Access course feedback mutations""" odysseyCourseFeedback: OdysseyCourseFeedbackMutations! """ Creates an [operation collection](https://www.apollographql.com/docs/studio/explorer/operation-collections/) for a given variant, or creates a [sandbox collection](https://www.apollographql.com/docs/studio/explorer/operation-collections/#sandbox-collections) without an associated variant. This field accepts up to 200 requests per minute. This rate may be temporarily adjusted based on system conditions. """ createOperationCollection( """The collection's description.""" description: String """ Whether the collection is a [sandbox collection](https://www.apollographql.com/docs/studio/explorer/operation-collections/#sandbox-collections). """ isSandbox: Boolean! """Whether the collection is shared across its associated organization.""" isShared: Boolean! """ The minimum role a user needs to edit this collection. Valid values: null, CONSUMER, OBSERVER, DOCUMENTER, CONTRIBUTOR, GRAPH_ADMIN. This value is ignored if `isShared` is `false`. The default value is `GRAPH_ADMIN`. """ minEditRole: UserPermission """The collection's name.""" name: String! """ The [graph ref](https://www.apollographql.com/docs/rover/conventions/#graph-refs) of the graph variants to associate the collection with. """ variantRefs: [ID!] ): CreateOperationCollectionResult! operationCollection(id: ID!): OperationCollectionMutation """ Provides access to mutation fields for modifying a GraphOS Schema Proposals with the provided ID. Learn more at https://www.apollographql.com/docs/graphos/delivery/schema-proposals """ proposal(id: ID!): ProposalMutationResult! @deprecated(reason: "Use GraphVariantMutation.proposal instead") proposalByVariantRef(variantRef: ID!): ProposalMutationResult! @deprecated(reason: "Use GraphVariantMutation.proposal instead") } """ ISO 8601 combined date and time without timezone. # Examples * `2015-07-01T08:59:60.123`, """ scalar NaiveDateTime type NamedIntrospectionArg { name: String description: String } type NamedIntrospectionArgNoDescription { name: String } """ The shared fields for a named introspection type. Currently this is returned for the top level value affected by a change. In the future, we may update this type to be an interface, which is extended by the more specific types: scalar, object, input object, union, interface, and enum For an in-depth look at where these types come from, see: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/659eb50d3/types/graphql/utilities/introspectionQuery.d.ts#L31-L37 """ type NamedIntrospectionType { kind: IntrospectionTypeKind name: String description: String } type NamedIntrospectionTypeNoDescription { name: String } """ Introspection values that can be children of other types for changes, such as input fields, objects in interfaces, enum values. In the future, this value could become an interface to allow fields specific to the types returned. """ type NamedIntrospectionValue { name: String description: String printedType: String } type NamedIntrospectionValueNoDescription { name: String printedType: String } """A non-federated service for a monolithic graph.""" type NonFederatedImplementingService { """Timestamp of when this implementing service was created.""" createdAt: Timestamp! """ Identifies which graph this non-implementing service belongs to. Formerly known as "service_id". """ graphID: String! """ Specifies which variant of a graph this implementing service belongs to". Formerly known as "tag". """ graphVariant: String! } """An error that occurs when a requested object is not found.""" type NotFoundError implements Error { """The error message.""" message: String! } enum NotificationStatus { ALL NONE } """An arbitrary JSON object.""" scalar Object """Represents an attempt at an Odyssey test or assessment""" type OdysseyAttempt { """Unique identifier for the attempt""" id: ID! """The test ID that was attempted""" testId: String! """When the attempt was started""" startedAt: Timestamp! """When the attempt was completed, if applicable""" completedAt: Timestamp """All responses submitted during this attempt""" responses: [OdysseyResponse!]! """Whether the attempt resulted in a pass""" pass: Boolean } """Represents an earned Odyssey certification""" type OdysseyCertification { """Unique identifier for this certification record""" id: ID! """The certification ID that was earned""" certificationId: String! """When the certification was earned""" earnedAt: Timestamp! """The owner of this certification""" owner: OdysseyCertificationOwner """Source system or method where the certification was earned""" source: String """Icon URL or identifier for the certification""" icon: String } """Owner information for an Odyssey certification""" type OdysseyCertificationOwner { """Unique identifier for the certification owner""" id: ID! """Full name of the certification owner""" fullName: String! } """Represents an Odyssey course enrollment and progress""" type OdysseyCourse { """Unique identifier for the course""" id: ID! """When the user enrolled in the course""" enrolledAt: Timestamp """When the course was completed, if applicable""" completedAt: Timestamp """The language the course is taken in""" language: String } """Namespace for course feedback mutations""" type OdysseyCourseFeedbackMutations { """Create a new feedback survey. Admin-only.""" createSurvey(input: CreateFeedbackSurveyInput!): CreateFeedbackSurveyPayload! """ Replace the questions on an existing feedback survey, bumping its version. Admin-only. """ updateSurvey(input: UpdateFeedbackSurveyInput!): UpdateFeedbackSurveyPayload! """ Assign a survey to one or more courses, replacing any existing assignment. Admin-only. """ assignSurveyToCourses(input: AssignSurveyToCoursesInput!): AssignSurveyToCoursesPayload! """Submit feedback for a completed course""" submitFeedback(input: CourseFeedbackInput!): SubmitFeedbackPayload! } """Namespace for course feedback queries""" type OdysseyCourseFeedbackQueries { """Get the feedback survey assigned to a course""" survey(courseId: ID!): FeedbackSurvey """ Get all feedback submissions for a specific course. Internal Apollo staff only. """ submissions(courseId: ID!): [CourseFeedback!]! """Get a feedback survey by ID. Internal Apollo staff only.""" surveyById(id: ID!): FeedbackSurvey """Get all feedback surveys. Internal Apollo staff only.""" surveys: [FeedbackSurvey!]! } """Input for creating or updating an Odyssey course enrollment""" input OdysseyCourseInput { """The course identifier""" courseId: String! """When the course was completed""" completedAt: Timestamp """Whether this is a beta version of the course""" isBeta: Boolean """The language the course is taken in""" language: String } """Represents a response to a question in an Odyssey attempt""" type OdysseyResponse { """Unique identifier for the response""" id: ID! """The question ID this response is for""" questionId: String! """The values provided as answers""" values: [OdysseyValue!]! """Whether this response was correct""" correct: Boolean } """Input for updating the correctness of an Odyssey response""" input OdysseyResponseCorrectnessInput { """The response ID to update""" id: ID! """Whether the response is correct""" correct: Boolean! } """Input for creating a response to an Odyssey question""" input OdysseyResponseInput { """The attempt ID this response belongs to""" attemptId: ID! """The question ID being answered""" questionId: String! """Whether the response is correct""" correct: Boolean """The values provided as answers""" values: [String!]! } """Represents a task within an Odyssey course""" type OdysseyTask { """Unique identifier for the task""" id: ID! """The value or answer provided for the task""" value: String """When the task was completed, if applicable""" completedAt: Timestamp } """Input for creating or updating an Odyssey task""" input OdysseyTaskInput { """The task identifier""" taskId: String! """The value or answer for the task""" value: String """When the task was completed""" completedAt: Timestamp } """Represents a single value in an Odyssey response""" type OdysseyValue { """Unique identifier for the value""" id: ID! """The actual value content""" value: String! } input OidcConfigurationInput { clientId: String! clientSecret: String! discoveryURI: String issuer: String! } input OidcConfigurationUpdateInput { clientId: String! clientSecret: String discoveryURI: String issuer: String! } type OidcConnection implements SsoConnection { clientId: ID! discoveryUri: String domains: [String!]! id: ID! idpId: ID! issuer: String! scim: SsoScimProvisioningDetails state: SsoConnectionState! @deprecated(reason: "Use stateV2 instead") stateV2: SsoConnectionStateV2! updatedAt: Timestamp! } enum OnboardingArchitecture { MONOLITH SUPERGRAPH } type OnboardingPlanOption { billingCycleAnchor: BillingCycleAnchor! canTransitionTo: Boolean! description: String excludedFeatures: [String!]! includedFeatures: [String!]! """Reasons why this plan option is not available for this organization""" ineligibleReasons: [PlanIneligibilityReason!]! isSelfService: Boolean! name: String! planReadableId: ID pricePerUnitDescription: String! priceSimpleDescription: String! promoCreditsInCents: Int totalDueOnSignupInCents: Int } type Operation { id: ID! name: String signature: String truncated: Boolean! } type OperationAcceptedChange { id: ID! graphID: ID! checkID: ID! operationID: String! change: StoredApprovedChange! acceptedAt: Timestamp! acceptedBy: Identity } """Columns of OperationCheckStats.""" enum OperationCheckStatsColumn { CACHED_REQUESTS_COUNT CLIENT_NAME CLIENT_VERSION OPERATION_SUBTYPE OPERATION_TYPE QUERY_ID QUERY_NAME SCHEMA_TAG SERVICE_ID TIMESTAMP UNCACHED_REQUESTS_COUNT } type OperationCheckStatsDimensions { clientName: String clientVersion: String operationSubtype: String operationType: String queryId: ID queryName: String schemaTag: String serviceId: ID } """ Filter for data in OperationCheckStats. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input OperationCheckStatsFilter { and: [OperationCheckStatsFilter!] """ Selects rows whose clientName dimension equals the given value if not null. To query for the null value, use {in: {clientName: [null]}} instead. """ clientName: String """ Selects rows whose clientVersion dimension equals the given value if not null. To query for the null value, use {in: {clientVersion: [null]}} instead. """ clientVersion: String in: OperationCheckStatsFilterIn not: OperationCheckStatsFilter """ Selects rows whose operationSubtype dimension equals the given value if not null. To query for the null value, use {in: {operationSubtype: [null]}} instead. """ operationSubtype: String """ Selects rows whose operationType dimension equals the given value if not null. To query for the null value, use {in: {operationType: [null]}} instead. """ operationType: String or: [OperationCheckStatsFilter!] """ Selects rows whose queryId dimension equals the given value if not null. To query for the null value, use {in: {queryId: [null]}} instead. """ queryId: ID """ Selects rows whose queryName dimension equals the given value if not null. To query for the null value, use {in: {queryName: [null]}} instead. """ queryName: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serviceId dimension equals the given value if not null. To query for the null value, use {in: {serviceId: [null]}} instead. """ serviceId: ID } """ Filter for data in OperationCheckStats. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input OperationCheckStatsFilterIn { """ Selects rows whose clientName dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientName: [String] """ Selects rows whose clientVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientVersion: [String] """ Selects rows whose operationSubtype dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationSubtype: [String] """ Selects rows whose operationType dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationType: [String] """ Selects rows whose queryId dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryId: [ID] """ Selects rows whose queryName dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryName: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serviceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serviceId: [ID] } type OperationCheckStatsMetrics { cachedRequestsCount: Long! uncachedRequestsCount: Long! } input OperationCheckStatsOrderBySpec { column: OperationCheckStatsColumn! direction: Ordering! } type OperationCheckStatsRecord { """Dimensions of OperationCheckStats that can be grouped by.""" groupBy: OperationCheckStatsDimensions! """Metrics of OperationCheckStats that can be aggregated over.""" metrics: OperationCheckStatsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """A list of saved GraphQL operations.""" type OperationCollection { """The timestamp when the collection was created.""" createdAt: Timestamp! """The user or other entity that created the collection.""" createdBy: Identity """ The collection's description. A `null` description was never set, and empty string description was set to be empty string by a user, or other entity. """ description: String """ If a user has any of these roles, they will be able to edit this collection. """ editRoles: [UserPermission!] @deprecated(reason: "deprecated in favour of minEditRole") id: ID! """Whether the current user has marked the collection as a favorite.""" isFavorite: Boolean! """ Whether the collection is a [sandbox collection](https://www.apollographql.com/docs/studio/explorer/operation-collections/#sandbox-collections). """ isSandbox: Boolean! """Whether the collection is shared across its associated organization.""" isShared: Boolean! """The timestamp when the collection was most recently updated.""" lastUpdatedAt: Timestamp! """The user or other entity that most recently updated the collection.""" lastUpdatedBy: Identity """ The minimum role a user needs to edit this collection. Valid values: null, CONSUMER, OBSERVER, DOCUMENTER, CONTRIBUTOR, GRAPH_ADMIN. This value is always `null` if `isShared` is `false`. If `null` when `isShared` is `true`, the minimum role is `GRAPH_ADMIN`. """ minEditRole: UserPermission """The collection's name.""" name: String! """Returns the operation in the collection with the specified ID, if any.""" operation(id: ID!): OperationCollectionEntryResult """A list of the GraphQL operations that belong to the collection.""" operations: [OperationCollectionEntry!]! """The permissions that the current user has for the collection.""" permissions: OperationCollectionPermissions! variants: [GraphVariant!]! } """A saved operation entry within an Operation Collection.""" type OperationCollectionEntry { collection: OperationCollection! """The timestamp when the entry was created.""" createdAt: Timestamp! """The user or other entity that created the entry.""" createdBy: Identity """ Details of the entry's associated operation, such as its `body` and `variables`. """ currentOperationRevision: OperationCollectionEntryState! id: ID! """The timestamp when the entry was most recently updated.""" lastUpdatedAt: Timestamp! """The user or other entity that most recently updated the entry.""" lastUpdatedBy: Identity """The entry's name.""" name: String! """ The entry's lexicographical ordering index within its containing collection. """ orderingIndex: String! } """Provides fields for modifying an operation in a collection.""" type OperationCollectionEntryMutation { moveToCollection(collectionId: ID!, lowerOrderingBound: String, upperOrderingBound: String): MoveOperationCollectionEntryResult! reorderEntry(lowerOrderingBound: String, upperOrderingBound: String): UpdateOperationCollectionResult """Updates the name of an operation.""" updateName(name: String!): UpdateOperationCollectionEntryResult """Updates the body, headers, and/or variables of an operation.""" updateValues(operationInput: OperationCollectionEntryStateInput!): UpdateOperationCollectionEntryResult } union OperationCollectionEntryMutationResult = NotFoundError | OperationCollectionEntryMutation | PermissionError """ Possible return values when querying for an entry in an operation collection (either the entry object or an `Error` object). """ union OperationCollectionEntryResult = NotFoundError | OperationCollectionEntry """ The most recent body, variable and header values of a saved operation entry. """ type OperationCollectionEntryState { """The raw body of the entry's GraphQL operation.""" body: String! """The timestamp when the entry state was created.""" createdAt: Timestamp! """The user or other entity that created this entry state.""" createdBy: Identity """Headers for the entry's GraphQL operation.""" headers: [OperationHeader!] """ The post operation workflow automation script for this entry's GraphQL operation """ postflightOperationScript: String """ The pre operation workflow automation script for this entry's GraphQL operation """ script: String """Variables for the entry's GraphQL operation, as a JSON string.""" variables: String } """Fields for creating or modifying an operation collection entry.""" input OperationCollectionEntryStateInput { """The operation's query body.""" body: String! """The operation's headers.""" headers: [OperationHeaderInput!] """The operation's postflight workflow script""" postflightOperationScript: String """The operation's preflight workflow script""" script: String """The operation's variables.""" variables: String } """ Provides fields for modifying an [operation collection](https://www.apollographql.com/docs/studio/explorer/operation-collections/). This fields on this type accepts up to 200 requests per minute combined. This rate may be temporarily adjusted based on system conditions. """ type OperationCollectionMutation { """Adds an operation to this collection.""" addOperation(name: String!, operationInput: OperationCollectionEntryStateInput!): AddOperationCollectionEntryResult """Adds operations to this collection.""" addOperations(operations: [AddOperationInput!]!): AddOperationCollectionEntriesResult addToVariant(variantRef: ID!): AddOperationCollectionToVariantResult! @deprecated(reason: "Will throw NotImplemented") """ Deletes this operation collection. This also deletes all of the collection's associated operations. """ delete: DeleteOperationCollectionResult """Deletes an operation from this collection.""" deleteOperation(id: ID!): RemoveOperationCollectionEntryResult duplicateCollection(description: String, isSandbox: Boolean!, isShared: Boolean!, name: String!, variantRef: ID): DuplicateOperationCollectionResult! operation(id: ID!): OperationCollectionEntryMutationResult removeFromVariant(variantRef: ID!): RemoveOperationCollectionFromVariantResult! @deprecated(reason: "Will throw NotImplemented") """ Updates the minimum role a user needs to be able to modify this collection. """ setMinEditRole(editRole: UserPermission): UpdateOperationCollectionResult """Updates this collection's description.""" updateDescription(description: String): UpdateOperationCollectionResult """ Updates whether the current user has marked this collection as a favorite. """ updateIsFavorite(isFavorite: Boolean!): UpdateOperationCollectionResult """ Updates whether this collection is shared across its associated organization. """ updateIsShared(isShared: Boolean!): UpdateOperationCollectionResult """Updates this operation collection's name.""" updateName(name: String!): UpdateOperationCollectionResult } """ Whether the current user can perform various actions on the associated collection. """ type OperationCollectionPermissions { """ Whether the current user can edit operations in the associated collection. """ canEditOperations: Boolean! """ Whether the current user can delete or update the associated collection's metadata, such as its name and description. """ canManage: Boolean! """ Whether the current user can read operations in the associated collection. """ canReadOperations: Boolean! } union OperationCollectionResult = NotFoundError | OperationCollection | PermissionError | ValidationError type OperationDetails { """ A hashed representation of the signature, commonly used as the operation ID. """ id: String! """The operation name or null if the operation is unnamed.""" name: String """First 128 characters of query signature for display.""" signature: String } type OperationDocument { """Operation document body""" body: String! """Operation name""" name: String } input OperationDocumentInput { """Operation document body""" body: String! """Operation name""" name: String } """Columns of OperationFetchStats.""" enum OperationFetchStatsColumn { CLIENT_NAME CLIENT_VERSION CONNECTOR_SOURCE FETCHES_WITH_ERRORS_COUNT FETCH_COUNT FETCH_LATENCY_HISTOGRAM FETCH_SERVICE_ID FETCH_SERVICE_NAME OPERATION_ID OPERATION_NAME OPERATION_TYPE SCHEMA_TAG SERVICE_ID TIMESTAMP } type OperationFetchStatsDimensions { clientName: String clientVersion: String connectorSource: String fetchServiceId: ID fetchServiceName: String operationId: String operationName: String operationType: String schemaTag: String serviceId: ID } """ Filter for data in OperationFetchStats. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input OperationFetchStatsFilter { and: [OperationFetchStatsFilter!] """ Selects rows whose clientName dimension equals the given value if not null. To query for the null value, use {in: {clientName: [null]}} instead. """ clientName: String """ Selects rows whose clientVersion dimension equals the given value if not null. To query for the null value, use {in: {clientVersion: [null]}} instead. """ clientVersion: String """ Selects rows whose connectorSource dimension equals the given value if not null. To query for the null value, use {in: {connectorSource: [null]}} instead. """ connectorSource: String """ Selects rows whose fetchServiceId dimension equals the given value if not null. To query for the null value, use {in: {fetchServiceId: [null]}} instead. """ fetchServiceId: ID """ Selects rows whose fetchServiceName dimension equals the given value if not null. To query for the null value, use {in: {fetchServiceName: [null]}} instead. """ fetchServiceName: String in: OperationFetchStatsFilterIn not: OperationFetchStatsFilter """ Selects rows whose operationId dimension equals the given value if not null. To query for the null value, use {in: {operationId: [null]}} instead. """ operationId: String """ Selects rows whose operationName dimension equals the given value if not null. To query for the null value, use {in: {operationName: [null]}} instead. """ operationName: String """ Selects rows whose operationType dimension equals the given value if not null. To query for the null value, use {in: {operationType: [null]}} instead. """ operationType: String or: [OperationFetchStatsFilter!] """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serviceId dimension equals the given value if not null. To query for the null value, use {in: {serviceId: [null]}} instead. """ serviceId: ID } """ Filter for data in OperationFetchStats. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input OperationFetchStatsFilterIn { """ Selects rows whose clientName dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientName: [String] """ Selects rows whose clientVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientVersion: [String] """ Selects rows whose connectorSource dimension is in the given list. A null value in the list means a row with null for that dimension. """ connectorSource: [String] """ Selects rows whose fetchServiceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ fetchServiceId: [ID] """ Selects rows whose fetchServiceName dimension is in the given list. A null value in the list means a row with null for that dimension. """ fetchServiceName: [String] """ Selects rows whose operationId dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationId: [String] """ Selects rows whose operationName dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationName: [String] """ Selects rows whose operationType dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationType: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serviceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serviceId: [ID] } type OperationFetchStatsMetrics { fetchCount: Long! fetchLatencyHistogram: DurationHistogram! fetchesWithErrorsCount: Long! } input OperationFetchStatsOrderBySpec { column: OperationFetchStatsColumn! direction: Ordering! } type OperationFetchStatsRecord { """Dimensions of OperationFetchStats that can be grouped by.""" groupBy: OperationFetchStatsDimensions! """Metrics of OperationFetchStats that can be aggregated over.""" metrics: OperationFetchStatsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """Saved headers on a saved operation.""" type OperationHeader { """The header's name.""" name: String! """The header's value.""" value: String! } input OperationHeaderInput { """The header's name.""" name: String! """The header's value.""" value: String! } type OperationInfoFilter { id: String! } input OperationInfoFilterInput { id: String! } """ The error returned when another operation updating this tag is running. """ type OperationInProgressError implements Error { """The error message""" message: String! } input OperationInsightsListFilterInInput { """ Filters results to operations whose requests were reported with any of the given client names. """ clientName: [String] """ Filters results to operations whose requests were reported with any of the given client versions. """ clientVersion: [String] } input OperationInsightsListFilterInput { """ Filters results to operations whose requests were reported with this exact client name. """ clientName: String """ Filters results to operations whose requests were reported with this exact client version. """ clientVersion: String """ Filters that match if the value is one of the given values. Multiple conditions inside `in` are ANDed together. """ in: OperationInsightsListFilterInInput """ If set, restricts results to operations whose un-named status matches this value. """ isUnnamed: Boolean """ If set, restricts results to operations whose registered status matches this value. """ isUnregistered: Boolean """ Restricts results to operations of the given GraphQL types (e.g. QUERY, MUTATION, SUBSCRIPTION). """ operationTypes: [OperationType!] """ A list of alternative filter conditions; results match if any of them match. """ or: [OperationInsightsListFilterInput!] """ Filters on partial string matches against the operation name or signature. """ search: String } type OperationInsightsListItem { """ The fraction (0.0 to 1.0) of requests for this operation that were served from a cache. """ cacheHitRate: Float! """ The p50 of the latency across cached requests. This can be null depending on the filter and sort order. """ cacheTtlP50Ms: Float """ A substring of the query signature for unnamed operations, otherwise the operation name. """ displayName: String! """The number of requests for this operation that resulted in errors.""" errorCount: Long! """ The rate per minute of requests for this operation that resulted in errors. """ errorCountPerMin: Float! """The percentage of requests for this operation that resulted in errors.""" errorPercentage: Float! """The unique id for this operation.""" id: ID! """The operation name or null if the operation is unnamed.""" name: String """ The total number of requests for this operation in the selected time range. """ requestCount: Long! """ The rate of requests per minute for this operation in the selected time range. """ requestCountPerMin: Float! """ The p50 of the latency across all requests. This can be null depending on the filter and sort order. """ serviceTimeP50Ms: Float """ The p90 of the latency across all requests. This can be null depending on the filter and sort order. """ serviceTimeP90Ms: Float """ The p95 of the latency across all requests. This can be null depending on the filter and sort order. """ serviceTimeP95Ms: Float """ The p99 of the latency across all requests. This can be null depending on the filter and sort order. """ serviceTimeP99Ms: Float """ The query signature size as a number of UTF8 bytes. This can be null if the sort order is not SIGNATURE_BYTES. """ signatureBytes: Long """ The total duration across all requests. This can be null depending on the filter and sort order. """ totalDurationMs: Float """ The GraphQL operation type, or null if the operation type could not be determined from the signature. """ type: OperationType } enum OperationInsightsListOrderByColumn { CACHE_HIT_RATE CACHE_TTL_P50 ERROR_COUNT ERROR_COUNT_PER_MIN ERROR_PERCENTAGE OPERATION_NAME REQUEST_COUNT REQUEST_COUNT_PER_MIN SERVICE_TIME_P50 SERVICE_TIME_P90 SERVICE_TIME_P95 SERVICE_TIME_P99 SIGNATURE_BYTES TOTAL_DURATION_MS } input OperationInsightsListOrderByInput { """ The order column used for the operation results. Defaults to ordering by operation names. """ column: OperationInsightsListOrderByColumn! """ The direction used to order operation results. Defaults to ascending order. """ direction: Ordering! } """Information about pagination in a connection.""" type OperationInsightsListPageInfo { """When paginating forwards, the cursor to continue.""" endCursor: String """When paginating backwards, the cursor to continue.""" startCursor: String } """ The named type and version of the clients to include or exclude in the operation timeseries report. """ input OperationInsightsTimeseriesReportClientFilterInInput { """The client name.""" clientName: String """The client version.""" clientVersion: String } enum OperationInsightsTimeseriesReportDimension { CLIENT_NAME CLIENT_VERSION GRAPH_VARIANT OPERATION_ID OPERATION_NAME OPERATION_SUBTYPE OPERATION_TYPE PERSISTED_QUERY_ID } """ The type and value for an operation insights timeseries report dimension. """ type OperationInsightsTimeseriesReportDimensionValue { """The type of dimension this represents.""" type: OperationInsightsTimeseriesReportDimension! """ The string value of this dimension. Null for operations without this dimension (e.g., unnamed operations). """ value: String } """ Lists of dimensions to include or exclude in the operations timeseries report. Each list can have a maximum of 1000 entries. """ input OperationInsightsTimeseriesReportFilterInInput { """Include or exclude certain clients""" clients: [OperationInsightsTimeseriesReportClientFilterInInput] """Matches any operations with IDs in this list.""" operationId: [String] """Matches any operations with names in this list.""" operationName: [String] """ Matches any operations requested by any persisted query ID in this list. The persisted query ID is only available when using router v2.2.0 and onwards. """ persistedQueryId: [String] """Matches any operations requested from any variant in this list.""" variantName: [String] } """The filters available when using the operation timeseries report.""" input OperationInsightsTimeseriesReportFilterInput { """ Exclude operations that match a specified set of dimensions. If the same dimension exists in both 'include' and 'exclude', an REQUEST_INVALID error will be returned. """ exclude: OperationInsightsTimeseriesReportFilterInInput """Include operations that match a specified set of dimensions.""" include: OperationInsightsTimeseriesReportFilterInInput """ Set to true to only return named operations, false to return only unnamed operations, or null for both. """ named: Boolean """ Include only certain types of operations (query, mutation, subscription). Operation types may not be recorded correctly for users not on Apollo router. """ operationTypes: [OperationType!] """ Set to true to only return operations that were requested by a PQ ID, false to return only operations that were requested by operation body, or null for both. The persisted query ID is only available when using router v2.2.0 and onwards. """ requestedByPersistedQuery: Boolean } enum OperationInsightsTimeseriesReportMetric { REQUEST_COUNT REQUEST_LATENCY_P50_MS REQUEST_LATENCY_P90_MS REQUEST_LATENCY_P99_MS REQUEST_WITH_ERROR_COUNT } """The type and value for an operation insights timeseries report metric.""" type OperationInsightsTimeseriesReportMetricValue { """The type of metric this represents.""" type: OperationInsightsTimeseriesReportMetric! """The floating point value of this metric.""" value: Float! } """ The metric and direction to use as the secondary sort order for the operation timeseries report. The primary sort order will always be time. """ input OperationInsightsTimeseriesReportOrderByInput { """ The ordering used for the metrics results. This metric must be included in the requested metrics. """ column: OperationInsightsTimeseriesReportMetric! """The direction used to order the results.""" direction: Ordering! } """The data that is returned by the operation insights timeseries report.""" type OperationInsightsTimeseriesReportResult { """ A CSV representation of the results. This includes a header and rows that have a column for start and end timestamp and all requested dimensions and metrics. """ csv: String """ The result records, with each row having a start and end timestamp and a set of dimensions and metrics. """ records: [OperationInsightsTimeseriesReportRow!]! } """ A single row of data that is returned by the operation insights timeseries report. """ type OperationInsightsTimeseriesReportRow { """The dimension values for this row, matching the requested dimensions.""" dimensions: [OperationInsightsTimeseriesReportDimensionValue!]! """The exclusive end of the time bucket for this row.""" endExclusiveTimestamp: Timestamp! """The metric values for this row, matching the requested metrics.""" metrics: [OperationInsightsTimeseriesReportMetricValue!]! """The start of the time bucket for this row.""" startTimestamp: Timestamp! } """Operation name filter configuration for a graph.""" type OperationNameFilter { """name of the operation by the user and reported alongside metrics""" name: String! version: String } """Options to filter by operation name.""" input OperationNameFilterInput { """name of the operation set by the user and reported alongside metrics""" name: String! version: String } type OperationsCheckConfiguration { """ During operation checks, if this option is enabled, the check will not fail or mark any operations as broken/changed if the default value has changed, only if the default value is removed completely. """ downgradeDefaultValueChange: Boolean! """ During operation checks, if this option is enabled, it evaluates a check run against zero operations as a pass instead of a failure. """ downgradeStaticChecks: Boolean! """ During the operations check, ignore clients matching any of the filters. """ excludedClients: [ClientFilter!]! """ During the operations check, ignore operations matching any of the filters. """ excludedOperationNames: [OperationNameFilter!]! """ During the operations check, ignore operations matching any of the filters. """ excludedOperations: [OperationInfoFilter!]! """ The start of the time range for the operations check, expressed as an offset from the time the check request was received (in seconds) or an ISO-8601 timestamp. This was either provided by the user or computed from variant- or graph-level settings. """ from: String! @deprecated(reason: "Use fromNormalized instead") """The start of the time range for the operations check.""" fromNormalized: Timestamp! """ During the operations check, fetch operations from the metrics data for variants. """ includedVariants: [String!]! """ During the operations check, ignore operations that executed less than times in the time range. """ operationCountThreshold: Int! """ Duration the operations check, ignore operations that constituted less than % of the operations in the time range. """ operationCountThresholdPercentage: Float! """ The end of the time range for the operations check, expressed as an offset from the time the check request was received (in seconds) or an ISO-8601 timestamp. This was either provided by the user or computed from variant- or graph-level settings. """ to: String! @deprecated(reason: "Use toNormalized instead") """The end of the time range for the operations check.""" toNormalized: Timestamp! } input OperationsCheckConfigurationOverridesInput { """ During the operations check, ignore clients matching any of the filters. Providing null will use variant- or graph-level settings instead. """ excludedClients: [ClientFilterInput!] """ During the operations check, ignore operations matching any of the filters. Providing null will use variant- or graph-level settings instead. """ excludedOperationNames: [OperationNameFilterInput!] """ During the operations check, ignore operations matching any of the filters. Providing null will use variant- or graph-level settings instead. """ excludedOperations: [OperationInfoFilterInput!] """ The start of the time range for the operations check, expressed as an offset from the time the check request is received (in seconds) or an ISO-8601 timestamp. Providing null here and useMaxRetention as false will use variant- or graph-level settings instead. It is an error to provide a non-null value here and useMaxRetention as true. """ from: String """ During the operations check, fetch operations from the metrics data for variants. Providing null will use variant- or graph-level settings instead. """ includedVariants: [String!] """ During the operations check, ignore operations that executed less than times in the time range. Providing null will use variant- or graph-level settings instead. """ operationCountThreshold: Int """ During the operations check, ignore operations that executed less than times in the time range. Expected values are between 0% and 5%. Providing null will use variant- or graph-level settings instead. """ operationCountThresholdPercentage: Float """ The end of the time range for the operations check, expressed as an offset from the time the check request is received (in seconds) or an ISO-8601 timestamp. Providing null here and useMaxRetention as false will use variant- or graph-level settings instead. It is an error to provide a non-null value here and useMaxRetention as true. """ to: String """ During the operations check, use the maximum time range allowed by the graph's plan's retention. Providing false here and from/to as null will use variant- or graph-level settings instead. It is an error to provide true here and from/to as non-null. """ useMaxRetention: Boolean! = false } type OperationsCheckResult { """Graph ID of the variant""" graphID: String! id: ID! """Operations checked against but not affecting the diff.""" unaffectedOperations: [OperationDetails!] """The variant that was used as a base to check against""" checkedVariant: GraphVariant! """ Indication of the success of the change, either failure, warning, or notice. """ checkSeverity: ChangeSeverity! """Number of operations that were validated during schema diff""" numberOfCheckedOperations: Int! """List of schema changes with associated affected clients and operations""" changes: [Change!]! """Summary/counts for all changes in diff""" changeSummary: ChangeSummary! """Total number of schema changes, excluding any truncation.""" totalNumberOfChanges: Int! """ Indicates whether the changes for this operation check were truncated due to their large quantity. """ areChangesTruncated: Boolean! """Operations affected by all changes in diff""" affectedQueries( """The maximum number of affected queries to return. Must be 50 or fewer.""" limit: Int """ How many items to skip before starting to return results. For example, with `limit: 10` and `offset: 10`, you get items 11–20. """ offset: Int """Optional filters to narrow down which affected queries are returned.""" filter: AffectedQueriesFilterInput ): [AffectedQuery!] """Returns an affected operation and its changes for this check""" affectedQuery(id: ID!): AffectedQuery """ Number of affected operations that are neither marked as SAFE or IGNORED. """ numberOfAffectedOperations: Int! """ Total number of affected operations including ones marked SAFE or IGNORED. """ totalNumberOfAffectedOperations: Int! workflowTask: OperationsCheckTask! createdAt: Timestamp! """The threshold that was crossed; null if the threshold was not exceeded""" crossedOperationThreshold: Int """ Whether enhanced operation checks were active for this check. Null for old checks or checks that never queried druid. """ enhancedModeEnabled: Boolean """ Usage stats behind enhanced mode; null when enhancedModeEnabled is null. """ enhancedModeStats: EnhancedModeStats } type OperationsCheckTask implements CheckWorkflowTask { completedAt: Timestamp createdAt: Timestamp! graphID: ID! id: ID! """ The result of the operations check. This will be null when the task is initializing or running, or when the build task fails (which is a prerequisite task to this one). """ result: OperationsCheckResult status: CheckWorkflowTaskStatus! targetURL: String workflow: CheckWorkflow! } enum OperationType { MUTATION QUERY SUBSCRIPTION } type OperationValidationError { message: String! } """Cloud Router order""" type Order { """Order identifier""" id: ID! """Order type""" orderType: OrderType! """Order status""" status: OrderStatus! """Reason for ERRORED or ROLLING_BACK orders""" reason: String """ Completion percentage of the order (between 0 and 100) This will only return data for IN_PROGRESS, COMPLETED, or SUPERSEDED states """ completionPercentage: Int """When this Order was created""" createdAt: NaiveDateTime! """Last time this Order was updated""" updatedAt: NaiveDateTime logs: [LogMessage!]! """Router associated with this Order""" router: Router! """Shard associated with this Order""" shard: Shard! """Checks if the service is updated""" serviceReady: Boolean! """Introspect why call to `ready` failed""" introspectReady: String! """Checks if we can serve requests through the external endpoint""" readyExternal: Boolean! } """The order does not exist""" type OrderDoesNotExistError { tryAgainSeconds: Int! } """Catch-all failure result of a failed order mutation.""" type OrderError { """Error message""" message: String! } """The direction in which results are ordered.""" enum Ordering { ASCENDING DESCENDING } enum OrderingDirection { ASC DESC } type OrderMutation { """Set default environment variables""" setDefaultVars: OrderResult! """Update secrets""" updateSecrets: OrderResult! """Create CNAME record""" createCname: OrderResult! """Delete API key""" deleteApiKey: OrderResult! """Delete CNAME""" deleteCname: OrderResult! """Rollback CNAME record""" rollbackCname: OrderResult! """Rollback router information""" rollbackInfo: OrderResult! """Rollback router information""" rollbackSecrets: OrderResult! """Update router information""" updateInfo: OrderResult! """Update order status""" updateStatus(status: OrderStatus!, updateRouter: Boolean): OrderResult! """Update order status with a reason and cause""" updateStatusWithReason(status: OrderStatus!, reason: String!, cause: ReasonCause!, updateRouter: Boolean): OrderResult! """Force rollback of the order""" forceRollback: OrderResult! """Create an ALB rule""" createAlbRule: OrderResult! """Create an IAM Role""" createIamRole: OrderResult! """Create a security group""" createSecurityGroup: OrderResult! """Create an ECS service""" createService: OrderResult! """Create a target group""" createTargetGroup: OrderResult! """Create a task definition""" createTaskDefinition: OrderResult! """Delete an ALB rule""" deleteAlbRule: OrderResult! """Delete an IAM Role""" deleteIamRole: OrderResult! """Delete a security group""" deleteSecurityGroup: OrderResult! """Delete an ECS service""" deleteService: OrderResult! """Delete a target group""" deleteTargetGroup: OrderResult! """Delete a task definition""" deleteTaskDefinition: OrderResult! """Update an ALB rule""" updateAlbRule: OrderResult! """Rollback an ALB rule""" rollbackAlbRule: OrderResult! """Rollback an IAM Role""" rollbackIamRole: OrderResult! """Rollback a security group""" rollbackSecurityGroup: OrderResult! """Rollback an ECS service""" rollbackService: OrderResult! """Rollback a target group""" rollbackTargetGroup: OrderResult! """Rollback a task definition""" rollbackTaskDefinition: OrderResult! """Update an IAM Role""" updateIamRole: OrderResult! """Update a Service""" updateService: OrderResult! """Update a task definition""" updateTaskDefinition: OrderResult! } """Return an Order or an error""" union OrderOrError = Order | OrderDoesNotExistError """Represents the possible outcomes of an order mutation""" union OrderResult = Order | InvalidInputErrors | OrderError """Represents the different status for an order""" enum OrderStatus { """New Order in progress""" PENDING """Order was successfully completed""" COMPLETED """ Order is currently rolling back All resources created as part of this Order are being deleted """ ROLLING_BACK """Order was unsuccessful""" ERRORED """ Order has been superseded by another, more recent order This can happen if two update orders arrive in close succession and we already started to process the newer order first. """ SUPERSEDED } """Represents the different types of order""" enum OrderType { """Create a new Cloud Router""" CREATE_ROUTER """Destroy an existing Cloud Router""" DESTROY_ROUTER """Update an existing Cloud Router""" UPDATE_ROUTER } """A reusable invite link for an organization.""" type OrganizationInviteLink { createdAt: Timestamp! """ A joinToken that can be passed to Mutation.joinAccount to join the organization. """ joinToken: String! """ The role that the user will receive if they join the organization with this link. """ role: UserPermission! } type OrganizationSSO { defaultRole: UserPermission! idpid: ID! provider: OrganizationSSOProvider! } enum OrganizationSSOProvider { APOLLO } """Information about pagination in a connection.""" type PageInfo { """When paginating forwards, the cursor to continue.""" endCursor: String """When paginating forwards, are there more items?""" hasNextPage: Boolean! """When paginating backwards, are there more items?""" hasPreviousPage: Boolean! """When paginating backwards, the cursor to continue.""" startCursor: String } """PagerDuty notification channel""" type PagerDutyChannel implements Channel { id: ID! name: String! routingKey: String! subscriptions: [ChannelSubscription!]! } """PagerDuty notification channel parameters""" input PagerDutyChannelInput { name: String routingKey: String! } type ParentChangeProposalComment implements ChangeProposalComment & ProposalComment { createdAt: Timestamp! """null if the user is deleted""" createdBy: Identity id: ID! message: String! """ true if the schemaCoordinate this comment is on doesn't exist in the diff between the most recent revision & the base sdl """ outdated: Boolean! replies: [ReplyChangeProposalComment!]! replyCount: Int! schemaCoordinate: String! """ '#@!api!@#' for api schema, '#@!supergraph!@#' for supergraph schema, subgraph otherwise """ schemaScope: String! status: CommentStatus! """null if never updated""" updatedAt: Timestamp } type ParentGeneralProposalComment implements GeneralProposalComment & ProposalComment { createdAt: Timestamp! """null if the user is deleted""" createdBy: Identity id: ID! message: String! replies: [ReplyGeneralProposalComment!]! replyCount: Int! status: CommentStatus! """null if never updated""" updatedAt: Timestamp } union ParentProposalComment = ParentChangeProposalComment | ParentGeneralProposalComment """SAML certificate information parsed from an IdP's metadata XML""" type ParsedSamlCertInfo { notAfter: Timestamp! notBefore: Timestamp! pem: String! subjectDN: String! } """SAML metadata parsed from an IdP's metadata XML""" type ParsedSamlIdpMetadata { encryptionCerts: [ParsedSamlCertInfo!]! entityId: String! ssoUrl: String! verificationCerts: [ParsedSamlCertInfo!]! wantsSignedRequests: Boolean! } type ParsedSchemaCoordinate { argName: String fieldName: String isDirective: Boolean typeName: String! } """The schema for a single published subgraph in Studio.""" type PartialSchema { """The subgraph schema document as SDL.""" sdl: String! """Timestamp for when the partial schema was created""" createdAt: Timestamp! """ If this sdl is currently actively composed in the gateway, this is true """ isLive: Boolean! } """ Input for registering a partial schema to an implementing service. One of the fields must be specified (validated server-side). If a new partialSchemaSDL is passed in, this operation will store it before creating the association. If both the sdl and hash are specified, an error will be thrown if the provided hash doesn't match our hash of the sdl contents. If the sdl field is specified, the hash does not need to be and will be computed server-side. """ input PartialSchemaInput { """ Hash of the partial schema to associate; error is thrown if only the hash is specified and the hash has not been seen before """ hash: String """ Contents of the partial schema in SDL syntax, but may reference types that aren't defined in this document """ sdl: String } """ An error that's returned when the current user doesn't have sufficient permissions to perform an action. """ type PermissionError implements Error { """The error message.""" message: String! } """Information about the act of publishing operations to the list""" type PersistedQueriesPublish { operationCounts: PersistedQueriesPublishOperationCounts! publishedAt: Timestamp! } type PersistedQueriesPublishOperationCounts { """The number of new operations added to the list by this publish.""" added: Int! """ The number of operations included in this publish whose metadata and body were unchanged from the previous list revision. """ identical: Int! """The number of operations removed from the list by this publish.""" removed: Int! """ The number of operations in this list that were not mentioned by this publish. """ unaffected: Int! """ The number of operations whose metadata or body were changed by this publish. """ updated: Int! } type PersistedQuery { body: GraphQLDocument! """ An optional client name associated with the operation. Two operations with the same ID but different client names are treated as distinct operations. An operation with the same ID and a null client name is treated as a distinct operation as well. """ clientName: String firstPublishedAt: Timestamp! """ An opaque identifier for this operation. For a given client name, this should map uniquely to an operation body; editing the body should generally result in a new ID. Apollo's tools generally use the lowercase hex SHA256 of the operation body. Note that for (eg) Apollo Client keyFields, you should use both `id` and `clientName`. """ id: ID! lastPublishedAt: Timestamp! """The GraphQL operation name for this operation.""" name: String! type: OperationType! } type PersistedQueryConnection { edges: [PersistedQueryEdge!]! pageInfo: PageInfo! totalCount: Int! } type PersistedQueryEdge { cursor: String! node: PersistedQuery! } """Filter options for persisted query operations""" input PersistedQueryFilterInput { """Only include operations whose client name is included in this list""" clients: [String] """ Only include operations whose last published date is before or after the given date """ lastPublishedAt: TimestampFilterInput """ Only include operations whose names contain this case-insensitive substring """ name: String } """Full identifier for an operation in a Persisted Query List.""" input PersistedQueryIdInput { """ An optional client name to associate with the operation. Two operations with the same ID but different client names are treated as distinct operations. An operation with the same ID and a null client name is treated as a distinct operation as well. """ clientName: String """ An opaque identifier for this operation. For a given client name, this should map uniquely to an operation body; editing the body should generally result in a new ID. Apollo's tools generally use the lowercase hex SHA256 of the operation body. """ id: ID! } """Operations to be published to the Persisted Query List.""" input PersistedQueryInput { """ The GraphQL document for this operation, including all necessary fragment definitions. """ body: GraphQLDocument! """ An optional client name to associate with the operation. Two operations with the same ID but different client names are treated as distinct operations. """ clientName: String """ An opaque identifier for this operation. This should map uniquely to an operation body; editing the body should generally result in a new ID. Apollo's tools generally use the lowercase hex SHA256 of the operation body. """ id: ID! """ A name for the operation. Typically this is the name of the actual GraphQL operation in the body. This does not need to be unique within a Persisted Query List; as a client project evolves and its operations change, multiple operations with the same name (but different body and id) can be published. """ name: String! """The operation's type.""" type: OperationType! } """A Persisted Query List for a graph.""" type PersistedQueryList { builds(after: String, before: String, first: Int, last: Int): PersistedQueryListBuildConnection! """ Distinct client names associated with all operations in this Persisted Query List, if any. """ clientNames(first: Int): StringConnection! createdAt: Timestamp! createdBy: User """The current build of this PQL.""" currentBuild: PersistedQueryListBuild! description: String! graph: Service! """The immutable ID for this Persisted Query List.""" id: ID! lastUpdatedAt: Timestamp! """All variants linked to this Persisted Query List, if any.""" linkedVariants: [GraphVariant!]! """The list's name; can be changed and does not need to be unique.""" name: String! operation( """ An optional client name associated with the operation. Two operations with the same ID but different client names are treated as distinct operations. An operation with the same ID and a null client name is treated as a distinct operation as well. """ clientName: String """ An opaque identifier for this operation. For a given client name, this should map uniquely to an operation body; editing the body should generally result in a new ID. Apollo's tools generally use the lowercase hex SHA256 of the operation body. """ id: ID! ): PersistedQuery """All operations in this Persisted Query List, if any.""" operations( after: String before: String """Filter criteria for persisted query operations""" filter: PersistedQueryFilterInput first: Int last: Int """Sort criteria for persisted query operations""" sort: PersistedQuerySortInput ): PersistedQueryConnection! } """ Information about a particular revision of the list, as produced by a particular publish. """ type PersistedQueryListBuild { """ A unique ID for this build revision; primarily useful as a client cache ID. """ id: String! """The persisted query list that this build built.""" list: PersistedQueryList! """ The chunks that made up this build. We do not commit to keeping the full contents of older revisions indefinitely, so this may be null for suitably old revisions. """ manifestChunks: [PersistedQueryListManifestChunk!] """Information about the publish operation that created this build.""" publish: PersistedQueriesPublish! """ The revision of this Persisted Query List. Revision 0 is the initial empty list; each publish increments the revision by 1. """ revision: Int! """ The total number of operations in the list after this build. Compare to PersistedQueriesPublish.operationCounts. """ totalOperationsInList: Int! } type PersistedQueryListBuildConnection { edges: [PersistedQueryListBuildEdge!]! pageInfo: PageInfo! } type PersistedQueryListBuildEdge { cursor: String! node: PersistedQueryListBuild! } type PersistedQueryListManifestChunk { """ An immutable identifier for this particular chunk of a PQL. The contents referenced by this ID will never change. """ id: ID! json: String! list: PersistedQueryList! """ The chunk can be downloaded from any of these URLs, which might be transient. """ urls: [String!]! } type PersistedQueryListMutation { """Deletes this Persisted Query List.""" delete: DeletePersistedQueryListResultOrError! """ Deletes operations from this Persisted Query List based on filter criteria, with the ability to exclude specific operations. """ deleteOperationsByFilter( """Operations to exclude from deletion, even if they match the filter""" exclude: [PersistedQueryIdInput!] """Filter criteria to select operations for deletion""" filter: PersistedQueryFilterInput! ): DeleteOperationsByFilterResultOrError! id: ID! """ Updates this Persisted Query List by publishing a set of operations and removing other operations. Operations not mentioned remain in the list unchanged. """ publishOperations( allowOverwrittenOperations: Boolean operations: [PersistedQueryInput!] remove: [PersistedQueryIdInput!] """Deprecated. Use `remove` instead, which allows specifying clientName.""" removeOperations: [ID!] ): PublishOperationsResultOrError! """ Updates the name and/or description of the specified Persisted Query List. """ updateMetadata(description: String, name: String): UpdatePersistedQueryListMetadataResultOrError! } """Columns available for sorting persisted query operations""" enum PersistedQuerySortColumn { """Sort by the first published date""" FIRST_PUBLISHED_AT """Sort by the last published date""" LAST_PUBLISHED_AT """Sort by name""" NAME } """Sort options for persisted query operations""" input PersistedQuerySortInput { """The column to sort by""" column: PersistedQuerySortColumn! """The direction of sorting""" direction: Ordering! } """An error related to an organization's Apollo Studio plan.""" type PlanError { """The error message.""" message: String! } """Reason for a plan ineligibility""" interface PlanIneligibilityReason { """The severity of the ineligibility reason""" severity: PlanIneligibilityReasonSeverity! } """The severity of a reason for a plan ineligibility""" enum PlanIneligibilityReasonSeverity { """Error means the plan cannot be transitioned to""" ERROR """ Warning means the plan can be transitioned to, but the user should be aware of a limitation """ WARNING } """Whether a rule is enforced or only shadow-evaluated.""" enum PolicyConfigMode { """Rule is enforced — decisions affect real traffic.""" ENFORCE """ Rule is evaluated for observability only; outcomes are logged but not applied. """ SHADOW } """ Lifecycle status of a rule. Note: the design doc lists a third value `'deleted'`; we map that onto `deleted_at IS NOT NULL` and keep the SQL enum to just `active` / `disabled`. Callers wanting to round-trip the doc's enum should treat a `deleted_at`-present row as if status = deleted. """ enum PolicyConfigStatus { """Rule is live and participates in evaluation.""" ACTIVE """Rule is retained but skipped during evaluation.""" DISABLED } """How a deny rule presents to clients that lack access.""" enum PolicyDenyVisibility { """Field/type does not appear in the client's view of the schema.""" HIDDEN """Field/type is visible but returns an error on access.""" VISIBLE """Field/type returns an "access requestable" hint.""" REQUESTABLE } """The action a rule takes when matched.""" enum PolicyEffect { """ Permit access. With `effectConfig`, restricts which fields are exposed. """ ALLOW """ Refuse access. `effectConfig.denyVisibility` controls how the denial is surfaced. """ DENY """Mask matching values in responses. Carries no `effectConfig`.""" MASK } """ Effect-specific configuration. Flat container — see the design doc / spec for the rationale. Exactly one effect's fields are populated on a given rule; others are null. """ type PolicyEffectConfig { """(DENY) How the rule presents to clients without access.""" denyVisibility: PolicyDenyVisibility """(DENY) Optional caller-facing reason. Free-form text.""" denyReason: String """ (ALLOW) Fields to redact from responses. Mutually exclusive with `allowFields`. """ redactFields: [String!] """(ALLOW) Fields to expose. Mutually exclusive with `redactFields`.""" allowFields: [String!] } """ Effect-specific configuration on create/update. Exactly one effect's fields must be supplied — see `PolicyEffect` for the per-effect contract. """ input PolicyEffectConfigInput { """(DENY) How the rule presents to clients without access.""" denyVisibility: PolicyDenyVisibility """(DENY) Optional caller-facing reason. Free-form text.""" denyReason: String """ (ALLOW) Fields to redact from responses. Mutually exclusive with `allowFields`. """ redactFields: [String!] """(ALLOW) Fields to expose. Mutually exclusive with `redactFields`.""" allowFields: [String!] } """ The result of evaluating a GraphQL operation against the org's policies. """ type PolicyEvaluationResult { """ One entry per `TypeName.fieldName` in the operation that carries at least one classification tag. Fields with no tags are omitted (they are implicitly ALLOWED with no policy consideration). """ fields: [FieldEvaluation!]! } """ A grant that carves out an exception to the policy rules — an approved allowance for a principal to access a classification on a specific service within one application. """ type PolicyException { """Stable identifier for the exception.""" id: UUID! """ Application the exception applies to. Exceptions are always app-scoped. """ scopeAppId: UUID! """The principal granted access. Null means "all principals in scope".""" principal: PolicyRulePrincipal """The upstream service the exception covers.""" serviceId: UUID! """Classification label being granted (e.g. `pii`).""" classification: String! """Optional reference to the access request that produced this exception.""" accessRequestId: String """Identifier of the user/system that approved the exception.""" approvedBy: String! """Human-readable justification for the grant.""" reason: String! """When the exception expires; null means it does not auto-expire.""" expiresAt: DateTime """Lifecycle status — active, expired, or revoked.""" status: PolicyExceptionStatus! """Timestamp when the exception was created.""" createdAt: DateTime! """Timestamp when the exception was last updated.""" updatedAt: DateTime! """Soft-delete timestamp; null for live exceptions.""" deletedAt: DateTime } """Paginated page of `PolicyException`s.""" type PolicyExceptionPage { """Exceptions in this page, in stable order.""" items: [PolicyException!]! """ Opaque cursor for the next page, or null when there are no more results. """ cursor: String } """Lifecycle status of a policy exception.""" enum PolicyExceptionStatus { """Exception is live — covered access is granted.""" ACTIVE """Exception passed its `expiresAt` and no longer grants access.""" EXPIRED """Exception was manually rescinded before expiry.""" REVOKED } """What kind of principal a rule binds to.""" enum PolicyPrincipalKind { """Binds the rule/exception to a named group of principals.""" GROUP """Binds the rule/exception to a single principal identifier.""" PRINCIPAL_ID } """A policy rule — one binding row in the Constellation Policy IR.""" type PolicyRule { """Stable identifier for the rule.""" id: UUID! """The graph-wide or app-scoped slice the rule applies to.""" scope: PolicyRuleScope! """The principal bound by the rule. Null means "all principals in scope".""" principal: PolicyRulePrincipal """What the rule targets (a classification or a specific service).""" target: PolicyRuleTarget! """The action taken when the rule matches.""" effect: PolicyEffect! """Effect-specific configuration. Null when `effect = MASK`.""" effectConfig: PolicyEffectConfig """Optional human-readable description of the rule's intent.""" description: String """Operational configuration — mode, priority, status.""" config: PolicyRuleConfig! """Timestamp when the rule was created.""" createdAt: DateTime! """Timestamp when the rule was last updated.""" updatedAt: DateTime! """Soft-delete timestamp; null for live rules.""" deletedAt: DateTime } """ Operational configuration for a rule — enforcement mode, priority, and status. """ type PolicyRuleConfig { """Whether the rule is enforced or only shadow-evaluated.""" mode: PolicyConfigMode! """Tie-breaker priority when multiple rules match. Higher wins.""" priority: Int! """Whether the rule is active or disabled.""" status: PolicyConfigStatus! } """ Operational configuration on create/update. All fields default server-side when omitted. """ input PolicyRuleConfigInput { """Override the enforcement mode. Defaults to `ENFORCE`.""" mode: PolicyConfigMode """Override the priority. Defaults to 100.""" priority: Int """Override the lifecycle status. Defaults to `ACTIVE`.""" status: PolicyConfigStatus } """Paginated page of `PolicyRule`s.""" type PolicyRulePage { """Rules in this page, in stable order.""" items: [PolicyRule!]! """ Opaque cursor for the next page, or null when there are no more results. """ cursor: String } """ The principal a rule binds to. A null `principal` on the parent means "all principals in scope". """ type PolicyRulePrincipal { """Whether `value` identifies a group or a single principal.""" type: PolicyPrincipalKind! """Group name or principal identifier — interpretation depends on `type`.""" value: String! } """Input shape for a principal binding — mirrors `PolicyRulePrincipal`.""" input PolicyRulePrincipalInput { """Whether `value` identifies a group or a single principal.""" type: PolicyPrincipalKind! """Group name or principal identifier.""" value: String! } """ The slice of the graph a rule applies to — graph-wide or a single application. """ type PolicyRuleScope { """ Whether the rule applies graph-wide (`GRAPH`) or to a single app (`APP`). """ type: PolicyScopeKind! """The application id when `type = APP`; null for `GRAPH` scope.""" appId: UUID } """Input shape for a rule's scope — mirrors `PolicyRuleScope`.""" input PolicyRuleScopeInput { """Whether the rule should apply graph-wide or to a single app.""" type: PolicyScopeKind! """ The application id; required when `type = APP`, must be null for `GRAPH`. """ appId: UUID } """ What a rule targets — a data classification label or a specific service. """ type PolicyRuleTarget { """Whether the target is a classification label or a specific service.""" type: PolicyTargetKind! """ Classification label (e.g. `pii`) when `type = CLASSIFICATION`; null otherwise. """ classification: String """Service id when `type = SERVICE`; null otherwise.""" serviceId: UUID } """Input shape for a rule's target — mirrors `PolicyRuleTarget`.""" input PolicyRuleTargetInput { """Whether the target is a classification label or a specific service.""" type: PolicyTargetKind! """Classification label; required when `type = CLASSIFICATION`.""" classification: String """Service id; required when `type = SERVICE`.""" serviceId: UUID } """Whether a rule applies organization-wide or to a single application.""" enum PolicyScopeKind { """Graph-wide — applies to every application in the graph.""" GRAPH """ Application-scoped — applies only to the application identified by `appId`. """ APP } """ What a rule targets — a classification (e.g. `pii`) or a specific service. """ enum PolicyTargetKind { """Targets a data classification label such as `pii` or `secret`.""" CLASSIFICATION """Targets a specific upstream service identified by `serviceId`.""" SERVICE } """GraphQL representation of an AWS private subgraph""" type PrivateSubgraph { """The name of the subgraph, if set""" name: String """The cloud provider where the subgraph is hosted""" cloudProvider: CloudProvider! """The private subgraph's region""" region: RegionDescription! """The domain URL of the private subgraph""" domainUrl: String """The status of the resource share""" status: PrivateSubgraphShareStatus! } type PrivateSubgraphMutation { """Synchronize private subgraphs to your Apollo account""" sync(input: SyncPrivateSubgraphsInput!): [PrivateSubgraph!]! } """ The status of an association between a private subgraph and your Apollo account """ enum PrivateSubgraphShareStatus { """The private subgraph is connected to the Apollo service network""" CONNECTED """The private subgraph's connection is pending""" PENDING """The private subgraph's disconnection is pending""" PENDING_DISCONNECTION """The private subgraph is disconnected to the Apollo service network""" DISCONNECTED """ The private subgraph's connection to the Apollo service network has errored """ ERRORED """The current state of the association is unknown""" UNKNOWN } """The JSM product associated with a support ticket.""" enum Product { """Issues related to Apollo Client""" APOLLO_CLIENT """Issues related to Apollo Connectors""" APOLLO_CONNECTORS """Issues related to Apollo Explorer/Sandbox""" APOLLO_EXPLORER_SANDBOX """Issues related to Apollo Operator""" APOLLO_OPERATOR """Issues related to Apollo Router""" APOLLO_ROUTER """Issues related to Apollo Rover CLI""" APOLLO_ROVER_CLI """Issues related to Apollo Server""" APOLLO_SERVER """Issues related to Apollo Studio""" APOLLO_STUDIO """Billing issues""" BILLING """Issues related to MCP Server""" MCP_SERVER """Onboarding issues""" ONBOARDING """Other issues""" OTHER """Issues related to Schema Proposals""" SCHEMA_PROPOSALS """Security issues""" SECURITY """Issues related to Studio Insights""" STUDIO_INSIGHTS """User, account, and permissions issues""" USERS_ACCOUNTS_PERMISSIONS } """A user's membership in an account for a specific product.""" type ProductMember { """The date the user became a member of this account for this product.""" memberSince: Timestamp! """The product associated with this membership.""" product: String! """The user associated with this membership.""" user: User! } type PromoteSchemaError { code: PromoteSchemaErrorCode! message: String! } enum PromoteSchemaErrorCode { CANNOT_PROMOTE_SCHEMA_FOR_FEDERATED_GRAPH } type PromoteSchemaResponse { code: PromoteSchemaResponseCode! tag: SchemaTag! } enum PromoteSchemaResponseCode { PROMOTION_SUCCESS NO_CHANGES_DETECTED } union PromoteSchemaResponseOrError = PromoteSchemaResponse | PromoteSchemaError type Proposal { """ A list of the activities for this proposal. If first and last are not specified, defaults to 25. If one is specified there is a max allowed value of 50. """ activities(after: String, before: String, first: Int, last: Int): ProposalActivityConnection! """The variant this Proposal is under the hood.""" backingVariant: GraphVariant! """ Can the current user can edit THIS proposal, either by authorship or role level """ canEditProposal: Boolean! changes: [ProposalChange!]! comment(id: ID!): ProposalCommentResult createdAt: Timestamp! """ null if user is deleted, or if user removed from org and others in the org no longer have access to this user's info """ createdBy: Identity """The description of this Proposal.""" description: String! descriptionUpdatedAt: Timestamp descriptionUpdatedBy: Identity displayName: String! """ A flag indicating if changes have been detected on the source variant. Will be false if proposal was created prior to the pull upstream feature release on Nov 15, 2024. """ hasUpstreamChanges: Boolean! id: ID! implementedChanges: [ProposalImplementedChange!]! """ True if only some of the changes in this proposal are currently published to the implementation variant """ isPartiallyImplemented: Boolean! latestRevision: ProposalRevision! mergeBaseCompositionId: ID """Use mergedSdlWithConflicts instead.""" mergedSdl: [SubgraphWithConflicts!]! @deprecated(reason: "Use mergedSdlWithConflicts instead") """ Returns a partially merged sdl string and list of conflicts in the sdl by merging the proposals's current sdl and the source variant's current sdl against the source variant's sdl at the time of the last merge or proposal creation. """ mergedSdlWithConflicts: MergedSdlWithConflictsResult parentComments(filter: CommentFilter): [ParentProposalComment!]! rebaseConflicts: RebaseConflictResult """ null if user deleted or removed from org""" requestedReviewers: [ProposalRequestedReviewer]! reviews: [ProposalReview!]! revision(id: ID!): ProposalRevisionResult revisionHistory(limit: Int! = 100, offset: Int! = 0, orderBy: ProposalRevisionHistoryOrder = CREATED_DESC): ProposalRevisionHistoryResult! """The variant this Proposal was cloned/sourced from.""" sourceVariant: GraphVariant! status: ProposalStatus! updatedAt: Timestamp! updatedBy: Identity } type ProposalActivity { activity: ProposalActivityAction createdAt: Timestamp! createdBy: Identity id: ID! target: ProposalActivityTarget } enum ProposalActivityAction { """ When the system changes a Proposal's status back to OPEN from APPROVED when approvals drop below min approvals. """ APPROVAL_WITHDRAWN """ When the system changes a Proposal's status back to OPEN from APPROVED when a change is made after a proposal or review is approved. """ APPROVAL_WITHDRAWN_ON_PUBLISH """When a user manually sets a Proposal to Close""" CLOSE_PROPOSAL """When a Comment is added to a Proposal.""" COMMENT_ADDED """When a subgraph in a Proposal is deleted.""" DELETE_SUBGRAPH """ When a diff in a Proposal publish is found to already be in the Implementation target variant that fully implements the Proposal. Status of the Proposal will change to IMPLEMENTED. """ FULLY_IMPLEMENTED_PROPOSAL_ORIGIN """ When a diff in an Implementation variant publish is found in a Proposal that fully implements the Proposal. Status of the Proposal will change to IMPLEMENTED. """ FULLY_IMPLEMENTED_VARIANT_ORIGIN """ When the system changes a Proposal's status to APPROVED when the min approvals have been met. """ MET_MIN_APPROVALS_PROPOSAL """When a user manually sets a Proposal to Open""" OPEN_PROPOSAL """ When a diff in a Proposal publish is found to already be in the Implementation target variant that partially implements the Proposal. Does not change the status of the Proposal, but isPartiallyImplemented will return true. """ PARTIALLY_IMPLEMENTED_PROPOSAL_ORIGIN """ When a diff in an Implementation variant publish is found in a Proposal that partially implements the Proposal. Does not change the status of the Proposal, but isPartiallyImplemented will return true. """ PARTIALLY_IMPLEMENTED_VARIANT_ORIGIN """When a new revision is published to subgraphs in a Proposal.""" PUBLISH_SUBGRAPHS """When a Proposal is moved to DRAFT from another status not on creation.""" RETURN_TO_DRAFT_PROPOSAL """When a Review is added to a Proposal.""" REVIEW_ADDED } type ProposalActivityConnection { edges: [ProposalActivityEdge!] nodes: [ProposalActivity!]! pageInfo: PageInfo! totalCount: Int! } type ProposalActivityEdge { """A cursor for use in pagination.""" cursor: String! node: ProposalActivity } union ProposalActivityTarget = ParentChangeProposalComment | ParentGeneralProposalComment | Proposal | ProposalFullImplementationProposalOrigin | ProposalFullImplementationVariantOrigin | ProposalPartialImplementationProposalOrigin | ProposalPartialImplementationVariantOrigin | ProposalReview | ProposalRevision type ProposalChange { diffItem: FlatDiffItem! implemented: Boolean! } enum ProposalChangeMismatchSeverity { ERROR OFF WARN } interface ProposalComment { createdAt: Timestamp! """null if the user is deleted""" createdBy: Identity id: ID! message: String! status: CommentStatus! """null if never updated""" updatedAt: Timestamp } union ProposalCommentResult = NotFoundError | ParentChangeProposalComment | ParentGeneralProposalComment | ReplyChangeProposalComment | ReplyGeneralProposalComment | ReviewProposalComment enum ProposalCoverage { FULL NONE OVERRIDDEN PARTIAL PENDING } type ProposalFullImplementationProposalOrigin implements ProposalImplementation { """ the time this Proposal became implemented in the implementation target variant. """ createdAt: Timestamp! id: ID! """ the diff that was matched between the Proposal and the implementation target variant. TODO to deserialize this back into a DiffItem NEBULA-2726 """ jsonDiff: [String!]! """ Revision containing a diff that fully implements this Proposal in the implementation target variant. """ revision: ProposalRevision! """the target variant this Proposal became implemented in.""" variant: GraphVariant! } type ProposalFullImplementationVariantOrigin implements ProposalImplementation { """ the time this Proposal became implemented in the implementation target variant. """ createdAt: Timestamp! id: ID! """ the diff that was matched between the Proposal and the implementation target variant. TODO to deserialize this back into a DiffItem NEBULA-2726 """ jsonDiff: [String!]! """ launch containing a diff that fully implements this Proposal in the implementation target variant. null if user does not have access to launches """ launch: Launch """the target variant this Proposal became implemented in.""" variant: GraphVariant! } interface ProposalImplementation { """ the time this Proposal became implemented in the implementation target variant. """ createdAt: Timestamp! id: ID! """ the diff that was matched between the Proposal and the implementation target variant """ jsonDiff: [String!]! """the target variant this Proposal became implemented in.""" variant: GraphVariant! } type ProposalImplementedChange { diffItem: FlatDiffItem! launchId: ID! subgraph: String! } enum ProposalLifecycleEvent { """When a user is mentioned in a comment on a Proposal.""" COMMENT_MENTION """When a new Proposal is created.""" PROPOSAL_CREATED """When a Review is submitted on a Proposal.""" REVIEW_SUBMITTED """When a new revision is published to subgraphs in a Proposal.""" REVISION_SAVED """ When a Proposal's status changes (e.g. OPEN, APPROVED, IMPLEMENTED, CLOSED). """ STATUS_CHANGE } type ProposalLifecycleSubscription implements ChannelSubscription { """The channels that will be notified on this subscription.""" channels: [Channel!]! """The time when this ProposalLifecycleSubscription was created.""" createdAt: Timestamp! """ The Identity that created this ProposalLifecycleSubscription. null if the Identity has been deleted. """ createdBy: Identity """ True if this ProposalLifecycleSubscription is actively sending notifications. """ enabled: Boolean! """ The ProposalLifecycleEvents that will trigger notifications on this subscription. """ events: [ProposalLifecycleEvent!]! id: ID! """ The last time this subscription was updated, if never updated will be the createdAt time. """ lastUpdatedAt: Timestamp! """ The Identity that last updated this ProposalLifecycleSubscription, or the creator if no one has updated. null if the Identity has been deleted. """ lastUpdatedBy: Identity """Always null for ProposalLifecycleSubscription.""" variant: String } """ Mutations for editing GraphOS Schema Proposals. See documentation at https://www.apollographql.com/docs/graphos/delivery/schema-proposals """ type ProposalMutation { """ Add a comment to this proposal. This field accepts up to 500 requests per minute. This rate may be temporarily adjusted based on system conditions. """ addComment(input: AddCommentInput!): AddCommentResult! """ Delete a comment on this proposal. This field accepts up to 500 requests per minute. This rate may be temporarily adjusted based on system conditions. """ deleteComment(input: DeleteCommentInput!): DeleteCommentResult! """ Delete a subgraph from this proposal. This will write the summary to proposals, record the most up to date diff, and call registry's removeImplementingServiceAndTriggerComposition. If composition is successful, this will update running routers. """ deleteSubgraph(input: DeleteProposalSubgraphInput!): DeleteProposalSubgraphResult! """ Edit a comment on this proposal. This field accepts up to 500 requests per minute. This rate may be temporarily adjusted based on system conditions. """ editComment(input: EditCommentInput!): EditCommentResult! """ The GraphOS Schema Proposal being modified by this mutation. See documentation at https://www.apollographql.com/docs/graphos/delivery/schema-proposals """ proposal: Proposal """ This mutation creates a new revision of a proposal by publishing multiple subgraphs, saving the summary and recording a diff. If composition is successful, this will update running routers. See the documentation at https://www.apollographql.com/docs/graphos/delivery/schema-proposals/creation/#save-revisions This field accepts up to 500 requests per minute. This rate may be temporarily adjusted based on system conditions. """ publishSubgraphs(input: PublishProposalSubgraphsInput!): PublishProposalSubgraphResult! """ If a check workflow is not found for a revision, it attempts to create one. If there is a check workflow present, it re-runs the check and associates the new check to the provided revision. """ reRunCheckForRevision(input: ReRunCheckForRevisionInput!): ReRunCheckForRevisionResult! """ Removes all requested reviewers and their reviews that are not part of the new set of default reviewers. Adds any new default reviewers to the list of requested reviewers for this proposal. """ replaceReviewersWithDefaultReviewers: ReplaceReviewersWithDefaultReviewersResult! """ Report one or more diff items as suspected false positives on a proposal revision. """ reportFalsePositiveDiffItems(input: GQLReportFalsePositiveDiffItemsInput!): ReportFalsePositiveDiffItemsResult! """ Set the mergeBaseCompositionId of this Proposal, if it is null. Must be internal MDG user with sudo. """ setMergeBaseCompositionId(input: SetMergeBaseCompositionIdInput!): SetMergeBaseCompositionIdResult! """Sync proposal revisions to the latest launch.""" syncToLaunches: ProposalSyncToLaunchesResult! """ Triggers implementation handler on the proposal for the given proposalGraphCompositionId and implementationVariantGraphCompositionId. """ triggerProposalsImplementationHandlerProposalPublish( """ The latest graphComposition id of the implementation variant at the time of proposal publish. If not provided, the latest implementation variant publish will be used. """ implementationVariantGraphCompositionId: ID """The graphComposition id of the proposal schema publish.""" proposalGraphCompositionId: ID! ): Proposal! """ Updates the description of this Proposal variant. Returns ValidationError if description exceeds max length of 10k characters. """ updateDescription(input: UpdateDescriptionInput!): UpdateProposalResult! """ Update the title of this proposal. This field accepts up to 200 requests per minute. This rate may be temporarily adjusted based on system conditions. """ updateDisplayName(displayName: String!): UpdateProposalResult! """ Update the list of requested reviewers for this proposal. This field accepts up to 500 requests per minute. This rate may be temporarily adjusted based on system conditions. """ updateRequestedReviewers(input: UpdateRequestedReviewersInput!): UpdateRequestedReviewersResult! """ Update the status of this proposal. This field accepts up to 500 requests per minute. This rate may be temporarily adjusted based on system conditions. """ updateStatus(status: ProposalStatus!): UpdateProposalResult! updateUpdatedByInfo(timestamp: Timestamp!): UpdateProposalResult! """ Create or update a review for this proposal. Only users who are requested reviewers can call this mutation. This field accepts up to 500 requests per minute. This rate may be temporarily adjusted based on system conditions. """ upsertReview(input: UpsertReviewInput!): UpsertReviewResult! } union ProposalMutationResult = NotFoundError | PermissionError | ProposalMutation | ValidationError type ProposalPartialImplementationProposalOrigin implements ProposalImplementation { """ the time this Proposal became partially implemented in the implementation target variant. """ createdAt: Timestamp! id: ID! """ the diff that was matched between the Proposal and the implementation target variant. TODO to deserialize this back into a DiffItem NEBULA-2726 """ jsonDiff: [String!]! """ Revision containing a diff that partially implements this Proposal in the implementation target variant. """ revision: ProposalRevision! """the target variant this Proposal became partially implemented in.""" variant: GraphVariant! } type ProposalPartialImplementationVariantOrigin implements ProposalImplementation { """ the time this Proposal became partially implemented in the implementation target variant. """ createdAt: Timestamp! id: ID! """ the diff that was matched between the Proposal and the implementation target variant. TODO to deserialize this back into a DiffItem NEBULA-2726 """ jsonDiff: [String!]! """ launch containing a diff that partially implements this Proposal in the implementation target variant. null if user does not have access to launches """ launch: Launch """the target variant this Proposal became partially implemented in.""" variant: GraphVariant! } type ProposalRequestedReviewer { currentReview: ProposalReview user: Identity } type ProposalReview { comment: ReviewProposalComment createdAt: Timestamp! createdBy: Identity decision: ReviewDecision! id: ID! isDismissed: Boolean! updatedAt: Timestamp updatedBy: Identity } type ProposalRevision { id: ID! """ ID of the launch that this revision is associated with. For internal use only, correct schema usage would be to access through the Launch, but CONSUMER role has no access to launch, yet they need access to the schema publish. """ launchId: ID! """ Latest composition ID of the proposal's source variant at the time this revision was created. """ mergeBaseCompositionId: ID """ The schema publish of the proposal's source variant at the time this revision was created. Null if the launch is PENDING. """ mergeBaseSchemaPublish: SchemaTag """ The schema publish for this revision. Null while the launch is PENDING. """ schemaPublish: SchemaTag """ On publish, checks are triggered on a proposal automatically. However, if an error occurred triggering a check on publish, we skip attempting the check to avoid blocking the publish from succeeding. This is the only case this field would be null. """ checkWorkflow: CheckWorkflow createdAt: Timestamp! createdBy: Identity """ Look up a single false-positive flag by its ID on this revision. Returns null if the flag does not exist, belongs to a different revision, or the caller cannot view the proposal. """ falsePositiveFlag(id: ID!): FalsePositiveFlag isMerge: Boolean! launch: Launch """ Latest launch of the proposal's source variant at the time this revision was created. """ mergeBaseLaunch: Launch """null if this is the first revision""" previousRevision: ProposalRevision summary: String! } enum ProposalRevisionHistoryOrder { """List revisions from oldest to newest.""" CREATED_ASC """List revisions from newest to oldest, default.""" CREATED_DESC } type ProposalRevisionHistoryResult { revisions: [ProposalRevision!]! """ This is the total number of revisions for the proposal, regardless of the size of the returned list. """ totalCount: Int! } union ProposalRevisionResult = NotFoundError | ProposalRevision type ProposalRoles { create: UserPermission! edit: UserPermission! } type ProposalsCheckTask implements CheckWorkflowTask { completedAt: Timestamp createdAt: Timestamp! graphID: ID! id: ID! status: CheckWorkflowTaskStatus! targetURL: String workflow: CheckWorkflow! """The results of this proposal check were overridden""" didOverrideProposalsCheckTask: Boolean! """ Diff items in this Check task. Will be empty list if hasExceededMaxDiffs is true. """ diffs: [ProposalsCheckTaskDiff!]! """ Indicates if the number of diffs in this check has exceeded the maximum allowed. null if this check was run before this field was added. """ hasExceededMaxDiffs: Boolean """True if this Proposal check passed with warnings, otherwise false.""" hasWarnings: Boolean! """ Indicates the level of coverage a check's changeset is in approved Proposals. PENDING while Check is still running. """ proposalCoverage: ProposalCoverage! """ Proposals with their state at the time the check was run associated to this check task. """ relatedProposalResults: [RelatedProposalResult!]! relatedProposals: [Proposal!]! @deprecated(reason: "use relatedProposalResults instead") """ The configured severity at the time the check was run. If the check failed, this is the severity that should be shown. While this Check is PENDING defaults to Service's severityLevel. """ severityLevel: ProposalChangeMismatchSeverity! } """A diff item in this Check Task and their related Proposals.""" type ProposalsCheckTaskDiff { """A diff item in this Check Task.""" diffItem: FlatDiffItem! """If this diff item is associated with an approved Proposal.""" hasApprovedProposal: Boolean! """Proposals associated with this diff.""" relatedProposalResults: [RelatedProposalResult!]! """The subgraph this diff belongs to.""" subgraph: String! } """Filtering options for list of proposals.""" input ProposalsFilterInput { """ Only include proposals that were created with these variants as a base. """ sourceVariants: [String!] """Only include proposals of a certain status.""" status: [ProposalStatus!] """Only include proposals that have updated these subgraph names""" subgraphs: [String!] } union ProposalsMustBeApprovedByADefaultReviewerResult = PermissionError | Service | ValidationError """ Proposals, limited & offset based on Service.proposals & the total count """ type ProposalsResult { """The proposals on this graph.""" proposals: [Proposal!]! """The total number of proposals on this graph""" totalCount: Int! } enum ProposalStatus { APPROVED CLOSED DRAFT IMPLEMENTED OPEN } union ProposalSyncToLaunchesResult = PermissionError | ProposalSyncToLaunchesSuccess type ProposalSyncToLaunchesSuccess { proposal: Proposal! """ True if the proposal was updated due to the sync, false if the proposal was already up-to-date and nothing was done. """ updated: Boolean! } type ProposalVariantCreationErrors { """ A list of all errors that occurred when attempting to create a proposal variant. """ errorMessages: [String!]! } union ProposalVariantCreationResult = GraphVariant | ProposalVariantCreationErrors union ProposedBuildInputChanges = ProposedCompositionBuildInputChanges | ProposedFilterBuildInputChanges type ProposedCompositionBuildInputChanges { """ The proposed new build pipeline track, or null if no such change was proposed. """ buildPipelineTrackChange: BuildPipelineTrack """ The proposed new Federation version, or null if no such change was proposed. """ proposedFederationVersion: FederationVersion """ Any proposed upserts to subgraphs, or the empty list if no such changes were proposed. """ subgraphUpserts: [ProposedCompositionBuildInputSubgraphUpsert!]! } type ProposedCompositionBuildInputSubgraphUpsert { """The name of the subgraph changed in this subgraph upsert.""" name: String! """The SHA-256 of the schema document in this subgraph upsert.""" schemaHash: SHA256 } type ProposedFilterBuildInputChanges { """ The proposed new build pipeline track, or null if no such change was proposed. """ buildPipelineTrackChange: BuildPipelineTrack """ Any proposed additions to exclude filters, or the empty list if no such changes were proposed. """ excludeAdditions: [String!]! """ Any proposed removals to exclude filters, or the empty list if no such changes were proposed. """ excludeRemovals: [String!]! """ The proposed value for whether to hide unreachable schema elements, or null if no such change was proposed. """ hideUnreachableTypesChange: Boolean """ Any proposed additions to include filters, or the empty list if no such changes were proposed. """ includeAdditions: [String!]! """ Any proposed removals to include filters, or the empty list if no such changes were proposed. """ includeRemovals: [String!]! """ The proposed new Federation version, or null if no such change was proposed. """ proposedFederationVersion: FederationVersion """ The proposed new build pipeline track, or null if no such change was proposed. """ supergraphSchemaHashChange: SHA256 } type Protobuf { json: String! object: Object! raw: Blob! text: String! } """ The result of a successful call to PersistedQueryListMutation.publishOperations. """ type PublishOperationsResult { """The build created by this publish operation.""" build: PersistedQueryListBuild! """ Returns `true` if no changes were made by this publish (and no new revision was created). Otherwise, returns `false`. """ unchanged: Boolean! } """ The result/error union returned by PersistedQueryListMutation.publishOperations. """ union PublishOperationsResultOrError = CannotModifyOperationBodyError | PermissionError | PublishOperationsResult union PublishProposalSubgraphResult = NotFoundError | PermissionError | Proposal | SchemaValidationError | ValidationError input PublishProposalSubgraphsInput { gitContext: GitContextInput """ Non null if this publish is a merge revision. The composition id of the source variant updated to. This is necessary to keep track of the last composition id this proposal is updated with. """ mergeUpdateCompositionId: ID previousLaunchId: ID! revision: String! subgraphInputs: [PublishSubgraphsSubgraphInput!]! summary: String! } """The result attempting to publish subgraphs with async build.""" type PublishSubgraphsAsyncBuildResult { """The Launch result part of this subgraph publish.""" launch: Launch """ The URL of the Studio page for this update's associated launch, if available. """ launchUrl: String """ Human-readable text describing the launch result of the subgraph publish. """ launchCliCopy: String } input PublishSubgraphsSubgraphInput { activePartialSchema: PartialSchemaInput! name: String! url: String } input PushMarketoLeadInput { """Email address""" email: String """First name""" firstName: String """Last name""" lastName: String """Phone number""" phone: String """Company name""" company: String """Company domain""" Company_Domain__c: String """Job Function""" Job_Function__c: String """GraphQL Production Stage""" GraphQL_Production_Stage__c: String """Country""" country: String """Lead Message""" Lead_Message__c: String """Clearbit enriched LinkedIn URL""" Clearbit_LinkedIn_URL__c: String """Lead Source Detail""" Lead_Source_Detail__c: String """Lead Source Most Recent Detail""" Lead_Source_Most_Recent_Detail__c: String """Lead Source Most Recent""" Lead_Source_Most_Recent__c: String """Studio User Id""" Studio_User_Id__c: String """UTM Medium""" UTM_Medium__c: String """UTM Source""" UTM_Source__c: String """UTM Campaign""" UTM_Campaign__c: String """UTM Term""" UTM_Term__c: String """UTM ICID""" UTM_ICID__c: String """Referrer""" Referrer__c: String """UTM Campaign First Touch""" UTM_Campaign_First_Touch__c: String """UTM Medium First Touch""" UTM_Medium_First_Touch__c: String """UTM Source First Touch""" UTM_Source_First_Touch__c: String """GA Client ID""" Google_User_ID__c: String """GDPR Explicit Opt in""" Explicit_Opt_in__c: Boolean """Google Click ID""" Google_Click_ID__c: String """Is Graph Champion""" isGraphChampion: Boolean """Studio Organization ID""" Studio_Organization_ID__c: String """UTM Campaign Capture Mkto Only""" uTMCampaignCaptureMktoOnly: String """UTM ICID Capture Mkto Only""" uTMICIDCaptureMktoOnly: String """UTM Medium Capture Mkto Only""" uTMMediumCaptureMktoOnly: String """UTM Source Capture Mkto Only""" uTMSourceCaptureMktoOnly: String """UTM Term Capture Mkto Only""" uTMTermCaptureMktoOnly: String """Notes Import""" notesImport: String } """Queries defined by this subgraph""" type Query { """All available billing plan capabilities""" allBillingCapabilities: [BillingCapability!]! """All available billing plan limits""" allBillingLimits: [BillingLimit!]! """All available plans""" allBillingPlans: [BillingPlan!]! """All router entitlements for self-hosted commercial runtime accounts.""" allSelfHostedCommercialRuntimeEntitlements(after: String, first: Int): RouterEntitlementConnection! billingAdmin: BillingAdminQuery """ Retrieves all past and current subscriptions for an account, even if the account has been deleted """ billingSubscriptionHistory(id: ID): [BillingSubscription]! billingTier(tier: BillingPlanTier!): BillingTier """ Escaped JSON string of the public key used for verifying entitlement JWTs """ commercialRuntimePublicKey: String! """Look up a plan by ID""" plan(id: ID): BillingPlan recommendedPlanOnSignup: OnboardingPlanOption """Cloud queries""" cloud: Cloud! cloudTesting: CloudTesting! """Returns all service connectors in the catalog.""" serviceCatalog(limit: Int, cursor: String): ServiceCatalogPage! """ Latest version per service, ignoring org-visibility — every entry, including org-restricted ones. For the admin catalog UI's list view, which must see restricted entries to manage their access grants. """ serviceCatalogAdmin(limit: Int, cursor: String): ServiceCatalogPage! """Returns all active catalog entries for a given service connector.""" serviceCatalogEntries(serviceId: String!): [ServiceCatalogType!]! """ All active (non-deleted) versions for a service, newest first. No org-visibility filtering — for the admin catalog UI's version-history view, which must see restricted entries' history too. """ serviceCatalogVersions(serviceId: String!): [ServiceCatalogType!]! """Returns a single service catalog entry by its ID.""" serviceCatalogEntry(id: UUID!): ServiceCatalogType! """Get the graph artifact associated with a given digest (SHA)""" graphArtifactByDigest( """The digest (SHA) of the graph artifact""" digest: String! """The ID of the graph the graph artifact belongs to""" graphID: ID! ): GraphArtifact """Get Graph Artifact by Graph Artifact ID""" graphArtifactById( """The ID of the graph the graph artifact belongs to""" graphID: ID! """The ID of the graph artifact""" id: ID! ): GraphArtifact """Get the Graph Artifact associated with the provided tag""" graphArtifactByTag( """The ID of the graph this tag belongs to""" graphID: ID! """The tag name of the Graph Artifact being requested""" tag: String! ): GraphArtifact """Get a specific graph artifact tag""" graphArtifactTag( """The ID of the graph where the tag resides""" graphID: ID! """The name of the tag""" tag: String! ): GraphArtifactTag """Get the repository and tag name for the given variant""" graphArtifactTagLocation(graphID: ID!, variantName: String!): GraphArtifactTagLocation """Get the list of graph artifact tags associated with a given graph""" graphArtifactTags( """The cursor to start pagination after (for forward pagination)""" after: String """ The number of tags to return (for forward pagination), defaults to 10, maximum is 20 """ first: Int """The ID of the graph where the tags reside""" graphID: ID! """ The optional graph variant name, used to filter the results to a single variant """ variantName: String ): GraphArtifactTagConnection! """All the graph artifacts associated with a given graphId""" graphArtifacts( """The cursor to start pagination after (for forward pagination)""" after: String """ The number of artifacts to return (for forward pagination), defaults to 10, maximum is 20 """ first: Int """The cursor to start pagination after (for forward pagination)""" graphID: ID! """ The optional graph variant name, used to filter the results to a single variant """ variantName: String ): GraphArtifactConnection! """Account by ID""" account(id: ID!): Account """Retrieve account by internal id""" accountByInternalID(id: ID!): Account """Whether an account ID is available for mutation{newAccount(id:)}""" accountIDAvailable(id: ID!): Boolean! """All auto-renewing team accounts on active annual plans""" allRenewingNonEnterpriseAnnualAccounts: [Account!] """All users""" allUsers(search: String): [User!] """ If this is true, the user is an Apollo administrator who can ignore restrictions based purely on billing plan. """ canBypassPlanRestrictions: Boolean! """Past and current enterprise trial accounts""" enterpriseTrialAccounts: [Account!] internalAdminUsers: [InternalAdminUser!] """ Returns details of the authenticated `User` or `Graph` executing this query. If this is an unauthenticated query (i.e., no API key is provided), this field returns null. """ me: Identity """Returns details of the Studio organization with the provided ID.""" organization(id: ID!): Account """ Accounts with enterprise subscriptions that have expired in the past 45 days """ recentlyExpiredEnterpriseAccounts: [Account!] """Search all accounts""" searchAccounts(search: String): [Account!]! """ Accounts with enterprise subscriptions that will expire within the next 30 days """ soonToExpireEnterpriseAccounts: [Account!] sso: SsoQuery! """Returns the SSO login url for an account with SSO configured.""" ssoLoginUrl(accountId: ID): String """Get the studio settings for the current user""" studioSettings: UserSettings """Returns details of the Apollo user with the provided ID.""" user(id: ID!): User """Returns details of the Apollo users with the provided IDs.""" users(ids: [ID!]!): [User!] """ Returns all active rule enforcements across all accounts. Restricted to internal Apollo admins. """ allActiveRuleEnforcements: [RuleEnforcement!]! """Retrieve account by billing provider identifier""" accountByBillingCode(id: ID!): Account """ Returns details of the agent gateway with the provided ID. Currently requires the associated account ID for this gateway, which may be removed as a requirement in the future. """ agentGateway(accountId: ID!, id: ID!): AgentGateway """All accounts""" allAccounts(search: String, tier: BillingPlanTier): [Account!] """All accounts on team billable plans with active subscriptions""" allActiveTeamBillingAccounts: [Account!] allPublicVariants: [GraphVariant!] """All services""" allServices(search: String): [Service!] """All timezones with their offsets from UTC""" allTimezoneOffsets: [TimezoneOffset!]! """Fields that back Connector-related MCP tools""" connectorTools: ConnectorTools! """Get the unsubscribe settings for a given email.""" emailPreferences(email: String!, token: String!): EmailPreferences """Returns the root URL of the Apollo Studio frontend.""" frontendUrlRoot: String! """Returns details of the graph with the provided ID.""" graph(id: ID!): Service internalActiveCronJobs: [CronJob!]! internalUnresolvedCronExecutionFailures: [CronExecution!]! """ A list of public variants that have been selected to be shown on our Graph Directory. """ publiclyListedVariants: [GraphVariant!] """Service by ID""" service(id: ID!): Service """ Query statistics across all services. For admins only; normal users must go through AccountsStatsWindow or ServiceStatsWindow. """ stats( from: Timestamp! """ Granularity of buckets. Defaults to the entire range (aggregate all data into a single durationBucket) when null. """ resolution: Resolution """Defaults to the current time when null.""" to: Timestamp ): StatsWindow! """ Returns details of a Studio graph variant with the provided graph ref. A graph ref has the format `graphID@variantName` (or just `graphID` for the default variant `current`). Returns null if the graph or variant doesn't exist, or if the graph isn't accessible by the current actor. """ variant(ref: ID!): GraphVariantLookup """Retrieve a specific Odyssey certification by its ID""" odysseyCertification(id: ID!): OdysseyCertification """Access course feedback queries""" odysseyCourseFeedback: OdysseyCourseFeedbackQueries! """Access documentation pages and search functionality""" documentation: Documentation! """ Returns the [operation collection](https://www.apollographql.com/docs/studio/explorer/operation-collections/) for the provided ID. This field accepts up to 400 requests per minute. This rate may be temporarily adjusted based on system conditions. """ operationCollection(id: ID!): OperationCollectionResult! """ This field accepts up to 400 requests per minute. This rate may be temporarily adjusted based on system conditions. """ operationCollectionEntries(collectionEntryIds: [ID!]!): [OperationCollectionEntry!]! """ Returns a proposal by its ID. This field accepts up to 1000 requests per minute. This rate may be temporarily adjusted based on system conditions. """ proposal(id: ID!): Proposal diffSchemas(baseSchema: String!, nextSchema: String!): [Change!]! """ Schema transformation for the Apollo platform API. Renames types. Internal to Apollo. """ transformSchemaForPlatformApi(baseSchema: GraphQLDocument!): GraphQLDocument } """query documents to validate against""" input QueryDocumentInput { document: String } type QueryPlan { text: String! json: String! object: Object! } """Columns of QueryStats.""" enum QueryStatsColumn { ACCOUNT_ID CACHED_HISTOGRAM CACHED_REQUESTS_COUNT CACHE_TTL_HISTOGRAM CLIENT_NAME CLIENT_VERSION FORBIDDEN_OPERATION_COUNT FROM_ENGINEPROXY OPERATION_SUBTYPE OPERATION_TYPE PERSISTED_QUERY_ID QUERY_ID QUERY_NAME REGISTERED_OPERATION_COUNT REQUESTS_WITH_ERRORS_COUNT SCHEMA_HASH SCHEMA_TAG SERVICE_ID TIMESTAMP UNCACHED_HISTOGRAM UNCACHED_REQUESTS_COUNT } type QueryStatsDimensions { accountId: ID clientName: String clientVersion: String fromEngineproxy: String operationSubtype: String operationType: String persistedQueryId: String queryId: ID queryName: String querySignature: String querySignatureLength: Int schemaHash: String schemaTag: String serviceId: ID } """ Filter for data in QueryStats. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input QueryStatsFilter { """ Selects rows whose accountId dimension equals the given value if not null. To query for the null value, use {in: {accountId: [null]}} instead. """ accountId: ID and: [QueryStatsFilter!] """ Selects rows whose clientName dimension equals the given value if not null. To query for the null value, use {in: {clientName: [null]}} instead. """ clientName: String """ Selects rows whose clientVersion dimension equals the given value if not null. To query for the null value, use {in: {clientVersion: [null]}} instead. """ clientVersion: String """ Selects rows whose fromEngineproxy dimension equals the given value if not null. To query for the null value, use {in: {fromEngineproxy: [null]}} instead. """ fromEngineproxy: String in: QueryStatsFilterIn not: QueryStatsFilter """ Selects rows whose operationSubtype dimension equals the given value if not null. To query for the null value, use {in: {operationSubtype: [null]}} instead. """ operationSubtype: String """ Selects rows whose operationType dimension equals the given value if not null. To query for the null value, use {in: {operationType: [null]}} instead. """ operationType: String or: [QueryStatsFilter!] """ Selects rows whose persistedQueryId dimension equals the given value if not null. To query for the null value, use {in: {persistedQueryId: [null]}} instead. """ persistedQueryId: String """ Selects rows whose queryId dimension equals the given value if not null. To query for the null value, use {in: {queryId: [null]}} instead. """ queryId: ID """ Selects rows whose queryName dimension equals the given value if not null. To query for the null value, use {in: {queryName: [null]}} instead. """ queryName: String """ Selects rows whose schemaHash dimension equals the given value if not null. To query for the null value, use {in: {schemaHash: [null]}} instead. """ schemaHash: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serviceId dimension equals the given value if not null. To query for the null value, use {in: {serviceId: [null]}} instead. """ serviceId: ID } """ Filter for data in QueryStats. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input QueryStatsFilterIn { """ Selects rows whose accountId dimension is in the given list. A null value in the list means a row with null for that dimension. """ accountId: [ID] """ Selects rows whose clientName dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientName: [String] """ Selects rows whose clientVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientVersion: [String] """ Selects rows whose fromEngineproxy dimension is in the given list. A null value in the list means a row with null for that dimension. """ fromEngineproxy: [String] """ Selects rows whose operationSubtype dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationSubtype: [String] """ Selects rows whose operationType dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationType: [String] """ Selects rows whose persistedQueryId dimension is in the given list. A null value in the list means a row with null for that dimension. """ persistedQueryId: [String] """ Selects rows whose queryId dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryId: [ID] """ Selects rows whose queryName dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryName: [String] """ Selects rows whose schemaHash dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaHash: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serviceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serviceId: [ID] } type QueryStatsMetrics { cacheTtlHistogram: DurationHistogram! cachedHistogram: DurationHistogram! cachedRequestsCount: Long! forbiddenOperationCount: Long! registeredOperationCount: Long! requestsWithErrorsCount: Long! totalLatencyHistogram: DurationHistogram! totalRequestCount: Long! uncachedHistogram: DurationHistogram! uncachedRequestsCount: Long! } input QueryStatsOrderBySpec { column: QueryStatsColumn! direction: Ordering! } type QueryStatsRecord { """Dimensions of QueryStats that can be grouped by.""" groupBy: QueryStatsDimensions! """Metrics of QueryStats that can be aggregated over.""" metrics: QueryStatsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """Query Trigger""" type QueryTrigger implements ChannelSubscription { channels: [Channel!]! comparisonOperator: ComparisonOperator! enabled: Boolean! excludedOperationNames: [String!]! id: ID! metric: QueryTriggerMetric! operationNames: [String!]! percentile: Float scope: QueryTriggerScope! serviceId: String! state: QueryTriggerState! threshold: Float! variant: String window: QueryTriggerWindow! } """Query trigger""" input QueryTriggerInput { channelIds: [String!] comparisonOperator: ComparisonOperator! enabled: Boolean excludedOperationNames: [String!] metric: QueryTriggerMetric! operationNames: [String!] percentile: Float scope: QueryTriggerScope threshold: Float! variant: String window: QueryTriggerWindow! } enum QueryTriggerMetric { """ Number of requests within the window that resulted in an error. Ignores `percentile`. """ ERROR_COUNT """ Number of error requests divided by total number of requests. Ignores `percentile`. """ ERROR_PERCENTAGE """Number of requests within the window. Ignores `percentile`.""" REQUEST_COUNT """Request latency in ms. Requires `percentile`.""" REQUEST_SERVICE_TIME } enum QueryTriggerScope { ALL ANY UNRECOGNIZED } """Query trigger state""" type QueryTriggerState { evaluatedAt: Timestamp! lastTriggeredAt: Timestamp operations: [QueryTriggerStateOperation!]! triggered: Boolean! } type QueryTriggerStateOperation { count: Long! operation: String! triggered: Boolean! value: Float! } enum QueryTriggerWindow { FIFTEEN_MINUTES FIVE_MINUTES ONE_MINUTE UNRECOGNIZED } """A single question-answer pair within a feedback submission""" type QuestionResponse { """The stable identifier for the question""" questionId: ID! """The question text at the time of submission""" question: String! """The answer provided by the learner""" answer: String! } """A single question-answer pair within a feedback submission""" input QuestionResponseInput { """The stable identifier for the question being answered""" questionId: ID! """The answer provided by the learner""" answer: String! } """Result of calling a test request to a custom check endpoint.""" union QueueTestCustomChecksRequestResult = GraphVariant | PermissionError | ValidationError type QueueTestProposalLifecycleNotificationError { message: String! } input QueueTestProposalLifecycleNotificationInput { channelId: ID! subscriptionId: ID! } union QueueTestProposalLifecycleNotificationResult = NotFoundError | PermissionError | QueueTestProposalLifecycleNotificationError | QueueTestProposalLifecycleNotificationSuccess | ValidationError type QueueTestProposalLifecycleNotificationSuccess { queued: Boolean } type RateLimit { count: Long! durationMs: Long! } """ An error that occurs when the rate limit on this operation has been exceeded. """ type RateLimitExceededError { """The error message.""" message: String! } """ The README documentation for a graph variant, which is displayed in Studio. """ type Readme { """The contents of the README in plaintext.""" content: String! """ The README's unique ID. `a15177c0-b003-4837-952a-dbfe76062eb1` for the default README """ id: ID! """ The timestamp when the README was most recently updated. `1970-01-01T00:00:00Z` for the default README """ lastUpdatedAt: Timestamp! @deprecated(reason: "Deprecated in favour of lastUpdatedTime") """ The actor that most recently updated the README (usually a `User`). `null` for the default README, or if the `User` was deleted. """ lastUpdatedBy: Identity """ The timestamp when the README was most recently updated. `null` for the default README """ lastUpdatedTime: Timestamp } """Responsibility for an errored order""" enum ReasonCause { """ Could not complete an order due to invalid User input For example, the user provided an invalid router configuration or supergraph schema. """ USER """ Could not complete an order due to internal reason This could be due to intermittent issues, bug in our code, etc. """ INTERNAL } type RebaseConflict { location: ParsedSchemaCoordinate message: String } type RebaseConflictData { conflicts: [RebaseConflict!]! count: Int! } union RebaseConflictResult = NotFoundError | RebaseConflictData | SchemaValidationError """Represents a recently visited page with its URL and access time""" type RecentPage { """The URL of the recently visited page""" url: String! """When the page was last accessed""" timestamp: Timestamp! } """Input for `recordAccessRequestDecision`.""" input RecordAccessRequestDecisionInput { """The access request to record a decision against.""" requestId: UUID! """Approve or deny.""" decision: AccessRequestDecisionKind! """ Fields explicitly approved by the caller. Required on `APPROVE`, must be null on `DENY` (enforced by the DB layer). """ approvedFields: [String!] """Optional caller-facing note (e.g. denial rationale).""" note: String } """Details of account data stored in Recurly""" type RecurlyAccountDetails { accountCode: String! createdAt: Timestamp! } """Description for a Cloud Router region""" type RegionDescription { """Full name of the region""" name: String! """Region identifier""" code: String! """Cloud Provider related to this region""" provider: CloudProvider! """State of the Region""" state: RegionState! """Country of the region, in ISO 3166-1 alpha-2 code""" country: String! } """Possible state of a region""" enum RegionState { """ Active region Can be used for Cloud Routers """ ACTIVE """ Inactive region Cannot yet be used for Cloud Routers """ INACTIVE """Does not appear in the API""" HIDDEN } input RegisteredClientIdentityInput { identifier: String! name: String! version: String } type RegisteredOperation { signature: ID! } input RegisteredOperationInput { signature: ID! document: String metadata: RegisteredOperationMetadataInput } input RegisteredOperationMetadataInput { """This will be used to link existing records in Engine to a new ID.""" engineSignature: String } type RegisterOperationsMutationResponse { registrationSuccess: Boolean! newOperations: [RegisteredOperation!] invalidOperations: [InvalidOperation!] } type RegistryStatsWindow { schemaCheckStats: [AccountChecksStatsRecord!]! schemaPublishStats: [AccountPublishesStatsRecord!]! } type RegistrySubscription implements ChannelSubscription { channel: Channel channels: [Channel!]! @deprecated(reason: "Use channels list instead") createdAt: Timestamp! enabled: Boolean! id: ID! lastUpdatedAt: Timestamp! options: SubscriptionOptions! variant: String } """A Proposal related to a Proposal Check Task.""" type RelatedProposalResult { """ The latest revision at the time the check was run, defaults to current revision if nothing found for time of the check. """ latestRevisionAtCheck: ProposalRevision! """ The Proposal related to the check. State may have changed since the Check was run. """ proposal: Proposal! """ The status of the Proposal at the time the check was run, defaults to current state if nothing found for time of the check. """ statusAtCheck: ProposalStatus! } type RelaunchComplete { latestLaunch: Launch! updated: Boolean! } type RelaunchError { message: String! } union RelaunchResult = RelaunchComplete | RelaunchError union RemoveOperationCollectionEntryResult = OperationCollection | PermissionError union RemoveOperationCollectionFromVariantResult = GraphVariant | NotFoundError | PermissionError | ValidationError union ReplaceReviewersWithDefaultReviewersResult = PermissionError | Proposal | ValidationError type ReplyChangeProposalComment implements ChangeProposalComment & ProposalComment { createdAt: Timestamp! """null if the user is deleted""" createdBy: Identity id: ID! message: String! """ true if the schemaCoordinate this comment is on doesn't exist in the diff between the most recent revision & the base sdl """ outdated: Boolean! schemaCoordinate: String! """ '#@!api!@#' for api schema, '#@!supergraph!@#' for supergraph schema, subgraph otherwise """ schemaScope: String! status: CommentStatus! """null if never updated""" updatedAt: Timestamp } type ReplyGeneralProposalComment implements GeneralProposalComment & ProposalComment { createdAt: Timestamp! """null if the user is deleted""" createdBy: Identity id: ID! message: String! status: CommentStatus! """null if never updated""" updatedAt: Timestamp } """ The result of reporting one or more diff items as false positives on a proposal revision. """ union ReportFalsePositiveDiffItemsResult = NotFoundError | PermissionError | ReportFalsePositiveDiffItemsSuccess | ValidationError """Returned when false positive flags were recorded successfully.""" type ReportFalsePositiveDiffItemsSuccess { """ IDs of the flag rows that were newly inserted (empty list means all were duplicates). """ flagIds: [ID!]! } """Represents an agent that has reported data to Apollo.""" type ReportingAgent { """ The identifier of the reporting agent (e.g., `apollo-router`, `apollo-server-core`). """ agent: String! """Indicates whether this reporting agent is an Apollo Router.""" isRouter: Boolean! """The timestamp when this agent was reported to Apollo.""" reportedAt: Timestamp! """ The version of the reporting agent, if provided (e.g., `2.22.1`, `1.0.0-beta`). """ version: String } type ReportSchemaError implements ReportSchemaResult { code: ReportSchemaErrorCode! inSeconds: Int! message: String! withCoreSchema: Boolean! } enum ReportSchemaErrorCode { BOOT_ID_IS_NOT_VALID_UUID BOOT_ID_IS_REQUIRED CORE_SCHEMA_HASH_IS_NOT_SCHEMA_SHA256 CORE_SCHEMA_HASH_IS_REQUIRED CORE_SCHEMA_HASH_IS_TOO_LONG EXECUTABLE_SCHEMA_ID_IS_NOT_SCHEMA_SHA256 EXECUTABLE_SCHEMA_ID_IS_REQUIRED EXECUTABLE_SCHEMA_ID_IS_TOO_LONG GRAPH_REF_INVALID_FORMAT GRAPH_REF_IS_REQUIRED GRAPH_VARIANT_DOES_NOT_MATCH_REGEX GRAPH_VARIANT_IS_REQUIRED LIBRARY_VERSION_IS_TOO_LONG PLATFORM_IS_TOO_LONG RUNTIME_VERSION_IS_TOO_LONG SCHEMA_IS_NOT_PARSABLE SCHEMA_IS_NOT_VALID SERVER_ID_IS_TOO_LONG USER_VERSION_IS_TOO_LONG } type ReportSchemaResponse implements ReportSchemaResult { inSeconds: Int! withCoreSchema: Boolean! } interface ReportSchemaResult { inSeconds: Int! withCoreSchema: Boolean! } type ReportServerInfoError implements ReportServerInfoResult { code: ReportSchemaErrorCode! inSeconds: Int! message: String! withExecutableSchema: Boolean! } type ReportServerInfoResponse implements ReportServerInfoResult { inSeconds: Int! withExecutableSchema: Boolean! } interface ReportServerInfoResult { inSeconds: Int! withExecutableSchema: Boolean! } type RequestCountsPerGraphVariant { cachedRequestsCount: Long! graphID: String! uncachedRequestsCount: Long! variant: String } input RerunAsyncInput { sourceVariant: String } input ReRunCheckForRevisionInput { revisionId: ID! } union ReRunCheckForRevisionResult = NotFoundError | PermissionError | Proposal | ValidationError enum Resolution { R15M R1D R1H R1M R5M R6H } enum ResponseHints { NONE SAMPLE_RESPONSES SUBGRAPHS TIMINGS TRACE_TIMINGS } enum ReviewDecision { APPROVED NOT_APPROVED } type ReviewProposalComment implements ProposalComment { createdAt: Timestamp! """null if the user is deleted""" createdBy: Identity id: ID! message: String! status: CommentStatus! """null if never updated""" updatedAt: Timestamp } type RoleOverride { graph: Service! @deprecated(reason: "RoleOverride can only be queried via a Graph, so any fields here should instead be selected via the parent object.") lastUpdatedAt: Timestamp! role: UserPermission! user: User! } type Router { """graphRef representing the Cloud Router""" id: ID! """Internal identifier for a Cloud Router""" internalId: ID """Return the GraphVariant associated with this Router""" graphVariant: GraphVariant """Date when the Cloud Router was created""" createdAt: NaiveDateTime! """ Last time when the Cloud Router was updated If the Cloud Router was never updated, this value will be null """ updatedAt: NaiveDateTime """Current status of the Cloud Router""" status: RouterStatus! """ The next scheduled router status, useful for telling when a router will be transitioning in the near future to another staus. If no change in status is scheduled, this field will be null """ nextStatus: RouterStatus """ Current version of the Cloud Router This will be null if the Cloud Router is in a deleted status. """ routerVersion: RouterVersion """ Cloud Router version applied for the next launch If this value is not null, any subsequent launch will use this version instead of the current one. This can happen when a new STABLE version is available, but we could not automatically update this Cloud Router, for example due to configuration issues. """ nextRouterVersion: RouterVersion """Capabilities for this Cloud Router""" capabilities: RouterCapabilities """ URL where the Cloud Router can be found This will be null if the Cloud Router is in a deleted status """ routerUrl: String @deprecated(reason: "use Router.endpoints instead") """ Custom URLs that can be used to reach the Cloud Router This will be null if the Cloud Router is in a deleted status or does not support custom domains. """ customDomains: [String!] @deprecated(reason: "use Router.endpoints instead") """Set of endpoints that can be used to reach a Cloud Router""" endpoints: RouterEndpoints! """Retrieves a specific Order related to this Cloud Router""" order(orderId: ID!): Order """Retrieves all Orders related to this Cloud Router""" orders(first: Int, offset: Int): [Order!]! """ Return the list of secrets for this Cloud Router with their hash values """ secrets: [Secret!]! """Shard associated with this Cloud Router""" shard: Shard """Order currently modifying this Cloud Router""" currentOrder: Order """ Number of Graph Compute Units (GCUs) associated with this Cloud Router This value is not present for Cloud Routers on the `SERVERLESS` tier. """ gcus: Int """Constants for Cloud Routers""" constants: CloudConstants! } type RouterAdminMutation { """Sleep this Cloud Router""" sleep: RouterSleepResult! """Wake up this Cloud Router""" wakeUp: RouterWakeUpResult! """Override the lastTraffic for Serverless Cloud Routers""" setLastTraffic(lastTraffic: NaiveDateTime!): RouterSetLastTrafficResult! """Update the Cloud Router state so it will display a `nextStatus` value""" setNextStatus(nextStatus: RouterStatus!): RouterSetNextStatusResult! """ Pre-create a custom domain for this Cloud Router, but don't enable routing yet """ preCreateCustomDomain(customDomain: String!): RouterPreCreateDomainResult! } """Capabilities for this Cloud Router""" type RouterCapabilities { """This Cloud Router supports getting and settings GCUs""" gcus: Boolean! """This Cloud Router can use private subgraphs""" privateSubgraphs: Boolean! """This Cloud Router can router traffic from custom domains""" customDomains: Boolean! """This Cloud Router supports using a custom path""" customPath: Boolean! } """Router configuration input""" input RouterConfigInput { """Router version for the Cloud Router""" routerVersion: String """Configuration for the Cloud Router""" routerConfig: String """Graph composition ID, also known as launch ID""" graphCompositionId: String """ Number of GCUs allocated for the Cloud Router This is ignored for serverless Cloud Routers """ gcus: Int } type RouterConfigVersion { """Name of the RouterConfigVersion""" name: String! """JSON schema for validating the router configuration""" configSchema: String } """Input to create a RouterConfigVersion""" input RouterConfigVersionInput { """Name of the RouterConfigVersion""" configVersion: String! """Configuration schema mapping for the RouterConfigVersion""" configSchema: String! } """ List of endpoints for Cloud Router ## Endpoint states If a Router is in the `DELETED` state, all the fields on this object will return `null`. For all other states, this table list all the possible valid states, and the mutations that can be performed on them. | Default Enabled? | Primary Endpoint | Custom Endpoints | Allowed endpoint mutations | | Yes | Default | null | N/A (this Router does not support custom endpoints) | | Yes | Default | [] | addCustomDomain, enableDefaultEndpoint, resetPrimaryEndpoint | | Yes | Default | ["1", "2", "3"] | addCustomDomain, enableDefaultEndpoint, removeCustomDomain("1", "2", or "3"), resetPrimaryEndpoint, setPrimaryEndpoint ("1", "2", or "3") | | Yes | Custom 1 | ["1", "2", "3"] | addCustomDomain, disableDefaultEndpoint, enableDefaultEndpoint, removeCustomDomain("2" or "3"), resetPrimaryEndpoint, setPrimaryEndpoint ("1", "2", or "3") | | No | Custom 1 | ["1", "2", "3"] | addCustomDomain, disableDefaultEndpoint, enableDefaultEndpoint, removeCustomDomain("2" or "3"), setPrimaryEndpoint ("1", "2", or "3") | """ type RouterEndpoints { """ Default Cloud Router endpoint This is null if the cloud router is in a deleted state. """ default: String """ Whether the default Cloud Router endpoint is enabled If the default endpoint is not enabled (`false`), this Cloud Router cannot receive traffic on the default endpoint. This is null if the cloud router is in a deleted state. """ defaultEnabled: Boolean """ Set of custom Cloud Router endpoints This is null if the cloud router is in a deleted state, or if it does not support custom endpoints. """ custom: [String!] """ Primary Cloud Router endpoint This is null if the cloud router is in a deleted state. """ primary: String } """Represents the possible outcomes of an endpoint mutation""" union RouterEndpointsResult = RouterEndpointsSuccess | InvalidInputErrors | InternalServerError """Successe branch of an addEndpoint or removeEndpoint mutation""" type RouterEndpointsSuccess { endpoints: RouterEndpoints! } type RouterEntitlement { """The id of the account this license was generated for.""" accountId: String! """Which audiences this license applies to.""" audience: [RouterEntitlementAudience!]! """ Router will stop serving requests after this time if commercial features are in use. """ haltAt: Timestamp """ RFC 8037 Ed25519 JWT signed representation of sibling fields. Restricted to internal services only. """ jwt: String! """Organization this license applies to.""" subject: String! throughputLimit: RateLimit """ Router will warn users after this time if commercial features are in use. """ warnAt: Timestamp } enum RouterEntitlementAudience { """Routers in Apollo hosted cloud.""" CLOUD """ Routers in offline environments with license files supplied from a URL or locally. """ OFFLINE """ Routers in self-hosted environments fetching their license from uplink. """ SELF_HOSTED } """A paginated list of router entitlements.""" type RouterEntitlementConnection { """A list of edges.""" edges: [RouterEntitlementEdge] """A list of router entitlements.""" nodes: [RouterEntitlement] """Information to aid in pagination.""" pageInfo: PageInfo! """The total number of router entitlements.""" totalCount: Int! } """An edge in a router entitlement connection.""" type RouterEntitlementEdge { """A cursor for use in pagination.""" cursor: String! """A router entitlement.""" node: RouterEntitlement } """Represents the possible outcomes of a setGcus mutation""" union RouterGcusResult = RouterGcusSuccess | InvalidInputErrors | InternalServerError """Success branch of a setGcus mutation""" type RouterGcusSuccess { order: Order! } type RouterMutation { """Set the version used for the next update for this Cloud Router""" setNextVersion(version: String!): SetNextVersionResult! """Set secrets for this Cloud Router""" setSecrets(input: RouterSecretsInput!): RouterSecretsResult! """Set a custom path for this Router""" setCustomPath(path: String!): RouterPathResult! """Set the number of GCUs associated with this Router""" setGcus(gcus: Int!): RouterGcusResult! """Add a custom domain for this Cloud Router""" addCustomDomain(customDomain: String!): RouterEndpointsResult! """Remove a custom domain for this Cloud Router""" removeCustomDomain(customDomain: String!): RouterEndpointsResult! """ Enable the default endpoint This mutation will only work if the Router is not in a DELETED state """ enableDefaultEndpoint: RouterEndpointsResult! """ Disable the default endpoint This mutation will only work if the Router is not in a DELETED state and the default endpoint is not the primary endpoint. """ disableDefaultEndpoint: RouterEndpointsResult! """ Set the primary endpoint to a custom endpoint This mutation will only work if the Router is not in a DELETED state, and the primary endpoint correspond to the full endpoint name (e.g. `https://api.mycompany.com/graphql`) of an existing custom endpoint. """ setPrimaryEndpoint(endpoint: String!): RouterEndpointsResult! """ Reset the primary endpoint to the default endpoint This mutation will only work if the Router is not in a DELETED state, and the default endpoint is enabled. """ resetPrimaryEndpoint: RouterEndpointsResult! """Sleep this Cloud Router""" sleep: RouterSleepResult! @deprecated(reason: "use Router.admin.sleep instead") """Admin mutations for this Router""" admin: RouterAdminMutation! } """Represents the possible outcomes of a setCustomPath mutation""" union RouterPathResult = RouterPathSuccess | InvalidInputErrors | InternalServerError """Success branch of a setCustomPath mutation""" type RouterPathSuccess { order: Order! endpoints: RouterEndpoints! } """ "Represents the possible outcomes of a ", RouterPreCreateDomain, " mutation" """ union RouterPreCreateDomainResult = RouterPreCreateDomainSuccess | InvalidInputErrors | InternalServerError """Success branch of a preCreateCustomDomain mutation""" type RouterPreCreateDomainSuccess { success: Boolean! } """User input for a RouterSecrets mutation""" input RouterSecretsInput { """Secrets to create or update""" secrets: [SecretInput!] """Secrets to remove""" unsetSecrets: [String!] } """Represents the possible outcomes of a RouterSecrets mutation""" union RouterSecretsResult = RouterSecretsSuccess | InvalidInputErrors | InternalServerError """Success branch of a RouterSecrets mutation.""" type RouterSecretsSuccess { secrets: [Secret!]! order: Order! } """ "Represents the possible outcomes of a ", RouterSetLastTraffic, " mutation" """ union RouterSetLastTrafficResult = RouterSetLastTrafficSuccess | InvalidInputErrors | InternalServerError """Success branch of a setLastTraffic mutation""" type RouterSetLastTrafficSuccess { success: Boolean! } """ "Represents the possible outcomes of a ", RouterSetNextStatus, " mutation" """ union RouterSetNextStatusResult = RouterSetNextStatusSuccess | InvalidInputErrors | InternalServerError """Success branch of a setNextStatus mutation""" type RouterSetNextStatusSuccess { success: Boolean! } """ "Represents the possible outcomes of a ", RouterSleep, " mutation" """ union RouterSleepResult = RouterSleepSuccess | InvalidInputErrors | InternalServerError """Success branch of a sleep mutation""" type RouterSleepSuccess { success: Boolean! } """Current status of Cloud Routers""" enum RouterStatus { """Cloud Router is not yet provisioned""" CREATING """Cloud Router is running, but currently being updated""" UPDATING """ Cloud Router is running, but currently being deleted This is the only mutation state that doesn't support rollback. If we fail to delete a Router, the workflows are configured to stop and keep the router into the Deleting status. """ DELETING """ Current order is rolling back to the last known good state After a RollingBack state, a Router can move either into Running state (from a Update order) or Deleted (from a Create order). If we fail to roll back, the workflows are configured to stop and keep the router into the RollingBack status. """ ROLLING_BACK """Current router is running and able to server requests""" RUNNING """ Router has been put to sleep. This state should only be possible for Serverless routers """ SLEEPING """Router has been deleted""" DELETED } type RouterUpsertFailure { message: String! } """ A generic key→count type so that router usage metrics can be added to without modifying the `trackRouterUsage` mutation """ input RouterUsageInput { count: Int! key: String! } """Router Version""" type RouterVersion { """Version identifier""" version: String! """Core version identifier""" core: String! """Build number""" build: String! """Status of a router version""" status: Status! """Config version for this router version""" configVersion: String! """ JSON schema for validating the router configuration for this router version """ configSchema: String! """Latest supported BuildPipelineTrack for this version""" latestSupportedPipelineTrack: String } type RouterVersionBuild { jobId: String! routerVersion: String status: RouterVersionBuildStatus! } type RouterVersionBuildError { jobId: String! routerVersion: String } type RouterVersionBuildPageResults { count: Int! cursor: Cursor results: [RouterVersionBuildResult!]! } union RouterVersionBuildResult = RouterVersionBuild | RouterVersionBuildError enum RouterVersionBuildsField { CREATED_AT } input RouterVersionBuildsInput { orderBy: RouterVersionBuildsOrderByInput pagination: CloudRouterTestingToolPaginationInput } input RouterVersionBuildsOrderByInput { field: RouterVersionBuildsField! direction: OrderingDirection! } enum RouterVersionBuildStatus { PENDING BUILDING COMPLETE CANCELLED } """Result of a RouterConfigVersion mutation""" union RouterVersionConfigResult = RouterConfigVersion | CloudInvalidInputError | InternalServerError """Input to create a new router version""" input RouterVersionCreateInput { """Version identifier""" version: String! """Version status""" status: Status! """Version of the configuration""" configVersion: String! """Latest supported BuildPipelineTrack for this version""" latestSupportedPipelineTrack: String! } """Result of a router version query""" union RouterVersionResult = RouterVersion | InvalidInputErrors | InternalServerError """List of router versions""" type RouterVersions { versions: [RouterVersion!]! } """Input for filtering router versions""" input RouterVersionsInput { """Maximum number of versions to return""" limit: Int """Name of the branch""" branch: String """Status of the version""" status: Status } """Result of a router versions query""" union RouterVersionsResult = RouterVersions | InvalidInputErrors | InternalServerError """Input for updating a router version""" input RouterVersionUpdateInput { """Version identifier""" version: String! """Version status""" status: Status """Version of the configuration""" configVersion: String """Latest supported BuildPipelineTrack for this version""" latestSupportedPipelineTrack: String } """ "Represents the possible outcomes of a ", RouterWakeUp, " mutation" """ union RouterWakeUpResult = RouterWakeUpSuccess | InvalidInputErrors | InternalServerError """Success branch of a wakeUp mutation""" type RouterWakeUpSuccess { success: Boolean! } input RoverArgumentInput { key: String! value: Object } type RuleEnforcement { """The instant this enforcement was created.""" createdAt: Timestamp! """Identifying info for the creator of this enforcement.""" createdBy: String! """The instant this enforcement was deleted.""" deletedAt: Timestamp """The identifier for the graph this this enforcement applies to.""" graphId: String! """The name of the variant that this enforcement applies to.""" graphVariant: String """The ID of this enforcement.""" id: ID! """ A list of key/value pairs representing any parameters necessary for the policy's enforcement. """ params: [StringToString!] """The policy that this enforcement belongs to.""" policy: EnforcementPolicy! """The instant this enforcement was last updated.""" updatedAt: Timestamp! } type RuleEnforcementError { message: String! } union RuleEnforcementResult = RuleEnforcement | RuleEnforcementError input RunLintCheckInput { baseSchema: SchemaHashInput! checkStep: CheckStepInput! proposedSchema: SchemaHashInput! } """Inputs needed to find all relevant proposals to a check workflow""" input RunProposalsCheckInput { """ List of subgraph names and hashes from the state of this variant when the check was run. """ baseSubgraphs: [SubgraphCheckInput!]! """ Supergraph hash that was most recently published when the check was run """ baseSupergraphHash: String! """ List of subgraph names and hashes that are being proposed in the check task """ proposedSubgraphs: [SubgraphCheckInput!]! """Supergraph hash that is the output of the check's composition task""" proposedSupergraphHash: String! """ If this check was created by rerunning, the original check workflow task that was rerun """ rerunOfTaskId: ID """ The severity to assign the check results if matching proposals are not found """ severityLevel: ProposalChangeMismatchSeverity! """ The check workflow task id. Used by Task entities to resolve the results """ workflowTaskId: String! } """Per-organization S3 integration configuration.""" type S3IntegrationConfig { """The organization that owns this S3 integration configuration.""" account: Account! """The AWS region of the customer's S3 bucket.""" awsRegion: String! """The time at which this configuration was created.""" createdAt: Timestamp! """ ARN of the customer's AWS IAM role that Apollo assumes to write to the bucket. """ customerRoleArn: String! """Whether this S3 integration is currently enabled.""" enabled: Boolean! """ The per-customer external ID for the AWS IAM role trust policy. The create mutation result returns the full plaintext (the only place it's surfaced). Subsequent reads return a redacted preview with only the last few characters visible. """ externalId: String! """Unique identifier for this S3 integration configuration.""" id: ID! """ Optional customer KMS key ARN. When set, audit files written to the bucket are encrypted with this key (SSE-KMS). """ kmsKeyArn: String """ End of the most recent time window successfully exported to the bucket, if any. """ lastSuccessfulWindowEnd: Timestamp """Name of the customer's destination S3 bucket.""" s3Bucket: String! """Optional key prefix prepended to objects written to the bucket.""" s3KeyPrefix: String """The time at which this configuration was last updated.""" updatedAt: Timestamp! } """Mutations for an existing S3 integration configuration.""" type S3IntegrationMutation { """ Permanently delete this S3 integration configuration. Use s3Integration(id).update to enable or disable a configuration without removing it. """ delete: DeleteS3IntegrationResult! """ Update this S3 integration configuration. Every field is optional: only the fields supplied are changed, the rest are left as-is. """ update( """When omitted, the destination bucket is left unchanged.""" bucket: String """ When provided and true, enables this configuration and returns AlreadyConfiguredError if a different configuration is already enabled for the organization. When omitted, the enabled state is left unchanged. """ enabled: Boolean """ When omitted or null, the stored external ID is left unchanged. When a value is passed in, it replaces the stored external ID and is returned in the mutation result. """ externalId: String """ The customer KMS key ARN for SSE-KMS encryption of uploaded audit files. Omit to leave it unchanged, pass null to clear it, or pass a value to set it. """ kmsKeyArn: String """ The object key prefix. Omit to leave it unchanged, pass null to clear it, or pass a value to set it. """ prefix: String """When omitted, the AWS region is left unchanged.""" region: String """When omitted, the customer role ARN is left unchanged.""" roleArn: String ): UpdateS3IntegrationResult! } type SafAssessment { id: ID! """The date and time the assessment was started.""" startedAt: Date! """The date and time the assessment was completed.""" completedAt: Date """The graph that this assessment belongs to.""" graph: Service! """The responses for this assessment.""" responses: [SafResponse!]! """The plan items for this assessment.""" planItems: [SafPlanItem!]! """The time that the assessment was deleted.""" deletedAt: Date } type SafAssessmentMutation { id: String! """Save a response for a question.""" saveResponse( """The response to save.""" input: SafResponseInput! ): SafResponse! """Submit the assessment.""" submit(planItemIds: [String!]!, organizationId: String): SafAssessment! """Delete the assessment.""" delete: SafAssessment! """Mutations for a specific plan item.""" planItem(id: ID!): SafPlanItemMutation """Reorder the plan items for a given assessment.""" reorderPlanItems( """An array of plan item IDs in the desired order.""" ids: [ID!]! ): [SafPlanItem!]! } type SafPlanItem { id: ID! bestPracticeId: String! notes: String! order: Int! isDeprioritized: Boolean! } input SafPlanItemInput { notes: String! isDeprioritized: Boolean! order: Int! } type SafPlanItemMutation { """Update a plan item.""" update(input: SafPlanItemInput!): SafPlanItem! } type SafResponse { id: ID! """The ID of the question that this response is for.""" questionId: String! """A list of responses for this question.""" response: [String!]! """Additional context or feedback about the question.""" comment: String! """The assessment that this response belongs to.""" assessment: SafAssessment } input SafResponseInput { questionId: String! response: [String!]! comment: String! } type SamlCertInfo { id: ID! notAfter: Timestamp! notBefore: Timestamp! pem: String! subjectDN: String! } input SamlConfigurationInput { encryptionCerts: [String!] entityId: String! ssoUrl: String! verificationCerts: [String!]! wantsSignedRequests: Boolean } type SamlConnection implements SsoConnection { domains: [String!]! id: ID! idpId: ID! metadata: SamlIdpMetadata! scim: SsoScimProvisioningDetails state: SsoConnectionState! @deprecated(reason: "Use stateV2 instead") stateV2: SsoConnectionStateV2! updatedAt: Timestamp! } type SamlConnectionMutation { addEncryptionCert(pem: String!): SamlConnection addVerificationCert(pem: String!): SamlConnection removeVerificationCert(certId: ID!): SamlConnection updateIdpId(idpId: String!): SamlConnection } type SamlIdpMetadata { encryptionCerts: [SamlCertInfo!]! entityId: String! ssoUrl: String! verificationCerts: [SamlCertInfo!]! wantsSignedRequests: Boolean! } type ScheduledSummary implements ChannelSubscription { channel: Channel @deprecated(reason: "Use channels list instead") channels: [Channel!]! enabled: Boolean! id: ID! timezone: String! variant: String! } """A GraphQL schema document and associated metadata.""" type Schema { """ The GraphQL schema document's SHA256 hash, represented as a hexadecimal string. """ hash: ID! """The timestamp of initial ingestion of a schema to a graph.""" createdAt: Timestamp! introspection: IntrospectionSchema! gitContext: GitContext """ The number of fields; this includes user defined fields only, excluding built-in types and fields """ fieldCount: Int! @deprecated(reason: "Use metadata instead") """ The number of types; this includes user defined types only, excluding built-in types """ typeCount: Int! @deprecated(reason: "Use metadata instead") """ The list of schema coordinates ('TypeName.fieldName') in the schema that can be measured by usage reporting. Currently only supports object types and interface types. """ observableCoordinates: [SchemaCoordinate!] """The GraphQL schema document.""" document: GraphQLDocument! createTemporaryURL(expiresInSeconds: Int! = 86400): TemporaryURL """Metadata associated with the schema.""" metadata: SchemaMetadata } """ An error that occurred while running schema composition on a set of subgraph schemas. """ type SchemaCompositionError { """A human-readable message describing the error.""" message: String! """Source locations related to the error.""" locations: [SourceLocation]! """A machine-readable error code.""" code: String } type SchemaCoordinate { id: ID! """The printed coordinate value, e.g. 'ParentType.fieldName'""" coordinate: String! """Whether the coordinate being referred to is marked as deprecated""" isDeprecated: Boolean! } input SchemaCoordinateFilterInput { """ If true, only include deprecated coordinates. If false, filter out deprecated coordinates. """ deprecated: Boolean } """The schema coordinates to include or exclude in the report.""" input SchemaCoordinateInsightsTimeseriesReportCoordinateFilterInInput { """The schema coordinate's kind.""" kind: CoordinateKind! """ The named attribute. This is the field name for object and input object fields, or the enum value for enums. If this is null, the filter will apply to all named attributes with the same named type. """ namedAttribute: String """ The named type. This is the parent type for object and input object fields, or the enum name for enums. If this is null, the filter will apply to all named types with the same named attribute. """ namedType: String } enum SchemaCoordinateInsightsTimeseriesReportDimension { COORDINATE_KIND NAMED_ATTRIBUTE NAMED_TYPE VARIANT_NAME } """ The type and value for an schema coordinate insights timeseries report dimension. """ type SchemaCoordinateInsightsTimeseriesReportDimensionValue { """The type of dimension this represents.""" type: SchemaCoordinateInsightsTimeseriesReportDimension! """ The string value of this dimension. Null for operations without this dimension (e.g., unnamed operations). """ value: String } """ Lists of dimensions to include or exclude in the schema coordinate timeseries report. Each list can have a maximum of 1000 entries. """ input SchemaCoordinateInsightsTimeseriesReportFilterInInput { """The named type and attributes to include or exclude.""" coordinates: [SchemaCoordinateInsightsTimeseriesReportCoordinateFilterInInput!] """ The name of the variant where the the operation that referenced or executed the schema coordinate was run. """ variantName: [String!] } """ The filters available when using the schema coordinate timeseries report. """ input SchemaCoordinateInsightsTimeseriesReportFilterInput { """ Include only certain kinds of schema coordinates (object fields, input object fields, enum values). """ coordinateKinds: [CoordinateKind!] """ Exclude schema coordinates that match a specified set of dimensions. If the same dimension exists in both 'include' and 'exclude', an REQUEST_INVALID error will be returned. """ exclude: SchemaCoordinateInsightsTimeseriesReportFilterInInput """Include schema coordinates that match a specified set of dimensions.""" include: SchemaCoordinateInsightsTimeseriesReportFilterInInput } enum SchemaCoordinateInsightsTimeseriesReportMetric { ERROR_COUNT ESTIMATED_EXECUTION_COUNT OBSERVED_EXECUTION_COUNT REQUEST_COUNT } """ The type and value for an schema coordinate insights timeseries report metric. """ type SchemaCoordinateInsightsTimeseriesReportMetricValue { """The type of metric this represents.""" type: SchemaCoordinateInsightsTimeseriesReportMetric! """The floating point value of this metric.""" value: Float! } """ The metric and direction to use as the secondary sort order for the schema coordinate timeseries report. The primary sort order will always be time. """ input SchemaCoordinateInsightsTimeseriesReportOrderByInput { """The order column used for the metrics results.""" column: SchemaCoordinateInsightsTimeseriesReportMetric! """The direction used to order operation results.""" direction: Ordering! } """ The data that is returned by the schema coordinate insights timeseries report. """ type SchemaCoordinateInsightsTimeseriesReportResult { """ A CSV representation of the results. This includes a header and rows that have a column for start and end timestamp and all requested dimensions and metrics. """ csv: String """ The result records, with each row having a start and end timestamp and a set of dimensions and metrics. """ records: [SchemaCoordinateInsightsTimeseriesReportRow!]! } """ A single row of data that is returned by the schema coordinate insights timeseries report. """ type SchemaCoordinateInsightsTimeseriesReportRow { """The dimension values for this row, matching the requested dimensions.""" dimensions: [SchemaCoordinateInsightsTimeseriesReportDimensionValue!]! """The exclusive end of the time bucket for this row.""" endExclusiveTimestamp: Timestamp! """The metric values for this row, matching the requested metrics.""" metrics: [SchemaCoordinateInsightsTimeseriesReportMetricValue!]! """The start of the time bucket for this row.""" startTimestamp: Timestamp! } """ A client filter entry. At least one of clientName or clientVersion must be provided. Omitting clientVersion matches all versions of the given client; omitting clientName matches all clients with the given version. """ input SchemaCoordinateInsightsUsageReportClientInput { """The client name. If omitted, matches any client name.""" clientName: String """The client version. If omitted, matches any client version.""" clientVersion: String } """A sortable column of the schema coordinate usage report.""" enum SchemaCoordinateInsightsUsageReportColumn { """ The estimated total number of times that the coordinate was executed taking into account sampling. This will always be zero for input object fields and enum values. """ ESTIMATED_EXECUTION_COUNT """The timestamp that the coordinate was last executed or referenced.""" LAST_SEEN_AT """ The number of times that the coordinate was reported as executed. This will always be zero for input object fields and enum values. """ OBSERVED_EXECUTION_COUNT """ The number of operation executions that contained a reference to the coordinate. """ REFERENCING_OPERATION_COUNT } """The filters available when using the schema coordinate usage report.""" input SchemaCoordinateInsightsUsageReportFilterInput { """ If set, include only schema coordinates used by at least one of the specified client name and version pairs. Cannot contain more than 100 pairs. """ clients: [SchemaCoordinateInsightsUsageReportClientInput!] """ Include only certain kinds of schema coordinates (object fields, input object fields, enum values). """ coordinateKinds: [CoordinateKind!] """ If set, include only schema coordinates whose `@deprecated` status in the active schema matches this value. """ deprecated: Boolean """ If set, include only schema coordinates whose used status matches this value. A coordinate is 'used' if it was referenced or executed at any point since the requested 'since' timestamp. """ used: Boolean } """ The column and direction to use when ordering the schema coordinate usage report. """ input SchemaCoordinateInsightsUsageReportOrderByInput { """The column used to order the results.""" column: SchemaCoordinateInsightsUsageReportColumn! """The direction used to order the results.""" direction: Ordering! } """ The data that is returned by the schema coordinate insights usage report. """ type SchemaCoordinateInsightsUsageReportResult { """ A CSV representation of the results. This includes a header and a row per schema coordinate with all of its columns. """ csv: String! """ The result records, one per schema coordinate, describing its current usage and deprecation status. """ records: [SchemaCoordinateInsightsUsageReportRow!]! } """ A single schema coordinate (object field, input object field, or enum value) and its current usage and deprecation status. """ type SchemaCoordinateInsightsUsageReportRow { """ The name of the client that used this coordinate. Populated only when 'groupByClient' is true. """ clientName: String """ The version of the client that used this coordinate. Populated only when 'groupByClient' is true. """ clientVersion: String """The schema coordinate's kind.""" coordinateKind: CoordinateKind! """ Whether this schema coordinate is marked `@deprecated` in the active schema for the variant. """ deprecated: Boolean! """ The estimated total number of executions for this schema coordinate since the requested 'since' timestamp, based on the field execution sample rate. """ estimatedExecutionCount: Long! """ The most recent timestamp at which this schema coordinate was seen (referenced or executed). Null if it has not been seen since the requested 'since' timestamp. """ lastSeenAt: Timestamp """ The named attribute. This is the field name for object and input object fields, or the enum value for enums. """ namedAttribute: String! """ The named type. This is the parent type for object and input object fields, or the enum name for enums. """ namedType: String! """ The total number of observed executions recorded for this schema coordinate since the requested 'since' timestamp. """ observedExecutionCount: Long! """ The total number of operations that referenced this schema coordinate since the requested 'since' timestamp. """ referencingOperationCount: Long! """ Whether this schema coordinate has been referenced or executed at any point since the requested 'since' timestamp. """ used: Boolean! } """ The result of computing the difference between two schemas, usually as part of schema checks. """ type SchemaDiff { type: ChangeType! @deprecated(reason: "use severity instead") """ Indicates the overall safety of the changes included in the diff, based on operation history (e.g., `FAILURE` or `NOTICE`). """ severity: ChangeSeverity! """A list of all schema changes in the diff, including their severity.""" changes: [Change!]! """Numeric summaries for each type of change in the diff.""" changeSummary: ChangeSummary! """Operations affected by all changes in the diff.""" affectedQueries: [AffectedQuery!] """Clients affected by all changes in the diff.""" affectedClients: [AffectedClient!] @deprecated(reason: "Unsupported.") """The number of GraphQL operations that were validated during the check.""" numberOfCheckedOperations: Int """ The number of GraphQL operations affected by the diff's changes that are neither marked as safe nor ignored. """ numberOfAffectedOperations: Int! """Configuration of validation""" validationConfig: SchemaDiffValidationConfig """The tag against which this diff was created""" tag: String } type SchemaDiffValidationConfig { """ delta in seconds from current time that determines the start of the window for reported metrics included in a schema diff. A day window from the present day would have a `from` value of -86400. In rare cases, this could be an ISO timestamp if the user passed one in on diff creation """ from: Timestamp """ delta in seconds from current time that determines the end of the window for reported metrics included in a schema diff. A day window from the present day would have a `to` value of -0. In rare cases, this could be an ISO timestamp if the user passed one in on diff creation """ to: Timestamp """ Minimum number of requests within the window for a query to be considered. """ queryCountThreshold: Int """ Number of requests within the window for a query to be considered, relative to total request count. Expected values are between 0 and 0.05 (minimum 5% of total request volume) """ queryCountThresholdPercentage: Float """Clients to ignore during validation.""" excludedClients: [ClientInfoFilterOutput!] """Operation names to ignore during validation.""" excludedOperationNames: [OperationNameFilter] """Operation IDs to ignore during validation.""" ignoredOperations: [ID!] """Variants to include during validation.""" includedVariants: [String!] } input SchemaHashInput { """If provided fetches build messages that are added to linter results.""" buildID: ID """SHA256 of the schema sdl.""" hash: String! subgraphs: [SubgraphHashInput!] } """Metadata associated with a GraphQL schema""" type SchemaMetadata { """Number of directives.""" directiveCount: Int! """Number of Federation entities. Null if the schema is not a Supergraph.""" entityCount: Int """Number of enum types.""" enumCount: Int! """Number of input types.""" inputCount: Int! """Number of fields defined on input types.""" inputFieldCount: Int! """Number of interface types.""" interfaceCount: Int! """Number of fields defined on interface types.""" interfaceFieldCount: Int! """Number of fields defined on the Mutation type.""" mutationFieldCount: Int! """Number of object types.""" objectCount: Int! """Number of fields across all non-root object types""" otherFieldCount: Int! """Number of fields defined on the Query type.""" queryFieldCount: Int! """Number of scalar types.""" scalarCount: Int! """Number of fields defined on the Subscription type.""" subscriptionFieldCount: Int! """Number of union types.""" unionCount: Int! } type SchemaPublishSubscription implements ChannelSubscription { channels: [Channel!]! createdAt: Timestamp! enabled: Boolean! id: ID! lastUpdatedAt: Timestamp! variant: String } input SchemaReport { """ A randomly generated UUID, immutable for the lifetime of the edge server runtime. """ bootId: String! """ The hex SHA256 hash of the schema being reported. Note that for a GraphQL server with a core schema, this should be the core schema, not the API schema. """ coreSchemaHash: String! """The graph ref (eg, 'id@variant')""" graphRef: String! """ The version of the edge server reporting agent, e.g. apollo-server-2.8, graphql-java-3.1, etc. length must be <= 256 characters. """ libraryVersion: String """ The infra environment in which this edge server is running, e.g. localhost, Kubernetes, AWS Lambda, Google CloudRun, AWS ECS, etc. length must be <= 256 characters. """ platform: String """ The runtime in which the edge server is running, e.g. node 12.03, zulu8.46.0.19-ca-jdk8.0.252-macosx_x64, etc. length must be <= 256 characters. """ runtimeVersion: String """ If available, an identifier for the edge server instance, such that when restarting this instance it will have the same serverId, with a different bootId. For example, in Kubernetes this might be the pod name. Length must be <= 256 characters. """ serverId: String """ An identifier used to distinguish the version (from the user's perspective) of the edge server's code itself. For instance, the git sha of the server's repository or the docker sha of the associated image this server runs with. Length must be <= 256 characters. """ userVersion: String } """ Contains details for an individual publication of an individual graph variant. """ type SchemaTag { """The identifier for this specific publication.""" id: ID! """ The launch for this publication. This value is non-null for contract variants, and sometimes null for composition variants (specifically for older publications). This value is null for other variants. """ launch: Launch """ The variant that was published to." """ variant: GraphVariant! tag: String! @deprecated(reason: "Please use variant { name } instead") """The schema that was published to the variant.""" schema: Schema! """ The result of federated composition executed for this publication. This result includes either a supergraph schema or error details, depending on whether composition succeeded. This value is null when the publication is for a non-federated graph. """ compositionResult: CompositionResult createdAt: Timestamp! """The timestamp when the variant was published to.""" publishedAt: Timestamp! """ The Identity that published this schema and their client info, or null if this isn't a publish. Sub-fields may be null if they weren't recorded. """ publishedBy: IdentityAndClientInfo """ List of previously uploaded SchemaTags under the same tag name, starting with the selected published schema record. Sorted in reverse chronological order by creation date (newest publish first). Note: This does not include the history of checked schemas """ history(limit: Int! = 3, offset: Int = 0, includeUnchanged: Boolean! = true, orderBy: SchemaTagHistoryOrder = CREATED_DESC): [SchemaTag!]! """ Number of tagged schemas created under the same tag name. Also represents the maximum size of the history's limit argument. """ historyLength(includeUnchanged: Boolean! = true): Int! """ Number of schemas tagged prior to this one under the same tag name, its position in the tag history. """ historyOrder: Int! """ A schema diff comparing against the schema from the most recent previous successful publication. """ diffToPrevious: SchemaDiff gitContext: GitContext slackNotificationBody(graphDisplayName: String!): String webhookNotificationBody: String! } enum SchemaTagHistoryOrder { CREATED_DESC CREATED_ASC } """An error that occurs when an invalid schema is passed in as user input""" type SchemaValidationError implements Error { issues: [SchemaValidationIssue!]! """The error's details.""" message: String! } """An error that occurs when an invalid schema is passed in as user input""" type SchemaValidationIssue { message: String! } """ How many seats of the given types does an organization have (regardless of plan type)? """ type Seats { """How many members that are free in this organization.""" free: Int! """How many members that are not free in this organization.""" fullPrice: Int! } """Cloud Router secret""" type Secret { """When the secret was created""" createdAt: DateTime! """Name of the secret""" name: String! """Hash of the secret""" hash: String! } """Input for creating or updating secrets""" input SecretInput { """Name of the secret""" name: String! """ Value for that secret This can only be used for input, as it is not possible to retrieve the value of secrets. """ value: String! } type SemanticChange { """Semantic metadata about the type of change""" definition: ChangeDefinition! """Top level node affected by the change""" parentNode: NamedIntrospectionType """ Node related to the top level node that was changed, such as a field in an object, a value in an enum or the object of an interface """ childNode: NamedIntrospectionValue """Target arg of change made.""" argNode: NamedIntrospectionArg """Short description of the change""" shortDescription: String } """ A graph in Apollo Studio represents a graph in your organization. Each graph has one or more variants, which correspond to the different environments where that graph runs (such as staging and production). Each variant has its own GraphQL schema, which means schemas can differ between environments. """ type Service implements Identity { """The graph's globally unique identifier.""" id: ID! """All active policy rules for this graph, paginated.""" policyRules(limit: Int, cursor: String): PolicyRulePage! """Look up a single policy rule in this graph by id.""" policyRule(id: UUID!): PolicyRule! """All active policy exceptions for this graph, paginated.""" policyExceptions(limit: Int, cursor: String): PolicyExceptionPage! """Look up a single policy exception in this graph by id.""" policyException(id: UUID!): PolicyException! """ All access requests for this graph, paginated, with optional filtering. """ accessRequests(limit: Int, cursor: String, filter: AccessRequestFilterInput): AccessRequestPage! """Look up a single access request by id.""" accessRequest(id: UUID!): AccessRequest! """The organization that this graph belongs to.""" account: Account """Provides a view of the graph as an `Actor` type.""" asActor: Actor! """Custom check configuration for this graph.""" customCheckConfiguration: CustomCheckConfiguration name: String! """Describes the permissions that the active user has for this graph.""" roles: ServiceRoles """Get a specific graph artifact tag""" graphArtifactTag( """The name of the tag""" tag: String! ): GraphArtifactTag """ The list of graph artifact tags belonging to this graph. Optionally, provide a variant name to filter by variant """ graphArtifactTags( """The cursor to start pagination after (for forward pagination)""" after: String """ The optional graph variant name, used to filter the results to a single variant """ first: Int """ The optional graph variant name, used to filter the results to a single variant """ variantName: String ): GraphArtifactTagConnection! """ The list of graph artifact tags belonging to this graph. Optionally, provide a variant name to filter by variant """ graphArtifacts( """The cursor to start pagination after (for forward pagination)""" after: String """ The optional graph variant name, used to filter the results to a single variant """ first: Int """ The optional graph variant name, used to filter the results to a single variant """ variantName: String ): GraphArtifactConnection! """A list of the graph API keys that are active for this graph.""" apiKeys: [GraphApiKey!] """Permissions of the current user in this graph.""" myRole: UserPermission """ The list of members that can access this graph, accounting for graph role overrides """ roleOverrides: [RoleOverride!] """A list of the variants for this graph.""" variants: [GraphVariant!]! lastReportedAt(graphVariant: String): Timestamp """ Returns a timeseries of operation metrics across a specified time range for this graph. This will return specified metrics (request count, avg latency, etc) grouped by time and the specified dimensions (query ID, query name, client name, etc). This API is rate limited and only allows a small number of requests per minute, and will return a RATE_LIMIT_EXCEEDED error if too many requests are made for a graph. If a request to this field times out, we recommend that you try a shorter time range or fewer dimensions. """ operationInsightsTimeseriesReport( """ The dimensions to group by. Grouping by persisted query ID (`PERSISTED_QUERY_ID`) is only available when using router v2.2.0 and onwards. """ dimensions: [OperationInsightsTimeseriesReportDimension!]! """ Filtering criteria for the results. Defaults to showing all unfiltered results. """ filters: OperationInsightsTimeseriesReportFilterInput """ The starting timestamp for the report. Must be in the format: 2025-01-01T00:00:00Z (ISO 8601). """ from: Timestamp! """Maximum number of records to return (default: 100, max 10000).""" limit: Int! = 100 """The metrics to be returned.""" metrics: [OperationInsightsTimeseriesReportMetric!]! """ The results will always be sorted by time, but this allows you to set a secondary sorting criteria for the results. """ orderBy: OperationInsightsTimeseriesReportOrderByInput """ The resolution of the time groups for the report. This resolution will affect the range of times that can be used for the 'from' and 'to' timestamps: - For the MINUTE resolution, the total time between 'from' and 'to' must be no more than 1 day, and the 'from' time must be no earlier than 30 days ago. - For the HOUR resolution, the total time between 'from' and 'to' must be no more than 7 days, and the 'from' time must be no earlier than 90 days ago. - For the DAY and MONTH resolution, the 'from' time must be no earlier than 549 days ago (approx 18 months), and the 'to' time must be no later than 1 day ago. If these criteria are not met, this will return an REQUEST_INVALID error. """ resolution: TimeseriesReportResolution! """ The ending timestamp for the report. Must be in the format: 2025-01-01T08:00:00Z (ISO 8601). """ to: Timestamp! ): OperationInsightsTimeseriesReportResult! ruleEnforcement(id: ID!): RuleEnforcement """ Returns a timeseries of object field, input object field, and enum value metrics across a specified time range for this graph. This will return specified metrics (request count, error count, etc) grouped by time and the specified dimensions (parent type, field name, client name, etc). This API is rate limited and only allows a small number of requests per minute, and will return a RATE_LIMIT_EXCEEDED error if too many requests are made for a graph. If a request to this field times out, we recommend that you try a shorter time range or fewer dimensions. """ schemaCoordinateInsightsTimeseriesReport( """The dimensions to group by.""" dimensions: [SchemaCoordinateInsightsTimeseriesReportDimension!] """ Filtering criteria for the results. Defaults to showing all unfiltered results. """ filters: SchemaCoordinateInsightsTimeseriesReportFilterInput """ The starting timestamp for the report. Must be in the format: 2025-01-01T00:00:00Z (ISO 8601). """ from: Timestamp! """Maximum number of records to return (default: 100, max 10000).""" limit: Int! = 100 """The metrics to be returned.""" metrics: [SchemaCoordinateInsightsTimeseriesReportMetric!] """ Sorting criteria for the results. Defaults to ordering by most recent timestamp and then the dimensions in order. """ orderBy: SchemaCoordinateInsightsTimeseriesReportOrderByInput """ The resolution of the time groups for the report. This resolution will affect the range of times that can be used for the 'from' and 'to' timestamps: - The MINUTE resolution is not supported for schema coordinate insights. - For the HOUR resolution, the total time between 'from' and 'to' must be no more than 7 days, and the 'from' time must be no earlier than 90 days ago. - For the DAY and MONTH resolution, the 'from' time must be no earlier than 549 days ago (approx 18 months), and the 'to' time must be no later than 1 day ago. If these criteria are not met, this will return an REQUEST_INVALID error. """ resolution: TimeseriesReportResolution """ The ending timestamp for the report. Must be in the format: 2025-01-01T08:00:00Z (ISO 8601). """ to: Timestamp! ): SchemaCoordinateInsightsTimeseriesReportResult! """ Returns a timeseries of subgraph and connector fetch metrics across a specified time range for this graph. Each request from the router to a subgraph or connector service is counted as a fetch. A single GraphQL operation can result in multiple fetches, depending on the operation shape and query plan. This will return specified metrics (fetch count, avg latency, etc.) grouped by time and the specified dimensions (fetch service ID, fetch service name, client name, etc.). This API is rate limited and only allows a small number of requests per minute, and will return a RATE_LIMIT_EXCEEDED error if too many requests are made for a graph. If a request to this field times out, we recommend that you try a shorter time range or fewer dimensions. """ subgraphInsightsTimeseriesReport( """The dimensions to group by.""" dimensions: [SubgraphInsightsTimeseriesReportDimension!]! """ Filtering criteria for the results. Defaults to showing all unfiltered results. """ filters: SubgraphInsightsTimeseriesReportFilterInput """ The starting timestamp for the report. Must be in the format: 2025-01-01T00:00:00Z (ISO 8601). """ from: Timestamp! """Maximum number of records to return (default: 100, max 10000).""" limit: Int! = 100 """The metrics to be returned.""" metrics: [SubgraphInsightsTimeseriesReportMetric!]! """ The results will always be sorted by time, but this allows you to set a secondary sorting criteria for the results. """ orderBy: SubgraphInsightsTimeseriesReportOrderByInput """ The resolution of the time groups for the report. This resolution will affect the range of times that can be used for the 'from' and 'to' timestamps: - For the MINUTE resolution, the total time between 'from' and 'to' must be no more than 1 day, and the 'from' time must be no earlier than 30 days ago. - For the HOUR resolution, the total time between 'from' and 'to' must be no more than 7 days, and the 'from' time must be no earlier than 90 days ago. - For the DAY and MONTH resolution, the 'from' time must be no earlier than 549 days ago (approx 18 months), and the 'to' time must be no later than 1 day ago. If these criteria are not met, this will return an REQUEST_INVALID error. """ resolution: TimeseriesReportResolution! """ The ending timestamp for the report. Must be in the format: 2025-01-01T08:00:00Z (ISO 8601). """ to: Timestamp! ): SubgraphInsightsTimeseriesReportResult! trace(id: ID!): Trace accountId: ID """ The `GraphVariant` types of all proposal variants. This is a potentially expensive field to query. """ allProposalVariants: [GraphVariant!]! """ Get an URL to which an avatar image can be uploaded. Client uploads by sending a PUT request with the image data to MediaUploadInfo.url. Client SHOULD set the "Content-Type" header to the browser-inferred MIME type, and SHOULD set the "x-apollo-content-filename" header to the filename, if such information is available. Client MUST set the "x-apollo-csrf-token" header to MediaUploadInfo.csrfToken. """ avatarUpload: AvatarUploadResult """ Get an image URL for the service's avatar. Note that CORS is not enabled for these URLs. The size argument is used for bandwidth reduction, and should be the size of the image as displayed in the application. Apollo's media server will downscale larger images to at least the requested size, but this will not happen for third-party media servers. """ avatarUrl(size: Int! = 40): String """Get available notification endpoints""" channels(channelIds: [ID!]): [Channel!] """Get a check workflow for this graph by its ID""" checkWorkflow(id: ID!): CheckWorkflow """Get a check workflow task for this graph by its ID""" checkWorkflowTask(id: ID!): CheckWorkflowTask """Get a composition build check result for this graph by its ID""" compositionBuildCheckResult(id: ID!): CompositionBuildCheckResult createdAt: Timestamp! createdBy: Identity datadogMetricsConfig: DatadogMetricsConfig """The time the default build pipeline track version was updated.""" defaultBuildPipelineTrackUpdatedAt: Timestamp deletedAt: Timestamp description: String devGraphOwner: User @deprecated """The capabilities that are supported for this graph""" graphCapabilities: GraphCapabilities! graphType: GraphType! """ When this is true, this graph will be hidden from non-admin members of the org who haven't been explicitly assigned a role on this graph. """ hiddenFromUninvitedNonAdminAccountMembers: Boolean! """Current identity, null if not authenticated.""" me: Identity """ Indicates whether the graph has been migrated from Cloud to Self-Hosted graph type. """ migratedCloudyGraph: Boolean! onboardingArchitecture: OnboardingArchitecture """Get request counts by variant for operation checks""" operationCheckRequestsByVariant(from: Timestamp!): [RequestCountsPerGraphVariant!]! """ Get query triggers for a given variant. If variant is null all the triggers for this service will be gotten. """ queryTriggers(graphVariant: String, operationNames: [String!]): [QueryTrigger!] readme: Readme """ Whether registry subscriptions (with any options) are enabled. If variant is not passed, returns true if configuration is present for any variant """ registrySubscriptionsEnabled(graphVariant: String): Boolean! @deprecated(reason: "This field will be removed") reportingEnabled: Boolean! scheduledSummaries: [ScheduledSummary!]! stats( from: Timestamp! """ Granularity of buckets. Defaults to the entire range (aggregate all data into a single durationBucket) when null. """ resolution: Resolution """Defaults to the current time when null.""" to: Timestamp ): ServiceStatsWindow! @deprecated(reason: "use Service.statsWindow instead") statsWindow( from: Timestamp! """ Granularity of buckets. Defaults to the entire range (aggregate all data into a single durationBucket) when null. """ resolution: Resolution """Defaults to the current time when null.""" to: Timestamp ): ServiceStatsWindow """The graph's name.""" title: String! traceStorageEnabled: Boolean! """ Provides details of the graph variant with the provided `name`, if a variant with that name exists for this graph. Otherwise, returns null. For a list of _all_ variants associated with a graph, use `Graph.variants` instead. """ variant(name: String!): GraphVariant """List of ignored rule violations for the linter""" ignoredLinterViolations: [IgnoredRule!]! """Linter configuration for this graph.""" linterConfiguration: GraphLinterConfiguration! """The Persisted Query List associated with this graph with the given ID.""" persistedQueryList(id: ID!): PersistedQueryList persistedQueryLists: [PersistedQueryList!] """Get check configuration for this graph.""" checkConfiguration: CheckConfiguration """ Returns the default reviewers for this graph. This field accepts up to 1000 requests per minute. This rate may be temporarily adjusted based on system conditions. """ defaultProposalReviewers: [Identity]! """ Diffs the sdls at the oldSdlHash and newSdlHash, returning a FlatDiffResult. This field accepts up to 1000 requests per minute. This rate may be temporarily adjusted based on system conditions. """ flatDiff(newSdlHash: SHA256, oldSdlHash: SHA256): FlatDiffResult! minProposalApprovers: Int! minProposalRoles: ProposalRoles! """A template that is the base description for new schema proposals""" proposalDescriptionTemplate: String """The current active user's Proposal notification status on this graph.""" proposalNotificationStatus: NotificationStatus! """ A list of the proposals for this graph sorted by created at date. limit defaults to 25 and has an allowed max of 50, offset defaults to 0. This field accepts up to 1000 requests per minute. This rate may be temporarily adjusted based on system conditions. """ proposals(filterBy: ProposalsFilterInput, limit: Int, offset: Int): ProposalsResult! """ If the graph setting for the proposals implementation variant has been set, this will be non null. """ proposalsImplementationVariant: GraphVariant """Must one of the default reviewers approve proposals""" proposalsMustBeApprovedByADefaultReviewer: Boolean! """ True if each approving reviewer's review will get dismissed & the proposal status will change from approved to open on new revisions. """ proposalsMustBeReApprovedOnChange: Boolean! operation(id: ID!): Operation defaultBuildPipelineTrack: String """Get a GraphQL document by hash""" doc(hash: SHA256): GraphQLDoc """ Get GraphQL documents by hash, max up to 100 can be requested per query. This field accepts up to 120 requests per minute. This rate may be temporarily adjusted based on system conditions. """ docs(hashes: [SHA256!]!): [GraphQLDoc] """Get a GraphQL document by hash""" document(hash: SHA256): GraphQLDocument @deprecated(reason: "Use doc instead") """Get a schema by hash or current tag""" schema(hash: ID, tag: String): Schema """ Get schema tags, with optional filtering to a set of tags. Always sorted by creation date in reverse chronological order. """ schemaTags(tags: [String!]): [SchemaTag!] """ The current publish associated to a given variant (with 'tag' as the variant name). """ schemaTag(tag: String!): SchemaTag schemaTagById(id: ID!): SchemaTag """ List of subgraphs that comprise a graph. A non-federated graph should have a single implementing service. Set includeDeleted to see deleted subgraphs. """ implementingServices(graphVariant: String!, includeDeleted: Boolean): GraphImplementors """ The composition result that was most recently published to a graph variant. """ mostRecentCompositionPublish(graphVariant: String!): CompositionPublishResult """ Given a graphCompositionID, return the results of composition. This can represent either a validation or a publish. """ compositionResultById(id: ID!): CompositionResult """ Gets the operations and their approved changes for this graph, checkID, and operationID. """ operationsAcceptedChanges(checkID: ID!, operationID: String!): [OperationAcceptedChange!]! """ Count checkWorkflows for the given filter. Used for paginating with checkWorkflows. """ totalCheckWorkflowCount(filter: CheckFilterInput): Int! """ Get check workflows for this graph ordered by creation time, most recent first. """ checkWorkflows(limit: Int! = 100, offset: Int! = 0, filter: CheckFilterInput): [CheckWorkflow!]! """Get an operations check result for a specific check ID""" operationsCheck(checkID: ID!): OperationsCheckResult """Generate a test schema publish notification body""" testSchemaPublishBody(variant: String!): String! """ List of options available for filtering checks for this graph by created by field. If a filter is passed, constrains results to match the filter. For non cli triggered checks, this is the Studio User / author. """ checksCreatedByOptions(filter: CheckFilterInput): [Identity!]! """ List of options available for filtering checks for this graph by git committer. If a filter is passed, constrains results to match the filter. For cli triggered checks, this is the author. """ checksCommitterOptions(filter: CheckFilterInput): [String!]! """ List of options available for filtering checks for this graph by git committer. If a filter is passed, constrains results to match the filter. For cli triggered checks, this is the author. """ checksAuthorOptions(filter: CheckFilterInput): [String!]! @deprecated(reason: "Use checksCommitterOptions instead") """ List of options available for filtering checks for this graph by branch. If a filter is passed, constrains results to match the filter. """ checksBranchOptions(filter: CheckFilterInput): [String!]! """ List of options available for filtering checks for this graph by subgraph name. If a filter is passed, constrains results to match the filter. """ checksSubgraphOptions(filter: CheckFilterInput): [String!]! """Registry specific stats for this graph.""" registryStatsWindow(from: Timestamp!, resolution: Resolution, to: Timestamp): RegistryStatsWindow """All assessments for this graph.""" safAssessments(includeDeleted: Boolean! = false): [SafAssessment!]! """Get a specific assessment for this graph by its ID.""" safAssessment(id: ID!, includeDeleted: Boolean! = false): SafAssessment } """ Represents a machine identity associated with an organization. Used as a principal for API keys. """ type ServiceAccount implements Identity { """ Returns a representation of this service account as an `Actor` type. Useful when determining which actor performed a particular action in Studio. """ asActor: Actor! """The service account's unique id.""" id: ID! """The name assigned to this service account.""" name: String! """The organization this service account belongs to.""" organization: Account """The type of service account, indicating its intended use case.""" type: ServiceAccountKind! } """The type of service account, indicating its intended use case.""" enum ServiceAccountKind { """A gateway service account used for gateway operations""" GATEWAY """An operator service account used for administrative operations""" OPERATOR """A pipeline service account used for data processing operations""" PIPELINE """A router service account used for Apollo Router operations""" ROUTER """A SCIM service account used for user provisioning and management""" SCIM """An unknown or unspecified service account type""" UNKNOWN } """Columns of ServiceBillingUsageStats.""" enum ServiceBillingUsageStatsColumn { AGENT_ID AGENT_VERSION GRAPH_DEPLOYMENT_TYPE OPERATION_COUNT OPERATION_COUNT_PROVIDED_EXPLICITLY OPERATION_SUBTYPE OPERATION_TYPE ROUTER_FEATURES_ENABLED SCHEMA_TAG TIMESTAMP } type ServiceBillingUsageStatsDimensions { agentId: String agentVersion: String graphDeploymentType: String operationCountProvidedExplicitly: String operationSubtype: String operationType: String routerFeaturesEnabled: String schemaTag: String } """ Filter for data in ServiceBillingUsageStats. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input ServiceBillingUsageStatsFilter { """ Selects rows whose agentId dimension equals the given value if not null. To query for the null value, use {in: {agentId: [null]}} instead. """ agentId: String """ Selects rows whose agentVersion dimension equals the given value if not null. To query for the null value, use {in: {agentVersion: [null]}} instead. """ agentVersion: String and: [ServiceBillingUsageStatsFilter!] """ Selects rows whose graphDeploymentType dimension equals the given value if not null. To query for the null value, use {in: {graphDeploymentType: [null]}} instead. """ graphDeploymentType: String in: ServiceBillingUsageStatsFilterIn not: ServiceBillingUsageStatsFilter """ Selects rows whose operationCountProvidedExplicitly dimension equals the given value if not null. To query for the null value, use {in: {operationCountProvidedExplicitly: [null]}} instead. """ operationCountProvidedExplicitly: String """ Selects rows whose operationSubtype dimension equals the given value if not null. To query for the null value, use {in: {operationSubtype: [null]}} instead. """ operationSubtype: String """ Selects rows whose operationType dimension equals the given value if not null. To query for the null value, use {in: {operationType: [null]}} instead. """ operationType: String or: [ServiceBillingUsageStatsFilter!] """ Selects rows whose routerFeaturesEnabled dimension equals the given value if not null. To query for the null value, use {in: {routerFeaturesEnabled: [null]}} instead. """ routerFeaturesEnabled: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String } """ Filter for data in ServiceBillingUsageStats. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input ServiceBillingUsageStatsFilterIn { """ Selects rows whose agentId dimension is in the given list. A null value in the list means a row with null for that dimension. """ agentId: [String] """ Selects rows whose agentVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ agentVersion: [String] """ Selects rows whose graphDeploymentType dimension is in the given list. A null value in the list means a row with null for that dimension. """ graphDeploymentType: [String] """ Selects rows whose operationCountProvidedExplicitly dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationCountProvidedExplicitly: [String] """ Selects rows whose operationSubtype dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationSubtype: [String] """ Selects rows whose operationType dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationType: [String] """ Selects rows whose routerFeaturesEnabled dimension is in the given list. A null value in the list means a row with null for that dimension. """ routerFeaturesEnabled: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] } type ServiceBillingUsageStatsMetrics { operationCount: Long! } input ServiceBillingUsageStatsOrderBySpec { column: ServiceBillingUsageStatsColumn! direction: Ordering! } type ServiceBillingUsageStatsRecord { """Dimensions of ServiceBillingUsageStats that can be grouped by.""" groupBy: ServiceBillingUsageStatsDimensions! """Metrics of ServiceBillingUsageStats that can be aggregated over.""" metrics: ServiceBillingUsageStatsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """Columns of ServiceCardinalityStats.""" enum ServiceCardinalityStatsColumn { CLIENT_NAME_CARDINALITY CLIENT_VERSION_CARDINALITY OPERATION_SHAPE_CARDINALITY SCHEMA_COORDINATE_CARDINALITY SCHEMA_TAG TIMESTAMP } type ServiceCardinalityStatsDimensions { schemaTag: String } """ Filter for data in ServiceCardinalityStats. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input ServiceCardinalityStatsFilter { and: [ServiceCardinalityStatsFilter!] in: ServiceCardinalityStatsFilterIn not: ServiceCardinalityStatsFilter or: [ServiceCardinalityStatsFilter!] """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String } """ Filter for data in ServiceCardinalityStats. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input ServiceCardinalityStatsFilterIn { """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] } type ServiceCardinalityStatsMetrics { clientNameCardinality: Float! clientVersionCardinality: Float! operationShapeCardinality: Float! schemaCoordinateCardinality: Float! } input ServiceCardinalityStatsOrderBySpec { column: ServiceCardinalityStatsColumn! direction: Ordering! } type ServiceCardinalityStatsRecord { """Dimensions of ServiceCardinalityStats that can be grouped by.""" groupBy: ServiceCardinalityStatsDimensions! """Metrics of ServiceCardinalityStats that can be aggregated over.""" metrics: ServiceCardinalityStatsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } type ServiceCatalogPage { """A list of catalog service entries""" items: [ServiceCatalogType!]! """Cursor for the next page of data""" cursor: String } """ A versioned catalog entry containing a service's GraphQL schema template. """ type ServiceCatalogType { """Unique identifier for this catalog entry.""" id: UUID! """Identifier of the service connector this catalog entry describes.""" serviceId: String! """Version timestamp for this catalog entry.""" version: DateTime! """GraphQL schema template for this version of the service connector.""" schemaTemplate: String """Human-readable name for this catalog entry (e.g. "Slack").""" displayName: String """Description of what this connector does.""" description: String """Suggested base URL to prefill when creating a service from this entry.""" defaultBaseUrl: String """ Suggested auth configuration to prefill when creating a service from this entry. Same shape as `UpstreamService.auth`. """ defaultAuth: JSON """Timestamp when the catalog entry was created.""" createdAt: DateTime! """Timestamp when the catalog entry was last updated.""" updatedAt: DateTime! """Timestamp when the catalog entry was soft-deleted, or null if active.""" deletedAt: DateTime """ Orgs explicitly granted access to this catalog entry. Empty means the entry is public — visible to every org. """ allowedOrgIds: [String!]! } """Columns of ServiceCoordinateUsage.""" enum ServiceCoordinateUsageColumn { CLIENT_NAME CLIENT_VERSION ESTIMATED_EXECUTION_COUNT EXECUTION_COUNT KIND NAMED_ATTRIBUTE NAMED_TYPE OPERATION_SUBTYPE OPERATION_TYPE QUERY_ID QUERY_NAME REFERENCING_OPERATION_COUNT REQUEST_COUNT_NULL REQUEST_COUNT_UNDEFINED SCHEMA_TAG TIMESTAMP } type ServiceCoordinateUsageDimensions { clientName: String clientVersion: String kind: String namedAttribute: String namedType: String operationSubtype: String operationType: String queryId: String queryName: String schemaTag: String } """ Filter for data in ServiceCoordinateUsage. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input ServiceCoordinateUsageFilter { and: [ServiceCoordinateUsageFilter!] """ Selects rows whose clientName dimension equals the given value if not null. To query for the null value, use {in: {clientName: [null]}} instead. """ clientName: String """ Selects rows whose clientVersion dimension equals the given value if not null. To query for the null value, use {in: {clientVersion: [null]}} instead. """ clientVersion: String in: ServiceCoordinateUsageFilterIn """ Selects rows whose kind dimension equals the given value if not null. To query for the null value, use {in: {kind: [null]}} instead. """ kind: String """ Selects rows whose namedAttribute dimension equals the given value if not null. To query for the null value, use {in: {namedAttribute: [null]}} instead. """ namedAttribute: String """ Selects rows whose namedType dimension equals the given value if not null. To query for the null value, use {in: {namedType: [null]}} instead. """ namedType: String not: ServiceCoordinateUsageFilter """ Selects rows whose operationSubtype dimension equals the given value if not null. To query for the null value, use {in: {operationSubtype: [null]}} instead. """ operationSubtype: String """ Selects rows whose operationType dimension equals the given value if not null. To query for the null value, use {in: {operationType: [null]}} instead. """ operationType: String or: [ServiceCoordinateUsageFilter!] """ Selects rows whose queryId dimension equals the given value if not null. To query for the null value, use {in: {queryId: [null]}} instead. """ queryId: String """ Selects rows whose queryName dimension equals the given value if not null. To query for the null value, use {in: {queryName: [null]}} instead. """ queryName: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String } """ Filter for data in ServiceCoordinateUsage. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input ServiceCoordinateUsageFilterIn { """ Selects rows whose clientName dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientName: [String] """ Selects rows whose clientVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientVersion: [String] """ Selects rows whose kind dimension is in the given list. A null value in the list means a row with null for that dimension. """ kind: [String] """ Selects rows whose namedAttribute dimension is in the given list. A null value in the list means a row with null for that dimension. """ namedAttribute: [String] """ Selects rows whose namedType dimension is in the given list. A null value in the list means a row with null for that dimension. """ namedType: [String] """ Selects rows whose operationSubtype dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationSubtype: [String] """ Selects rows whose operationType dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationType: [String] """ Selects rows whose queryId dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryId: [String] """ Selects rows whose queryName dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryName: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] } type ServiceCoordinateUsageMetrics { estimatedExecutionCount: Long! executionCount: Long! referencingOperationCount: Long! requestCountNull: Long! requestCountUndefined: Long! } input ServiceCoordinateUsageOrderBySpec { column: ServiceCoordinateUsageColumn! direction: Ordering! } type ServiceCoordinateUsageRecord { """Dimensions of ServiceCoordinateUsage that can be grouped by.""" groupBy: ServiceCoordinateUsageDimensions! """Metrics of ServiceCoordinateUsage that can be aggregated over.""" metrics: ServiceCoordinateUsageMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """Columns of ServiceEdgeServerInfos.""" enum ServiceEdgeServerInfosColumn { BOOT_ID EXECUTABLE_SCHEMA_ID LIBRARY_VERSION PLATFORM RUNTIME_VERSION SCHEMA_TAG SERVER_ID TIMESTAMP USER_VERSION } type ServiceEdgeServerInfosDimensions { bootId: ID executableSchemaId: ID libraryVersion: String platform: String runtimeVersion: String schemaTag: String serverId: ID userVersion: String } """ Filter for data in ServiceEdgeServerInfos. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input ServiceEdgeServerInfosFilter { and: [ServiceEdgeServerInfosFilter!] """ Selects rows whose bootId dimension equals the given value if not null. To query for the null value, use {in: {bootId: [null]}} instead. """ bootId: ID """ Selects rows whose executableSchemaId dimension equals the given value if not null. To query for the null value, use {in: {executableSchemaId: [null]}} instead. """ executableSchemaId: ID in: ServiceEdgeServerInfosFilterIn """ Selects rows whose libraryVersion dimension equals the given value if not null. To query for the null value, use {in: {libraryVersion: [null]}} instead. """ libraryVersion: String not: ServiceEdgeServerInfosFilter or: [ServiceEdgeServerInfosFilter!] """ Selects rows whose platform dimension equals the given value if not null. To query for the null value, use {in: {platform: [null]}} instead. """ platform: String """ Selects rows whose runtimeVersion dimension equals the given value if not null. To query for the null value, use {in: {runtimeVersion: [null]}} instead. """ runtimeVersion: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serverId dimension equals the given value if not null. To query for the null value, use {in: {serverId: [null]}} instead. """ serverId: ID """ Selects rows whose userVersion dimension equals the given value if not null. To query for the null value, use {in: {userVersion: [null]}} instead. """ userVersion: String } """ Filter for data in ServiceEdgeServerInfos. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input ServiceEdgeServerInfosFilterIn { """ Selects rows whose bootId dimension is in the given list. A null value in the list means a row with null for that dimension. """ bootId: [ID] """ Selects rows whose executableSchemaId dimension is in the given list. A null value in the list means a row with null for that dimension. """ executableSchemaId: [ID] """ Selects rows whose libraryVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ libraryVersion: [String] """ Selects rows whose platform dimension is in the given list. A null value in the list means a row with null for that dimension. """ platform: [String] """ Selects rows whose runtimeVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ runtimeVersion: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serverId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serverId: [ID] """ Selects rows whose userVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ userVersion: [String] } input ServiceEdgeServerInfosOrderBySpec { column: ServiceEdgeServerInfosColumn! direction: Ordering! } type ServiceEdgeServerInfosRecord { """Dimensions of ServiceEdgeServerInfos that can be grouped by.""" groupBy: ServiceEdgeServerInfosDimensions! """Starting segment timestamp.""" timestamp: Timestamp! } """Columns of ServiceErrorStats.""" enum ServiceErrorStatsColumn { CLIENT_NAME CLIENT_VERSION ERRORS_COUNT PATH QUERY_ID QUERY_NAME REQUESTS_WITH_ERRORS_COUNT SCHEMA_HASH SCHEMA_TAG TIMESTAMP } type ServiceErrorStatsDimensions { clientName: String clientVersion: String path: String queryId: ID queryName: String schemaHash: String schemaTag: String } """ Filter for data in ServiceErrorStats. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input ServiceErrorStatsFilter { and: [ServiceErrorStatsFilter!] """ Selects rows whose clientName dimension equals the given value if not null. To query for the null value, use {in: {clientName: [null]}} instead. """ clientName: String """ Selects rows whose clientVersion dimension equals the given value if not null. To query for the null value, use {in: {clientVersion: [null]}} instead. """ clientVersion: String in: ServiceErrorStatsFilterIn not: ServiceErrorStatsFilter or: [ServiceErrorStatsFilter!] """ Selects rows whose path dimension equals the given value if not null. To query for the null value, use {in: {path: [null]}} instead. """ path: String """ Selects rows whose queryId dimension equals the given value if not null. To query for the null value, use {in: {queryId: [null]}} instead. """ queryId: ID """ Selects rows whose queryName dimension equals the given value if not null. To query for the null value, use {in: {queryName: [null]}} instead. """ queryName: String """ Selects rows whose schemaHash dimension equals the given value if not null. To query for the null value, use {in: {schemaHash: [null]}} instead. """ schemaHash: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String } """ Filter for data in ServiceErrorStats. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input ServiceErrorStatsFilterIn { """ Selects rows whose clientName dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientName: [String] """ Selects rows whose clientVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientVersion: [String] """ Selects rows whose path dimension is in the given list. A null value in the list means a row with null for that dimension. """ path: [String] """ Selects rows whose queryId dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryId: [ID] """ Selects rows whose queryName dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryName: [String] """ Selects rows whose schemaHash dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaHash: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] } type ServiceErrorStatsMetrics { errorsCount: Long! requestsWithErrorsCount: Long! } input ServiceErrorStatsOrderBySpec { column: ServiceErrorStatsColumn! direction: Ordering! } type ServiceErrorStatsRecord { """Dimensions of ServiceErrorStats that can be grouped by.""" groupBy: ServiceErrorStatsDimensions! """Metrics of ServiceErrorStats that can be aggregated over.""" metrics: ServiceErrorStatsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """Columns of ServiceFederatedErrorStats.""" enum ServiceFederatedErrorStatsColumn { AGENT_VERSION CLIENT_NAME CLIENT_VERSION ERROR_CODE ERROR_COUNT ERROR_PATH ERROR_SERVICE OPERATION_ID OPERATION_NAME OPERATION_TYPE SCHEMA_TAG SEVERITY TIMESTAMP } type ServiceFederatedErrorStatsDimensions { agentVersion: String clientName: String clientVersion: String errorCode: String errorPath: String errorService: String operationId: String operationName: String operationType: String schemaTag: String severity: String } """ Filter for data in ServiceFederatedErrorStats. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input ServiceFederatedErrorStatsFilter { """ Selects rows whose agentVersion dimension equals the given value if not null. To query for the null value, use {in: {agentVersion: [null]}} instead. """ agentVersion: String and: [ServiceFederatedErrorStatsFilter!] """ Selects rows whose clientName dimension equals the given value if not null. To query for the null value, use {in: {clientName: [null]}} instead. """ clientName: String """ Selects rows whose clientVersion dimension equals the given value if not null. To query for the null value, use {in: {clientVersion: [null]}} instead. """ clientVersion: String """ Selects rows whose errorCode dimension equals the given value if not null. To query for the null value, use {in: {errorCode: [null]}} instead. """ errorCode: String """ Selects rows whose errorPath dimension equals the given value if not null. To query for the null value, use {in: {errorPath: [null]}} instead. """ errorPath: String """ Selects rows whose errorService dimension equals the given value if not null. To query for the null value, use {in: {errorService: [null]}} instead. """ errorService: String in: ServiceFederatedErrorStatsFilterIn not: ServiceFederatedErrorStatsFilter """ Selects rows whose operationId dimension equals the given value if not null. To query for the null value, use {in: {operationId: [null]}} instead. """ operationId: String """ Selects rows whose operationName dimension equals the given value if not null. To query for the null value, use {in: {operationName: [null]}} instead. """ operationName: String """ Selects rows whose operationType dimension equals the given value if not null. To query for the null value, use {in: {operationType: [null]}} instead. """ operationType: String or: [ServiceFederatedErrorStatsFilter!] """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose severity dimension equals the given value if not null. To query for the null value, use {in: {severity: [null]}} instead. """ severity: String } """ Filter for data in ServiceFederatedErrorStats. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input ServiceFederatedErrorStatsFilterIn { """ Selects rows whose agentVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ agentVersion: [String] """ Selects rows whose clientName dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientName: [String] """ Selects rows whose clientVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientVersion: [String] """ Selects rows whose errorCode dimension is in the given list. A null value in the list means a row with null for that dimension. """ errorCode: [String] """ Selects rows whose errorPath dimension is in the given list. A null value in the list means a row with null for that dimension. """ errorPath: [String] """ Selects rows whose errorService dimension is in the given list. A null value in the list means a row with null for that dimension. """ errorService: [String] """ Selects rows whose operationId dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationId: [String] """ Selects rows whose operationName dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationName: [String] """ Selects rows whose operationType dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationType: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose severity dimension is in the given list. A null value in the list means a row with null for that dimension. """ severity: [String] } type ServiceFederatedErrorStatsMetrics { errorCount: Long! } input ServiceFederatedErrorStatsOrderBySpec { column: ServiceFederatedErrorStatsColumn! direction: Ordering! } type ServiceFederatedErrorStatsRecord { """Dimensions of ServiceFederatedErrorStats that can be grouped by.""" groupBy: ServiceFederatedErrorStatsDimensions! """Metrics of ServiceFederatedErrorStats that can be aggregated over.""" metrics: ServiceFederatedErrorStatsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """Columns of ServiceFieldExecutions.""" enum ServiceFieldExecutionsColumn { ERRORS_COUNT ESTIMATED_EXECUTION_COUNT FIELD_HISTOGRAM FIELD_NAME OBSERVED_EXECUTION_COUNT PARENT_TYPE REFERENCING_OPERATION_COUNT REQUESTS_WITH_ERRORS_COUNT SCHEMA_TAG TIMESTAMP } type ServiceFieldExecutionsDimensions { field: String fieldName: String parentType: String schemaTag: String } """ Filter for data in ServiceFieldExecutions. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input ServiceFieldExecutionsFilter { and: [ServiceFieldExecutionsFilter!] """ Selects rows whose fieldName dimension equals the given value if not null. To query for the null value, use {in: {fieldName: [null]}} instead. """ fieldName: String in: ServiceFieldExecutionsFilterIn not: ServiceFieldExecutionsFilter or: [ServiceFieldExecutionsFilter!] """ Selects rows whose parentType dimension equals the given value if not null. To query for the null value, use {in: {parentType: [null]}} instead. """ parentType: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String } """ Filter for data in ServiceFieldExecutions. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input ServiceFieldExecutionsFilterIn { """ Selects rows whose fieldName dimension is in the given list. A null value in the list means a row with null for that dimension. """ fieldName: [String] """ Selects rows whose parentType dimension is in the given list. A null value in the list means a row with null for that dimension. """ parentType: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] } type ServiceFieldExecutionsMetrics { errorsCount: Long! estimatedExecutionCount: Long! fieldHistogram: DurationHistogram! observedExecutionCount: Long! referencingOperationCount: Long! requestsWithErrorsCount: Long! } input ServiceFieldExecutionsOrderBySpec { column: ServiceFieldExecutionsColumn! direction: Ordering! } type ServiceFieldExecutionsRecord { """Dimensions of ServiceFieldExecutions that can be grouped by.""" groupBy: ServiceFieldExecutionsDimensions! """Metrics of ServiceFieldExecutions that can be aggregated over.""" metrics: ServiceFieldExecutionsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """Columns of ServiceFieldUsage.""" enum ServiceFieldUsageColumn { CLIENT_NAME CLIENT_VERSION ESTIMATED_EXECUTION_COUNT EXECUTION_COUNT FIELD_NAME OPERATION_SUBTYPE OPERATION_TYPE PARENT_TYPE QUERY_ID QUERY_NAME REFERENCING_OPERATION_COUNT SCHEMA_HASH SCHEMA_TAG TIMESTAMP } type ServiceFieldUsageDimensions { clientName: String clientVersion: String fieldName: String operationSubtype: String operationType: String parentType: String queryId: ID queryName: String schemaHash: String schemaTag: String } """ Filter for data in ServiceFieldUsage. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input ServiceFieldUsageFilter { and: [ServiceFieldUsageFilter!] """ Selects rows whose clientName dimension equals the given value if not null. To query for the null value, use {in: {clientName: [null]}} instead. """ clientName: String """ Selects rows whose clientVersion dimension equals the given value if not null. To query for the null value, use {in: {clientVersion: [null]}} instead. """ clientVersion: String """ Selects rows whose fieldName dimension equals the given value if not null. To query for the null value, use {in: {fieldName: [null]}} instead. """ fieldName: String in: ServiceFieldUsageFilterIn not: ServiceFieldUsageFilter """ Selects rows whose operationSubtype dimension equals the given value if not null. To query for the null value, use {in: {operationSubtype: [null]}} instead. """ operationSubtype: String """ Selects rows whose operationType dimension equals the given value if not null. To query for the null value, use {in: {operationType: [null]}} instead. """ operationType: String or: [ServiceFieldUsageFilter!] """ Selects rows whose parentType dimension equals the given value if not null. To query for the null value, use {in: {parentType: [null]}} instead. """ parentType: String """ Selects rows whose queryId dimension equals the given value if not null. To query for the null value, use {in: {queryId: [null]}} instead. """ queryId: ID """ Selects rows whose queryName dimension equals the given value if not null. To query for the null value, use {in: {queryName: [null]}} instead. """ queryName: String """ Selects rows whose schemaHash dimension equals the given value if not null. To query for the null value, use {in: {schemaHash: [null]}} instead. """ schemaHash: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String } """ Filter for data in ServiceFieldUsage. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input ServiceFieldUsageFilterIn { """ Selects rows whose clientName dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientName: [String] """ Selects rows whose clientVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientVersion: [String] """ Selects rows whose fieldName dimension is in the given list. A null value in the list means a row with null for that dimension. """ fieldName: [String] """ Selects rows whose operationSubtype dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationSubtype: [String] """ Selects rows whose operationType dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationType: [String] """ Selects rows whose parentType dimension is in the given list. A null value in the list means a row with null for that dimension. """ parentType: [String] """ Selects rows whose queryId dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryId: [ID] """ Selects rows whose queryName dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryName: [String] """ Selects rows whose schemaHash dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaHash: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] } type ServiceFieldUsageMetrics { estimatedExecutionCount: Long! executionCount: Long! referencingOperationCount: Long! } input ServiceFieldUsageOrderBySpec { column: ServiceFieldUsageColumn! direction: Ordering! } type ServiceFieldUsageRecord { """Dimensions of ServiceFieldUsage that can be grouped by.""" groupBy: ServiceFieldUsageDimensions! """Metrics of ServiceFieldUsage that can be aggregated over.""" metrics: ServiceFieldUsageMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """Columns of ServiceGraphosCloudMetrics.""" enum ServiceGraphosCloudMetricsColumn { AGENT_VERSION CLOUD_PROVIDER RESPONSE_SIZE RESPONSE_SIZE_THROTTLED ROUTER_ID ROUTER_OPERATIONS ROUTER_OPERATIONS_THROTTLED SCHEMA_TAG SUBGRAPH_FETCHES SUBGRAPH_FETCHES_THROTTLED TIER TIMESTAMP } type ServiceGraphosCloudMetricsDimensions { agentVersion: String cloudProvider: String routerId: String schemaTag: String tier: String } """ Filter for data in ServiceGraphosCloudMetrics. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input ServiceGraphosCloudMetricsFilter { """ Selects rows whose agentVersion dimension equals the given value if not null. To query for the null value, use {in: {agentVersion: [null]}} instead. """ agentVersion: String and: [ServiceGraphosCloudMetricsFilter!] """ Selects rows whose cloudProvider dimension equals the given value if not null. To query for the null value, use {in: {cloudProvider: [null]}} instead. """ cloudProvider: String in: ServiceGraphosCloudMetricsFilterIn not: ServiceGraphosCloudMetricsFilter or: [ServiceGraphosCloudMetricsFilter!] """ Selects rows whose routerId dimension equals the given value if not null. To query for the null value, use {in: {routerId: [null]}} instead. """ routerId: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose tier dimension equals the given value if not null. To query for the null value, use {in: {tier: [null]}} instead. """ tier: String } """ Filter for data in ServiceGraphosCloudMetrics. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input ServiceGraphosCloudMetricsFilterIn { """ Selects rows whose agentVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ agentVersion: [String] """ Selects rows whose cloudProvider dimension is in the given list. A null value in the list means a row with null for that dimension. """ cloudProvider: [String] """ Selects rows whose routerId dimension is in the given list. A null value in the list means a row with null for that dimension. """ routerId: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose tier dimension is in the given list. A null value in the list means a row with null for that dimension. """ tier: [String] } type ServiceGraphosCloudMetricsMetrics { responseSize: Long! responseSizeThrottled: Long! routerOperations: Long! routerOperationsThrottled: Long! subgraphFetches: Long! subgraphFetchesThrottled: Long! } input ServiceGraphosCloudMetricsOrderBySpec { column: ServiceGraphosCloudMetricsColumn! direction: Ordering! } type ServiceGraphosCloudMetricsRecord { """Dimensions of ServiceGraphosCloudMetrics that can be grouped by.""" groupBy: ServiceGraphosCloudMetricsDimensions! """Metrics of ServiceGraphosCloudMetrics that can be aggregated over.""" metrics: ServiceGraphosCloudMetricsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """ Provides access to mutation fields for managing Studio graphs and subgraphs. """ type ServiceMutation { """ Federation key field. The parent `Service` entity, used as the nested key `@key(fields: "service { id }")`. Declared `@external` because it is owned and resolved by the kotlin subgraph. """ service: Service! """Creates a new policy rule for this graph.""" createPolicyRule(input: CreatePolicyRuleInput!): PolicyRule! """Updates an existing policy rule by id within this graph.""" updatePolicyRule(id: UUID!, input: UpdatePolicyRuleInput!): PolicyRule! """ Soft-deletes a policy rule by id. Returns true on first delete, false on miss / already deleted. """ deletePolicyRule(id: UUID!): Boolean! """Creates a new policy exception for this graph.""" createPolicyException(input: CreatePolicyExceptionInput!): PolicyException! """Updates an existing policy exception by id within this graph.""" updatePolicyException(id: UUID!, input: UpdatePolicyExceptionInput!): PolicyException! """Soft-deletes a policy exception by id.""" deletePolicyException(id: UUID!): Boolean! """ Creates a new access request for this graph using a service name Does NOT recompile the policy bundle — access requests are reviewed out of band and do not affect policy evaluation until an approve decision is folded into a `PolicyException`. """ createAccessRequestByServiceName(input: CreateAccessRequestByServiceNameInput!): AccessRequest! """ Creates a new access request for this graph. Does NOT recompile the policy bundle — access requests are reviewed out of band and do not affect policy evaluation until an approve decision is folded into a `PolicyException`. """ createAccessRequest(input: CreateAccessRequestInput!): AccessRequest! """ Records a decider's decision against an access request. On approval, synchronously creates a `PolicyException` and `PolicyRule`, updates the request status to `Approved`, and recompiles the policy bundle — all within a single transaction. On denial, updates the request status to `Denied`. All resulting domain events (`PolicyExceptionCreated`, `PolicyRuleCreated`, `AccessRequestDecisionRecorded`) are enqueued on the outbox and dispatched to GCP Pub/Sub for downstream consumers. """ recordAccessRequestDecision(input: RecordAccessRequestDecisionInput!): AccessRequest! setCustomCheckConfiguration(input: SetCustomCheckConfigurationInput!): CustomCheckConfigurationResult! """ Generates a new graph API key for this graph with the specified permission level. """ newKey(keyName: String, role: UserPermission! = GRAPH_ADMIN): GraphApiKey! """Adds an override to the given users permission for this graph""" overrideUserPermission(permission: UserPermission, userID: ID!): Service """Deletes the existing graph API key with the provided ID, if any.""" removeKey( """API key ID""" id: ID! ): Void """ Sets a new name for the graph API key with the provided ID, if any. This does not invalidate the key or change its value. """ renameKey(id: ID!, newKeyName: String): GraphApiKey createRuleEnforcement(input: CreateRuleEnforcementInput!): RuleEnforcementResult! deleteRuleEnforcement(id: ID!): Boolean! updateRuleEnforcement(id: ID!, input: UpdateRuleEnforcementInput!): RuleEnforcementResult! """Make changes to a check workflow.""" checkWorkflow(id: ID!): CheckWorkflowMutation createCompositionStatusSubscription( """ID of Slack channel for registry notification.""" channelID: ID! """Variant to notify on.""" variant: String! ): SchemaPublishSubscription! """ Creates a proposal variant from a source variant and a name, description. Do not call this from any clients, this resolver is exclusively for inter-service proposal -> kotlin registry communication. """ createProposalVariant( """ Name of the base variant, used to port over all subgraphs or monograph sdl to the new proposal as a base revision. """ sourceVariantName: ID! """ Actor of the og user calling this. We call this from the proposals subgraph, we need to pass through the actor. """ triggeredBy: ActorInput ): ProposalVariantCreationResult! createSchemaPublishSubscription( """ID of Slack channel for registry notification.""" channelID: ID! """Variant to notify on.""" variant: String! ): SchemaPublishSubscription! """Update the default build pipeline track for this graph.""" defaultBuildPipelineTrack(buildPipelineTrack: BuildPipelineTrack!): BuildPipelineTrack """Update the default Federation version for this graph.""" defaultFederationVersion(federationVersion: FederationVersion!): FederationVersion """ Soft delete a graph. Data associated with the graph is not permanently deleted; Apollo support can undo. """ delete: Void """ Delete the service's avatar. Requires Service.roles.canUpdateAvatar to be true. """ deleteAvatar: AvatarDeleteError """Delete an existing channel""" deleteChannel(id: ID!): Boolean! """Delete an existing query trigger""" deleteQueryTrigger(id: ID!): Boolean! """ Deletes this service's current subscriptions specific to the ID, returns true if it existed """ deleteRegistrySubscription(id: ID!): Boolean! """ Deletes this service's current registry subscription(s) specific to its graph variant, returns a list of subscription IDs that were deleted. """ deleteRegistrySubscriptions(variant: String!): [ID!]! deleteScheduledSummary(id: ID!): Boolean! """ Given a UTC timestamp, delete all traces associated with this Service, on that corresponding day. If a timestamp to is provided, deletes all days inclusive. """ deleteTraces(from: Timestamp!, to: Timestamp): Void disableDatadogForwardingLegacyMetricNames: Service """ Hard delete a graph and all data associated with it. Its ID cannot be reused. """ hardDelete: Void id: ID! @deprecated(reason: "Use service.id") """ Transitions graph to a 'SELF_HOSTED_SUPERGRAPH' type and removes related cloud configuration. """ makeSelfHostedIfCloudy: Void reportServerInfo( """ Only sent if previously requested i.e. received ReportServerInfoResult with withExecutableSchema = true. An executable schema is a schema document that describes the full GraphQL schema that an external client could execute queries against. This must be a valid GraphQL schema document, as per the GraphQL specification: https://spec.graphql.org/ """ executableSchema: String """ Information about the edge server, see descriptions for individual fields. """ info: EdgeServerInfo! ): ReportServerInfoResult @deprecated(reason: "use Mutation.reportSchema instead") """Test Slack notification channel""" testSlackChannel(id: ID!, notification: SlackNotificationInput!): Void testSubscriptionForChannel(channelID: ID!, subscriptionID: ID!): String! transfer(to: String!): Service """Undelete a soft deleted graph.""" undelete: Service updateDatadogMetricsConfig(apiKey: String, apiRegion: DatadogApiRegion, enabled: Boolean): DatadogMetricsConfig updateDescription(description: String!): Service """Update hiddenFromUninvitedNonAdminAccountMembers""" updateHiddenFromUninvitedNonAdminAccountMembers(hiddenFromUninvitedNonAdminAccountMembers: Boolean!): Service updateReadme(readme: String!): Service updateTitle(title: String!): Service upsertChannel(id: ID, pagerDutyChannel: PagerDutyChannelInput, slackChannel: SlackChannelInput, webhookChannel: WebhookChannelInput): Channel """ Creates a contract schema from a source variant and a set of filter configurations """ upsertContractVariant( """ The name of the contract variant, e.g. `public-api`. Once set, this value cannot be changed. """ contractVariantName: String! """ The filter configuration used to build a contract schema. The configuration consists of lists of tags for schema elements to include or exclude in the resulting schema. """ filterConfig: FilterConfigInput! """ Whether a launch and schema publish should be initiated after updating configuration. Defaults to `true`. """ initiateLaunch: Boolean! = true """ The graphRef of the variant the contract will be derived from, e.g. `my-graph@production`. Once set, this value cannot be changed. """ sourceVariant: String ): ContractVariantUpsertResult! """Create/update PagerDuty notification channel""" upsertPagerDutyChannel(channel: PagerDutyChannelInput!, id: ID): PagerDutyChannel upsertQueryTrigger(id: ID, trigger: QueryTriggerInput!): QueryTrigger """Create or update a subscription for a service.""" upsertRegistrySubscription( """ID of Slack channel for registry notification.""" channelID: ID """ID of registry subscription""" id: ID """Set of options/customization for notification.""" options: SubscriptionOptionsInput """Variant to notify on.""" variant: String ): RegistrySubscription! upsertScheduledSummary( channelID: ID enabled: Boolean id: ID """Deprecated, use the 'variant' argument instead""" tag: String timezone: String variant: String ): ScheduledSummary """Create/update Slack notification channel""" upsertSlackChannel(channel: SlackChannelInput!, id: ID): SlackChannel upsertWebhookChannel(id: ID, name: String, secretToken: String, url: String!): WebhookChannel """Make changes to a graph variant.""" variant(name: String!): GraphVariantMutation """Lint a single schema using the graph's linter configuration.""" lintSchema( """ The schema to diff rule violations against, if not provided the full set of rule violations will be returned for the proposed sdl. """ baseSdl: String """The schema to lint.""" sdl: String! ): LintResult! """Update rule violations to ignore for this graph.""" updateIgnoredRuleViolations(changes: LinterIgnoredRuleChangesInput!): [IgnoredRule!]! """Update the linter configuration for this graph.""" updateLinterConfiguration(changes: GraphLinterConfigurationChangesInput!): GraphLinterConfiguration! """Create a new Persisted Query List.""" createPersistedQueryList(description: String, name: String!): CreatePersistedQueryListResultOrError! """ Provides access to mutation fields for modifying a Persisted Query List with the provided ID. """ persistedQueryList(id: ID!): PersistedQueryListMutation! """ Creates a proposal variant from a source variant and a name, description. See the documentation for proposal creation at https://www.apollographql.com/docs/graphos/delivery/schema-proposals/creation This field accepts up to 500 requests per minute. This rate may be temporarily adjusted based on system conditions. """ createProposal(input: CreateProposalInput!): CreateProposalResult! """ Subscribes a webhook channel to Proposal lifecycle events on this graph. """ createProposalLifecycleSubscription(input: CreateProposalLifecycleSubscriptionInput!): CreateProposalLifecycleSubscriptionResult! """Deletes this service's current subscriptions specific by ID.""" deleteProposalLifecycleSubscription(input: DeleteProposalLifecycleSubscriptionInput!): DeleteProposalLifecycleSubscriptionResult! """ Mutation to set whether a proposals check task's results should be overridden or not """ overrideProposalsCheckTask(shouldOverride: Boolean!, taskId: ID!): Boolean proposalsMustBeApprovedByADefaultReviewer(mustBeApproved: Boolean!): ProposalsMustBeApprovedByADefaultReviewerResult """ Test a subscription by queueing a test notification for the one subscribed event. """ queueTestProposalLifecycleNotification(input: QueueTestProposalLifecycleNotificationInput!): QueueTestProposalLifecycleNotificationResult! setMinProposalApprovers(input: SetMinProposalApproversInput!): SetMinApproversResult! """The minimum role for create & edit is graph admin""" setMinProposalRoles(input: SetProposalRolesInput!): SetProposalRolesResult! setProposalDefaultReviewers(input: SetProposalDefaultReviewersInput!): SetProposalDefaultReviewersResult! """ Updates the template for schema proposal descriptions. Deletes the template if the input string is null or empty """ setProposalDescriptionTemplate(input: SetProposalDescriptionTemplateInput!): SetProposalDescriptionTemplateResult """ Set the variant for this graph that all proposals depend on for 'IMPLEMENTED' status. TODO maya switch this to canManageProposalSettings. If variantName is passed as null, implementation variant is deleted. """ setProposalImplementationVariant(variantName: String): SetProposalImplementationVariantResult! """ Sets the current active user's Proposals notification status on this graph. """ setProposalNotificationStatus(input: SetProposalNotificationStatusInput!): SetProposalNotificationStatusResult! setProposalsMustBeReApprovedOnChange(approvalRequiredOnChange: Boolean!): SetProposalsMustBeReApprovedOnChangeResult """ Updates the specified proposal lifecycle subscription's subscribed events. """ updateProposalLifecycleSubscription(input: UpdateProposalLifecycleSubscriptionInput!): UpdateProposalLifecycleSubscriptionResult! validateOperations(operations: [OperationDocumentInput!]!, tag: String = "current", gitContext: GitContextInput): ValidateOperationsResult! registerOperationsWithResponse( clientIdentity: RegisteredClientIdentityInput gitContext: GitContextInput operations: [RegisteredOperationInput!]! manifestVersion: Int """ Specifies which variant of a graph these operations belong to. Formerly known as "tag" Defaults to "current" """ graphVariant: String! = "current" ): RegisterOperationsMutationResponse """ Publish a schema to this variant, either via a document or an introspection query result. """ uploadSchema(schema: IntrospectionSchemaInput, schemaDocument: String, tag: String!, historicParameters: HistoricQueryParameters, overrideComposedSchema: Boolean! = false, errorOnBadRequest: Boolean! = true, gitContext: GitContextInput): UploadSchemaMutationResponse """ Store a given schema document. This schema will be attached to the graph but not be associated with any variant. On success, returns the schema hash. """ storeSchemaDocument(schemaDocument: String!): StoreSchemaResponseOrError! """ Promote the schema with the given SHA-256 hash to active for the given variant/tag. """ promoteSchema(sha256: SHA256!, graphVariant: String!, historicParameters: HistoricQueryParameters, overrideComposedSchema: Boolean! = false): PromoteSchemaResponseOrError! """ Checks a proposed schema against the schema that has been published to a particular variant, using metrics corresponding to `historicParameters`. Callers can set `historicParameters` directly or rely on defaults set in the graph's check configuration (7 days by default). If they do not set `historicParameters` but set `useMaximumRetention`, validation will use the maximum retention the graph has access to. """ checkSchema( """ Only one of proposedSchema, proposedSchemaDocument, and proposedSchemaHash may be specified """ proposedSchema: IntrospectionSchemaInput proposedSchemaDocument: String proposedSchemaHash: String baseSchemaTag: String = "current" gitContext: GitContextInput historicParameters: HistoricQueryParameters useMaximumRetention: Boolean isSandboxCheck: Boolean! = false isProposalCheck: Boolean! = false """ If this check is triggered for an sdl fetched using introspection, this is the endpoint where that schema was being served. """ introspectionEndpoint: String """Deprecated and ignored.""" frontend: String ): CheckSchemaResult! """Delete a variant by name.""" deleteSchemaTag(tag: String!): DeleteSchemaTagResult! setDefaultBuildPipelineTrack(version: String!): String """ Publish to a subgraph. If composition is successful, this will update running routers. """ upsertImplementingServiceAndTriggerComposition(graphVariant: String!, name: String!, url: String, revision: String!, activePartialSchema: PartialSchemaInput!, gitContext: GitContextInput): CompositionAndUpsertResult """ Publish to a subgraph. If composition is successful, this will update running routers. """ publishSubgraph(graphVariant: String!, name: String!, url: String, revision: String!, activePartialSchema: PartialSchemaInput!, gitContext: GitContextInput, downstreamLaunchInitiation: DownstreamLaunchInitiation = ASYNC): CompositionAndUpsertResult """ Publishes multiple subgraphs. If composition is successful, this will update running routers. This field accepts up to 120 requests per minute. This rate may be temporarily adjusted based on system conditions. """ publishSubgraphs(graphVariant: String!, revision: String!, subgraphInputs: [PublishSubgraphsSubgraphInput!]!, gitContext: GitContextInput, downstreamLaunchInitiation: DownstreamLaunchInitiation = ASYNC): CompositionAndUpsertResult """Publishes multiple subgraphs, running the build async.""" publishSubgraphsAsyncBuild(graphVariant: String!, revision: String!, subgraphInputs: [PublishSubgraphsSubgraphInput!]!, gitContext: GitContextInput): PublishSubgraphsAsyncBuildResult """ This mutation will not result in any changes to the implementing service Run composition with the Implementing Service's partial schema replaced with the one provided in the mutation's input. Store the composed schema, return the hash of the composed schema, and any warnings and errors pertaining to composition. This mutation will not run validation against operations. """ validatePartialSchemaOfImplementingServiceAgainstGraph(graphVariant: String!, implementingServiceName: String!, partialSchema: PartialSchemaInput!): CompositionValidationResult! @deprecated(reason: "Use GraphVariant.submitSubgraphCheckAsync instead") """ Removes a subgraph. If composition is successful, this will update running routers. """ removeImplementingServiceAndTriggerComposition( graphVariant: String! name: String! """ Do not remove the service, but recompose without it and report any errors. """ dryRun: Boolean! = false ): CompositionAndRemoveResult! """ Checks a proposed subgraph schema change against a published subgraph. If the proposal composes successfully, perform a usage check for the resulting supergraph schema. """ checkPartialSchema( """The name of the graph variant to run the check against.""" graphVariant: String! """ Name of the implementing service to validate the partial schema against """ implementingServiceName: String! """The partial schema to validate against an implementing service""" partialSchema: PartialSchemaInput! gitContext: GitContextInput historicParameters: HistoricQueryParameters """Deprecated and ignored.""" frontend: String """ Whether to use the maximum retention for historical validation. This only takes effect if historicParameters is null. """ useMaximumRetention: Boolean isSandboxCheck: Boolean! = false isProposalCheck: Boolean! = false """ If this check is triggered for an sdl fetched using introspection, this is the endpoint where that schema was being served. """ introspectionEndpoint: String """The user that triggered this check.""" triggeredBy: ActorInput ): CheckPartialSchemaResult! @deprecated(reason: "Use GraphVariant.submitSubgraphCheckAsync instead.\nThis mutation polls to wait for the check to finish,\nwhile subgraphSubgraphCheckAsync triggers returns\nwithout waiting for the check to finish.") """Update schema check configuration for a graph.""" updateCheckConfiguration( """Operations to ignore during validation.""" excludedOperations: [ExcludedOperationInput!] """Clients to ignore during validation.""" excludedClients: [ClientFilterInput!] """Operation names to ignore during validation.""" excludedOperationNames: [OperationNameFilterInput!] """Variant overrides for validation.""" includedVariants: [String!] """ Only check operations from the last seconds. The default is 7 days (604,800 seconds). """ timeRangeSeconds: Long """ Minimum number of requests within the window for a query to be considered. """ operationCountThreshold: Int """ Number of requests within the window for a query to be considered, relative to total request count. Expected values are between 0 and 0.05 (minimum 5% of total request volume) """ operationCountThresholdPercentage: Float """Default configuration to include operations on the base variant.""" includeBaseVariant: Boolean """Whether to run Linting during schema checks.""" enableLintChecks: Boolean downgradeStaticChecks: Boolean downgradeDefaultValueChange: Boolean enableCustomChecks: Boolean ): CheckConfiguration! """ Mark the changeset that affects all operations in a given check instance as safe. Note that only operations marked as behavior changes are allowed to be marked as safe. """ markChangesForAllOperationsAsSafe( """ID of the operations check.""" operationsCheckId: ID! ): MarkChangesForOperationAsSafeResult! """ Mark the changeset that affects multiple operations in a given check instance as safe. Note that only operations marked as behavior changes are allowed to be marked as safe. This is very similar to markCheckOperationsAsSafe but that takes a check workflow ID instead of an operation check ID. """ markChangesForMultipleOperationsAsSafe( """ID of the operation check.""" checkID: ID! """ID of the operation to accept changes for.""" operationIDs: [ID!]! ): MarkChangesForOperationAsSafeResult! """ Mark the changeset that affects an operation in a given check instance as safe. Note that only operations marked as behavior changes are allowed to be marked as safe. """ markChangesForOperationAsSafe( """ID of the operation check.""" checkID: ID! """ID of the operation to accept changes for.""" operationID: ID! ): MarkChangesForOperationAsSafeResult! """Unmark changes for an operation as safe.""" unmarkChangesForOperationAsSafe( """ID of the operation check.""" checkID: ID! """ID of the operation to unmark changes for.""" operationID: ID! ): MarkChangesForOperationAsSafeResult! """ Mark any changes within the specified check for the specified operations as safe. Future checks will not fail for those operation and change combinations. """ markCheckOperationsAsSafe( """The check workflow ID containing the changes to mark.""" checkWorkflowID: ID! """The IDs of the operations to mark as safe.""" operationIDs: [ID!]! ): MarkCheckOperationsAsSafeResult! """ Unmark any changes within the specified check for the specified operations as safe. Future checks will fail for those operation and change combinations. """ unmarkCheckOperationsAsSafe( """The check workflow ID containing the changes to mark.""" checkWorkflowID: ID! """The IDs of the operations to unmark as safe.""" operationIDs: [ID!]! ): MarkCheckOperationsAsSafeResult! """ Mark any changes within the specified check for all operations as safe. Future checks will not fail for those operation and change combinations. """ markAllCheckOperationsAsSafe( """The check workflow ID containing the changes to mark.""" checkWorkflowID: ID! ): MarkCheckOperationsAsSafeResult! """ Unmark any changes within the specified check for all operations as safe. Future checks will fail for those operation and change combinations. """ unmarkAllCheckOperationsAsSafe( """The check workflow ID containing the changes to mark.""" checkWorkflowID: ID! ): MarkCheckOperationsAsSafeResult! """ Ignore an operation in future checks; changes affecting it will be tracked, but won't affect the outcome of the check. Returns true if the operation is newly ignored, false if it already was. """ ignoreOperationsInChecks(ids: [ID!]!): IgnoreOperationsInChecksResult """ Ignore all operations in future checks and changes affecting it will be tracked, but won't affect the outcome of the check. """ ignoreAllOperationsInChecks(operationsCheckId: ID!): IgnoreOperationsInChecksResult """ Revert the effects of ignoreOperation. Returns true if the operation is no longer ignored, false if it wasn't. """ unignoreOperationsInChecks(ids: [ID!]!): UnignoreOperationsInChecksResult """Create a new assessment for this graph.""" createSafAssessment: SafAssessment! """Mutations for a specific assessment.""" safAssessment(id: ID!, includeDeleted: Boolean! = false): SafAssessmentMutation } """Columns of ServiceOperationCheckStats.""" enum ServiceOperationCheckStatsColumn { CACHED_REQUESTS_COUNT CLIENT_NAME CLIENT_VERSION OPERATION_SUBTYPE OPERATION_TYPE QUERY_ID QUERY_NAME SCHEMA_TAG TIMESTAMP UNCACHED_REQUESTS_COUNT } type ServiceOperationCheckStatsDimensions { clientName: String clientVersion: String operationSubtype: String operationType: String queryId: ID queryName: String schemaTag: String } """ Filter for data in ServiceOperationCheckStats. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input ServiceOperationCheckStatsFilter { and: [ServiceOperationCheckStatsFilter!] """ Selects rows whose clientName dimension equals the given value if not null. To query for the null value, use {in: {clientName: [null]}} instead. """ clientName: String """ Selects rows whose clientVersion dimension equals the given value if not null. To query for the null value, use {in: {clientVersion: [null]}} instead. """ clientVersion: String in: ServiceOperationCheckStatsFilterIn not: ServiceOperationCheckStatsFilter """ Selects rows whose operationSubtype dimension equals the given value if not null. To query for the null value, use {in: {operationSubtype: [null]}} instead. """ operationSubtype: String """ Selects rows whose operationType dimension equals the given value if not null. To query for the null value, use {in: {operationType: [null]}} instead. """ operationType: String or: [ServiceOperationCheckStatsFilter!] """ Selects rows whose queryId dimension equals the given value if not null. To query for the null value, use {in: {queryId: [null]}} instead. """ queryId: ID """ Selects rows whose queryName dimension equals the given value if not null. To query for the null value, use {in: {queryName: [null]}} instead. """ queryName: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String } """ Filter for data in ServiceOperationCheckStats. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input ServiceOperationCheckStatsFilterIn { """ Selects rows whose clientName dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientName: [String] """ Selects rows whose clientVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientVersion: [String] """ Selects rows whose operationSubtype dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationSubtype: [String] """ Selects rows whose operationType dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationType: [String] """ Selects rows whose queryId dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryId: [ID] """ Selects rows whose queryName dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryName: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] } type ServiceOperationCheckStatsMetrics { cachedRequestsCount: Long! uncachedRequestsCount: Long! } input ServiceOperationCheckStatsOrderBySpec { column: ServiceOperationCheckStatsColumn! direction: Ordering! } type ServiceOperationCheckStatsRecord { """Dimensions of ServiceOperationCheckStats that can be grouped by.""" groupBy: ServiceOperationCheckStatsDimensions! """Metrics of ServiceOperationCheckStats that can be aggregated over.""" metrics: ServiceOperationCheckStatsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """Columns of ServiceOperationFetchStats.""" enum ServiceOperationFetchStatsColumn { CLIENT_NAME CLIENT_VERSION CONNECTOR_SOURCE FETCHES_WITH_ERRORS_COUNT FETCH_COUNT FETCH_LATENCY_HISTOGRAM FETCH_SERVICE_ID FETCH_SERVICE_NAME OPERATION_ID OPERATION_NAME OPERATION_TYPE SCHEMA_TAG TIMESTAMP } type ServiceOperationFetchStatsDimensions { clientName: String clientVersion: String connectorSource: String fetchServiceId: ID fetchServiceName: String operationId: String operationName: String operationType: String schemaTag: String } """ Filter for data in ServiceOperationFetchStats. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input ServiceOperationFetchStatsFilter { and: [ServiceOperationFetchStatsFilter!] """ Selects rows whose clientName dimension equals the given value if not null. To query for the null value, use {in: {clientName: [null]}} instead. """ clientName: String """ Selects rows whose clientVersion dimension equals the given value if not null. To query for the null value, use {in: {clientVersion: [null]}} instead. """ clientVersion: String """ Selects rows whose connectorSource dimension equals the given value if not null. To query for the null value, use {in: {connectorSource: [null]}} instead. """ connectorSource: String """ Selects rows whose fetchServiceId dimension equals the given value if not null. To query for the null value, use {in: {fetchServiceId: [null]}} instead. """ fetchServiceId: ID """ Selects rows whose fetchServiceName dimension equals the given value if not null. To query for the null value, use {in: {fetchServiceName: [null]}} instead. """ fetchServiceName: String in: ServiceOperationFetchStatsFilterIn not: ServiceOperationFetchStatsFilter """ Selects rows whose operationId dimension equals the given value if not null. To query for the null value, use {in: {operationId: [null]}} instead. """ operationId: String """ Selects rows whose operationName dimension equals the given value if not null. To query for the null value, use {in: {operationName: [null]}} instead. """ operationName: String """ Selects rows whose operationType dimension equals the given value if not null. To query for the null value, use {in: {operationType: [null]}} instead. """ operationType: String or: [ServiceOperationFetchStatsFilter!] """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String } """ Filter for data in ServiceOperationFetchStats. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input ServiceOperationFetchStatsFilterIn { """ Selects rows whose clientName dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientName: [String] """ Selects rows whose clientVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientVersion: [String] """ Selects rows whose connectorSource dimension is in the given list. A null value in the list means a row with null for that dimension. """ connectorSource: [String] """ Selects rows whose fetchServiceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ fetchServiceId: [ID] """ Selects rows whose fetchServiceName dimension is in the given list. A null value in the list means a row with null for that dimension. """ fetchServiceName: [String] """ Selects rows whose operationId dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationId: [String] """ Selects rows whose operationName dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationName: [String] """ Selects rows whose operationType dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationType: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] } type ServiceOperationFetchStatsMetrics { fetchCount: Long! fetchLatencyHistogram: DurationHistogram! fetchesWithErrorsCount: Long! } input ServiceOperationFetchStatsOrderBySpec { column: ServiceOperationFetchStatsColumn! direction: Ordering! } type ServiceOperationFetchStatsRecord { """Dimensions of ServiceOperationFetchStats that can be grouped by.""" groupBy: ServiceOperationFetchStatsDimensions! """Metrics of ServiceOperationFetchStats that can be aggregated over.""" metrics: ServiceOperationFetchStatsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """Columns of ServiceQueryStats.""" enum ServiceQueryStatsColumn { CACHED_HISTOGRAM CACHED_REQUESTS_COUNT CACHE_TTL_HISTOGRAM CLIENT_NAME CLIENT_VERSION FORBIDDEN_OPERATION_COUNT FROM_ENGINEPROXY OPERATION_SUBTYPE OPERATION_TYPE PERSISTED_QUERY_ID QUERY_ID QUERY_NAME REGISTERED_OPERATION_COUNT REQUESTS_WITH_ERRORS_COUNT SCHEMA_HASH SCHEMA_TAG TIMESTAMP UNCACHED_HISTOGRAM UNCACHED_REQUESTS_COUNT } type ServiceQueryStatsDimensions { clientName: String clientVersion: String fromEngineproxy: String operationSubtype: String operationType: String persistedQueryId: String queryId: ID queryName: String querySignature: String querySignatureLength: Int schemaHash: String schemaTag: String } """ Filter for data in ServiceQueryStats. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input ServiceQueryStatsFilter { and: [ServiceQueryStatsFilter!] """ Selects rows whose clientName dimension equals the given value if not null. To query for the null value, use {in: {clientName: [null]}} instead. """ clientName: String """ Selects rows whose clientVersion dimension equals the given value if not null. To query for the null value, use {in: {clientVersion: [null]}} instead. """ clientVersion: String """ Selects rows whose fromEngineproxy dimension equals the given value if not null. To query for the null value, use {in: {fromEngineproxy: [null]}} instead. """ fromEngineproxy: String in: ServiceQueryStatsFilterIn not: ServiceQueryStatsFilter """ Selects rows whose operationSubtype dimension equals the given value if not null. To query for the null value, use {in: {operationSubtype: [null]}} instead. """ operationSubtype: String """ Selects rows whose operationType dimension equals the given value if not null. To query for the null value, use {in: {operationType: [null]}} instead. """ operationType: String or: [ServiceQueryStatsFilter!] """ Selects rows whose persistedQueryId dimension equals the given value if not null. To query for the null value, use {in: {persistedQueryId: [null]}} instead. """ persistedQueryId: String """ Selects rows whose queryId dimension equals the given value if not null. To query for the null value, use {in: {queryId: [null]}} instead. """ queryId: ID """ Selects rows whose queryName dimension equals the given value if not null. To query for the null value, use {in: {queryName: [null]}} instead. """ queryName: String """ Selects rows whose schemaHash dimension equals the given value if not null. To query for the null value, use {in: {schemaHash: [null]}} instead. """ schemaHash: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String } """ Filter for data in ServiceQueryStats. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input ServiceQueryStatsFilterIn { """ Selects rows whose clientName dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientName: [String] """ Selects rows whose clientVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientVersion: [String] """ Selects rows whose fromEngineproxy dimension is in the given list. A null value in the list means a row with null for that dimension. """ fromEngineproxy: [String] """ Selects rows whose operationSubtype dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationSubtype: [String] """ Selects rows whose operationType dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationType: [String] """ Selects rows whose persistedQueryId dimension is in the given list. A null value in the list means a row with null for that dimension. """ persistedQueryId: [String] """ Selects rows whose queryId dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryId: [ID] """ Selects rows whose queryName dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryName: [String] """ Selects rows whose schemaHash dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaHash: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] } type ServiceQueryStatsMetrics { cacheTtlHistogram: DurationHistogram! cachedHistogram: DurationHistogram! cachedRequestsCount: Long! forbiddenOperationCount: Long! registeredOperationCount: Long! requestsWithErrorsCount: Long! totalLatencyHistogram: DurationHistogram! totalRequestCount: Long! uncachedHistogram: DurationHistogram! uncachedRequestsCount: Long! } input ServiceQueryStatsOrderBySpec { column: ServiceQueryStatsColumn! direction: Ordering! } type ServiceQueryStatsRecord { """Dimensions of ServiceQueryStats that can be grouped by.""" groupBy: ServiceQueryStatsDimensions! """Metrics of ServiceQueryStats that can be aggregated over.""" metrics: ServiceQueryStatsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """ Individual permissions for the current user when interacting with a particular Studio graph. """ type ServiceRoles { """ Whether the currently authenticated user is permitted to perform schema checks (i.e., run `rover (sub)graph check`). """ canCheckSchemas: Boolean! """ Whether the currently authenticated user is permitted to view details of the check configuration for this graph. """ canQueryCheckConfiguration: Boolean! """ Whether the currently authenticated user is permitted to make updates to the check configuration for this graph. """ canWriteCheckConfiguration: Boolean! service: Service! canQueryRoleOverrides: Boolean! canQueryTokens: Boolean! """ Whether the currently authenticated user is permitted to create new graph variants. """ canCreateVariants: Boolean! """ Whether the currently authenticated user is permitted to delete the graph in question """ canDelete: Boolean! """ Whether the currently authenticated user is permitted to delete proposal variants. """ canDeleteProposalVariants: Boolean! """ Whether the currently authenticated user is permitted to manage user access to the graph in question. """ canManageAccess: Boolean! """ Whether the currently authenticated user is permitted to manage the build configuration (e.g., build pipeline version). """ canManageBuildConfig: Boolean! """ Whether the currently authenticated user is permitted to manage third-party integrations (e.g., Datadog forwarding). """ canManageIntegrations: Boolean! """ Whether the currently authenticated user is permitted to manage graph-level API keys. """ canManageKeys: Boolean! """ Whether the currently authenticated user is permitted to manage proposal permission settings for this graph. """ canManageProposalPermissions: Boolean! """ Whether the currently authenticated user is permitted to manage proposal settings, like setting the implementation variant, on this graph. """ canManageProposalSettings: Boolean! """ Whether the currently authenticated user is permitted to perform basic administration of variants (e.g., make a variant public). """ canManageVariants: Boolean! """ Whether the currently authenticated user is permitted to view details about the build configuration (e.g. build pipeline version). """ canQueryBuildConfig: Boolean! canQueryDeletedImplementingServices: Boolean! """ Whether the currently authenticated user is permitted to view which subgraphs the graph is composed of. """ canQueryImplementingServices: Boolean! canQueryIntegrations: Boolean! canQueryPrivateInfo: Boolean! canQueryProposals: Boolean! canQueryPublicInfo: Boolean! canQueryReadmeAuthor: Boolean! """ Whether the currently authenticated user is permitted to download schemas owned by this graph. """ canQuerySchemas: Boolean! canQueryStats: Boolean! canQueryTraces: Boolean! """ Whether the currently authenticated user is permitted to register operations (i.e. `apollo client:push`) for this graph. """ canRegisterOperations: Boolean! canStoreSchemasWithoutVariant: Boolean! canUndelete: Boolean! canUpdateAvatar: Boolean! canUpdateDescription: Boolean! canUpdateTitle: Boolean! canManagePersistedQueryLists: Boolean! canQueryPersistedQueryLists: Boolean! canCreateProposal: Boolean! """ Given the graph's setting regarding proposal permission levels, can the current user edit Proposals authored by other users """ canEditProposal: Boolean! } """A time window with a specified granularity over a given service.""" type ServiceStatsWindow { billingUsageStats( """Filter to select what rows to return.""" filter: ServiceBillingUsageStatsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order ServiceBillingUsageStats by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [ServiceBillingUsageStatsOrderBySpec!] ): [ServiceBillingUsageStatsRecord!]! cardinalityStats( """Filter to select what rows to return.""" filter: ServiceCardinalityStatsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order ServiceCardinalityStats by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [ServiceCardinalityStatsOrderBySpec!] ): [ServiceCardinalityStatsRecord!]! coordinateUsage( """Filter to select what rows to return.""" filter: ServiceCoordinateUsageFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order ServiceCoordinateUsage by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [ServiceCoordinateUsageOrderBySpec!] ): [ServiceCoordinateUsageRecord!]! edgeServerInfos( """Filter to select what rows to return.""" filter: ServiceEdgeServerInfosFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order ServiceEdgeServerInfos by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [ServiceEdgeServerInfosOrderBySpec!] ): [ServiceEdgeServerInfosRecord!]! errorStats( """Filter to select what rows to return.""" filter: ServiceErrorStatsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order ServiceErrorStats by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [ServiceErrorStatsOrderBySpec!] ): [ServiceErrorStatsRecord!]! federatedErrorStats( """Filter to select what rows to return.""" filter: ServiceFederatedErrorStatsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order ServiceFederatedErrorStats by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [ServiceFederatedErrorStatsOrderBySpec!] ): [ServiceFederatedErrorStatsRecord!]! fieldExecutions( """Filter to select what rows to return.""" filter: ServiceFieldExecutionsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order ServiceFieldExecutions by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [ServiceFieldExecutionsOrderBySpec!] ): [ServiceFieldExecutionsRecord!]! fieldLatencies( """Filter to select what rows to return.""" filter: ServiceFieldExecutionsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order ServiceFieldExecutions by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [ServiceFieldExecutionsOrderBySpec!] ): [ServiceFieldExecutionsRecord!]! fieldStats( """Filter to select what rows to return.""" filter: ServiceFieldExecutionsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order ServiceFieldExecutions by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [ServiceFieldExecutionsOrderBySpec!] ): [ServiceFieldExecutionsRecord!]! fieldUsage( """Filter to select what rows to return.""" filter: ServiceFieldUsageFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order ServiceFieldUsage by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [ServiceFieldUsageOrderBySpec!] ): [ServiceFieldUsageRecord!]! graphosCloudMetrics( """Filter to select what rows to return.""" filter: ServiceGraphosCloudMetricsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order ServiceGraphosCloudMetrics by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [ServiceGraphosCloudMetricsOrderBySpec!] ): [ServiceGraphosCloudMetricsRecord!]! operationCheckStats( """Filter to select what rows to return.""" filter: ServiceOperationCheckStatsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order ServiceOperationCheckStats by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [ServiceOperationCheckStatsOrderBySpec!] ): [ServiceOperationCheckStatsRecord!]! operationFetchStats( """Filter to select what rows to return.""" filter: ServiceOperationFetchStatsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order ServiceOperationFetchStats by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [ServiceOperationFetchStatsOrderBySpec!] ): [ServiceOperationFetchStatsRecord!]! queryStats( """Filter to select what rows to return.""" filter: ServiceQueryStatsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order ServiceQueryStats by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [ServiceQueryStatsOrderBySpec!] ): [ServiceQueryStatsRecord!]! """From field rounded down to the nearest resolution.""" roundedDownFrom: Timestamp! """To field rounded up to the nearest resolution.""" roundedUpTo: Timestamp! tracePathErrorsRefs( """Filter to select what rows to return.""" filter: ServiceTracePathErrorsRefsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order ServiceTracePathErrorsRefs by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [ServiceTracePathErrorsRefsOrderBySpec!] ): [ServiceTracePathErrorsRefsRecord!]! traceRefs( """Filter to select what rows to return.""" filter: ServiceTraceRefsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order ServiceTraceRefs by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [ServiceTraceRefsOrderBySpec!] ): [ServiceTraceRefsRecord!]! } """Columns of ServiceTracePathErrorsRefs.""" enum ServiceTracePathErrorsRefsColumn { AGENT_VERSION CLIENT_NAME CLIENT_VERSION DURATION_BUCKET ERRORS_COUNT_IN_PATH ERRORS_COUNT_IN_TRACE ERROR_CODE ERROR_MESSAGE ERROR_SERVICE PATH QUERY_ID QUERY_NAME SCHEMA_HASH SCHEMA_TAG TIMESTAMP TRACE_HTTP_STATUS_CODE TRACE_ID TRACE_SIZE_BYTES TRACE_STARTS_AT } type ServiceTracePathErrorsRefsDimensions { agentVersion: String clientName: String clientVersion: String durationBucket: Int errorCode: String errorMessage: String errorService: String path: String queryId: ID queryName: String schemaHash: String schemaTag: String traceHttpStatusCode: Int traceId: ID traceStartsAt: Timestamp } """ Filter for data in ServiceTracePathErrorsRefs. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input ServiceTracePathErrorsRefsFilter { """ Selects rows whose agentVersion dimension equals the given value if not null. To query for the null value, use {in: {agentVersion: [null]}} instead. """ agentVersion: String and: [ServiceTracePathErrorsRefsFilter!] """ Selects rows whose clientName dimension equals the given value if not null. To query for the null value, use {in: {clientName: [null]}} instead. """ clientName: String """ Selects rows whose clientVersion dimension equals the given value if not null. To query for the null value, use {in: {clientVersion: [null]}} instead. """ clientVersion: String """ Selects rows whose durationBucket dimension equals the given value if not null. To query for the null value, use {in: {durationBucket: [null]}} instead. """ durationBucket: Int """ Selects rows whose errorCode dimension equals the given value if not null. To query for the null value, use {in: {errorCode: [null]}} instead. """ errorCode: String """ Selects rows whose errorMessage dimension equals the given value if not null. To query for the null value, use {in: {errorMessage: [null]}} instead. """ errorMessage: String """ Selects rows whose errorService dimension equals the given value if not null. To query for the null value, use {in: {errorService: [null]}} instead. """ errorService: String in: ServiceTracePathErrorsRefsFilterIn not: ServiceTracePathErrorsRefsFilter or: [ServiceTracePathErrorsRefsFilter!] """ Selects rows whose path dimension equals the given value if not null. To query for the null value, use {in: {path: [null]}} instead. """ path: String """ Selects rows whose queryId dimension equals the given value if not null. To query for the null value, use {in: {queryId: [null]}} instead. """ queryId: ID """ Selects rows whose queryName dimension equals the given value if not null. To query for the null value, use {in: {queryName: [null]}} instead. """ queryName: String """ Selects rows whose schemaHash dimension equals the given value if not null. To query for the null value, use {in: {schemaHash: [null]}} instead. """ schemaHash: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose traceHttpStatusCode dimension equals the given value if not null. To query for the null value, use {in: {traceHttpStatusCode: [null]}} instead. """ traceHttpStatusCode: Int """ Selects rows whose traceId dimension equals the given value if not null. To query for the null value, use {in: {traceId: [null]}} instead. """ traceId: ID } """ Filter for data in ServiceTracePathErrorsRefs. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input ServiceTracePathErrorsRefsFilterIn { """ Selects rows whose agentVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ agentVersion: [String] """ Selects rows whose clientName dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientName: [String] """ Selects rows whose clientVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientVersion: [String] """ Selects rows whose durationBucket dimension is in the given list. A null value in the list means a row with null for that dimension. """ durationBucket: [Int] """ Selects rows whose errorCode dimension is in the given list. A null value in the list means a row with null for that dimension. """ errorCode: [String] """ Selects rows whose errorMessage dimension is in the given list. A null value in the list means a row with null for that dimension. """ errorMessage: [String] """ Selects rows whose errorService dimension is in the given list. A null value in the list means a row with null for that dimension. """ errorService: [String] """ Selects rows whose path dimension is in the given list. A null value in the list means a row with null for that dimension. """ path: [String] """ Selects rows whose queryId dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryId: [ID] """ Selects rows whose queryName dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryName: [String] """ Selects rows whose schemaHash dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaHash: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose traceHttpStatusCode dimension is in the given list. A null value in the list means a row with null for that dimension. """ traceHttpStatusCode: [Int] """ Selects rows whose traceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ traceId: [ID] } type ServiceTracePathErrorsRefsMetrics { errorsCountInPath: Long! errorsCountInTrace: Long! traceSizeBytes: Long! } input ServiceTracePathErrorsRefsOrderBySpec { column: ServiceTracePathErrorsRefsColumn! direction: Ordering! } type ServiceTracePathErrorsRefsRecord { """Dimensions of ServiceTracePathErrorsRefs that can be grouped by.""" groupBy: ServiceTracePathErrorsRefsDimensions! """Metrics of ServiceTracePathErrorsRefs that can be aggregated over.""" metrics: ServiceTracePathErrorsRefsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """Columns of ServiceTraceRefs.""" enum ServiceTraceRefsColumn { CLIENT_NAME CLIENT_VERSION DURATION_BUCKET OPERATION_SUBTYPE OPERATION_TYPE QUERY_ID QUERY_NAME SCHEMA_HASH SCHEMA_TAG TIMESTAMP TRACE_COUNT TRACE_ID } type ServiceTraceRefsDimensions { clientName: String clientVersion: String durationBucket: Int generatedTraceId: String operationSubtype: String operationType: String queryId: ID queryName: String querySignature: String schemaHash: String schemaTag: String traceId: ID } """ Filter for data in ServiceTraceRefs. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input ServiceTraceRefsFilter { and: [ServiceTraceRefsFilter!] """ Selects rows whose clientName dimension equals the given value if not null. To query for the null value, use {in: {clientName: [null]}} instead. """ clientName: String """ Selects rows whose clientVersion dimension equals the given value if not null. To query for the null value, use {in: {clientVersion: [null]}} instead. """ clientVersion: String """ Selects rows whose durationBucket dimension equals the given value if not null. To query for the null value, use {in: {durationBucket: [null]}} instead. """ durationBucket: Int in: ServiceTraceRefsFilterIn not: ServiceTraceRefsFilter """ Selects rows whose operationSubtype dimension equals the given value if not null. To query for the null value, use {in: {operationSubtype: [null]}} instead. """ operationSubtype: String """ Selects rows whose operationType dimension equals the given value if not null. To query for the null value, use {in: {operationType: [null]}} instead. """ operationType: String or: [ServiceTraceRefsFilter!] """ Selects rows whose queryId dimension equals the given value if not null. To query for the null value, use {in: {queryId: [null]}} instead. """ queryId: ID """ Selects rows whose queryName dimension equals the given value if not null. To query for the null value, use {in: {queryName: [null]}} instead. """ queryName: String """ Selects rows whose schemaHash dimension equals the given value if not null. To query for the null value, use {in: {schemaHash: [null]}} instead. """ schemaHash: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose traceId dimension equals the given value if not null. To query for the null value, use {in: {traceId: [null]}} instead. """ traceId: ID } """ Filter for data in ServiceTraceRefs. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input ServiceTraceRefsFilterIn { """ Selects rows whose clientName dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientName: [String] """ Selects rows whose clientVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientVersion: [String] """ Selects rows whose durationBucket dimension is in the given list. A null value in the list means a row with null for that dimension. """ durationBucket: [Int] """ Selects rows whose operationSubtype dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationSubtype: [String] """ Selects rows whose operationType dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationType: [String] """ Selects rows whose queryId dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryId: [ID] """ Selects rows whose queryName dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryName: [String] """ Selects rows whose schemaHash dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaHash: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose traceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ traceId: [ID] } type ServiceTraceRefsMetrics { traceCount: Long! } input ServiceTraceRefsOrderBySpec { column: ServiceTraceRefsColumn! direction: Ordering! } type ServiceTraceRefsRecord { """Dimensions of ServiceTraceRefs that can be grouped by.""" groupBy: ServiceTraceRefsDimensions! """Metrics of ServiceTraceRefs that can be aggregated over.""" metrics: ServiceTraceRefsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } enum ServiceType { CONNECTOR SUBGRAPH UNKNOWN } input SetCustomCheckConfigurationInput { secretToken: String url: String! } """Input to update a proposal description""" input SetMergeBaseCompositionIdInput { """The composition id of the source variant this proposal is based on.""" mergeBaseCompositionId: ID! } union SetMergeBaseCompositionIdResult = PermissionError | Proposal | ValidationError union SetMinApproversResult = PermissionError | Service | ValidationError input SetMinProposalApproversInput { minApprovers: Int } """Represents the possible outcomes of a setNextVersion mutation""" union SetNextVersionResult = RouterVersion | InvalidInputErrors | InternalServerError input SetProposalDefaultReviewersInput { reviewerUserIds: [ID!]! } union SetProposalDefaultReviewersResult = PermissionError | Service | ValidationError input SetProposalDescriptionTemplateInput { descriptionTemplate: String } union SetProposalDescriptionTemplateResult = PermissionError | Service | ValidationError union SetProposalImplementationVariantResult = PermissionError | Service | ValidationError input SetProposalNotificationStatusInput { """NotificationStatus to set for the current active user. """ status: NotificationStatus! } union SetProposalNotificationStatusResult = PermissionError | Service | ValidationError input SetProposalRolesInput { create: UserPermission edit: UserPermission } union SetProposalRolesResult = PermissionError | Service | ValidationError union SetProposalsMustBeReApprovedOnChangeResult = PermissionError | Service | ValidationError union SetupIntentResult = NotFoundError | PermissionError | SetupIntentSuccess type SetupIntentSuccess { clientSecret: String! } """A SHA-256 hash, represented as a lowercase hexadecimal string.""" scalar SHA256 """ Shard for Cloud Routers This represents a specific shard where a Cloud Router can run """ type Shard { id: ID! region: RegionDescription! tier: CloudTier! provider: CloudProvider! routerUsage: Int! routerCapacity: Int gcuUsage: Int! gcuCapacity: Int status: ShardStatus! reason: String routers(first: Int, offset: Int): [Router!]! """Details of this shard for a specific provider""" providerDetails: ShardProvider! } """Provider-specific information for a Shard""" union ShardProvider = AwsShard | FlyShard """Represents the possible outcomes of a shard mutation""" union ShardResult = ShardSuccess | InvalidInputErrors | InternalServerError """Current status of Cloud Shards""" enum ShardStatus { """The Shard is active and ready to accept new Cloud Routers""" ACTIVE """ The Shard is suffering from a temporary degradation that might impact provisioning new Cloud Routers """ IMPAIRED """ The Shard is working as expected, but should not be used to provision new Cloud Routers """ DEPRECATED """ The Shard is currently being updated and should temporarily not be used to provision new Cloud Routers """ UPDATING """The Shard no long exists""" DELETED } """Success branch of an shard mutation""" type ShardSuccess { shard: Shard! } """Slack notification channel""" type SlackChannel implements Channel { id: ID! name: String! subscriptions: [ChannelSubscription!]! url: String! """ List of the Schema Proposal Lifecycle Subscriptions this Channel is subscribed to. """ proposalLifecycleSubscriptions: [ProposalLifecycleSubscription!]! } """Slack notification channel parameters""" input SlackChannelInput { name: String url: String! } input SlackNotificationField { key: String! value: String! } """Slack notification message""" input SlackNotificationInput { color: String fallback: String! fields: [SlackNotificationField!] iconUrl: String text: String timestamp: Timestamp title: String titleLink: String username: String } """A location in a source code file.""" type SourceLocation { """Column number.""" column: Int! """Line number.""" line: Int! } type SsoConfig { """ Returns all SSO connections for the account, including those disabled or incomplete """ allConnections: [SsoConnection!]! """Returns the current enabled SSO connection for the account""" currentConnection: SsoConnection defaultRole: UserPermission! } interface SsoConnection { domains: [String!]! id: ID! idpId: ID! scim: SsoScimProvisioningDetails state: SsoConnectionState! @deprecated(reason: "Use stateV2 instead") stateV2: SsoConnectionStateV2! updatedAt: Timestamp! } enum SsoConnectionState { DISABLED ENABLED } enum SsoConnectionStateV2 { """The connection has been archived and is no longer in use""" ARCHIVED """The connection has been disabled by an admin""" DISABLED """ The connection has been finalized. a connection can only go from VALIDATED->ENABLED """ ENABLED """The initial state for base connections - setup still in progress""" INITIALIZED """ The connection has been configured as either SAML/OIDC and can be used to login """ STAGED """ The connection has had at least one successful login - connections automatically transition from STAGED->VALIDATED on first login """ VALIDATED } """ Returned when the organization has SSO enabled and the plan does not support SSO """ type SsoEnabled implements PlanIneligibilityReason { """The severity of the ineligibility reason""" severity: PlanIneligibilityReasonSeverity! } type SsoMutation { deleteSsoConnection(id: ID!): SsoConnection disableSsoConnection(id: ID!): SsoConnection enableScimProvisioning(connectionId: ID!): SsoScimProvisioningDetails enableSsoConnection(id: ID!): SsoConnection } type SsoQuery { """Parses a SAML IDP metadata XML string and returns the parsed metadata""" parseSamlIdpMetadata(metadata: String!): ParsedSamlIdpMetadata } type SsoScimProvisioningDetails { scimEnabled: Boolean! scimEndpoint: String } """A time window with a specified granularity.""" type StatsWindow { billingUsageStats( """Filter to select what rows to return.""" filter: BillingUsageStatsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order BillingUsageStats by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [BillingUsageStatsOrderBySpec!] ): [BillingUsageStatsRecord!]! cardinalityStats( """Filter to select what rows to return.""" filter: CardinalityStatsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order CardinalityStats by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [CardinalityStatsOrderBySpec!] ): [CardinalityStatsRecord!]! coordinateUsage( """Filter to select what rows to return.""" filter: CoordinateUsageFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order CoordinateUsage by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [CoordinateUsageOrderBySpec!] ): [CoordinateUsageRecord!]! edgeServerInfos( """Filter to select what rows to return.""" filter: EdgeServerInfosFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order EdgeServerInfos by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [EdgeServerInfosOrderBySpec!] ): [EdgeServerInfosRecord!]! errorStats( """Filter to select what rows to return.""" filter: ErrorStatsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order ErrorStats by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [ErrorStatsOrderBySpec!] ): [ErrorStatsRecord!]! federatedErrorStats( """Filter to select what rows to return.""" filter: FederatedErrorStatsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order FederatedErrorStats by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [FederatedErrorStatsOrderBySpec!] ): [FederatedErrorStatsRecord!]! fieldExecutions( """Filter to select what rows to return.""" filter: FieldExecutionsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order FieldExecutions by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [FieldExecutionsOrderBySpec!] ): [FieldExecutionsRecord!]! fieldUsage( """Filter to select what rows to return.""" filter: FieldUsageFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order FieldUsage by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [FieldUsageOrderBySpec!] ): [FieldUsageRecord!]! graphosCloudMetrics( """Filter to select what rows to return.""" filter: GraphosCloudMetricsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order GraphosCloudMetrics by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [GraphosCloudMetricsOrderBySpec!] ): [GraphosCloudMetricsRecord!]! operationCheckStats( """Filter to select what rows to return.""" filter: OperationCheckStatsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order OperationCheckStats by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [OperationCheckStatsOrderBySpec!] ): [OperationCheckStatsRecord!]! operationFetchStats( """Filter to select what rows to return.""" filter: OperationFetchStatsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order OperationFetchStats by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [OperationFetchStatsOrderBySpec!] ): [OperationFetchStatsRecord!]! queryStats( """Filter to select what rows to return.""" filter: QueryStatsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order QueryStats by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [QueryStatsOrderBySpec!] ): [QueryStatsRecord!]! """From field rounded down to the nearest resolution.""" roundedDownFrom: Timestamp! """To field rounded up to the nearest resolution.""" roundedUpTo: Timestamp! tracePathErrorsRefs( """Filter to select what rows to return.""" filter: TracePathErrorsRefsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order TracePathErrorsRefs by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [TracePathErrorsRefsOrderBySpec!] ): [TracePathErrorsRefsRecord!]! traceRefs( """Filter to select what rows to return.""" filter: TraceRefsFilter """The maximum number of entries to return, cannot be more than 15000.""" limit: Int = 10000 """ A list of OrderBySpecs to order TraceRefs by. The earlier an OrderBySpec appears in the list, the higher priority it has in the final ordering. When empty or null, defaults to sorting by ascending timestamp. """ orderBy: [TraceRefsOrderBySpec!] ): [TraceRefsRecord!]! } """Possible status of a Cloud Router version""" enum Status { """Cloud Router Version is ready to be used by end users""" STABLE """ Upcoming or experimental version of a Cloud Router This should only be used internally, or to preview new features to customers. """ NEXT """ Deprecated version of a Cloud Router New Cloud Routers should not use this version, and this will not be supported at some point in the future. """ DEPRECATED } type StoredApprovedChange { code: ChangeCode! parentNode: NamedIntrospectionTypeNoDescription childNode: NamedIntrospectionValueNoDescription argNode: NamedIntrospectionArgNoDescription } type StoreSchemaError { code: StoreSchemaErrorCode! message: String! } enum StoreSchemaErrorCode { SCHEMA_IS_NOT_PARSABLE SCHEMA_IS_NOT_VALID } type StoreSchemaResponse { sha256: SHA256! } union StoreSchemaResponseOrError = StoreSchemaResponse | StoreSchemaError """A paginated connection of strings.""" type StringConnection { """A list of edges containing a cursor and a string node for pagination.""" edges: [StringEdge!]! """Information to aid in pagination.""" pageInfo: PageInfo! } """An edge in a connection, containing a string node and its cursor.""" type StringEdge { """ A cursor for use in pagination, unique identifier for this edge's position. """ cursor: String! """The string value at this position in the connection.""" node: String! } scalar StringOrInt type StringToString { key: String! value: String! } input StringToStringInput { key: String! value: String! } """A subgraph in a federated Studio supergraph.""" type Subgraph { """ The subgraph schema document's SHA256 hash, represented as a hexadecimal string. """ hash: String! """The subgraph's registered name.""" name: String! """The number of fields in this subgraph""" numberOfFields: Int """The number of types in this subgraph""" numberOfTypes: Int """The revision string of this publish if provided""" revision: String """ The subgraph's routing URL, provided to gateways that use managed federation. """ routingURL: String! """The subgraph schema document.""" sdl(graphId: ID!): String! """Timestamp of when the subgraph was published.""" updatedAt: Timestamp } """A change made to a subgraph as part of a launch.""" type SubgraphChange { """The subgraph's name.""" name: ID! """The type of change that was made.""" type: SubgraphChangeType! } enum SubgraphChangeType { ADDITION DELETION MODIFICATION } """ Input type to provide when running schema checks asynchronously for a federated supergraph. """ input SubgraphCheckAsyncInput { """Configuration options for the check execution.""" config: HistoricQueryParametersInput! """The GitHub context to associate with the check.""" gitContext: GitContextInput! """ The graph ref of the Studio graph and variant to run checks against (such as `my-graph@current`). """ graphRef: ID """ The URL of the GraphQL endpoint that Apollo Sandbox introspected to obtain the proposed schema. Required if `isSandbox` is `true`. """ introspectionEndpoint: String """If `true`, the check was initiated automatically by a Proposal update.""" isProposal: Boolean """If `true`, the check was initiated by Apollo Sandbox.""" isSandbox: Boolean! """The proposed subgraph schema to perform checks with.""" proposedSchema: GraphQLDocument! """ The source variant that this check should use the operations check configuration from """ sourceVariant: String """The name of the subgraph to check schema changes for.""" subgraphName: String! """ The user that triggered this check. If null, defaults to authContext to determine user. """ triggeredBy: ActorInput } """A subgraph in a federated Studio supergraph.""" input SubgraphCheckInput { """ The subgraph schema document's SHA256 hash, represented as a hexadecimal string. """ hash: String! """The subgraph's registered name.""" name: String! } type SubgraphConfig { schemaHash: String! sdl: String! name: String! id: ID! url: String! } input SubgraphHashInput { """SHA256 of the subgraph schema sdl.""" hash: String! name: String! } """Details to identify a subgraph""" input SubgraphIdentifierInput { """The graph id""" graphId: String! """The subgraph name""" subgraphName: String! """The variant name""" variantName: String! } input SubgraphInput { """We are either going to pass in a document or a schema reference""" document: String name: String! routingURL: String! """ Reference to a schema in studio. If this is a mutable ref i.e. graphRef then it will link (tbd) If it is a stable ref i.e. hash then it """ schemaRef: String } input SubgraphInsightsListFilterInInput { """ Filters results to fetches whose requests were reported with any of the given client names. """ clientName: [String] """ Filters results to fetches whose requests were reported with any of the given client versions. """ clientVersion: [String] """ Filters results to any of the given downstream subgraph or connector service ids. """ subgraphId: [String] """ Filters results to any of the given downstream subgraph or connector service names. """ subgraphName: [String] } input SubgraphInsightsListFilterInput { """ Filters results to fetches whose requests were reported with this exact client name. """ clientName: String """ Filters results to fetches whose requests were reported with this exact client version. """ clientVersion: String """ Filters that match if the value is one of the given values. Multiple conditions inside `in` are ANDed together. """ in: SubgraphInsightsListFilterInInput """ A list of alternative filter conditions; results match if any of them match. """ or: [SubgraphInsightsListFilterInput!] """ Filters on partial string matches against the subgraph or connector name/id. """ search: String """ Restricts results to fetches of the given service types (e.g. subgraph vs connector). """ serviceTypes: [ServiceType!] """ Filters results to this exact downstream subgraph or connector service id. """ subgraphId: String """ Filters results to this exact downstream subgraph or connector service name. """ subgraphName: String } enum SubgraphInsightsListGroupByColumn { CLIENT_NAME CLIENT_VERSION CONNECTOR_SOURCE OPERATION_ID OPERATION_NAME SERVICE_TYPE SUBGRAPH_ID SUBGRAPH_NAME } type SubgraphInsightsListItem { """The client name (if being grouped).""" clientName: String """The client version (if being grouped).""" clientVersion: String """The connector source (if being grouped).""" connectorSource: String """Count of fetches to this subgraph.""" fetchCount: Long! """Rate per minute of fetches to this subgraph.""" fetchCountPerMin: Float! """Percentage of fetches to this subgraph with errors.""" fetchErrorPercentage: Float! """ The histogram of fetch latencies. This can be null depending on whether latency calculations are needed. """ fetchLatencyHistogram: DurationHistogram """Count of fetches to this subgraph with errors.""" fetchesWithErrorsCount: Long! """Rate per minute of fetches to this subgraph with errors.""" fetchesWithErrorsCountPerMin: Float! """The unique id for the operation (if being grouped).""" operationId: ID """The name of the operation (if being grouped).""" operationName: String """ The operation type, e.g. query, mutation, subscription (if being grouped). """ operationType: OperationType """ The p50 of the latency across all fetches. This can be null depending on whether latency calculations are needed. """ serviceTimeP50Ms: Float """ The p90 of the latency across all fetches. This can be null depending on whether latency calculations are needed. """ serviceTimeP90Ms: Float """ The p95 of the latency across all fetches. This can be null depending on whether latency calculations are needed. """ serviceTimeP95Ms: Float """ The p99 of the latency across all fetches. This can be null depending on whether latency calculations are needed. """ serviceTimeP99Ms: Float """The service type (if being grouped).""" serviceType: ServiceType """The unique id for this subgraph.""" subgraphId: ID """The subgraph name.""" subgraphName: String! """ The total duration across all fetches. This can be null depending on whether latency calculations are needed. """ totalDurationMs: Float } enum SubgraphInsightsListOrderByColumn { CLIENT_NAME CLIENT_VERSION FETCHES_WITH_ERRORS_COUNT FETCHES_WITH_ERRORS_COUNT_PER_MIN FETCH_COUNT FETCH_COUNT_PER_MIN FETCH_ERROR_PERCENTAGE OPERATION_ID OPERATION_NAME SERVICE_TIME_P50 SERVICE_TIME_P90 SERVICE_TIME_P95 SERVICE_TIME_P99 SUBGRAPH_ID SUBGRAPH_NAME TIMESTAMP TOTAL_DURATION_MS } input SubgraphInsightsListOrderByInput { """The column to order results by.""" column: SubgraphInsightsListOrderByColumn! """The order direction, ascending or descending.""" direction: Ordering! } """Information about pagination in a connection.""" type SubgraphInsightsListPageInfo { """When paginating forwards, the cursor to continue.""" endCursor: String """When paginating backwards, the cursor to continue.""" startCursor: String } """A single data point in the subgraph insights time series.""" type SubgraphInsightsTimeseriesRecord { """The metrics or values for this time series entry.""" data: SubgraphInsightsListItem! """The timestamp marking the start of this time segment.""" timestamp: Timestamp! } """ The named type and version of the clients to include or exclude in the subgraph and connector timeseries report. """ input SubgraphInsightsTimeseriesReportClientFilterInInput { """The client name.""" clientName: String """The client version.""" clientVersion: String } """ Dimensions by which the subgraph and connector timeseries data can be grouped or filtered. """ enum SubgraphInsightsTimeseriesReportDimension { """The client name that issued the request to the graph.""" CLIENT_NAME """The version string of the client that issued the request to the graph.""" CLIENT_VERSION """ The identifier of the downstream subgraph or connector service that the router made a request to as part of its query plan execution. """ FETCH_SERVICE_ID """ The name of the downstream subgraph or connector service that the router made a request to as part of its query plan execution. """ FETCH_SERVICE_NAME """The variant or version of the graph serving the request.""" GRAPH_VARIANT """The unique identifier of the top-level operation executed.""" OPERATION_ID """The name of the top-level operation executed, if provided.""" OPERATION_NAME """The GraphQl operation type, e.g. QUERY, MUTATION, SUBSCRIPTION""" OPERATION_TYPE } """ The type and value for a subgraph and connector insights timeseries report dimension. """ type SubgraphInsightsTimeseriesReportDimensionValue { """The type of dimension this represents.""" type: SubgraphInsightsTimeseriesReportDimension! """ The string value of this dimension. Null for subgraphs without this dimension (e.g., unnamed operations). """ value: String } """ Lists of dimensions to include or exclude in the subgraph and connector timeseries report. Each list can have a maximum of 1000 entries. """ input SubgraphInsightsTimeseriesReportFilterInInput { """Include or exclude certain clients""" clients: [SubgraphInsightsTimeseriesReportClientFilterInInput] """ Matches any subgraph or connector fetches targeting a subgraph or connector with an ID in this list. """ fetchServiceId: [String] """ Matches any subgraph or connector fetches targeting a subgraph or connector with a name in this list. """ fetchServiceName: [String] """ Matches any subgraph or connector fetches whose operation ID is in this list. """ operationId: [String] """ Matches any subgraph or connector fetches whose operation name is in this list. """ operationName: [String] """ Matches any subgraph or connector fetches requested from any variant in this list. """ variantName: [String] } """ The filters available when using the subgraph and connector timeseries report. """ input SubgraphInsightsTimeseriesReportFilterInput { """ Exclude subgraph or connector fetches that match a specified set of dimensions. If the same dimension exists in both 'include' and 'exclude', an REQUEST_INVALID error will be returned. """ exclude: SubgraphInsightsTimeseriesReportFilterInInput """ Include subgraph or connector fetches that match a specified set of dimensions. """ include: SubgraphInsightsTimeseriesReportFilterInInput } """ Metrics available for subgraph and connector timeseries fetches, representing aggregated data collected over the given time window for the selected dimensions. Each request from the router to a downstream subgraph or connector service is counted as a fetch. """ enum SubgraphInsightsTimeseriesReportMetric { """ The total number of fetch requests sent from the router to the downstream subgraph or connector service as part of its query plan execution. """ FETCH_COUNT """The 50th percentile (median) latency of fetches (in milliseconds).""" FETCH_LATENCY_P50_MS """The 90th percentile latency of fetch requests (in milliseconds).""" FETCH_LATENCY_P90_MS """The 99th percentile latency of fetch requests (in milliseconds).""" FETCH_LATENCY_P99_MS """ The number of fetch requests that resulted in error responses from the downstream service. """ FETCH_WITH_ERRORS_COUNT } """ The type and value for subgraph and connector insights timeseries report metric. """ type SubgraphInsightsTimeseriesReportMetricValue { """The type of metric this represents.""" type: SubgraphInsightsTimeseriesReportMetric! """The floating point value of this metric.""" value: Float! } """ The metric and direction to use as the secondary sort order for the subgraph and connector insights timeseries report. The primary sort order will always be time. """ input SubgraphInsightsTimeseriesReportOrderByInput { """ The ordering used for the metrics results. This metric must be included in the requested metrics. """ column: SubgraphInsightsTimeseriesReportMetric! """The direction used to order the results.""" direction: Ordering! } """ The data that is returned by the subgraph and connector insights timeseries report. """ type SubgraphInsightsTimeseriesReportResult { """ A CSV representation of the results. This includes a header and rows that have a column for start and end timestamp and all requested dimensions and metrics. """ csv: String """ The result records, with each row having a start and end timestamp and a set of dimensions and metrics. """ records: [SubgraphInsightsTimeseriesReportRow!]! } """ A single row of data that is returned by the subgraph and connector insights timeseries report. """ type SubgraphInsightsTimeseriesReportRow { """The dimension values for this row, matching the requested dimensions.""" dimensions: [SubgraphInsightsTimeseriesReportDimensionValue!]! """The exclusive end of the time bucket for this row.""" endExclusiveTimestamp: Timestamp! """The metric values for this row, matching the requested metrics.""" metrics: [SubgraphInsightsTimeseriesReportMetricValue!]! """The start of the time bucket for this row.""" startTimestamp: Timestamp! } """Result of a subgraph insights time series query.""" type SubgraphInsightsTimeseriesResult { """ The list of time series records containing the metrics or data points for the query. """ records: [SubgraphInsightsTimeseriesRecord!]! """The start of the time bucket, rounded down to the nearest interval.""" roundedDownFrom: Timestamp! """The end of the time bucket, rounded up to the nearest interval.""" roundedUpTo: Timestamp! } type SubgraphKeyMap { subgraphName: String! keys: [String!]! } """ Individual permissions for the currently authenticated principal when interacting with a particular Studio subgraph. """ type SubgraphPermissions { """ Whether the currently authenticated principal can publish schema for this subgraph. """ canPublishSubgraph: Boolean! """ Identifier for the subgraph this permissions object is associated with. """ subgraphName: String! """Identifier for the variant this subgraph belongs to.""" variantId: ID! } input SubgraphSdlCheckInput { name: String! sdl: GraphQLDocument! } type SubgraphWithConflicts { conflicts: [MergeConflict!]! partialMergeSdl: String! subgraphName: String! } """The result of submitting course feedback""" type SubmitFeedbackPayload { """The feedback record that was created, or null if submission failed""" feedback: CourseFeedback """Any validation errors that occurred during submission""" userErrors: [UserError!]! } type SubscriptionCapability { label: String! subscription: BillingSubscription! value: Boolean! } type SubscriptionLimit { label: String! subscription: BillingSubscription! value: Long } type SubscriptionOptions { """Enables notifications for schema updates""" schemaUpdates: Boolean! } input SubscriptionOptionsInput { """Enables notifications for schema updates""" schemaUpdates: Boolean! } enum SubscriptionState { ACTIVE CANCELED CANCELED_NEVER_ACTIVATED EXPIRED FUTURE PAST_DUE PAUSED PENDING SOFT_CANCELED UNKNOWN } type SupportTicket { """The environment affected by the issue""" affectedEnv: AffectedEnv """The org id this issue belongs to""" apolloOrgId: String """The date the issue was created""" created: Timestamp! """The description of the issue""" description: String! """The graph this issue is related to""" graph: Service """The id of the issue""" id: Int! """The key of the issue, ie TH-###""" key: String! """The priority of the issue. Returns P3 if null in Jira""" priority: TicketPriority! """ The JSM product associated with this ticket (replaces the old Component field) """ product: Product """ The version of product that is in use, i.e. Router v2.1, this is an optional field, if the value is null then the JSM field will be blank """ productVersion: String """The JSM status category of the issue""" statusCategory: TicketStatusCategory! """The display label of the issue status as returned by JSM""" statusLabel: String! """The summary of the issue""" summary: String! """The apollo user who created this issue""" user: User } input SupportTicketInput { affectedEnv: AffectedEnv apolloOrgId: String description: String! displayName: String! email: String! emailUsers: [String!] graphId: String graphType: GraphType priority: TicketPriority! """ The JSM product associated with this ticket (replaces the old Component field) """ product: Product """ The version of product that is in use, i.e. Router v2.1, this is an optional field, if the value is null then the JSM field will be blank """ productVersion: String summary: String! } type Survey { id: String! isComplete: Boolean! questionAnswers: [SurveyQuestionAnswer!]! shouldShow: Boolean! } type SurveyQuestionAnswer { answerDetails: String answerValue: String questionKey: String! } input SurveyQuestionInput { answerDetails: String answerKey: String! answerKeyVersion: Int answerValue: String questionKey: String! questionKeyVersion: Int wasSkipped: Boolean! } """User input for a resource share mutation""" input SyncPrivateSubgraphsInput { """A unique identifier for the private subgraph""" identifier: String! """The cloud provider where the private subgraph is hosted""" provider: CloudProvider! } type TaskError { message: String! } type TemporaryURL { url: String! } type TestRouter { id: ID! status: TestRouterStatus! router: Router } """The current state of a [`TestRouter`]""" enum TestRouterStatus { """The router is spinning up""" LAUNCHING """The router is running""" RUNNING """The router is spinning down""" DELETING """The router has been destroyed""" DELETED """The router has entered an errored state as a result of the above""" ERRORED } enum ThemeName { DARK LIGHT } """Throttle error""" type ThrottleError implements Error { message: String! retryAfter: Int } enum TicketPriority { """Note that JSM does not have P0""" P0 P1 P2 P3 """Note that Zendesk does not have P4""" P4 } """The status category of a JSM support ticket""" enum TicketStatusCategory { """Ticket has reached a terminal state""" DONE """Ticket is actively being worked on""" IN_PROGRESS """Ticket is open and not yet in progress""" TODO } """The size of each time bucket in a timeseries report.""" enum TimeseriesReportResolution { """One-day buckets.""" DAY """One-hour buckets.""" HOUR """One-minute buckets.""" MINUTE """One-month buckets.""" MONTH } """ ISO 8601, extended format with nanoseconds, Zulu (or "[+-]seconds" as a string or number relative to now) """ scalar Timestamp """Filter options to represent a timestamp range""" input TimestampFilterInput { """The start of the range""" from: Timestamp """The end of the range""" to: Timestamp } type TimezoneOffset { minutesOffsetFromUTC: Int! zoneID: String! } """ Returned when the organization has too many users to transition to the plan """ type TooManyUsers implements PlanIneligibilityReason { """ The current number of users on the organization that makes the plan transition ineligible """ currentUsers: Int! """The maximum number of users allowed by the plan""" maxUsers: Int! """The severity of the ineligibility reason""" severity: PlanIneligibilityReasonSeverity! } type TopNOperationsByErrorPercentageRecord implements TopNOperationsRecord { """ A substring of the query signature for unnamed operations, otherwise the operation name. """ displayName: String! """The percentage of requests for this operation that resulted in errors.""" errorPercentage: Float! """The operation name or null if the operation is unnamed.""" name: String """The unique id for this operation.""" queryID: String! """ The GraphQL operation type, or null if the operation type could not be determined from the signature. """ type: OperationType } type TopNOperationsByP95Record implements TopNOperationsRecord { """ A substring of the query signature for unnamed operations, otherwise the operation name. """ displayName: String! """The operation name or null if the operation is unnamed.""" name: String """The unique id for this operation.""" queryID: String! """ The p95 of the latency across all requests for this operation in the selected time range, in milliseconds. """ serviceTimeP95Ms: Float! """ The GraphQL operation type, or null if the operation type could not be determined from the signature. """ type: OperationType } type TopNOperationsByRequestRateRecord implements TopNOperationsRecord { """ A substring of the query signature for unnamed operations, otherwise the operation name. """ displayName: String! """The operation name or null if the operation is unnamed.""" name: String """The unique id for this operation.""" queryID: String! """ The rate of requests per minute for this operation in the selected time range. """ requestCountPerMin: Float! """ The GraphQL operation type, or null if the operation type could not be determined from the signature. """ type: OperationType } input TopNOperationsFilterInput { """ Filters results to operations whose requests were reported with this exact client name. """ clientName: String """ Filters results to operations whose requests were reported with this exact client version. """ clientVersion: String """ Filters that match if the value is one of the given values. Multiple conditions inside `in` are ANDed together. """ in: TopNOperationsFilterInput """ A list of alternative filter conditions; results match if any of them match. """ or: [TopNOperationsFilterInput!] } interface TopNOperationsRecord { """ A substring of the query signature for unnamed operations, otherwise the operation name. """ displayName: String! """The operation name or null if the operation is unnamed.""" name: String """The unique id for this operation.""" queryID: String! """ The GraphQL operation type, or null if the operation type could not be determined from the signature. """ type: OperationType } type TopNOperationsResult { """Top N operations by error percentage (descending).""" byErrorPercentage: [TopNOperationsByErrorPercentageRecord!]! """Top N operations by p95 latency (descending).""" byP95: [TopNOperationsByP95Record!]! """Top N operations by request rate (descending).""" byRequestRate: [TopNOperationsByRequestRateRecord!]! } type TopOperationRecord { """The graph this operation was reported from.""" graphId: String! """The graph variant this operation was reported from.""" graphVariant: String! """The operation name or null if the operation is unnamed.""" name: String """The unique id for this operation.""" operationId: String! """ The total number of requests for this operation for the specified time range. """ requestCount: Long! """ The operation's signature body or null if the signature is unavailable due to parse errors. """ signature: String """ The operation type or null if the operation type could not be determined from the signature. """ type: OperationType } enum TopOperationsReportOrderByColumn { REQUEST_COUNT } input TopOperationsReportOrderByInput { """ The order column used for the operation results. Defaults to ordering by total request count. """ column: TopOperationsReportOrderByColumn! """ The direction used to order operation results. Defaults to descending order. """ direction: Ordering! } input TopOperationsReportVariantFilterInInput { clientName: [String] clientVersion: [String] } input TopOperationsReportVariantFilterInput { in: TopOperationsReportVariantFilterInInput! } """Counts of changes.""" type TotalChangeSummaryCounts { """ Number of changes that are additions. This includes adding types, adding fields to object, input object, and interface types, adding values to enums, adding members to interfaces and unions, and adding arguments. """ additions: Int! """ Number of changes that are removals. This includes removing types, removing fields from object, input object, and interface types, removing values from enums, removing members from interfaces and unions, and removing arguments. This also includes removing @deprecated usages. """ removals: Int! """ Number of changes that are edits. This includes types changing kind, fields and arguments changing type, arguments changing default value, and any description changes. This also includes edits to @deprecated reason strings. """ edits: Int! """Number of changes that are new usages of the @deprecated directive.""" deprecations: Int! } """ A single recorded trace of an operation handled by the Apollo Router or gateway. """ type Trace { """ The version of the agent (e.g. Apollo Router) that reported this trace, if available. """ agentVersion: String """ The maximum cache TTL for this operation in milliseconds, or null if not cacheable. """ cacheMaxAgeMs: Float """The cache scope for this operation, or null if not cacheable.""" cacheScope: CacheScope """The client name reported with the operation, if available.""" clientName: String """The client version reported with the operation, if available.""" clientVersion: String """The total duration of the operation in milliseconds.""" durationMs: Float! """ The time the operation finished executing, in the gateway/router's clock. """ endTime: Timestamp! """The HTTP request/response context for the operation, if available.""" http: TraceHTTP """The unique id of this trace.""" id: ID! """ True if the report containing the trace was submitted as potentially incomplete, which can happen if the Router's trace buffer fills up while constructing the trace. If this is true, the trace might be missing some nodes. """ isIncomplete: Boolean! """ The name of the executed operation, or null if the operation was unnamed. """ operationName: String """The full raw trace as a base64-encoded protobuf message.""" protobuf: Protobuf! """The root node of the trace tree.""" root: TraceNode! """ The normalized GraphQL signature of the operation, used as the operation's stable identifier across runs. """ signature: String! """ The time the operation started executing, in the gateway/router's clock. """ startTime: Timestamp! """ The body of the operation that was sent but did not execute (e.g. for parse/validation errors). """ unexecutedOperationBody: String """ The name of the operation that was sent but did not execute (e.g. for parse/validation errors). """ unexecutedOperationName: String """The variables sent with the operation, with sensitive values redacted.""" variablesJSON: [StringToString!]! } """A single error reported at a node in the trace tree.""" type TraceError { """The error code from the error's `extensions.code` field, if present.""" errorCode: String """ The downstream subgraph or connector service the error originated from, if attributable. """ errorService: String """ The full GraphQL error as a JSON-encoded string, including any extensions. """ json: String! """ The source locations in the operation document associated with the error. """ locations: [TraceSourceLocation!]! """The human-readable error message.""" message: String! """The timestamp at which the error was observed, if available.""" timestamp: Timestamp } """ HTTP request and response context for the operation captured in a trace. """ type TraceHTTP { """The HTTP method of the request that produced this trace.""" method: HTTPMethod! """ Request headers reported with the operation, with sensitive values redacted. Repeated header names appear once per value. """ requestHeaders: [StringToString!]! """ Response headers returned to the client, with sensitive values redacted. Repeated header names appear once per value. """ responseHeaders: [StringToString!]! """The HTTP status code returned to the client.""" statusCode: Int! } """ A single node in a trace tree, representing either a field resolver execution or a query plan fetch. """ type TraceNode { """Additional metadata for the node, presented in key-value pairs.""" attributes: [StringToString!]! """ The maximum cache TTL for this node's field in milliseconds, or null if not cacheable. """ cacheMaxAgeMs: Float """The cache scope for this node's field, or null if not cacheable.""" cacheScope: CacheScope """The total number of children, including the ones that were truncated.""" childCount: Int! """ Whether the children of this node have been truncated because the number of children is over the max. """ childrenAreTruncated: Boolean! """ All children, and the children of those children, and so on. Children that have been truncated are not included. """ descendants: [TraceNode!]! """ The end time of the node. If this is a fetch node (meaning isFetch is true), this will be the time that the gateway/router received the response from the subgraph server in the gateway/routers clock time. """ endTime: Timestamp! """Errors that occurred at this node, if any.""" errors: [TraceError!]! """The unique id of this node within the trace.""" id: ID! """ Whether the fetch node in question is a descendent of a Deferred node in the trace's query plan. The nodes in query plans can be complicated and nested, so this is a fairly simple representation of the structure. """ isDeferredFetch: Boolean! """ Whether the node in question represents a fetch node within a query plan. If so, this will contain children with timestamps that are calculated by the router/gateway rather than subgraph and the fields subgraphStartTime and subgraphEndTime will be non-null. """ isFetch: Boolean! """ For list elements, the index in the parent list; for object fields, the response key under the parent. """ key: StringOrInt """ A classification which helps to differentiate between types of nodes (intended for display / filtering purposes). """ kind: TraceNodeKind! """ If the node represents an aliased field resolver, the underlying field name; otherwise null. """ originalFieldName: String """The id of this node's parent, or null if this is the root node.""" parentId: ID """ If the node is a field resolver, the field's parent type; e.g. "User" for User.email otherwise null. """ parentType: String """ The start time of the node. If this is a fetch node (meaning isFetch is true), this will be the time that the gateway/router sent the request to the subgraph server in the gateway/router's clock time. """ startTime: Timestamp! """ Only present when the node in question is a fetch node, this will indicate the timestamp at which the subgraph server returned a response to the gateway/router. This timestamp is based on the subgraph server's clock, so if there is a clock skew between the subgraph and the gateway/router, this and endTime will not be in sync. If this is a fetch node but we don't receive subgraph traces (e.g. if the subgraph doesn't support federated traces), this value will be null. """ subgraphEndTime: Timestamp """If present, indicates the subgraph context a node is associated with.""" subgraphName: String """ Only present when the node in question is a fetch node, this will indicate the timestamp at which the fetch was received by the subgraph server. This timestamp is based on the subgraph server's clock, so if there is a clock skew between the subgraph and the gateway/router, this and startTime will not be in sync. If this is a fetch node but we don't receive subgraph traces (e.g. if the subgraph doesn't support federated traces), this value will be null. """ subgraphStartTime: Timestamp """ If the node is a field resolver, the field's return type; e.g. "String!" for User.email:String! otherwise an empty string. """ type: String } enum TraceNodeKind { ARRAY_INDEX_RESOLVER FIELD_RESOLVER REQUEST ROUTER_INTERNAL SUBGRAPH_REQUEST USER_PLUGIN } """Columns of TracePathErrorsRefs.""" enum TracePathErrorsRefsColumn { AGENT_VERSION CLIENT_NAME CLIENT_VERSION DURATION_BUCKET ERRORS_COUNT_IN_PATH ERRORS_COUNT_IN_TRACE ERROR_CODE ERROR_MESSAGE ERROR_SERVICE PATH QUERY_ID QUERY_NAME SCHEMA_HASH SCHEMA_TAG SERVICE_ID TIMESTAMP TRACE_HTTP_STATUS_CODE TRACE_ID TRACE_SIZE_BYTES TRACE_STARTS_AT } type TracePathErrorsRefsDimensions { agentVersion: String clientName: String clientVersion: String durationBucket: Int errorCode: String errorMessage: String errorService: String """ If metrics were collected from a federated service, this field will be prefixed with `service:.` """ path: String queryId: ID queryName: String schemaHash: String schemaTag: String serviceId: ID traceHttpStatusCode: Int traceId: ID traceStartsAt: Timestamp } """ Filter for data in TracePathErrorsRefs. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input TracePathErrorsRefsFilter { """ Selects rows whose agentVersion dimension equals the given value if not null. To query for the null value, use {in: {agentVersion: [null]}} instead. """ agentVersion: String and: [TracePathErrorsRefsFilter!] """ Selects rows whose clientName dimension equals the given value if not null. To query for the null value, use {in: {clientName: [null]}} instead. """ clientName: String """ Selects rows whose clientVersion dimension equals the given value if not null. To query for the null value, use {in: {clientVersion: [null]}} instead. """ clientVersion: String """ Selects rows whose durationBucket dimension equals the given value if not null. To query for the null value, use {in: {durationBucket: [null]}} instead. """ durationBucket: Int """ Selects rows whose errorCode dimension equals the given value if not null. To query for the null value, use {in: {errorCode: [null]}} instead. """ errorCode: String """ Selects rows whose errorMessage dimension equals the given value if not null. To query for the null value, use {in: {errorMessage: [null]}} instead. """ errorMessage: String """ Selects rows whose errorService dimension equals the given value if not null. To query for the null value, use {in: {errorService: [null]}} instead. """ errorService: String in: TracePathErrorsRefsFilterIn not: TracePathErrorsRefsFilter or: [TracePathErrorsRefsFilter!] """ Selects rows whose path dimension equals the given value if not null. To query for the null value, use {in: {path: [null]}} instead. """ path: String """ Selects rows whose queryId dimension equals the given value if not null. To query for the null value, use {in: {queryId: [null]}} instead. """ queryId: ID """ Selects rows whose queryName dimension equals the given value if not null. To query for the null value, use {in: {queryName: [null]}} instead. """ queryName: String """ Selects rows whose schemaHash dimension equals the given value if not null. To query for the null value, use {in: {schemaHash: [null]}} instead. """ schemaHash: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serviceId dimension equals the given value if not null. To query for the null value, use {in: {serviceId: [null]}} instead. """ serviceId: ID """ Selects rows whose traceHttpStatusCode dimension equals the given value if not null. To query for the null value, use {in: {traceHttpStatusCode: [null]}} instead. """ traceHttpStatusCode: Int """ Selects rows whose traceId dimension equals the given value if not null. To query for the null value, use {in: {traceId: [null]}} instead. """ traceId: ID } """ Filter for data in TracePathErrorsRefs. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input TracePathErrorsRefsFilterIn { """ Selects rows whose agentVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ agentVersion: [String] """ Selects rows whose clientName dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientName: [String] """ Selects rows whose clientVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientVersion: [String] """ Selects rows whose durationBucket dimension is in the given list. A null value in the list means a row with null for that dimension. """ durationBucket: [Int] """ Selects rows whose errorCode dimension is in the given list. A null value in the list means a row with null for that dimension. """ errorCode: [String] """ Selects rows whose errorMessage dimension is in the given list. A null value in the list means a row with null for that dimension. """ errorMessage: [String] """ Selects rows whose errorService dimension is in the given list. A null value in the list means a row with null for that dimension. """ errorService: [String] """ Selects rows whose path dimension is in the given list. A null value in the list means a row with null for that dimension. """ path: [String] """ Selects rows whose queryId dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryId: [ID] """ Selects rows whose queryName dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryName: [String] """ Selects rows whose schemaHash dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaHash: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serviceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serviceId: [ID] """ Selects rows whose traceHttpStatusCode dimension is in the given list. A null value in the list means a row with null for that dimension. """ traceHttpStatusCode: [Int] """ Selects rows whose traceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ traceId: [ID] } type TracePathErrorsRefsMetrics { errorsCountInPath: Long! errorsCountInTrace: Long! traceSizeBytes: Long! } input TracePathErrorsRefsOrderBySpec { column: TracePathErrorsRefsColumn! direction: Ordering! } type TracePathErrorsRefsRecord { """Dimensions of TracePathErrorsRefs that can be grouped by.""" groupBy: TracePathErrorsRefsDimensions! """Metrics of TracePathErrorsRefs that can be aggregated over.""" metrics: TracePathErrorsRefsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """Columns of TraceRefs.""" enum TraceRefsColumn { CLIENT_NAME CLIENT_VERSION DURATION_BUCKET OPERATION_SUBTYPE OPERATION_TYPE QUERY_ID QUERY_NAME SCHEMA_HASH SCHEMA_TAG SERVICE_ID TIMESTAMP TRACE_COUNT TRACE_ID } type TraceRefsDimensions { clientName: String clientVersion: String durationBucket: Int generatedTraceId: String operationSubtype: String operationType: String queryId: ID queryName: String querySignature: String schemaHash: String schemaTag: String serviceId: ID traceId: ID } """ Filter for data in TraceRefs. Fields with dimension names represent equality checks. All fields are implicitly ANDed together. """ input TraceRefsFilter { and: [TraceRefsFilter!] """ Selects rows whose clientName dimension equals the given value if not null. To query for the null value, use {in: {clientName: [null]}} instead. """ clientName: String """ Selects rows whose clientVersion dimension equals the given value if not null. To query for the null value, use {in: {clientVersion: [null]}} instead. """ clientVersion: String """ Selects rows whose durationBucket dimension equals the given value if not null. To query for the null value, use {in: {durationBucket: [null]}} instead. """ durationBucket: Int in: TraceRefsFilterIn not: TraceRefsFilter """ Selects rows whose operationSubtype dimension equals the given value if not null. To query for the null value, use {in: {operationSubtype: [null]}} instead. """ operationSubtype: String """ Selects rows whose operationType dimension equals the given value if not null. To query for the null value, use {in: {operationType: [null]}} instead. """ operationType: String or: [TraceRefsFilter!] """ Selects rows whose queryId dimension equals the given value if not null. To query for the null value, use {in: {queryId: [null]}} instead. """ queryId: ID """ Selects rows whose queryName dimension equals the given value if not null. To query for the null value, use {in: {queryName: [null]}} instead. """ queryName: String """ Selects rows whose schemaHash dimension equals the given value if not null. To query for the null value, use {in: {schemaHash: [null]}} instead. """ schemaHash: String """ Selects rows whose schemaTag dimension equals the given value if not null. To query for the null value, use {in: {schemaTag: [null]}} instead. """ schemaTag: String """ Selects rows whose serviceId dimension equals the given value if not null. To query for the null value, use {in: {serviceId: [null]}} instead. """ serviceId: ID """ Selects rows whose traceId dimension equals the given value if not null. To query for the null value, use {in: {traceId: [null]}} instead. """ traceId: ID } """ Filter for data in TraceRefs. Fields match if the corresponding dimension's value is in the given list. All fields are implicitly ANDed together. """ input TraceRefsFilterIn { """ Selects rows whose clientName dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientName: [String] """ Selects rows whose clientVersion dimension is in the given list. A null value in the list means a row with null for that dimension. """ clientVersion: [String] """ Selects rows whose durationBucket dimension is in the given list. A null value in the list means a row with null for that dimension. """ durationBucket: [Int] """ Selects rows whose operationSubtype dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationSubtype: [String] """ Selects rows whose operationType dimension is in the given list. A null value in the list means a row with null for that dimension. """ operationType: [String] """ Selects rows whose queryId dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryId: [ID] """ Selects rows whose queryName dimension is in the given list. A null value in the list means a row with null for that dimension. """ queryName: [String] """ Selects rows whose schemaHash dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaHash: [String] """ Selects rows whose schemaTag dimension is in the given list. A null value in the list means a row with null for that dimension. """ schemaTag: [String] """ Selects rows whose serviceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ serviceId: [ID] """ Selects rows whose traceId dimension is in the given list. A null value in the list means a row with null for that dimension. """ traceId: [ID] } type TraceRefsMetrics { traceCount: Long! } input TraceRefsOrderBySpec { column: TraceRefsColumn! direction: Ordering! } type TraceRefsRecord { """Dimensions of TraceRefs that can be grouped by.""" groupBy: TraceRefsDimensions! """Metrics of TraceRefs that can be aggregated over.""" metrics: TraceRefsMetrics! """Starting segment timestamp.""" timestamp: Timestamp! } """ A position in the operation document, identifying where an error was reported. """ type TraceSourceLocation { """The 1-based column number in the operation document.""" column: Int! """The 1-based line number in the operation document.""" line: Int! } """ Counts of changes at the type level, including interfaces, unions, enums, scalars, input objects, etc. """ type TypeChangeSummaryCounts { """Number of changes that are additions of types.""" additions: Int! """Number of changes that are removals of types.""" removals: Int! """ Number of changes that are edits. This includes types changing kind and any type description changes, but also includes adding/removing values from enums, adding/removing members from interfaces and unions, and any enum value deprecation and description changes. """ edits: Int! } """ the TypeFilterConfig is used to isolate types, and subsequent fields, through various configuration settings. It defaults to filter towards user defined types only """ input TypeFilterConfig { """include abstract types (interfaces and unions)""" includeAbstractTypes: Boolean = true """include built in scalars (i.e. Boolean, Int, etc)""" includeBuiltInTypes: Boolean = false """include reserved introspection types (i.e. __Type)""" includeIntrospectionTypes: Boolean = false } type UnignoreOperationsInChecksResult { """The graph that was updated.""" graph: Service! """Whether or not the request succeeded.""" success: Boolean! """An error or success message.""" message: String! } type UnlinkPersistedQueryListResult { graphVariant: GraphVariant! unlinkedPersistedQueryList: PersistedQueryList! } """ The result/error union returned by GraphVariantMutation.unlinkPersistedQueryList. """ union UnlinkPersistedQueryListResultOrError = PermissionError | UnlinkPersistedQueryListResult | VariantAlreadyUnlinkedError type UpcomingMeteredBill { creditGrantLineItems: [MeteredBillCreditGrantLineItem]! """Invoice-level discounts applied to this invoice.""" discountLineItems: [MeteredBillDiscountLineItem]! flatFeeLineItems: [MeteredBillFlatFeeLineItem!]! lastUsageSyncedAt: Timestamp meteredLineItems: [MeteredBillMeteredLineItem!]! totalInCents: Int! } """Input for updating an existing application.""" input UpdateApplicationInput { """Updated name for the application.""" name: String! """Updated description of the application's purpose.""" description: String """Updated lifecycle status for the application.""" status: ApplicationStatus } """Input to update an AWS shard""" input UpdateAwsShardInput { region: String accountId: String iamRoleArn: String loadbalancers: [AwsLoadBalancerInput!] loadbalancerSecurityGroupId: String ecsClusterArn: String vpcId: String subnetIds: [String!] permissionsBoundaryArn: String coldStartTargetGroupArns: [String!] } input UpdateBillingPlanDescriptorsInput { description: String name: String readableId: ID } input UpdateBillingPlanInput { billingModel: BillingModel! clientVersions: Boolean clients: Boolean contracts: Boolean datadog: Boolean errors: Boolean! federation: Boolean intervalLength: Int! intervalUnit: String! kind: BillingPlanKind! launches: Boolean maxAuditInDays: Int maxRangeInDays: Int maxSelfHostedRequestsPerMonth: Long metrics: Boolean notifications: Boolean operationRegistry: Boolean persistedQueries: Boolean proposals: Boolean public: Boolean! schemaValidation: Boolean sso: Boolean traces: Boolean userRoles: Boolean webhooks: Boolean } """Input to update a proposal description""" input UpdateDescriptionInput { """A proposal description""" description: String! } """Input for replacing the questions on an existing feedback survey""" input UpdateFeedbackSurveyInput { """The survey to update""" surveyId: ID! """ The new ordered list of questions; replaces the existing set and bumps the version """ questions: [FeedbackQuestionInput!]! } """Return payload for the updateSurvey mutation""" type UpdateFeedbackSurveyPayload { """The updated survey, or null if validation failed""" survey: FeedbackSurvey """Any validation errors that occurred""" userErrors: [UserError!]! } union UpdateOperationCollectionEntryResult = OperationCollectionEntry | PermissionError | ValidationError union UpdateOperationCollectionResult = OperationCollection | PermissionError | ValidationError union UpdatePaymentMethodResult = Account | NotFoundError | PermissionError | UpdatePaymentMethodSuccess type UpdatePaymentMethodSuccess { paymentMethodId: String! } """ The result of a successful call to PersistedQueryListMutation.updateMetadata. """ type UpdatePersistedQueryListMetadataResult { persistedQueryList: PersistedQueryList! } """ The result/error union returned by PersistedQueryListMutation.updateMetadata. """ union UpdatePersistedQueryListMetadataResultOrError = PermissionError | UpdatePersistedQueryListMetadataResult """ Input for updating an existing policy exception. Any field left null is unchanged. """ input UpdatePolicyExceptionInput { """New principal binding, or null to leave unchanged.""" principal: PolicyRulePrincipalInput """New justification, or null to leave unchanged.""" reason: String """New expiry timestamp, or null to leave unchanged.""" expiresAt: DateTime """ New lifecycle status (e.g. revoke an active exception), or null to leave unchanged. """ status: PolicyExceptionStatus } """ Input for updating an existing policy rule. Any field left null is unchanged. `effect` and `effectConfig` must be supplied together. """ input UpdatePolicyRuleInput { """New scope, or null to leave unchanged.""" scope: PolicyRuleScopeInput """New principal binding, or null to leave unchanged.""" principal: PolicyRulePrincipalInput """New target, or null to leave unchanged.""" target: PolicyRuleTargetInput """New effect — must be paired with `effectConfig`.""" effect: PolicyEffect """New effect-specific configuration — must be paired with `effect`.""" effectConfig: PolicyEffectConfigInput """New description, or null to leave unchanged.""" description: String """Operational configuration overrides — only the supplied fields change.""" config: PolicyRuleConfigInput } input UpdateProposalLifecycleSubscriptionInput { events: [ProposalLifecycleEvent!]! id: ID! } union UpdateProposalLifecycleSubscriptionResult = NotFoundError | PermissionError | ProposalLifecycleSubscription | ValidationError union UpdateProposalResult = PermissionError | Proposal | ValidationError input UpdateRequestedReviewersInput { reviewerUserIdsToAdd: [ID!] reviewerUserIdsToRemove: [ID!] } union UpdateRequestedReviewersResult = PermissionError | Proposal | ValidationError """Input for updating a Cloud Router""" input UpdateRouterInput { """Router version for the Cloud Router""" routerVersion: String """Configuration for the Cloud Router""" routerConfig: String """Graph composition ID, also known as launch ID""" graphCompositionId: String """ Number of GCUs allocated for the Cloud Router This is ignored for serverless Cloud Routers """ gcus: Int """Unique identifier for ordering orders""" orderingId: String! } """Represents the possible outcomes of an updateRouter mutation""" union UpdateRouterResult = UpdateRouterSuccess | InvalidInputErrors | InternalServerError """ Success branch of an updateRouter mutation. id of the order can be polled via Query.cloud().order(id: ID!) to check-in on the progress of the underlying operation """ type UpdateRouterSuccess { order: Order! } """Result of an updateVersion mutation""" union UpdateRouterVersionResult = RouterVersion | InvalidInputErrors | InternalServerError input UpdateRuleEnforcementInput { """ A json string representing any parameters necessary for the policy's enforcement. Explicit null setting is allowed. """ params: [StringToStringInput!] } """ Result of update: the updated configuration, or an error explaining why it could not be updated. """ union UpdateS3IntegrationResult = AlreadyConfiguredError | InvalidInputError | NotFoundError | PermissionError | S3IntegrationConfig """Input for updating an existing service catalog entry.""" input UpdateServiceCatalogInput { """Updated GraphQL schema template for this catalog entry.""" schemaTemplate: String """Updated human-readable name for this catalog entry.""" displayName: String """Updated description of what this connector does.""" description: String """Updated suggested base URL.""" defaultBaseUrl: String """Updated suggested auth configuration.""" defaultAuth: JSON } """Input to update an existing Shard""" input UpdateShardInput { shardId: String! gcuCapacity: Int gcuUsage: Int routerCapacity: Int routerUsage: Int status: ShardStatus reason: String aws: UpdateAwsShardInput } """Input for updating an existing service.""" input UpdateUpstreamServiceInput { """Updated name for the service.""" name: String! """Updated description of the service's purpose.""" description: String """Updated reference to a service catalog entry template.""" templateId: UUID! """Updated base URL for the service's API endpoint.""" baseUrl: String! """ Updated authentication configuration as a JSON object. If the service template references `{{TOKEN_VAR}}`, include `env_var` (string) here naming the environment variable that holds the secret. """ auth: JSON """Updated tags for this service.""" tags: [String!] } """Describes the result of publishing a schema to a graph variant.""" type UploadSchemaMutationResponse { """ A machine-readable response code that indicates the type of result (e.g., `UPLOAD_SUCCESS` or `NO_CHANGES`) """ code: String! """ Whether the schema publish operation succeeded (`true`) or encountered errors (`false`). """ success: Boolean! """A Human-readable message describing the type of result.""" message: String! """If successful, the corresponding publication.""" tag: SchemaTag """ If the publish operation succeeded, this contains its details. Otherwise, this is null. """ publication: SchemaTag } input UpsertReviewInput { comment: String decision: ReviewDecision! revisionId: ID! } union UpsertReviewResult = PermissionError | Proposal | ValidationError union UpsertRouterResult = GraphVariant | RouterUpsertFailure """A registered service in the constellation registry.""" type UpstreamService { """Unique identifier for this service.""" id: UUID! """Human-readable name of the service.""" name: String! """Optional description of the service's purpose.""" description: String """ Reference to the service catalog entry this service was instantiated from. """ templateId: UUID """Base URL for the service's API endpoint.""" baseUrl: String """Authentication configuration for the service, stored as a JSON object.""" auth: JSON """Tags used to categorize and filter this service.""" tags: [String!]! """Timestamp when the service was created.""" createdAt: DateTime! """Timestamp when the service was last updated.""" updatedAt: DateTime! """Timestamp when the service was soft-deleted, or null if active.""" deletedAt: DateTime """Lifecycle status of the publish to GraphOS.""" status: UpstreamServiceStatus! """ Error message from the most recent publish, only populated when status is FAILED. """ publishError: String } """A page of upstream services with an optional cursor for the next page.""" type UpstreamServicePage { """Upstream services in this page.""" items: [UpstreamService!]! """Cursor for the next page of data, or null on the last page.""" cursor: String } """Lifecycle status of an upstream service's publish to GraphOS.""" enum UpstreamServiceStatus { """Background worker has not yet driven publish/launch to completion.""" PENDING """Most recent publish completed and its launch reached LAUNCH_COMPLETED.""" CONNECTED """Most recent publish or launch terminated in a non-recoverable error.""" FAILED } type URI { """A GCS URI""" gcs: String! } """Result when usage data sync validation failed""" type UsageSyncValidationFailed { """The validation details""" validation: BillingPeriodUsageSyncValidation! } """Result when usage data sync validation was skipped""" type UsageSyncValidationSkipped { """Reason why the validation was skipped""" reason: String! } """Result when usage data sync validation succeeded""" type UsageSyncValidationSucceeded { """The validation details""" validation: BillingPeriodUsageSyncValidation! } """A registered Apollo Studio user.""" type User implements Identity { """ Returns a representation of this user as an `Actor` type. Useful when determining which actor (usually a `User` or `Graph`) performed a particular action in Studio. """ asActor: Actor! """The user's unique ID.""" id: ID! """The user's first and last name.""" name: String! acceptedPrivacyPolicyAt: Timestamp """Returns a list of all active user API keys for the user.""" apiKeys(includeCookies: Boolean = false): [UserApiKey!]! betaFeaturesOn: Boolean! canUpdateAvatar: Boolean! canUpdateEmail: Boolean! canUpdateFullName: Boolean! createdAt: Timestamp! email: String emailModifiedAt: Timestamp emailVerified: Boolean! fullName: String! """ The user's GitHub username, if they log in via GitHub. May be null even for GitHub users in some edge cases. """ githubUsername: String """ This role is reserved exclusively for internal Apollo employees, and it controls what access they may have to other organizations. Only admins are allowed to see this field. """ internalAdminRole: InternalMdgAdminRole """Whether or not this user is and internal Apollo employee""" isInternalUser: Boolean! isSsoV2: Boolean! """Last time any API token from this user was used against AGM services""" lastAuthenticatedAt: Timestamp loginFlowSource: LoginFlowSource logoutAfterIdleMs: Int """A list of the user's memberships in Apollo Studio organizations.""" memberships: [UserMembership!]! synchronized: Boolean! type: UserType! """ Get an URL to which an avatar image can be uploaded. Client uploads by sending a PUT request with the image data to MediaUploadInfo.url. Client SHOULD set the "Content-Type" header to the browser-inferred MIME type, and SHOULD set the "x-apollo-content-filename" header to the filename, if such information is available. Client MUST set the "x-apollo-csrf-token" header to MediaUploadInfo.csrfToken. """ avatarUpload: AvatarUploadResult """ Get an image URL for the user's avatar. Note that CORS is not enabled for these URLs. The size argument is used for bandwidth reduction, and should be the size of the image as displayed in the application. Apollo's media server will downscale larger images to at least the requested size, but this will not happen for third-party media servers. """ avatarUrl(size: Int! = 40): String featureIntros: FeatureIntros """Retrieve specific Odyssey tasks by their IDs""" odysseyTasks( """List of task IDs to filter by""" in: [ID!] ): [OdysseyTask!] """All Odyssey courses the user is enrolled in""" odysseyCourses: [OdysseyCourse!] """Retrieve a specific Odyssey course by its ID""" odysseyCourse( """The course ID to retrieve""" courseId: ID! ): OdysseyCourse """All certifications earned by the user""" odysseyCertifications: [OdysseyCertification!]! """Retrieve a specific certification by its ID""" odysseyCertification( """The certification ID to retrieve""" certificationId: ID! ): OdysseyCertification """All test attempts made by the user""" odysseyAttempts: [OdysseyAttempt!] """Retrieve a specific attempt by its ID""" odysseyAttempt( """The attempt ID to retrieve""" id: ID! ): OdysseyAttempt """Whether the user has early access to Odyssey features""" odysseyHasEarlyAccess: Boolean! @deprecated(reason: "Unused. Remove from application usage") """Whether the user has requested early access to Odyssey""" odysseyHasRequestedEarlyAccess: Boolean! @deprecated(reason: "Unused. Remove from application usage") """Education-specific data for the user""" education: Education sandboxOperationCollections: [OperationCollection!]! """ List of support tickets this user has submitted or raised via any channel """ supportTickets: [SupportTicket!] } """ Represents a user API key, which has permissions identical to its associated Apollo user. """ type UserApiKey implements ApiKey { """The API key's ID.""" id: ID! """The API key's name, for distinguishing it from other keys.""" keyName: String """ The timestamp when the API key was last used for authentication, if available. """ lastUsed: Timestamp """The value of the API key. **This is a secret credential!**""" token: String! } """A field-level validation error returned from a mutation""" type UserError { """The field path the error is associated with""" field: [String!]! """A human-readable description of the error""" message: String! } """A single user's membership in a single Apollo Studio organization.""" type UserMembership { """The organization that the user belongs to.""" account: Account! """The timestamp when the user was added to the organization.""" createdAt: Timestamp! """The user's permission level within the organization.""" permission: UserPermission! @deprecated(reason: "Use role instead.") """The user's role within the organization'.""" role: UserPermission! """The user that belongs to the organization.""" user: User! } type UserMutation { acceptPrivacyPolicy: Void """Change the user's password""" changePassword(newPassword: String!, previousPassword: String!): Void """ Hard deletes the associated user. Throws an error otherwise with reason included. """ hardDelete: Void """Creates a new user API key for this user.""" newKey(keyName: String!): UserApiKey! """ If this user has no active user API keys, this creates one for the user. If this user has at least one active user API key, this returns one of those keys at random and does _not_ create a new key. """ provisionKey(keyName: String! = "add-a-name"): ApiKeyProvision """ Refresh information about the user from its upstream service (e.g. list of organizations from GitHub) """ refresh: User """Deletes the user API key with the provided ID, if any.""" removeKey( """API key ID""" id: ID! ): Void """ Sets a new name for the user API key with the provided ID, if any. This does not invalidate the key or change its value. """ renameKey(id: ID!, newKeyName: String): UserApiKey resendVerificationEmail: Void """Update information about a user; all arguments are optional""" update(email: String, fullName: String): User """Updates this users' preference concerning opting into beta features.""" updateBetaFeaturesOn(betaFeaturesOn: Boolean!): User """ Update user to have the given internal mdg admin role. It is necessary to be an MDG_INTERNAL_SUPER_ADMIN to perform update. Additionally, upserting a null value explicitly revokes this user's admin status. """ updateRole(newRole: InternalMdgAdminRole): User """The user this mutation context belongs to""" user: User! verifyEmail(token: String!): User """Delete the user's avatar. Requires User.canUpdateAvatar to be true.""" deleteAvatar: AvatarDeleteError """ Update the status of a feature for this. For example, if you want to hide an introductory popup. """ updateFeatureIntros(newFeatureIntros: FeatureIntrosInput): User """Set or update a single Odyssey task for the user""" setOdysseyTask( """The task data to set""" task: OdysseyTaskInput! """Optional course ID to associate with the task""" courseId: ID """Optional course language to associate with the task""" courseLanguage: String ): OdysseyTask """Create multiple Odyssey tasks in parallel for the user""" createOdysseyTasks( """List of tasks to create""" tasks: [OdysseyTaskInput!]! ): [OdysseyTask!] """Delete multiple Odyssey tasks by their IDs""" deleteOdysseyTasks( """List of task IDs to delete""" taskIds: [String!]! ): [OdysseyTask]! """Set or update an Odyssey course enrollment""" setOdysseyCourse( """The course data to set""" course: OdysseyCourseInput! ): OdysseyCourse """Delete an Odyssey course enrollment""" deleteOdysseyCourse( """The course ID to delete""" courseId: String! ): OdysseyCourse """Create multiple Odyssey course enrollments""" createOdysseyCourses( """List of courses to create""" courses: [OdysseyCourseInput!]! ): [OdysseyCourse!] """Create a new Odyssey certification for the user""" createOdysseyCertification( """The certification ID being awarded""" certificationId: String! """Source system or method where the certification was earned""" source: String ): OdysseyCertification """Delete an Odyssey certification""" deleteOdysseyCertification( """The certification record ID to delete""" id: ID! ): OdysseyCertification """Create a new Odyssey test attempt""" createOdysseyAttempt( """The test ID being attempted""" testId: String! ): OdysseyAttempt """Delete an Odyssey test attempt""" deleteOdysseyAttempt( """The attempt ID to delete""" id: ID! ): OdysseyAttempt """Update an existing Odyssey test attempt""" updateOdysseyAttempt( """The attempt ID to update""" id: ID! """Whether the attempt passed""" pass: Boolean """When the attempt was completed""" completedAt: Timestamp ): OdysseyAttempt """Set or update a response for an Odyssey attempt""" setOdysseyResponse( """The response data to set""" response: OdysseyResponseInput! ): OdysseyResponse """Complete an Odyssey attempt with final scoring""" completeOdysseyAttempt( """The attempt ID to complete""" id: ID! """List of response correctness updates""" responses: [OdysseyResponseCorrectnessInput!]! """Whether the overall attempt passed""" pass: Boolean! ): OdysseyAttempt """Set the language for an Odyssey course""" setOdysseyCourseLanguage( """The course ID to update""" courseId: ID! """The language to set for the course""" language: String! ): OdysseyCourse! """Submit a support ticket for this user""" submitSupportTicket(ticket: SupportTicketInput!): SupportTicket } enum UserPermission { BILLING_MANAGER CONSUMER CONTRIBUTOR DOCUMENTER GRAPH_ADMIN LEGACY_GRAPH_KEY OBSERVER ORG_ADMIN PERSISTED_QUERY_PUBLISHER } enum UserSegment { JOIN_MY_TEAM LOCAL_DEVELOPMENT NOT_SPECIFIED ODYSSEY PRODUCTION_GRAPHS SANDBOX SANDBOX_OPERATION_COLLECTIONS SANDBOX_PREFLIGHT_SCRIPTS TRY_TEAM } type UserSettings { appNavCollapsed: Boolean! autoManageVariables: Boolean! id: String! mockingResponses: Boolean! preflightScriptEnabled: Boolean! responseHints: ResponseHints! tableMode: Boolean! themeName: ThemeName! } """Explorer user settings input""" input UserSettingsInput { appNavCollapsed: Boolean autoManageVariables: Boolean mockingResponses: Boolean preflightScriptEnabled: Boolean responseHints: ResponseHints tableMode: Boolean themeName: ThemeName } input UserTrackingInput { referrer: String referrerDetails: String sessionReferrer: String sessionReferrerCreatedAt: Timestamp sessionReferrerDetail: String trackingGoogleClientId: String trackingMarketoClientId: String userSegment: UserSegment utmCampaign: String utmMedium: String utmSource: String } enum UserType { APOLLO GITHUB SSO } """ A UUID is a unique 128-bit number, stored as 16 octets. UUIDs are parsed as Strings within GraphQL. UUIDs are used to assign unique identifiers to entities without requiring a central allocating authority. # References * [Wikipedia: Universally Unique Identifier](http://en.wikipedia.org/wiki/Universally_unique_identifier) * [RFC4122: A Universally Unique Identifier (UUID) URN Namespace](http://tools.ietf.org/html/rfc4122) """ scalar UUID type ValidateOperationsResult { validationResults: [ValidationResult!]! } """An error that occurs when an operation contains invalid user input.""" type ValidationError implements Error { """The error's details.""" message: String! } enum ValidationErrorCode { NON_PARSEABLE_DOCUMENT INVALID_OPERATION DEPRECATED_FIELD } enum ValidationErrorType { FAILURE WARNING INVALID } """ Represents a single validation error, with information relating to the error and its respective operation """ type ValidationResult { """The type of validation error thrown - warning, failure, or invalid.""" type: ValidationErrorType! """The validation result's error code""" code: ValidationErrorCode! """Description of the validation error""" description: String! """The operation related to this validation result""" operation: OperationDocument! } """ The result of a failed call to GraphVariantMutation.linkPersistedQueryList when the specified list is already linked. """ type VariantAlreadyLinkedError implements Error { message: String! } """ The result of a failed call to GraphVariantMutation.unlinkPersistedQueryList when the specified list isn't linked. """ type VariantAlreadyUnlinkedError implements Error { message: String! } """Variant-level configuration of checks.""" type VariantCheckConfiguration { customChecksConfig: VariantCheckConfigurationCustomChecks! """ID of the check configuration""" id: ID! """Time when the check configuration was created.""" createdAt: Timestamp! """ Operation checks configuration that allows associated checks to be downgraded from failure to passing. """ downgradeChecksConfig: VariantCheckConfigurationDowngradeChecks! """ Downstream checks configuration for which downstream variants should affect this variant's check status. """ downstreamVariantsConfig: VariantCheckConfigurationDownstreamVariants! """Operation checks configuration for which clients to ignore.""" excludedClientsConfig: VariantCheckConfigurationExcludedClients! """Operation checks configuration for which operation to ignore.""" excludedOperationsConfig: VariantCheckConfigurationExcludedOperations! """Graph that this check configuration belongs to""" graphID: String! """Graph variant that this check configuration belongs to""" graphVariant: String! """ Operation checks configuration for which variants' metrics data to include. """ includedVariantsConfig: VariantCheckConfigurationIncludedVariants! """Whether operations checks are enabled.""" operationsChecksEnabled: Boolean! """ How submitted build input diffs are handled when they match (or don't) a Proposal at the variant level """ proposalChangeMismatchSeverityConfig: VariantCheckConfigurationProposalChangeMismatchSeverity! """ Operation checks configuration for time range and associated thresholds. """ timeRangeConfig: VariantCheckConfigurationTimeRange! """Time when the check configuration was updated.""" updatedAt: Timestamp! """ Identity of the last actor to update the check configuration, if available. """ updatedBy: Identity } type VariantCheckConfigurationCustomChecks { """ID of the check configuration""" checkConfigurationId: ID! """ When true, indicates that graph-level configuration is used for this variant setting. The default at variant creation is true. """ useGraphSettings: Boolean! """ Whether custom checks is enabled for this variant. Non-null if useGraphSettings is false, otherwise null. """ enableCustomChecks: Boolean } type VariantCheckConfigurationDowngradeChecks { """ During operation checks, if this option is enabled, the check will not fail or mark any operations as broken/changed if the default value has changed, only if the default value is removed completely. """ downgradeDefaultValueChange: Boolean """ During operation checks, if this option is enabled, it evaluates a check run against zero operations as a pass instead of a failure. """ downgradeStaticChecks: Boolean """ When true, indicates that graph-level configuration is used for this variant setting. The default at variant creation is true. """ useGraphSettings: Boolean! } type VariantCheckConfigurationDownstreamVariants { """ During downstream checks, this variant's check workflow will wait for all downstream check workflows for variants to complete, and if any of them fail, then this variant's check workflow will fail. """ blockingDownstreamVariants: [String!]! } type VariantCheckConfigurationExcludedClients { """ When true, indicates that graph-level configuration is appended to the variant-level configuration. The default at variant creation is true. """ appendGraphSettings: Boolean! """ During operation checks, ignore clients matching any of the filters. The default at variant creation is the empty list. """ excludedClients: [ClientFilter!]! } type VariantCheckConfigurationExcludedOperations { """ When true, indicates that graph-level configuration is appended to the variant-level configuration. The default at variant creation is true. """ appendGraphSettings: Boolean! """ During operation checks, ignore operations matching any of the filters. The default at variant creation is the empty list. """ excludedOperationNames: [OperationNameFilter!]! """ During operation checks, ignore operations matching any of the filters. The default at variant creation is the empty list. """ excludedOperations: [OperationInfoFilter!]! } type VariantCheckConfigurationIncludedVariants { """ During operation checks, fetch operations from the metrics data for variants. Non-null if useGraphSettings is false and is otherwise null. """ includedVariants: [String!] """ When true, indicates that graph-level configuration is used for this variant setting. The default at variant creation is true. """ useGraphSettings: Boolean! } type VariantCheckConfigurationProposalChangeMismatchSeverity { """ How submitted build input diffs are handled when they match (or don't) a Proposal. Non-null if useGraphSettings is false and is otherwise null. """ proposalChangeMismatchSeverity: ProposalChangeMismatchSeverity """ When true, indicates that graph-level configuration is used for this variant setting. The default at variant creation is true. """ useGraphSettings: Boolean! } type VariantCheckConfigurationTimeRange { """ During operation checks, ignore operations that executed less than times in the time range. Non-null if useGraphSettings is false and is otherwise null. """ operationCountThreshold: Int """ Duration operation checks, ignore operations that constituted less than % of the operations in the time range. Expected values are between 0% and 5%. Non-null if useGraphSettings is false and is otherwise null. """ operationCountThresholdPercentage: Float """ During operation checks, fetch operations from the last seconds. Non-null if useGraphSettings is false and is otherwise null. """ timeRangeSeconds: Long """ When true, indicates that graph-level configuration is used for this variant setting. The default at variant creation is true. """ useGraphSettings: Boolean! } input VariantCreationConfig { buildConfigInput: BuildConfigInput! endpointSlug: String variantName: String! } enum ViolationLevel { ERROR INFO WARNING } """Always null""" scalar Void """Webhook notification channel""" type WebhookChannel implements Channel { id: ID! name: String! secretToken: String """ List of the subscriptions this channel is subscribed to, except for ProposalLifecycleSubscriptions. """ subscriptions: [ChannelSubscription!]! url: String! """ List of the Schema Proposal Lifecycle Subscriptions this Channel is subscribed to. """ proposalLifecycleSubscriptions: [ProposalLifecycleSubscription!]! } """PagerDuty notification channel parameters""" input WebhookChannelInput { name: String secretToken: String url: String! }