dae973cb59
GitOrigin-RevId: c90c4025bb6e0c4eaf438128a3b2640314b1c58d
1980 lines
75 KiB
GraphQL
1980 lines
75 KiB
GraphQL
schema {
|
|
query: Query
|
|
mutation: Mutation
|
|
}
|
|
|
|
"""An organization in Apollo Studio. Can have multiple members and graphs."""
|
|
type Organization {
|
|
auditLogExports: [AuditLogExport!]
|
|
"""Graphs belonging to this organization."""
|
|
graphs(includeDeleted: Boolean): [Graph!]!
|
|
"""Globally unique identifier, which isn't guaranteed stable (can be changed by administrators)."""
|
|
id: ID!
|
|
"""Name of the organization, which can change over time and isn't unique."""
|
|
name: String!
|
|
"""Graphs belonging to this organization."""
|
|
services(includeDeleted: Boolean): [Graph!]! @deprecated(reason: "Use graphs field instead")
|
|
}
|
|
|
|
type OrganizationMutation {
|
|
"""Trigger a request for an audit export"""
|
|
requestAuditExport(actors: [ActorInput!], from: Timestamp!, graphIds: [String!], to: Timestamp!): Organization
|
|
}
|
|
|
|
"""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
|
|
SYNCHRONIZATION
|
|
SYSTEM
|
|
USER
|
|
}
|
|
|
|
union AddOperationCollectionEntriesResult = AddOperationCollectionEntriesSuccess | PermissionError | ValidationError
|
|
|
|
type AddOperationCollectionEntriesSuccess {
|
|
operationCollectionEntries: [OperationCollectionEntry!]!
|
|
}
|
|
|
|
union AddOperationCollectionEntryResult = OperationCollectionEntry | PermissionError | ValidationError
|
|
|
|
input AddOperationInput {
|
|
"""The operation's fields."""
|
|
document: OperationCollectionEntryStateInput!
|
|
"""The operation's name."""
|
|
name: String!
|
|
}
|
|
|
|
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
|
|
}
|
|
|
|
"""
|
|
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 value of the API key. **This is a secret credential!**"""
|
|
token: String!
|
|
}
|
|
|
|
type ApiKeyProvision {
|
|
apiKey: ApiKey!
|
|
created: Boolean!
|
|
}
|
|
|
|
type AuditLogExport {
|
|
"""The list of actors to filter the audit export"""
|
|
actors: [Identity!]
|
|
"""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!]
|
|
"""The starting point of audits to include in export"""
|
|
from: Timestamp!
|
|
"""The list of graphs to filter the audit export"""
|
|
graphs: [Graph!]
|
|
"""The id for the audit export"""
|
|
id: ID!
|
|
"""The user that initiated the audit export"""
|
|
requester: User
|
|
"""The status of the audit export"""
|
|
status: AuditStatus!
|
|
"""The end point of audits to include in export"""
|
|
to: Timestamp!
|
|
}
|
|
|
|
enum AuditStatus {
|
|
CANCELLED
|
|
COMPLETED
|
|
EXPIRED
|
|
FAILED
|
|
IN_PROGRESS
|
|
QUEUED
|
|
}
|
|
|
|
"""The building of a Studio variant (including supergraph composition and any contract filtering) as part of a launch."""
|
|
type Build {
|
|
"""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
|
|
}
|
|
|
|
"""A single error that occurred during the failed execution of a build."""
|
|
type BuildError {
|
|
code: String
|
|
locations: [SourceLocation!]!
|
|
message: String!
|
|
}
|
|
|
|
"""Contains the details of an executed build that failed."""
|
|
type BuildFailure {
|
|
"""A list of all errors that occurred during the failed build."""
|
|
errorMessages: [BuildError!]!
|
|
}
|
|
|
|
union BuildInput = CompositionBuildInput | FilterBuildInput
|
|
|
|
union BuildResult = BuildFailure | BuildSuccess
|
|
|
|
"""Contains the details of an executed build that succeeded."""
|
|
type BuildSuccess {
|
|
"""Contains the supergraph and API schemas created by composition."""
|
|
coreSchema: CoreSchema!
|
|
}
|
|
|
|
"""A single change that was made to a definition in a schema."""
|
|
type Change {
|
|
"""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
|
|
}
|
|
|
|
"""
|
|
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
|
|
"""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
|
|
}
|
|
|
|
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
|
|
}
|
|
|
|
"""Filter options available when listing checks."""
|
|
input CheckFilterInput {
|
|
authors: [String!]
|
|
branches: [String!]
|
|
subgraphs: [String!]
|
|
status: CheckFilterInputStatusOption
|
|
variants: [String!]
|
|
}
|
|
|
|
"""Options for filtering CheckWorkflows by status"""
|
|
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: CompositionCheckResult!
|
|
"""Overall result of the check. This will be null if composition validation was unsuccessful."""
|
|
checkSchemaResult: CheckSchemaResult
|
|
"""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
|
|
|
|
"""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!
|
|
graphRef: ID @deprecated(reason: "This field is not required to be sent anymore")
|
|
"""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 by Apollo Sandbox."""
|
|
isSandbox: Boolean!
|
|
proposedSchemaDocument: String
|
|
}
|
|
|
|
"""The result of running schema checks on a graph variant."""
|
|
type CheckSchemaResult {
|
|
"""The schema diff and affected operations generated by the schema check."""
|
|
diffToPrevious: SchemaDiff!
|
|
"""The URL to view the schema diff in Studio."""
|
|
targetUrl: String
|
|
}
|
|
|
|
type CheckWorkflow {
|
|
"""
|
|
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 timestamp when the check workflow completed."""
|
|
completedAt: Timestamp
|
|
id: ID!
|
|
"""The name of the implementing service that was responsible for triggering the validation."""
|
|
implementingServiceName: String
|
|
"""The timestamp when the check workflow started."""
|
|
startedAt: Timestamp
|
|
"""Overall status of the workflow, based on the underlying task statuses."""
|
|
status: CheckWorkflowStatus!
|
|
"""The set of check tasks associated with this workflow, e.g. composition, operations, etc."""
|
|
tasks: [CheckWorkflowTask!]!
|
|
"""Contextual parameters supplied by the runtime environment where the check was run."""
|
|
gitContext: GitContext
|
|
createdAt: Timestamp!
|
|
}
|
|
|
|
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
|
|
}
|
|
|
|
"""Filter options to exclude by client reference ID, client name, and client version."""
|
|
input ClientInfoFilter {
|
|
name: String!
|
|
"""Ignored"""
|
|
referenceID: ID
|
|
version: String
|
|
}
|
|
|
|
"""The result of supergraph composition that Studio performed in response to an attempted deletion of a subgraph."""
|
|
type SubgraphRemovalResult {
|
|
"""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!
|
|
}
|
|
|
|
"""The result of supergraph composition that Studio performed in response to an attempted publish of a subgraph."""
|
|
type SubgraphPublicationResult {
|
|
"""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!
|
|
"""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
|
|
}
|
|
|
|
type CompositionBuildInput {
|
|
subgraphs: [Subgraph!]!
|
|
version: String
|
|
}
|
|
|
|
type CompositionCheckTask implements CheckWorkflowTask {
|
|
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!
|
|
id: ID!
|
|
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 {
|
|
"""The resulting API schema's SHA256 hash, represented as a hexadecimal string."""
|
|
schemaHash: String!
|
|
}
|
|
|
|
"""The result of supergraph composition that Studio performed."""
|
|
type CompositionPublishResult 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!]!
|
|
"""The supergraph SDL generated by composition."""
|
|
supergraphSdl: GraphQLDocument
|
|
}
|
|
|
|
"""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
|
|
}
|
|
|
|
"""The result of composition validation run by Apollo Studio during a subgraph check."""
|
|
type CompositionCheckResult 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!]!
|
|
"""The supergraph schema document generated by composition."""
|
|
supergraphSdl: GraphQLDocument
|
|
}
|
|
|
|
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
|
|
}
|
|
|
|
"""Contains the supergraph and API schemas generated by composition."""
|
|
type CoreSchema {
|
|
"""The composed API schema document."""
|
|
apiDocument: GraphQLDocument!
|
|
"""The composed supergraph schema document."""
|
|
coreDocument: GraphQLDocument!
|
|
"""The supergraph schema document's SHA256 hash, represented as a hexadecimal string."""
|
|
coreHash: String!
|
|
}
|
|
|
|
union CreateOperationCollectionResult = OperationCollection | PermissionError | ValidationError
|
|
|
|
"""
|
|
Implement the DateTime<Utc> scalar
|
|
|
|
The input/output is a string in RFC3339 format.
|
|
"""
|
|
scalar DateTime @specifiedBy(url: "https://datatracker.ietf.org/doc/html/rfc3339")
|
|
|
|
union DeleteOperationCollectionResult = PermissionError
|
|
|
|
"""The result of attempting to delete a graph variant."""
|
|
type GraphVariantDeletionResult {
|
|
"""Whether the variant was deleted or not."""
|
|
deleted: Boolean!
|
|
}
|
|
|
|
"""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!
|
|
}
|
|
|
|
interface Error {
|
|
message: String!
|
|
}
|
|
|
|
"""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 GraphVariantSubgraph {
|
|
"""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: SubgraphSchema!
|
|
"""The timestamp when the subgraph was created."""
|
|
createdAt: Timestamp!
|
|
"""The timestamp when the subgraph was most recently updated."""
|
|
updatedAt: Timestamp!
|
|
}
|
|
|
|
"""Container for a list of subgraphs composing a supergraph."""
|
|
type GraphVariantSubgraphs {
|
|
"""The list of underlying subgraphs."""
|
|
services: [GraphVariantSubgraph!]!
|
|
}
|
|
|
|
"""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!
|
|
}
|
|
|
|
"""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 FilterCheckTask implements CheckWorkflowTask {
|
|
completedAt: Timestamp
|
|
createdAt: Timestamp!
|
|
id: ID!
|
|
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!]!
|
|
"""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!]!
|
|
}
|
|
|
|
type GitContext {
|
|
commit: ID
|
|
}
|
|
|
|
"""Input type to provide when specifying the Git context for a run of schema checks."""
|
|
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
|
|
}
|
|
|
|
"""
|
|
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 permission level assigned to the API key upon creation."""
|
|
role: UserPermission!
|
|
"""The value of the API key. **This is a secret credential!**"""
|
|
token: String!
|
|
}
|
|
|
|
"""A union of all containers that can comprise the components of a Studio graph"""
|
|
union GraphImplementors = GraphVariantSubgraphs
|
|
|
|
"""A GraphQL document, such as the definition of an operation or schema."""
|
|
scalar GraphQLDocument
|
|
|
|
"""A graph variant"""
|
|
type GraphVariant {
|
|
"""The variant's global identifier in the form `graphID@variant`."""
|
|
id: ID!
|
|
router: Router
|
|
"""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
|
|
"""The graph that this variant belongs to."""
|
|
graph: Graph!
|
|
"""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
|
|
"""The variant's name (e.g., `staging`)."""
|
|
name: String!
|
|
"""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
|
|
"""A list of the saved [operation collections](https://www.apollographql.com/docs/studio/explorer/operation-collections/) associated with this variant."""
|
|
operationCollections: [OperationCollection!]!
|
|
"""The URL of the variant's GraphQL endpoint for query and mutation operations. For subscription operations, use `subscriptionUrl`."""
|
|
url: String
|
|
"""The URL of the variant's GraphQL endpoint for subscription operations."""
|
|
subscriptionUrl: String
|
|
"""The details of the variant's most recent publication."""
|
|
latestPublication: SchemaPublication
|
|
"""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): [GraphVariantSubgraph!]
|
|
"""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!): GraphVariantSubgraph
|
|
}
|
|
|
|
"""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 {
|
|
"""
|
|
_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.
|
|
"""
|
|
submitCheckSchemaAsync(input: CheckSchemaAsyncInput!): 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.
|
|
"""
|
|
submitSubgraphCheckAsync(input: SubgraphCheckAsyncInput!): CheckRequestResult!
|
|
"""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
|
|
"""Delete the variant."""
|
|
delete: GraphVariantDeletionResult!
|
|
}
|
|
|
|
"""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 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 download schemas associated to this variant."""
|
|
canQuerySchemas: Boolean!
|
|
"""Whether the currently authenticated user is permitted to update the README for this variant."""
|
|
canUpdateVariantReadme: Boolean!
|
|
canCreateCollectionInVariant: Boolean!
|
|
canShareCollectionInVariant: Boolean!
|
|
}
|
|
|
|
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
|
|
}
|
|
|
|
"""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!
|
|
}
|
|
|
|
type InternalIdentity implements Identity {
|
|
accounts: [Organization!]!
|
|
asActor: Actor!
|
|
email: String
|
|
id: ID!
|
|
name: String!
|
|
}
|
|
|
|
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
|
|
}
|
|
|
|
"""__EnumValue introspection type"""
|
|
input IntrospectionEnumValueInput {
|
|
name: String!
|
|
description: String
|
|
isDeprecated: Boolean!
|
|
deprecationReason: String
|
|
}
|
|
|
|
"""__Field introspection type"""
|
|
input IntrospectionFieldInput {
|
|
name: String!
|
|
description: String
|
|
args: [IntrospectionInputValueInput!]!
|
|
type: IntrospectionTypeInput!
|
|
isDeprecated: Boolean!
|
|
deprecationReason: String
|
|
}
|
|
|
|
"""__Value introspection type"""
|
|
input IntrospectionInputValueInput {
|
|
name: String!
|
|
description: String
|
|
type: IntrospectionTypeInput!
|
|
defaultValue: String
|
|
isDeprecated: Boolean
|
|
deprecationReason: String
|
|
}
|
|
|
|
"""__Schema introspection type"""
|
|
input IntrospectionSchemaInput {
|
|
types: [IntrospectionTypeInput!]
|
|
queryType: IntrospectionTypeRefInput!
|
|
mutationType: IntrospectionTypeRefInput
|
|
subscriptionType: IntrospectionTypeRefInput
|
|
directives: [IntrospectionDirectiveInput!]!
|
|
description: String
|
|
}
|
|
|
|
"""__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!
|
|
}
|
|
|
|
"""This object is returned when a request to fetch a Studio graph variant provides an invalid graph ref."""
|
|
type InvalidRefFormat implements Error {
|
|
message: String!
|
|
}
|
|
|
|
"""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!
|
|
order: OrderOrError!
|
|
"""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
|
|
"""A specific publication of a graph variant pertaining to this launch."""
|
|
publication: SchemaPublication
|
|
"""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
|
|
"""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
|
|
}
|
|
|
|
"""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 checks step of a launch."""
|
|
type LaunchSequenceCheckStep {
|
|
"""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 | LaunchSequenceCheckStep | 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
|
|
}
|
|
|
|
enum LogLevel {
|
|
WARN
|
|
INFO
|
|
ERROR
|
|
DEBUG
|
|
}
|
|
|
|
type LogMessage {
|
|
"""Timestamp in UTC"""
|
|
timestamp: DateTime!
|
|
"""Log message contents"""
|
|
message: String!
|
|
"""Log level"""
|
|
level: LogLevel!
|
|
}
|
|
|
|
type Mutation {
|
|
"""Provides access to mutation fields for modifying a Studio graph with the provided ID."""
|
|
graph(id: ID!): GraphMutation
|
|
"""
|
|
Provides access to mutation fields for modifying an Apollo user with the
|
|
provided ID.
|
|
"""
|
|
user(id: ID!): UserMutation
|
|
"""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."""
|
|
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
|
|
}
|
|
|
|
"""
|
|
ISO 8601 combined date and time without timezone.
|
|
|
|
# Examples
|
|
|
|
* `2015-07-01T08:59:60.123`,
|
|
"""
|
|
scalar NaiveDateTime
|
|
|
|
type NamedIntrospectionArg {
|
|
name: String
|
|
description: 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
|
|
}
|
|
|
|
"""
|
|
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
|
|
}
|
|
|
|
"""An error that occurs when a requested object is not found."""
|
|
type NotFoundError implements Error {
|
|
"""The error message."""
|
|
message: String!
|
|
}
|
|
|
|
"""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
|
|
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!
|
|
}
|
|
|
|
"""A saved operation entry within an Operation Collection."""
|
|
type OperationCollectionEntry {
|
|
"""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 {
|
|
"""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!
|
|
"""Headers for the entry's GraphQL operation."""
|
|
headers: [OperationHeader!]
|
|
"""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 variables."""
|
|
variables: String
|
|
}
|
|
|
|
"""Provides fields for modifying an [operation collection](https://www.apollographql.com/docs/studio/explorer/operation-collections/)."""
|
|
type OperationCollectionMutation {
|
|
"""Adds an operation to this collection."""
|
|
addOperation(name: String!, operationInput: OperationCollectionEntryStateInput!): AddOperationCollectionEntryResult
|
|
"""Adds operations to this collection."""
|
|
addOperations(operations: [AddOperationInput!]!): AddOperationCollectionEntriesResult
|
|
"""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
|
|
operation(id: ID!): OperationCollectionEntryMutationResult
|
|
"""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
|
|
|
|
"""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!
|
|
}
|
|
|
|
"""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 OperationsCheckResult {
|
|
id: ID!
|
|
"""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!
|
|
"""Operations affected by all changes in diff"""
|
|
affectedQueries: [AffectedQuery!]
|
|
"""Number of affected query operations that are neither marked as SAFE or IGNORED"""
|
|
numberOfAffectedOperations: Int!
|
|
createdAt: Timestamp!
|
|
}
|
|
|
|
type OperationsCheckTask implements CheckWorkflowTask {
|
|
completedAt: Timestamp
|
|
createdAt: Timestamp!
|
|
id: ID!
|
|
status: CheckWorkflowTaskStatus!
|
|
targetURL: String
|
|
workflow: CheckWorkflow!
|
|
"""
|
|
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
|
|
}
|
|
|
|
type Order {
|
|
id: ID!
|
|
orderType: OrderType!
|
|
status: OrderStatus!
|
|
reason: String
|
|
logs(first: Int, offset: Int): [LogMessage!]!
|
|
router: Router!
|
|
}
|
|
|
|
union OrderOrError = Order
|
|
|
|
enum OrderStatus {
|
|
PENDING
|
|
COMPLETED
|
|
ROLLING_BACK
|
|
ERRORED
|
|
SUPERSEDED
|
|
}
|
|
|
|
enum OrderType {
|
|
CREATE_ROUTER
|
|
DESTROY_ROUTER
|
|
UPDATE_ROUTER
|
|
}
|
|
|
|
"""The schema for a single published subgraph in Studio."""
|
|
type SubgraphSchema {
|
|
"""The subgraph schema document as SDL."""
|
|
sdl: String!
|
|
}
|
|
|
|
"""
|
|
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 {
|
|
"""
|
|
Contents of the partial schema in SDL syntax, but may reference types
|
|
that aren't defined in this document
|
|
"""
|
|
sdl: String
|
|
"""
|
|
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
|
|
}
|
|
|
|
"""An error that occurs when the current user doesn't have sufficient permissions to perform an action."""
|
|
type PermissionError implements Error {
|
|
"""The error message."""
|
|
message: String!
|
|
}
|
|
|
|
"""An error related to an organization's Apollo Studio plan."""
|
|
type PlanError {
|
|
"""The error message."""
|
|
message: String!
|
|
}
|
|
|
|
type Query {
|
|
"""Returns the root URL of the Apollo Studio frontend."""
|
|
frontendUrlRoot: String!
|
|
"""Returns details of the graph with the provided ID."""
|
|
graph(id: ID!): Graph
|
|
"""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!): Organization
|
|
"""Returns details of the Apollo user with the provided ID."""
|
|
user(id: ID!): User
|
|
"""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
|
|
"""Returns the [operation collection](https://www.apollographql.com/docs/studio/explorer/operation-collections/) for the provided ID."""
|
|
operationCollection(id: ID!): OperationCollectionResult!
|
|
}
|
|
|
|
"""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 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
|
|
}
|
|
|
|
union RemoveOperationCollectionEntryResult = OperationCollection | PermissionError
|
|
|
|
type Router {
|
|
"""
|
|
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!
|
|
"""Current version of the Cloud Router"""
|
|
routerVersion: RouterVersion!
|
|
"""
|
|
URL where the Cloud Router can be found
|
|
|
|
This will be null if the Cloud Router is in a deleted status
|
|
"""
|
|
routerUrl: String
|
|
"""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!]!
|
|
}
|
|
|
|
enum RouterStatus {
|
|
CREATING
|
|
UPDATING
|
|
DELETING
|
|
ROLLING_BACK
|
|
RUNNING
|
|
DELETED
|
|
}
|
|
|
|
type RouterVersion {
|
|
version: String!
|
|
core: String!
|
|
build: String!
|
|
status: Status!
|
|
configVersion: String!
|
|
configSchema: 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 GraphQL schema document."""
|
|
document: GraphQLDocument!
|
|
}
|
|
|
|
"""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
|
|
}
|
|
|
|
"""The result of computing the difference between two schemas, usually as part of schema checks."""
|
|
type SchemaDiff {
|
|
"""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!]
|
|
"""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!
|
|
}
|
|
|
|
"""Contains details for an individual publication of an individual graph variant."""
|
|
type SchemaPublication {
|
|
"""
|
|
The variant that was published to."
|
|
"""
|
|
variant: GraphVariant!
|
|
"""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
|
|
"""The timestamp when the variant was published to."""
|
|
publishedAt: Timestamp!
|
|
"""A schema diff comparing against the schema from the most recent previous successful publication."""
|
|
diffToPrevious: SchemaDiff
|
|
}
|
|
|
|
type Secret {
|
|
createdAt: DateTime!
|
|
name: String!
|
|
hash: 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
|
|
}
|
|
|
|
"""
|
|
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 Graph implements Identity {
|
|
"""The organization that this graph belongs to."""
|
|
account: Organization
|
|
"""A list of the graph API keys that are active for this graph."""
|
|
apiKeys: [GraphApiKey!]
|
|
"""Provides a view of the graph as an `Actor` type."""
|
|
asActor: Actor!
|
|
"""Get a check workflow for this graph by its ID"""
|
|
checkWorkflow(id: ID!): CheckWorkflow
|
|
"""The graph's globally unique identifier."""
|
|
id: ID!
|
|
"""Permissions of the current user in this graph."""
|
|
myRole: UserPermission
|
|
name: String!
|
|
"""Describes the permissions that the active user has for this graph."""
|
|
roles: GraphRoles
|
|
"""The graph's name."""
|
|
title: String!
|
|
"""
|
|
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
|
|
"""A list of the variants for this graph."""
|
|
variants: [GraphVariant!]!
|
|
"""Get a GraphQL document by hash"""
|
|
document(hash: SHA256): GraphQLDocument
|
|
"""Get check workflows for this graph ordered by creation time, most recent first."""
|
|
checkWorkflows(limit: Int! = 100, filter: CheckFilterInput): [CheckWorkflow!]!
|
|
}
|
|
|
|
"""Provides access to mutation fields for managing Studio graphs and subgraphs."""
|
|
type GraphMutation {
|
|
"""Generates a new graph API key for this graph with the specified permission level."""
|
|
newKey(keyName: String, role: UserPermission! = GRAPH_ADMIN): GraphApiKey!
|
|
"""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
|
|
"""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!
|
|
"""Make changes to a graph variant."""
|
|
variant(name: String!): GraphVariantMutation
|
|
"""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): SchemaPublicationResult
|
|
"""
|
|
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
|
|
"""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!
|
|
"""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): SubgraphPublicationResult
|
|
"""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
|
|
): SubgraphRemovalResult!
|
|
"""
|
|
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
|
|
"""If this check is triggered for an sdl fetched using introspection, this is the endpoint where that schema was being served."""
|
|
introspectionEndpoint: String
|
|
): CheckPartialSchemaResult!
|
|
}
|
|
|
|
"""Individual permissions for the current user when interacting with a particular Studio graph."""
|
|
type GraphRoles {
|
|
"""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 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 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 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!
|
|
"""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 view which subgraphs the graph is composed of."""
|
|
canQueryImplementingServices: Boolean!
|
|
"""Whether the currently authenticated user is permitted to download schemas owned by this graph."""
|
|
canQuerySchemas: Boolean!
|
|
"""Whether the currently authenticated user is permitted to register operations (i.e. `apollo client:push`) for this graph."""
|
|
canRegisterOperations: Boolean!
|
|
"""Whether the currently authenticated user is permitted to make updates to the check configuration for this graph."""
|
|
canWriteCheckConfiguration: Boolean!
|
|
}
|
|
|
|
"""A SHA-256 hash, represented as a lowercase hexadecimal string."""
|
|
scalar SHA256
|
|
|
|
"""A location in a source code file."""
|
|
type SourceLocation {
|
|
"""Column number."""
|
|
column: Int!
|
|
"""Line number."""
|
|
line: Int!
|
|
}
|
|
|
|
enum Status {
|
|
STABLE
|
|
NEXT
|
|
DEPRECATED
|
|
}
|
|
|
|
"""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 subgraph's routing URL, provided to gateways that use managed federation."""
|
|
routingURL: 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 by Apollo Sandbox."""
|
|
isSandbox: Boolean!
|
|
"""The proposed subgraph schema to perform checks with."""
|
|
proposedSchema: GraphQLDocument!
|
|
"""The name of the subgraph to check schema changes for."""
|
|
subgraphName: String!
|
|
}
|
|
|
|
"""ISO 8601, extended format with nanoseconds, Zulu (or "[+-]seconds" as a string or number relative to now)"""
|
|
scalar Timestamp
|
|
|
|
"""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!
|
|
}
|
|
|
|
"""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!
|
|
}
|
|
|
|
union UpdateOperationCollectionEntryResult = OperationCollectionEntry | PermissionError | ValidationError
|
|
|
|
union UpdateOperationCollectionResult = OperationCollection | PermissionError | ValidationError
|
|
|
|
"""Describes the result of publishing a schema to a graph variant."""
|
|
type SchemaPublicationResult {
|
|
"""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 the publish operation succeeded, this contains its details. Otherwise, this is null."""
|
|
publication: SchemaPublication
|
|
}
|
|
|
|
"""A registered Apollo Studio user."""
|
|
type User implements Identity {
|
|
"""Returns a list of all active user API keys for the user."""
|
|
apiKeys(includeCookies: Boolean = false): [UserApiKey!]!
|
|
"""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!
|
|
"""A list of the user's memberships in Apollo Studio organizations."""
|
|
memberships: [UserMembership!]!
|
|
"""The user's first and last name."""
|
|
name: String!
|
|
}
|
|
|
|
"""
|
|
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 value of the API key. **This is a secret credential!**"""
|
|
token: String!
|
|
}
|
|
|
|
"""A single user's membership in a single Apollo Studio organization."""
|
|
type UserMembership {
|
|
"""The organization that the user belongs to."""
|
|
account: Organization!
|
|
"""The timestamp when the user was added to the organization."""
|
|
createdAt: Timestamp!
|
|
"""The user's permission level within the organization."""
|
|
permission: UserPermission!
|
|
"""The user that belongs to the organization."""
|
|
user: User!
|
|
}
|
|
|
|
type UserMutation {
|
|
"""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
|
|
"""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
|
|
}
|
|
|
|
enum UserPermission {
|
|
BILLING_MANAGER
|
|
CONSUMER
|
|
CONTRIBUTOR
|
|
DOCUMENTER
|
|
GRAPH_ADMIN
|
|
LEGACY_GRAPH_KEY
|
|
OBSERVER
|
|
ORG_ADMIN
|
|
}
|
|
|
|
"""An error that occurs when an operation contains invalid user input."""
|
|
type ValidationError implements Error {
|
|
"""The error's details."""
|
|
message: String!
|
|
}
|
|
|
|
"""Always null"""
|
|
scalar Void
|