This repository has been archived by the owner on Feb 3, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathgraphos-schema.graphql
1969 lines (1789 loc) · 74.6 KB
/
graphos-schema.graphql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
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
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
"""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
"""Overall status of the workflow, based on the underlying task statuses."""
status: CheckWorkflowStatus!
createdAt: Timestamp!
completedAt: Timestamp
}
enum CheckWorkflowStatus {
PENDING
PASSED
FAILED
}
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!]!
"""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
"""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
}