From dc1c5966757aae0c26f6507b0de6beea012ceac4 Mon Sep 17 00:00:00 2001 From: Joe Coleman Date: Fri, 7 Aug 2026 16:33:08 +0100 Subject: [PATCH 1/2] Refresh schema --- internal/graphql/generated.go | 557 +- schema.graphql | 18831 +++++++++++++++++++++++--------- 2 files changed, 14018 insertions(+), 5370 deletions(-) diff --git a/internal/graphql/generated.go b/internal/graphql/generated.go index 6a0a3ba7..c5717462 100644 --- a/internal/graphql/generated.go +++ b/internal/graphql/generated.go @@ -91,7 +91,11 @@ func (v *FindClustersOrganization) GetClusters() *FindClustersOrganizationCluste } // FindClustersOrganizationClustersClusterConnection includes the requested fields of the GraphQL type ClusterConnection. +// The GraphQL type's documentation follows. +// +// The connection type for Cluster. type FindClustersOrganizationClustersClusterConnection struct { + // A list of edges. Edges []*FindClustersOrganizationClustersClusterConnectionEdgesClusterEdge `json:"edges"` PageInfo *FindClustersOrganizationClustersClusterConnectionPageInfo `json:"pageInfo"` } @@ -107,7 +111,11 @@ func (v *FindClustersOrganizationClustersClusterConnection) GetPageInfo() *FindC } // FindClustersOrganizationClustersClusterConnectionEdgesClusterEdge includes the requested fields of the GraphQL type ClusterEdge. +// The GraphQL type's documentation follows. +// +// An edge in a connection. type FindClustersOrganizationClustersClusterConnectionEdgesClusterEdge struct { + // The item at the end of the edge. Node *FindClustersOrganizationClustersClusterConnectionEdgesClusterEdgeNodeCluster `json:"node"` } @@ -181,18 +189,25 @@ func (v *FindClustersResponse) GetOrganization() *FindClustersOrganization { ret // FindQueuesForClusterNodeAuthorizationGoogle // FindQueuesForClusterNodeAuthorizationSAML // FindQueuesForClusterNodeBuild -// FindQueuesForClusterNodeChangelog // FindQueuesForClusterNodeCluster // FindQueuesForClusterNodeClusterQueue // FindQueuesForClusterNodeClusterQueueToken // FindQueuesForClusterNodeClusterToken +// FindQueuesForClusterNodeCompositeRegistryUpstream // FindQueuesForClusterNodeEmail // FindQueuesForClusterNodeJobEventAssigned // FindQueuesForClusterNodeJobEventBuildStepUploadCreated // FindQueuesForClusterNodeJobEventCanceled +// FindQueuesForClusterNodeJobEventChanged // FindQueuesForClusterNodeJobEventFinished // FindQueuesForClusterNodeJobEventGeneric +// FindQueuesForClusterNodeJobEventPromisedExitStatus +// FindQueuesForClusterNodeJobEventReprioritized // FindQueuesForClusterNodeJobEventRetried +// FindQueuesForClusterNodeJobEventRetryFailed +// FindQueuesForClusterNodeJobEventStackError +// FindQueuesForClusterNodeJobEventStackFinished +// FindQueuesForClusterNodeJobEventStackNotification // FindQueuesForClusterNodeJobEventTimedOut // FindQueuesForClusterNodeJobTypeBlock // FindQueuesForClusterNodeJobTypeCommand @@ -203,10 +218,16 @@ func (v *FindClustersResponse) GetOrganization() *FindClustersOrganization { ret // FindQueuesForClusterNodeOrganizationBanner // FindQueuesForClusterNodeOrganizationInvitation // FindQueuesForClusterNodeOrganizationMember +// FindQueuesForClusterNodeOrganizationRepositoryProviderCursorOrigin +// FindQueuesForClusterNodeOrganizationRepositoryProviderGitHub +// FindQueuesForClusterNodeOrganizationRepositoryProviderGitHubEnterpriseServer // FindQueuesForClusterNodePipeline // FindQueuesForClusterNodePipelineMetric // FindQueuesForClusterNodePipelineSchedule // FindQueuesForClusterNodePipelineTemplate +// FindQueuesForClusterNodeRegistry +// FindQueuesForClusterNodeRegistryToken +// FindQueuesForClusterNodeRule // FindQueuesForClusterNodeSSOProviderGitHubApp // FindQueuesForClusterNodeSSOProviderGoogleGSuite // FindQueuesForClusterNodeSSOProviderSAML @@ -215,6 +236,7 @@ func (v *FindClustersResponse) GetOrganization() *FindClustersOrganization { ret // FindQueuesForClusterNodeTeam // FindQueuesForClusterNodeTeamMember // FindQueuesForClusterNodeTeamPipeline +// FindQueuesForClusterNodeTeamRegistry // FindQueuesForClusterNodeTeamSuite // FindQueuesForClusterNodeUser // FindQueuesForClusterNodeViewer @@ -251,25 +273,40 @@ func (v *FindQueuesForClusterNodeAuthorizationGoogle) implementsGraphQLInterface func (v *FindQueuesForClusterNodeAuthorizationSAML) implementsGraphQLInterfaceFindQueuesForClusterNode() { } func (v *FindQueuesForClusterNodeBuild) implementsGraphQLInterfaceFindQueuesForClusterNode() {} -func (v *FindQueuesForClusterNodeChangelog) implementsGraphQLInterfaceFindQueuesForClusterNode() {} func (v *FindQueuesForClusterNodeCluster) implementsGraphQLInterfaceFindQueuesForClusterNode() {} func (v *FindQueuesForClusterNodeClusterQueue) implementsGraphQLInterfaceFindQueuesForClusterNode() {} func (v *FindQueuesForClusterNodeClusterQueueToken) implementsGraphQLInterfaceFindQueuesForClusterNode() { } func (v *FindQueuesForClusterNodeClusterToken) implementsGraphQLInterfaceFindQueuesForClusterNode() {} -func (v *FindQueuesForClusterNodeEmail) implementsGraphQLInterfaceFindQueuesForClusterNode() {} +func (v *FindQueuesForClusterNodeCompositeRegistryUpstream) implementsGraphQLInterfaceFindQueuesForClusterNode() { +} +func (v *FindQueuesForClusterNodeEmail) implementsGraphQLInterfaceFindQueuesForClusterNode() {} func (v *FindQueuesForClusterNodeJobEventAssigned) implementsGraphQLInterfaceFindQueuesForClusterNode() { } func (v *FindQueuesForClusterNodeJobEventBuildStepUploadCreated) implementsGraphQLInterfaceFindQueuesForClusterNode() { } func (v *FindQueuesForClusterNodeJobEventCanceled) implementsGraphQLInterfaceFindQueuesForClusterNode() { } +func (v *FindQueuesForClusterNodeJobEventChanged) implementsGraphQLInterfaceFindQueuesForClusterNode() { +} func (v *FindQueuesForClusterNodeJobEventFinished) implementsGraphQLInterfaceFindQueuesForClusterNode() { } func (v *FindQueuesForClusterNodeJobEventGeneric) implementsGraphQLInterfaceFindQueuesForClusterNode() { } +func (v *FindQueuesForClusterNodeJobEventPromisedExitStatus) implementsGraphQLInterfaceFindQueuesForClusterNode() { +} +func (v *FindQueuesForClusterNodeJobEventReprioritized) implementsGraphQLInterfaceFindQueuesForClusterNode() { +} func (v *FindQueuesForClusterNodeJobEventRetried) implementsGraphQLInterfaceFindQueuesForClusterNode() { } +func (v *FindQueuesForClusterNodeJobEventRetryFailed) implementsGraphQLInterfaceFindQueuesForClusterNode() { +} +func (v *FindQueuesForClusterNodeJobEventStackError) implementsGraphQLInterfaceFindQueuesForClusterNode() { +} +func (v *FindQueuesForClusterNodeJobEventStackFinished) implementsGraphQLInterfaceFindQueuesForClusterNode() { +} +func (v *FindQueuesForClusterNodeJobEventStackNotification) implementsGraphQLInterfaceFindQueuesForClusterNode() { +} func (v *FindQueuesForClusterNodeJobEventTimedOut) implementsGraphQLInterfaceFindQueuesForClusterNode() { } func (v *FindQueuesForClusterNodeJobTypeBlock) implementsGraphQLInterfaceFindQueuesForClusterNode() {} @@ -287,6 +324,12 @@ func (v *FindQueuesForClusterNodeOrganizationInvitation) implementsGraphQLInterf } func (v *FindQueuesForClusterNodeOrganizationMember) implementsGraphQLInterfaceFindQueuesForClusterNode() { } +func (v *FindQueuesForClusterNodeOrganizationRepositoryProviderCursorOrigin) implementsGraphQLInterfaceFindQueuesForClusterNode() { +} +func (v *FindQueuesForClusterNodeOrganizationRepositoryProviderGitHub) implementsGraphQLInterfaceFindQueuesForClusterNode() { +} +func (v *FindQueuesForClusterNodeOrganizationRepositoryProviderGitHubEnterpriseServer) implementsGraphQLInterfaceFindQueuesForClusterNode() { +} func (v *FindQueuesForClusterNodePipeline) implementsGraphQLInterfaceFindQueuesForClusterNode() {} func (v *FindQueuesForClusterNodePipelineMetric) implementsGraphQLInterfaceFindQueuesForClusterNode() { } @@ -294,6 +337,10 @@ func (v *FindQueuesForClusterNodePipelineSchedule) implementsGraphQLInterfaceFin } func (v *FindQueuesForClusterNodePipelineTemplate) implementsGraphQLInterfaceFindQueuesForClusterNode() { } +func (v *FindQueuesForClusterNodeRegistry) implementsGraphQLInterfaceFindQueuesForClusterNode() {} +func (v *FindQueuesForClusterNodeRegistryToken) implementsGraphQLInterfaceFindQueuesForClusterNode() { +} +func (v *FindQueuesForClusterNodeRule) implementsGraphQLInterfaceFindQueuesForClusterNode() {} func (v *FindQueuesForClusterNodeSSOProviderGitHubApp) implementsGraphQLInterfaceFindQueuesForClusterNode() { } func (v *FindQueuesForClusterNodeSSOProviderGoogleGSuite) implementsGraphQLInterfaceFindQueuesForClusterNode() { @@ -305,6 +352,7 @@ func (v *FindQueuesForClusterNodeSuite) implementsGraphQLInterfaceFindQueuesForC func (v *FindQueuesForClusterNodeTeam) implementsGraphQLInterfaceFindQueuesForClusterNode() {} func (v *FindQueuesForClusterNodeTeamMember) implementsGraphQLInterfaceFindQueuesForClusterNode() {} func (v *FindQueuesForClusterNodeTeamPipeline) implementsGraphQLInterfaceFindQueuesForClusterNode() {} +func (v *FindQueuesForClusterNodeTeamRegistry) implementsGraphQLInterfaceFindQueuesForClusterNode() {} func (v *FindQueuesForClusterNodeTeamSuite) implementsGraphQLInterfaceFindQueuesForClusterNode() {} func (v *FindQueuesForClusterNodeUser) implementsGraphQLInterfaceFindQueuesForClusterNode() {} func (v *FindQueuesForClusterNodeViewer) implementsGraphQLInterfaceFindQueuesForClusterNode() {} @@ -368,9 +416,6 @@ func __unmarshalFindQueuesForClusterNode(b []byte, v *FindQueuesForClusterNode) case "Build": *v = new(FindQueuesForClusterNodeBuild) return json.Unmarshal(b, *v) - case "Changelog": - *v = new(FindQueuesForClusterNodeChangelog) - return json.Unmarshal(b, *v) case "Cluster": *v = new(FindQueuesForClusterNodeCluster) return json.Unmarshal(b, *v) @@ -383,6 +428,9 @@ func __unmarshalFindQueuesForClusterNode(b []byte, v *FindQueuesForClusterNode) case "ClusterToken": *v = new(FindQueuesForClusterNodeClusterToken) return json.Unmarshal(b, *v) + case "CompositeRegistryUpstream": + *v = new(FindQueuesForClusterNodeCompositeRegistryUpstream) + return json.Unmarshal(b, *v) case "Email": *v = new(FindQueuesForClusterNodeEmail) return json.Unmarshal(b, *v) @@ -395,15 +443,36 @@ func __unmarshalFindQueuesForClusterNode(b []byte, v *FindQueuesForClusterNode) case "JobEventCanceled": *v = new(FindQueuesForClusterNodeJobEventCanceled) return json.Unmarshal(b, *v) + case "JobEventChanged": + *v = new(FindQueuesForClusterNodeJobEventChanged) + return json.Unmarshal(b, *v) case "JobEventFinished": *v = new(FindQueuesForClusterNodeJobEventFinished) return json.Unmarshal(b, *v) case "JobEventGeneric": *v = new(FindQueuesForClusterNodeJobEventGeneric) return json.Unmarshal(b, *v) + case "JobEventPromisedExitStatus": + *v = new(FindQueuesForClusterNodeJobEventPromisedExitStatus) + return json.Unmarshal(b, *v) + case "JobEventReprioritized": + *v = new(FindQueuesForClusterNodeJobEventReprioritized) + return json.Unmarshal(b, *v) case "JobEventRetried": *v = new(FindQueuesForClusterNodeJobEventRetried) return json.Unmarshal(b, *v) + case "JobEventRetryFailed": + *v = new(FindQueuesForClusterNodeJobEventRetryFailed) + return json.Unmarshal(b, *v) + case "JobEventStackError": + *v = new(FindQueuesForClusterNodeJobEventStackError) + return json.Unmarshal(b, *v) + case "JobEventStackFinished": + *v = new(FindQueuesForClusterNodeJobEventStackFinished) + return json.Unmarshal(b, *v) + case "JobEventStackNotification": + *v = new(FindQueuesForClusterNodeJobEventStackNotification) + return json.Unmarshal(b, *v) case "JobEventTimedOut": *v = new(FindQueuesForClusterNodeJobEventTimedOut) return json.Unmarshal(b, *v) @@ -434,6 +503,15 @@ func __unmarshalFindQueuesForClusterNode(b []byte, v *FindQueuesForClusterNode) case "OrganizationMember": *v = new(FindQueuesForClusterNodeOrganizationMember) return json.Unmarshal(b, *v) + case "OrganizationRepositoryProviderCursorOrigin": + *v = new(FindQueuesForClusterNodeOrganizationRepositoryProviderCursorOrigin) + return json.Unmarshal(b, *v) + case "OrganizationRepositoryProviderGitHub": + *v = new(FindQueuesForClusterNodeOrganizationRepositoryProviderGitHub) + return json.Unmarshal(b, *v) + case "OrganizationRepositoryProviderGitHubEnterpriseServer": + *v = new(FindQueuesForClusterNodeOrganizationRepositoryProviderGitHubEnterpriseServer) + return json.Unmarshal(b, *v) case "Pipeline": *v = new(FindQueuesForClusterNodePipeline) return json.Unmarshal(b, *v) @@ -446,6 +524,15 @@ func __unmarshalFindQueuesForClusterNode(b []byte, v *FindQueuesForClusterNode) case "PipelineTemplate": *v = new(FindQueuesForClusterNodePipelineTemplate) return json.Unmarshal(b, *v) + case "Registry": + *v = new(FindQueuesForClusterNodeRegistry) + return json.Unmarshal(b, *v) + case "RegistryToken": + *v = new(FindQueuesForClusterNodeRegistryToken) + return json.Unmarshal(b, *v) + case "Rule": + *v = new(FindQueuesForClusterNodeRule) + return json.Unmarshal(b, *v) case "SSOProviderGitHubApp": *v = new(FindQueuesForClusterNodeSSOProviderGitHubApp) return json.Unmarshal(b, *v) @@ -470,6 +557,9 @@ func __unmarshalFindQueuesForClusterNode(b []byte, v *FindQueuesForClusterNode) case "TeamPipeline": *v = new(FindQueuesForClusterNodeTeamPipeline) return json.Unmarshal(b, *v) + case "TeamRegistry": + *v = new(FindQueuesForClusterNodeTeamRegistry) + return json.Unmarshal(b, *v) case "TeamSuite": *v = new(FindQueuesForClusterNodeTeamSuite) return json.Unmarshal(b, *v) @@ -612,14 +702,6 @@ func __marshalFindQueuesForClusterNode(v *FindQueuesForClusterNode) ([]byte, err *FindQueuesForClusterNodeBuild }{typename, v} return json.Marshal(result) - case *FindQueuesForClusterNodeChangelog: - typename = "Changelog" - - result := struct { - TypeName string `json:"__typename"` - *FindQueuesForClusterNodeChangelog - }{typename, v} - return json.Marshal(result) case *FindQueuesForClusterNodeCluster: typename = "Cluster" @@ -652,6 +734,14 @@ func __marshalFindQueuesForClusterNode(v *FindQueuesForClusterNode) ([]byte, err *FindQueuesForClusterNodeClusterToken }{typename, v} return json.Marshal(result) + case *FindQueuesForClusterNodeCompositeRegistryUpstream: + typename = "CompositeRegistryUpstream" + + result := struct { + TypeName string `json:"__typename"` + *FindQueuesForClusterNodeCompositeRegistryUpstream + }{typename, v} + return json.Marshal(result) case *FindQueuesForClusterNodeEmail: typename = "Email" @@ -684,6 +774,14 @@ func __marshalFindQueuesForClusterNode(v *FindQueuesForClusterNode) ([]byte, err *FindQueuesForClusterNodeJobEventCanceled }{typename, v} return json.Marshal(result) + case *FindQueuesForClusterNodeJobEventChanged: + typename = "JobEventChanged" + + result := struct { + TypeName string `json:"__typename"` + *FindQueuesForClusterNodeJobEventChanged + }{typename, v} + return json.Marshal(result) case *FindQueuesForClusterNodeJobEventFinished: typename = "JobEventFinished" @@ -700,6 +798,22 @@ func __marshalFindQueuesForClusterNode(v *FindQueuesForClusterNode) ([]byte, err *FindQueuesForClusterNodeJobEventGeneric }{typename, v} return json.Marshal(result) + case *FindQueuesForClusterNodeJobEventPromisedExitStatus: + typename = "JobEventPromisedExitStatus" + + result := struct { + TypeName string `json:"__typename"` + *FindQueuesForClusterNodeJobEventPromisedExitStatus + }{typename, v} + return json.Marshal(result) + case *FindQueuesForClusterNodeJobEventReprioritized: + typename = "JobEventReprioritized" + + result := struct { + TypeName string `json:"__typename"` + *FindQueuesForClusterNodeJobEventReprioritized + }{typename, v} + return json.Marshal(result) case *FindQueuesForClusterNodeJobEventRetried: typename = "JobEventRetried" @@ -708,6 +822,38 @@ func __marshalFindQueuesForClusterNode(v *FindQueuesForClusterNode) ([]byte, err *FindQueuesForClusterNodeJobEventRetried }{typename, v} return json.Marshal(result) + case *FindQueuesForClusterNodeJobEventRetryFailed: + typename = "JobEventRetryFailed" + + result := struct { + TypeName string `json:"__typename"` + *FindQueuesForClusterNodeJobEventRetryFailed + }{typename, v} + return json.Marshal(result) + case *FindQueuesForClusterNodeJobEventStackError: + typename = "JobEventStackError" + + result := struct { + TypeName string `json:"__typename"` + *FindQueuesForClusterNodeJobEventStackError + }{typename, v} + return json.Marshal(result) + case *FindQueuesForClusterNodeJobEventStackFinished: + typename = "JobEventStackFinished" + + result := struct { + TypeName string `json:"__typename"` + *FindQueuesForClusterNodeJobEventStackFinished + }{typename, v} + return json.Marshal(result) + case *FindQueuesForClusterNodeJobEventStackNotification: + typename = "JobEventStackNotification" + + result := struct { + TypeName string `json:"__typename"` + *FindQueuesForClusterNodeJobEventStackNotification + }{typename, v} + return json.Marshal(result) case *FindQueuesForClusterNodeJobEventTimedOut: typename = "JobEventTimedOut" @@ -788,6 +934,30 @@ func __marshalFindQueuesForClusterNode(v *FindQueuesForClusterNode) ([]byte, err *FindQueuesForClusterNodeOrganizationMember }{typename, v} return json.Marshal(result) + case *FindQueuesForClusterNodeOrganizationRepositoryProviderCursorOrigin: + typename = "OrganizationRepositoryProviderCursorOrigin" + + result := struct { + TypeName string `json:"__typename"` + *FindQueuesForClusterNodeOrganizationRepositoryProviderCursorOrigin + }{typename, v} + return json.Marshal(result) + case *FindQueuesForClusterNodeOrganizationRepositoryProviderGitHub: + typename = "OrganizationRepositoryProviderGitHub" + + result := struct { + TypeName string `json:"__typename"` + *FindQueuesForClusterNodeOrganizationRepositoryProviderGitHub + }{typename, v} + return json.Marshal(result) + case *FindQueuesForClusterNodeOrganizationRepositoryProviderGitHubEnterpriseServer: + typename = "OrganizationRepositoryProviderGitHubEnterpriseServer" + + result := struct { + TypeName string `json:"__typename"` + *FindQueuesForClusterNodeOrganizationRepositoryProviderGitHubEnterpriseServer + }{typename, v} + return json.Marshal(result) case *FindQueuesForClusterNodePipeline: typename = "Pipeline" @@ -820,6 +990,30 @@ func __marshalFindQueuesForClusterNode(v *FindQueuesForClusterNode) ([]byte, err *FindQueuesForClusterNodePipelineTemplate }{typename, v} return json.Marshal(result) + case *FindQueuesForClusterNodeRegistry: + typename = "Registry" + + result := struct { + TypeName string `json:"__typename"` + *FindQueuesForClusterNodeRegistry + }{typename, v} + return json.Marshal(result) + case *FindQueuesForClusterNodeRegistryToken: + typename = "RegistryToken" + + result := struct { + TypeName string `json:"__typename"` + *FindQueuesForClusterNodeRegistryToken + }{typename, v} + return json.Marshal(result) + case *FindQueuesForClusterNodeRule: + typename = "Rule" + + result := struct { + TypeName string `json:"__typename"` + *FindQueuesForClusterNodeRule + }{typename, v} + return json.Marshal(result) case *FindQueuesForClusterNodeSSOProviderGitHubApp: typename = "SSOProviderGitHubApp" @@ -884,6 +1078,14 @@ func __marshalFindQueuesForClusterNode(v *FindQueuesForClusterNode) ([]byte, err *FindQueuesForClusterNodeTeamPipeline }{typename, v} return json.Marshal(result) + case *FindQueuesForClusterNodeTeamRegistry: + typename = "TeamRegistry" + + result := struct { + TypeName string `json:"__typename"` + *FindQueuesForClusterNodeTeamRegistry + }{typename, v} + return json.Marshal(result) case *FindQueuesForClusterNodeTeamSuite: typename = "TeamSuite" @@ -1083,17 +1285,6 @@ type FindQueuesForClusterNodeBuild struct { // GetTypename returns FindQueuesForClusterNodeBuild.Typename, and is useful for accessing the field via an interface. func (v *FindQueuesForClusterNodeBuild) GetTypename() *string { return v.Typename } -// FindQueuesForClusterNodeChangelog includes the requested fields of the GraphQL type Changelog. -// The GraphQL type's documentation follows. -// -// A changelog -type FindQueuesForClusterNodeChangelog struct { - Typename *string `json:"__typename"` -} - -// GetTypename returns FindQueuesForClusterNodeChangelog.Typename, and is useful for accessing the field via an interface. -func (v *FindQueuesForClusterNodeChangelog) GetTypename() *string { return v.Typename } - // FindQueuesForClusterNodeCluster includes the requested fields of the GraphQL type Cluster. type FindQueuesForClusterNodeCluster struct { Typename *string `json:"__typename"` @@ -1137,7 +1328,11 @@ type FindQueuesForClusterNodeClusterQueueToken struct { func (v *FindQueuesForClusterNodeClusterQueueToken) GetTypename() *string { return v.Typename } // FindQueuesForClusterNodeClusterQueuesClusterQueueConnection includes the requested fields of the GraphQL type ClusterQueueConnection. +// The GraphQL type's documentation follows. +// +// The connection type for ClusterQueue. type FindQueuesForClusterNodeClusterQueuesClusterQueueConnection struct { + // A list of edges. Edges []*FindQueuesForClusterNodeClusterQueuesClusterQueueConnectionEdgesClusterQueueEdge `json:"edges"` PageInfo *FindQueuesForClusterNodeClusterQueuesClusterQueueConnectionPageInfo `json:"pageInfo"` } @@ -1153,7 +1348,11 @@ func (v *FindQueuesForClusterNodeClusterQueuesClusterQueueConnection) GetPageInf } // FindQueuesForClusterNodeClusterQueuesClusterQueueConnectionEdgesClusterQueueEdge includes the requested fields of the GraphQL type ClusterQueueEdge. +// The GraphQL type's documentation follows. +// +// An edge in a connection. type FindQueuesForClusterNodeClusterQueuesClusterQueueConnectionEdgesClusterQueueEdge struct { + // The item at the end of the edge. Node *FindQueuesForClusterNodeClusterQueuesClusterQueueConnectionEdgesClusterQueueEdgeNodeClusterQueue `json:"node"` } @@ -1210,6 +1409,17 @@ type FindQueuesForClusterNodeClusterToken struct { // GetTypename returns FindQueuesForClusterNodeClusterToken.Typename, and is useful for accessing the field via an interface. func (v *FindQueuesForClusterNodeClusterToken) GetTypename() *string { return v.Typename } +// FindQueuesForClusterNodeCompositeRegistryUpstream includes the requested fields of the GraphQL type CompositeRegistryUpstream. +// The GraphQL type's documentation follows. +// +// A composite registry's upstream +type FindQueuesForClusterNodeCompositeRegistryUpstream struct { + Typename *string `json:"__typename"` +} + +// GetTypename returns FindQueuesForClusterNodeCompositeRegistryUpstream.Typename, and is useful for accessing the field via an interface. +func (v *FindQueuesForClusterNodeCompositeRegistryUpstream) GetTypename() *string { return v.Typename } + // FindQueuesForClusterNodeEmail includes the requested fields of the GraphQL type Email. // The GraphQL type's documentation follows. // @@ -1256,6 +1466,17 @@ type FindQueuesForClusterNodeJobEventCanceled struct { // GetTypename returns FindQueuesForClusterNodeJobEventCanceled.Typename, and is useful for accessing the field via an interface. func (v *FindQueuesForClusterNodeJobEventCanceled) GetTypename() *string { return v.Typename } +// FindQueuesForClusterNodeJobEventChanged includes the requested fields of the GraphQL type JobEventChanged. +// The GraphQL type's documentation follows. +// +// A job event for when a job's attributes have been updated +type FindQueuesForClusterNodeJobEventChanged struct { + Typename *string `json:"__typename"` +} + +// GetTypename returns FindQueuesForClusterNodeJobEventChanged.Typename, and is useful for accessing the field via an interface. +func (v *FindQueuesForClusterNodeJobEventChanged) GetTypename() *string { return v.Typename } + // FindQueuesForClusterNodeJobEventFinished includes the requested fields of the GraphQL type JobEventFinished. // The GraphQL type's documentation follows. // @@ -1278,6 +1499,28 @@ type FindQueuesForClusterNodeJobEventGeneric struct { // GetTypename returns FindQueuesForClusterNodeJobEventGeneric.Typename, and is useful for accessing the field via an interface. func (v *FindQueuesForClusterNodeJobEventGeneric) GetTypename() *string { return v.Typename } +// FindQueuesForClusterNodeJobEventPromisedExitStatus includes the requested fields of the GraphQL type JobEventPromisedExitStatus. +// The GraphQL type's documentation follows. +// +// A job event for when a running job has declared an early failure with a promised exit status +type FindQueuesForClusterNodeJobEventPromisedExitStatus struct { + Typename *string `json:"__typename"` +} + +// GetTypename returns FindQueuesForClusterNodeJobEventPromisedExitStatus.Typename, and is useful for accessing the field via an interface. +func (v *FindQueuesForClusterNodeJobEventPromisedExitStatus) GetTypename() *string { return v.Typename } + +// FindQueuesForClusterNodeJobEventReprioritized includes the requested fields of the GraphQL type JobEventReprioritized. +// The GraphQL type's documentation follows. +// +// A job event for when a job's priority has been changed +type FindQueuesForClusterNodeJobEventReprioritized struct { + Typename *string `json:"__typename"` +} + +// GetTypename returns FindQueuesForClusterNodeJobEventReprioritized.Typename, and is useful for accessing the field via an interface. +func (v *FindQueuesForClusterNodeJobEventReprioritized) GetTypename() *string { return v.Typename } + // FindQueuesForClusterNodeJobEventRetried includes the requested fields of the GraphQL type JobEventRetried. // The GraphQL type's documentation follows. // @@ -1289,6 +1532,50 @@ type FindQueuesForClusterNodeJobEventRetried struct { // GetTypename returns FindQueuesForClusterNodeJobEventRetried.Typename, and is useful for accessing the field via an interface. func (v *FindQueuesForClusterNodeJobEventRetried) GetTypename() *string { return v.Typename } +// FindQueuesForClusterNodeJobEventRetryFailed includes the requested fields of the GraphQL type JobEventRetryFailed. +// The GraphQL type's documentation follows. +// +// An event created when job fails to retry +type FindQueuesForClusterNodeJobEventRetryFailed struct { + Typename *string `json:"__typename"` +} + +// GetTypename returns FindQueuesForClusterNodeJobEventRetryFailed.Typename, and is useful for accessing the field via an interface. +func (v *FindQueuesForClusterNodeJobEventRetryFailed) GetTypename() *string { return v.Typename } + +// FindQueuesForClusterNodeJobEventStackError includes the requested fields of the GraphQL type JobEventStackError. +// The GraphQL type's documentation follows. +// +// An event created when a stack error is reported +type FindQueuesForClusterNodeJobEventStackError struct { + Typename *string `json:"__typename"` +} + +// GetTypename returns FindQueuesForClusterNodeJobEventStackError.Typename, and is useful for accessing the field via an interface. +func (v *FindQueuesForClusterNodeJobEventStackError) GetTypename() *string { return v.Typename } + +// FindQueuesForClusterNodeJobEventStackFinished includes the requested fields of the GraphQL type JobEventStackFinished. +// The GraphQL type's documentation follows. +// +// An event created when a stack finishes a job and marks it as success +type FindQueuesForClusterNodeJobEventStackFinished struct { + Typename *string `json:"__typename"` +} + +// GetTypename returns FindQueuesForClusterNodeJobEventStackFinished.Typename, and is useful for accessing the field via an interface. +func (v *FindQueuesForClusterNodeJobEventStackFinished) GetTypename() *string { return v.Typename } + +// FindQueuesForClusterNodeJobEventStackNotification includes the requested fields of the GraphQL type JobEventStackNotification. +// The GraphQL type's documentation follows. +// +// An event created when a stack notification is triggered +type FindQueuesForClusterNodeJobEventStackNotification struct { + Typename *string `json:"__typename"` +} + +// GetTypename returns FindQueuesForClusterNodeJobEventStackNotification.Typename, and is useful for accessing the field via an interface. +func (v *FindQueuesForClusterNodeJobEventStackNotification) GetTypename() *string { return v.Typename } + // FindQueuesForClusterNodeJobEventTimedOut includes the requested fields of the GraphQL type JobEventTimedOut. // The GraphQL type's documentation follows. // @@ -1399,6 +1686,45 @@ type FindQueuesForClusterNodeOrganizationMember struct { // GetTypename returns FindQueuesForClusterNodeOrganizationMember.Typename, and is useful for accessing the field via an interface. func (v *FindQueuesForClusterNodeOrganizationMember) GetTypename() *string { return v.Typename } +// FindQueuesForClusterNodeOrganizationRepositoryProviderCursorOrigin includes the requested fields of the GraphQL type OrganizationRepositoryProviderCursorOrigin. +// The GraphQL type's documentation follows. +// +// Cursor Origin installation associated with this organization +type FindQueuesForClusterNodeOrganizationRepositoryProviderCursorOrigin struct { + Typename *string `json:"__typename"` +} + +// GetTypename returns FindQueuesForClusterNodeOrganizationRepositoryProviderCursorOrigin.Typename, and is useful for accessing the field via an interface. +func (v *FindQueuesForClusterNodeOrganizationRepositoryProviderCursorOrigin) GetTypename() *string { + return v.Typename +} + +// FindQueuesForClusterNodeOrganizationRepositoryProviderGitHub includes the requested fields of the GraphQL type OrganizationRepositoryProviderGitHub. +// The GraphQL type's documentation follows. +// +// GitHub installation associated with this organization +type FindQueuesForClusterNodeOrganizationRepositoryProviderGitHub struct { + Typename *string `json:"__typename"` +} + +// GetTypename returns FindQueuesForClusterNodeOrganizationRepositoryProviderGitHub.Typename, and is useful for accessing the field via an interface. +func (v *FindQueuesForClusterNodeOrganizationRepositoryProviderGitHub) GetTypename() *string { + return v.Typename +} + +// FindQueuesForClusterNodeOrganizationRepositoryProviderGitHubEnterpriseServer includes the requested fields of the GraphQL type OrganizationRepositoryProviderGitHubEnterpriseServer. +// The GraphQL type's documentation follows. +// +// GitHub Enterprise Server associated with this organization +type FindQueuesForClusterNodeOrganizationRepositoryProviderGitHubEnterpriseServer struct { + Typename *string `json:"__typename"` +} + +// GetTypename returns FindQueuesForClusterNodeOrganizationRepositoryProviderGitHubEnterpriseServer.Typename, and is useful for accessing the field via an interface. +func (v *FindQueuesForClusterNodeOrganizationRepositoryProviderGitHubEnterpriseServer) GetTypename() *string { + return v.Typename +} + // FindQueuesForClusterNodePipeline includes the requested fields of the GraphQL type Pipeline. // The GraphQL type's documentation follows. // @@ -1443,6 +1769,36 @@ type FindQueuesForClusterNodePipelineTemplate struct { // GetTypename returns FindQueuesForClusterNodePipelineTemplate.Typename, and is useful for accessing the field via an interface. func (v *FindQueuesForClusterNodePipelineTemplate) GetTypename() *string { return v.Typename } +// FindQueuesForClusterNodeRegistry includes the requested fields of the GraphQL type Registry. +// The GraphQL type's documentation follows. +// +// A registry +type FindQueuesForClusterNodeRegistry struct { + Typename *string `json:"__typename"` +} + +// GetTypename returns FindQueuesForClusterNodeRegistry.Typename, and is useful for accessing the field via an interface. +func (v *FindQueuesForClusterNodeRegistry) GetTypename() *string { return v.Typename } + +// FindQueuesForClusterNodeRegistryToken includes the requested fields of the GraphQL type RegistryToken. +// The GraphQL type's documentation follows. +// +// A registry token +type FindQueuesForClusterNodeRegistryToken struct { + Typename *string `json:"__typename"` +} + +// GetTypename returns FindQueuesForClusterNodeRegistryToken.Typename, and is useful for accessing the field via an interface. +func (v *FindQueuesForClusterNodeRegistryToken) GetTypename() *string { return v.Typename } + +// FindQueuesForClusterNodeRule includes the requested fields of the GraphQL type Rule. +type FindQueuesForClusterNodeRule struct { + Typename *string `json:"__typename"` +} + +// GetTypename returns FindQueuesForClusterNodeRule.Typename, and is useful for accessing the field via an interface. +func (v *FindQueuesForClusterNodeRule) GetTypename() *string { return v.Typename } + // FindQueuesForClusterNodeSSOProviderGitHubApp includes the requested fields of the GraphQL type SSOProviderGitHubApp. // The GraphQL type's documentation follows. // @@ -1531,6 +1887,17 @@ type FindQueuesForClusterNodeTeamPipeline struct { // GetTypename returns FindQueuesForClusterNodeTeamPipeline.Typename, and is useful for accessing the field via an interface. func (v *FindQueuesForClusterNodeTeamPipeline) GetTypename() *string { return v.Typename } +// FindQueuesForClusterNodeTeamRegistry includes the requested fields of the GraphQL type TeamRegistry. +// The GraphQL type's documentation follows. +// +// A registry that's been assigned to a team +type FindQueuesForClusterNodeTeamRegistry struct { + Typename *string `json:"__typename"` +} + +// GetTypename returns FindQueuesForClusterNodeTeamRegistry.Typename, and is useful for accessing the field via an interface. +func (v *FindQueuesForClusterNodeTeamRegistry) GetTypename() *string { return v.Typename } + // FindQueuesForClusterNodeTeamSuite includes the requested fields of the GraphQL type TeamSuite. // The GraphQL type's documentation follows. // @@ -1654,7 +2021,11 @@ func (v *FindUserByEmailOrganization) GetMembers() *FindUserByEmailOrganizationM } // FindUserByEmailOrganizationMembersOrganizationMemberConnection includes the requested fields of the GraphQL type OrganizationMemberConnection. +// The GraphQL type's documentation follows. +// +// The connection type for OrganizationMember. type FindUserByEmailOrganizationMembersOrganizationMemberConnection struct { + // A list of edges. Edges []*FindUserByEmailOrganizationMembersOrganizationMemberConnectionEdgesOrganizationMemberEdge `json:"edges"` } @@ -1664,7 +2035,11 @@ func (v *FindUserByEmailOrganizationMembersOrganizationMemberConnection) GetEdge } // FindUserByEmailOrganizationMembersOrganizationMemberConnectionEdgesOrganizationMemberEdge includes the requested fields of the GraphQL type OrganizationMemberEdge. +// The GraphQL type's documentation follows. +// +// An edge in a connection. type FindUserByEmailOrganizationMembersOrganizationMemberConnectionEdgesOrganizationMemberEdge struct { + // The item at the end of the edge. Node *FindUserByEmailOrganizationMembersOrganizationMemberConnectionEdgesOrganizationMemberEdgeNodeOrganizationMember `json:"node"` } @@ -1724,7 +2099,11 @@ func (v *GetClusterQueueAgentOrganization) GetAgents() *GetClusterQueueAgentOrga } // GetClusterQueueAgentOrganizationAgentsAgentConnection includes the requested fields of the GraphQL type AgentConnection. +// The GraphQL type's documentation follows. +// +// The connection type for Agent. type GetClusterQueueAgentOrganizationAgentsAgentConnection struct { + // A list of edges. Edges []*GetClusterQueueAgentOrganizationAgentsAgentConnectionEdgesAgentEdge `json:"edges"` } @@ -1734,7 +2113,11 @@ func (v *GetClusterQueueAgentOrganizationAgentsAgentConnection) GetEdges() []*Ge } // GetClusterQueueAgentOrganizationAgentsAgentConnectionEdgesAgentEdge includes the requested fields of the GraphQL type AgentEdge. +// The GraphQL type's documentation follows. +// +// An edge in a connection. type GetClusterQueueAgentOrganizationAgentsAgentConnectionEdgesAgentEdge struct { + // The item at the end of the edge. Node *GetClusterQueueAgentOrganizationAgentsAgentConnectionEdgesAgentEdgeNodeAgent `json:"node"` } @@ -1846,7 +2229,11 @@ func (v *GetClusterQueuesOrganizationCluster) GetQueues() *GetClusterQueuesOrgan } // GetClusterQueuesOrganizationClusterQueuesClusterQueueConnection includes the requested fields of the GraphQL type ClusterQueueConnection. +// The GraphQL type's documentation follows. +// +// The connection type for ClusterQueue. type GetClusterQueuesOrganizationClusterQueuesClusterQueueConnection struct { + // A list of edges. Edges []*GetClusterQueuesOrganizationClusterQueuesClusterQueueConnectionEdgesClusterQueueEdge `json:"edges"` } @@ -1856,7 +2243,11 @@ func (v *GetClusterQueuesOrganizationClusterQueuesClusterQueueConnection) GetEdg } // GetClusterQueuesOrganizationClusterQueuesClusterQueueConnectionEdgesClusterQueueEdge includes the requested fields of the GraphQL type ClusterQueueEdge. +// The GraphQL type's documentation follows. +// +// An edge in a connection. type GetClusterQueuesOrganizationClusterQueuesClusterQueueConnectionEdgesClusterQueueEdge struct { + // The item at the end of the edge. Node *GetClusterQueuesOrganizationClusterQueuesClusterQueueConnectionEdgesClusterQueueEdgeNodeClusterQueue `json:"node"` } @@ -1956,72 +2347,81 @@ func (v *InviteUserResponse) GetOrganizationInvitationCreate() *InviteUserOrgani type JobStates string const ( - // The job has just been created and doesn't have a state yet - JobStatesPending JobStates = "PENDING" - // The job is waiting on a `wait` step to finish - JobStatesWaiting JobStates = "WAITING" - // The job was in a `WAITING` state when the build failed - JobStatesWaitingFailed JobStates = "WAITING_FAILED" + // The job was accepted by the agent, and now it's waiting to start running + JobStatesAccepted JobStates = "ACCEPTED" + // The job has been assigned to an agent, and it's waiting for it to accept + JobStatesAssigned JobStates = "ASSIGNED" // The job is waiting on a `block` step to finish JobStatesBlocked JobStates = "BLOCKED" // The job was in a `BLOCKED` state when the build failed JobStatesBlockedFailed JobStates = "BLOCKED_FAILED" - // This `block` job has been manually unblocked - JobStatesUnblocked JobStates = "UNBLOCKED" - // This `block` job was in an `UNBLOCKED` state when the build failed - JobStatesUnblockedFailed JobStates = "UNBLOCKED_FAILED" - // The job is waiting on a concurrency group check before becoming either `LIMITED` or `SCHEDULED` - JobStatesLimiting JobStates = "LIMITING" + // The jobs configuration means that it can't be run + JobStatesBroken JobStates = "BROKEN" + // The job was canceled + JobStatesCanceled JobStates = "CANCELED" + // The job is currently canceling + JobStatesCanceling JobStates = "CANCELING" + // The job expired before it was started on an agent + JobStatesExpired JobStates = "EXPIRED" + // The job has finished + JobStatesFinished JobStates = "FINISHED" // The job is waiting for jobs with the same concurrency group to finish JobStatesLimited JobStates = "LIMITED" - // The job is scheduled and waiting for an agent - JobStatesScheduled JobStates = "SCHEDULED" - // The job has been assigned to an agent, and it's waiting for it to accept - JobStatesAssigned JobStates = "ASSIGNED" - // The job was accepted by the agent, and now it's waiting to start running - JobStatesAccepted JobStates = "ACCEPTED" + // The job is waiting on a concurrency group check before becoming either `LIMITED` or `SCHEDULED` + JobStatesLimiting JobStates = "LIMITING" + // The job has just been created and doesn't have a state yet + JobStatesPending JobStates = "PENDING" + // The job is blocked by platform-wide concurrency/resource limits + JobStatesPlatformLimited JobStates = "PLATFORM_LIMITED" + // The job is waiting on platform-wide concurrency/resource limits before becoming either `PLATFORM_LIMITED` or `SCHEDULED` + JobStatesPlatformLimiting JobStates = "PLATFORM_LIMITING" + // The job is reserved by a stack for later execution + JobStatesReserved JobStates = "RESERVED" // The job is running JobStatesRunning JobStates = "RUNNING" - // The job has finished - JobStatesFinished JobStates = "FINISHED" - // The job is currently canceling - JobStatesCanceling JobStates = "CANCELING" - // The job was canceled - JobStatesCanceled JobStates = "CANCELED" - // The job is timing out for taking too long - JobStatesTimingOut JobStates = "TIMING_OUT" - // The job timed out - JobStatesTimedOut JobStates = "TIMED_OUT" + // The job is scheduled and waiting for an agent + JobStatesScheduled JobStates = "SCHEDULED" // The job was skipped JobStatesSkipped JobStates = "SKIPPED" - // The jobs configuration means that it can't be run - JobStatesBroken JobStates = "BROKEN" - // The job expired before it was started on an agent - JobStatesExpired JobStates = "EXPIRED" + // The job timed out + JobStatesTimedOut JobStates = "TIMED_OUT" + // The job is timing out for taking too long + JobStatesTimingOut JobStates = "TIMING_OUT" + // This `block` job has been manually unblocked + JobStatesUnblocked JobStates = "UNBLOCKED" + // This `block` job was in an `UNBLOCKED` state when the build failed + JobStatesUnblockedFailed JobStates = "UNBLOCKED_FAILED" + // The job is waiting on a `wait` step to finish + JobStatesWaiting JobStates = "WAITING" + // The job was in a `WAITING` state when the build failed + JobStatesWaitingFailed JobStates = "WAITING_FAILED" ) var AllJobStates = []JobStates{ - JobStatesPending, - JobStatesWaiting, - JobStatesWaitingFailed, + JobStatesAccepted, + JobStatesAssigned, JobStatesBlocked, JobStatesBlockedFailed, - JobStatesUnblocked, - JobStatesUnblockedFailed, - JobStatesLimiting, + JobStatesBroken, + JobStatesCanceled, + JobStatesCanceling, + JobStatesExpired, + JobStatesFinished, JobStatesLimited, - JobStatesScheduled, - JobStatesAssigned, - JobStatesAccepted, + JobStatesLimiting, + JobStatesPending, + JobStatesPlatformLimited, + JobStatesPlatformLimiting, + JobStatesReserved, JobStatesRunning, - JobStatesFinished, - JobStatesCanceling, - JobStatesCanceled, - JobStatesTimingOut, - JobStatesTimedOut, + JobStatesScheduled, JobStatesSkipped, - JobStatesBroken, - JobStatesExpired, + JobStatesTimedOut, + JobStatesTimingOut, + JobStatesUnblocked, + JobStatesUnblockedFailed, + JobStatesWaiting, + JobStatesWaitingFailed, } // ListJobsByAgentQueryRulesOrganization includes the requested fields of the GraphQL type Organization. @@ -3320,7 +3720,8 @@ func (v *ListJobsByStateResponse) GetOrganization() *ListJobsByStateOrganization type PipelineCreateWebhookPipelineCreateWebhookPipelineCreateWebhookPayload struct { // A unique identifier for the client performing the mutation. ClientMutationId *string `json:"clientMutationId"` - PipelineID string `json:"pipelineID"` + // The GraphQL ID of the pipeline + PipelineID string `json:"pipelineID"` } // GetClientMutationId returns PipelineCreateWebhookPipelineCreateWebhookPipelineCreateWebhookPayload.ClientMutationId, and is useful for accessing the field via an interface. @@ -3335,7 +3736,13 @@ func (v *PipelineCreateWebhookPipelineCreateWebhookPipelineCreateWebhookPayload) // PipelineCreateWebhookResponse is returned by PipelineCreateWebhook on success. type PipelineCreateWebhookResponse struct { - // Create SCM webhooks for a pipeline. + // Create a webhook on the repository for a pipeline. + // + // This mutation creates a webhook on the pipeline's source repository (e.g., GitHub) + // that will trigger builds when code is pushed. Requires a GitHub App integration + // to be configured for the organization. + // + // Returns an error if a webhook already exists for the repository. PipelineCreateWebhook *PipelineCreateWebhookPipelineCreateWebhookPipelineCreateWebhookPayload `json:"pipelineCreateWebhook"` } diff --git a/schema.graphql b/schema.graphql index 5b853372..041b94dc 100644 --- a/schema.graphql +++ b/schema.graphql @@ -1,5869 +1,14110 @@ -"""Directs the executor to include this field or fragment only when the `if` argument is true.""" -directive @include( -"""Included when true.""" - if: Boolean! -) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT - -"""Directs the executor to skip this field or fragment when the `if` argument is true.""" -directive @skip( -"""Skipped when true.""" - if: Boolean! -) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT - -"""Marks an element of a GraphQL schema as no longer supported.""" -directive @deprecated( -"""Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted in [Markdown](https://daringfireball.net/projects/markdown/).""" - reason: String -) on FIELD_DEFINITION | ENUM_VALUE | ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION - -"""Requires that exactly one field must be supplied and that field must not be `null`.""" -directive @oneOf on INPUT_OBJECT - -"""API access tokens for authentication with the Buildkite API""" -type APIAccessToken implements Node{ - id: ID! -"""The public UUID for the API Access Token""" - uuid: ID! -} - -"""A code that is used by an API Application to request an API Access Token""" -type APIAccessTokenCode implements Node{ - application: APIApplication -"""The time when this code was authorized by a user""" - authorizedAt: DateTime -"""The IP address of the client that authorized this code""" - authorizedIPAddress: String -"""The actual code used to find this API Access Token Code record""" - code: String! -"""The description of the code provided by the API Application""" - description: String! -"""The time when this code will expire""" - expiresAt: DateTime! - id: ID! -} - -"""Autogenerated input type of APIAccessTokenCodeAuthorizeMutation""" -input APIAccessTokenCodeAuthorizeMutationInput { -"""Autogenerated input type of APIAccessTokenCodeAuthorizeMutation""" - clientMutationId: String -"""Autogenerated input type of APIAccessTokenCodeAuthorizeMutation""" - id: ID! -} +""" +API access tokens for authentication with the Buildkite API +""" +type APIAccessToken implements Node { + """ + The time at which this API access token will expire. If null, the token will never expire. + """ + expiresAt: DateTime + id: ID! -"""Autogenerated return type of APIAccessTokenCodeAuthorizeMutation.""" -type APIAccessTokenCodeAuthorizeMutationPayload { - apiAccessTokenCode: APIAccessTokenCode! -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String + """ + The public UUID for the API Access Token + """ + uuid: ID! } -"""All possible scopes on a user's API Access Token""" -enum APIAccessTokenScopes { - GRAPHQL - READ_AGENTS - READ_ARTIFACTS - READ_BUILD_LOGS - READ_BUILDS - READ_CLUSTERS - READ_JOB_ENV - READ_NOTIFICATION_SERVICES - READ_ORGANIZATIONS - READ_PIPELINE_TEMPLATES - READ_PIPELINES - READ_SUITES - READ_TEAMS - READ_USER - WRITE_AGENTS - WRITE_ARTIFACTS - WRITE_BUILD_LOGS - WRITE_BUILDS - WRITE_CLUSTERS - WRITE_NOTIFICATION_SERVICES - WRITE_PIPELINE_TEMPLATES - WRITE_PIPELINES - WRITE_SUITES - WRITE_TEAMS -} - -"""An API Application""" -type APIApplication implements Node{ -"""A description of the application""" - description: String! - id: ID! -"""The name of this application""" - name: String! -} - -"""An agent""" -type Agent implements Node{ - clusterQueue: ClusterQueue -"""The time when the agent connected to Buildkite""" - connectedAt: DateTime -"""The connection state of the agent""" - connectionState: String! -"""The date the agent was created""" - createdAt: DateTime -"""The time when the agent disconnected from Buildkite""" - disconnectedAt: DateTime -"""The last time the agent performed a `heartbeat` operation to the Agent API""" - heartbeatAt: DateTime -"""The hostname of the machine running the agent""" - hostname: String - id: ID! -"""The IP address that the agent has connected from""" - ipAddress: String -"""If this version of agent has been deprecated by Buildkite""" - isDeprecated: Boolean! -"""Returns whether or not this agent is running a job. If isRunningJob true, but the `job` field is empty, the current user doesn't have access to view the job""" - isRunningJob: Boolean! -"""The currently running job""" - job: Job -"""Jobs that have been assigned to this agent""" - jobs( -"""Returns the first _n_ elements from the list.""" - first: Int -"""Returns the elements in the list that come after the specified cursor.""" - after: String -"""Returns the last _n_ elements from the list.""" - last: Int -"""Returns the elements in the list that come before the specified cursor.""" - before: String - type: [JobTypes!] - state: [JobStates!] - priority: Int - agentQueryRules: [String!] - concurrency: JobConcurrencySearch -"""Whether or not the command job passed. Passing `false` will return all failed jobs (including "soft failed" jobs)""" - passed: Boolean -"""Filtering jobs based on related step information""" - step: JobStepSearch -"""Order the jobs""" - order: JobOrder - ): JobConnection -"""The date the agent was lost from Buildkite if it didn't cleanly disconnect""" - lostAt: DateTime -"""The meta data this agent was stared with""" - metaData: [String!] -"""The name of the agent""" - name: String! -"""The operating system the agent is running on""" - operatingSystem: OperatingSystem - organization: Organization - permissions: AgentPermissions! -"""The process identifier (PID) of the agent process on the machine""" - pid: String - pingedAt: DateTime -"""The priority setting for the agent""" - priority: Int -"""Whether this agent is visible to everyone, including people outside this organization""" - public: Boolean! -"""The time this agent was forced to stop""" - stopForcedAt: DateTime -"""The user that forced this agent to stop""" - stopForcedBy: User -"""The time the agent was first asked to stop""" - stoppedAt: DateTime -"""The user that initially stopped this agent""" - stoppedBy: User -"""The time the agent was gracefully stopped by a user""" - stoppedGracefullyAt: DateTime -"""The user that gracefully stopped this agent""" - stoppedGracefullyBy: User -"""The User-Agent of the program that is making Agent API requests to Buildkite""" - userAgent: String -"""The public UUID for the agent""" - uuid: String! -"""The version of the agent""" - version: String -"""Whether this agent's version has known issues and should be upgraded""" - versionHasKnownIssues: Boolean! -} - -type AgentConnection implements Connection{ - count: Int! - edges: [AgentEdge] - pageInfo: PageInfo -} +""" +A code that is used by an API Application to request an API Access Token +""" +type APIAccessTokenCode implements Node { + application: APIApplication -type AgentEdge { - cursor: String! - node: Agent -} + """ + The time when this code was authorized by a user + """ + authorizedAt: DateTime -"""Permissions information about what actions the current user can do against this agent""" -type AgentPermissions { -"""Whether the user can stop the agent remotely""" - agentStop: Permission -} + """ + The IP address of the client that authorized this code + """ + authorizedIPAddress: String -"""Autogenerated input type of AgentStop""" -input AgentStopInput { -"""Autogenerated input type of AgentStop""" - clientMutationId: String -"""Autogenerated input type of AgentStop""" - id: ID! -"""Autogenerated input type of AgentStop""" - graceful: Boolean -} + """ + The actual code used to find this API Access Token Code record + """ + code: String! -"""Autogenerated return type of AgentStop.""" -type AgentStopPayload { - agent: Agent! -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""A token used to connect an agent to Buildkite""" -type AgentToken implements Node{ -"""The time this agent token was created""" - createdAt: DateTime -"""The user that created this agent token""" - createdBy: User -"""A description about what this agent token is used for""" - description: String - id: ID! - organization: Organization - permissions: AgentTokenPermissions! -"""Whether agents registered with this token will be visible to everyone, including people outside this organization""" - public: Boolean! -"""The time this agent token was revoked""" - revokedAt: DateTime -"""The user that revoked this agent token""" - revokedBy: User -"""The reason as defined by the user why this token was revoked""" - revokedReason: String -"""The token value used to register a new agent""" - token: String! -"""The public UUID for the agent""" - uuid: ID! -} - -type AgentTokenConnection implements Connection{ - count: Int! - edges: [AgentTokenEdge] - pageInfo: PageInfo -} - -"""Autogenerated input type of AgentTokenCreate""" -input AgentTokenCreateInput { -"""Autogenerated input type of AgentTokenCreate""" - clientMutationId: String -"""Autogenerated input type of AgentTokenCreate""" - organizationID: ID! -"""Autogenerated input type of AgentTokenCreate""" - description: String -"""Autogenerated input type of AgentTokenCreate""" - public: Boolean -} + """ + The description of the code provided by the API Application + """ + description: String! -"""Autogenerated return type of AgentTokenCreate.""" -type AgentTokenCreatePayload { - agentTokenEdge: AgentTokenEdge! -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - organization: Organization! -"""The token value used to register a new unclustered agent. Please ensure to securely copy this value immediately upon generation as it will not be displayed again.""" - tokenValue: String! + """ + The time when this code will expire + """ + expiresAt: DateTime! + id: ID! } -type AgentTokenEdge { - cursor: String! - node: AgentToken +""" +Autogenerated input type of APIAccessTokenCodeAuthorizeMutation +""" +input APIAccessTokenCodeAuthorizeMutationInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! } -"""Permissions information about what actions the current user can do against the agent token""" -type AgentTokenPermissions { -"""Whether the user can revoke this agent token""" - agentTokenRevoke: Permission -} +""" +Autogenerated return type of APIAccessTokenCodeAuthorizeMutation. +""" +type APIAccessTokenCodeAuthorizeMutationPayload { + apiAccessTokenCode: APIAccessTokenCode! -"""Autogenerated input type of AgentTokenRevoke""" -input AgentTokenRevokeInput { -"""Autogenerated input type of AgentTokenRevoke""" - clientMutationId: String -"""Autogenerated input type of AgentTokenRevoke""" - id: ID! -"""Autogenerated input type of AgentTokenRevoke""" - reason: String! + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String } -"""Autogenerated return type of AgentTokenRevoke.""" -type AgentTokenRevokePayload { - agentToken: AgentToken! -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String -} - -"""An annotation allows you to add arbitrary content to the top of a build page in the Buildkite UI""" -type Annotation implements Node{ -"""The body of the annotation""" - body: AnnotationBody -"""The context of the annotation that helps you differentiate this one from others""" - context: String! -"""The date the annotation was created""" - createdAt: DateTime! - id: ID! -"""The priority of the annotation""" - priority: Int! -"""The visual style of the annotation""" - style: AnnotationStyle -"""The last time the annotation was changed""" - updatedAt: DateTime -"""The public UUID for this annotation""" - uuid: ID! -} - -"""A body of an annotation""" -type AnnotationBody { -"""The body of the annotation rendered as HTML. The renderer result could be an empty string if the textual version has unsupported HTML tags""" - html: String -"""The body of the annotation as text""" - text: String! +""" +All possible scopes on a user's API Access Token +""" +enum APIAccessTokenScopes { + DELETE_PACKAGES + DELETE_REGISTRIES + GRAPHQL + READ_AGENTS + READ_ARTIFACTS + READ_AUDIT_EVENTS + READ_BUILDS + READ_BUILD_LOGS + READ_CLUSTERS + READ_DEPLOYABLES + READ_EVENTS + READ_JOB_ENV + READ_NOTIFICATION_SERVICES + READ_ORGANIZATIONS + READ_ORGANIZATION_INVITATIONS + READ_ORGANIZATION_REPOSITORY_CONNECTIONS + READ_ORGANIZATION_SETTINGS + READ_PACKAGES + READ_PIPELINES + READ_PIPELINE_TEMPLATES + READ_PORTALS + READ_REGISTRIES + READ_RULES + READ_SECRETS_DETAILS + READ_SUITES + READ_TEAMS + READ_TEST_PLAN + READ_TEST_POOL + READ_USER + WRITE_AGENTS + WRITE_ARTIFACTS + WRITE_BUILDS + WRITE_BUILD_LOGS + WRITE_CLUSTERS + WRITE_DEPLOYABLES + WRITE_NOTIFICATION_SERVICES + WRITE_ORGANIZATIONS + WRITE_ORGANIZATION_INVITATIONS + WRITE_ORGANIZATION_SETTINGS + WRITE_PACKAGES + WRITE_PIPELINES + WRITE_PIPELINE_TEMPLATES + WRITE_PORTALS + WRITE_REGISTRIES + WRITE_RULES + WRITE_SECRETS + WRITE_SUITES + WRITE_TEAMS + WRITE_TEST_PLAN } -type AnnotationConnection implements Connection{ - count: Int! - edges: [AnnotationEdge] - pageInfo: PageInfo -} +""" +An API Application +""" +type APIApplication implements Node { + """ + A description of the application + """ + description: String! + id: ID! -type AnnotationEdge { - cursor: String! - node: Annotation + """ + The name of this application + """ + name: String! } -"""The different orders you can sort annotations by""" -enum AnnotationOrder { -"""Order by priority, then by the most recently created annotations first""" - PRIORITY_RECENTLY_CREATED -"""Order by the most recently created annotations first""" - RECENTLY_CREATED +""" +An agent +""" +type Agent implements Node { + clusterQueue: ClusterQueue + + """ + The time when the agent connected to Buildkite + """ + connectedAt: DateTime + + """ + The connection state of the agent + """ + connectionState: String! + + """ + The date the agent was created + """ + createdAt: DateTime + + """ + The time when the agent disconnected from Buildkite + """ + disconnectedAt: DateTime + + """ + The last time the agent performed a `heartbeat` operation to the Agent API + """ + heartbeatAt: DateTime + + """ + The hostname of the machine running the agent + """ + hostname: String + id: ID! + + """ + The IP address that the agent has connected from + """ + ipAddress: String + + """ + If this version of agent has been deprecated by Buildkite + """ + isDeprecated: Boolean! + + """ + Returns whether or not this agent is running a job. If isRunningJob true, but + the `job` field is empty, the current user doesn't have access to view the job + """ + isRunningJob: Boolean! + + """ + The currently running job + """ + job: Job + + """ + Jobs that have been assigned to this agent + """ + jobs( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Filter jobs based on matching agent query rules (for example, a single tag + match "queue=test", or an array of matches ["queue=test", "tag=value"]) + """ + agentQueryRules: [String!] + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + concurrency: JobConcurrencySearch + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Order the jobs + """ + order: JobOrder = RECENTLY_ASSIGNED + + """ + Whether or not the command job passed. Passing `false` will return all failed jobs (including "soft failed" jobs) + """ + passed: Boolean + priority: Int + state: [JobStates!] + + """ + Filtering jobs based on related step information + """ + step: JobStepSearch + type: [JobTypes!] + ): JobConnection + + """ + The date the agent was lost from Buildkite if it didn't cleanly disconnect + """ + lostAt: DateTime + + """ + The meta data this agent was stared with + """ + metaData: [String!] + + """ + The name of the agent + """ + name: String! + + """ + The operating system the agent is running on + """ + operatingSystem: OperatingSystem + organization: Organization + + """ + Whether this agent is paused, preventing dispatch of new jobs + """ + paused: Boolean! + + """ + Whether this agent is paused, preventing dispatch of new jobs + """ + pausedAt: DateTime + + """ + The user who paused this agent, if paused + """ + pausedBy: User + + """ + Note supplied when agent was paused, if paused + """ + pausedNote: String + + """ + Number of minutes the agent will remain paused for, if paused + """ + pausedTimeoutInMinutes: Int! + permissions: AgentPermissions! + + """ + The process identifier (PID) of the agent process on the machine + """ + pid: String + pingedAt: DateTime @deprecated(reason: "DEPRECATED: please use heartbeatAt") + + """ + The priority setting for the agent + """ + priority: Int + + """ + Whether this agent is visible to everyone, including people outside this organization + """ + public: Boolean! + + """ + The time this agent was forced to stop + """ + stopForcedAt: DateTime + + """ + The user that forced this agent to stop + """ + stopForcedBy: User + + """ + The time the agent was first asked to stop + """ + stoppedAt: DateTime @deprecated(reason: "Use either `stoppedGracefullyAt` or `stopForcedAt`") + + """ + The user that initially stopped this agent + """ + stoppedBy: User @deprecated(reason: "Use either `stoppedGracefullyBy` or `stopForcedBy`") + + """ + The time the agent was gracefully stopped by a user + """ + stoppedGracefullyAt: DateTime + + """ + The user that gracefully stopped this agent + """ + stoppedGracefullyBy: User + + """ + The User-Agent of the program that is making Agent API requests to Buildkite + """ + userAgent: String + + """ + The public UUID for the agent + """ + uuid: String! + + """ + The version of the agent + """ + version: String + + """ + Whether this agent's version has known issues and should be upgraded + """ + versionHasKnownIssues: Boolean! } -"""The visual style of the annotation""" -enum AnnotationStyle { -"""The default styling of an annotation""" - DEFAULT -"""The annotation has a green border with a tick next to it""" - SUCCESS -"""The annotation has a blue border with an information icon next to it""" - INFO -"""The annotation has an orange border with a warning icon next to it""" - WARNING -""" The annotation has a red border with a cross next to it""" - ERROR -} - -"""A file uploaded from the agent whilst running a job""" -type Artifact implements Node{ -"""The download URL for the artifact. Unless you've used your own artifact storage, the URL will be valid for only 10 minutes.""" - downloadURL: String! -"""The time when the artifact will, or did, expire""" - expiresAt: DateTime - id: ID! -"""The job that uploaded this artifact""" - job: JobTypeCommand -"""The mime type of the file provided by the agent""" - mimeType: String! -"""The path of the uploaded artifact""" - path: String! -"""A SHA1SUM of the file""" - sha1sum: String! -"""A SHA256SUM of the file""" - sha256sum: String -"""The size of the file in bytes that was uploaded""" - size: Int! -"""The upload state of the artifact""" - state: String! -"""The public UUID for this artifact""" - uuid: ID! -} - -type ArtifactConnection implements Connection{ - count: Int! - edges: [ArtifactEdge] - pageInfo: PageInfo -} +""" +The connection type for Agent. +""" +type AgentConnection implements Connection { + count: Int! -type ArtifactEdge { - cursor: String! - node: Artifact + """ + A list of edges. + """ + edges: [AgentEdge] + pageInfo: PageInfo } -"""Context for an audit event created during an REST/GraphQL API request""" -type AuditAPIContext { -"""The API access token UUID used to authenticate the request""" - requestApiAccessTokenUuid: String -"""The remote IP which made the request""" - requestIpAddress: String -"""The client supplied user agent which made the request""" - requestUserAgent: String -} +""" +An edge in a connection. +""" +type AgentEdge { + """ + A cursor for use in pagination. + """ + cursor: String! -"""The actor who caused an AuditEvent""" -type AuditActor { -"""The GraphQL ID for this actor""" - id: ID! -"""The name or short description of this actor""" - name: String -"""The node corresponding to this actor, if available""" - node: AuditActorNode -"""The type of this actor""" - type: AuditActorType -"""The public UUID of this actor""" - uuid: ID! -} - -"""Kinds of actors which can perform audit events""" -union AuditActorNode =Agent | User - -"""All the possible types of actors in an Audit Event""" -enum AuditActorType { - AGENT - USER + """ + The item at the end of the edge. + """ + node: Agent } -"""Context for an audit event created during an agent API request""" -type AuditAgentAPIContext { -"""The agent UUID""" - agentUuid: String -"""The type of token that authenticated the agent""" - authenticationType: String -"""The connection state of the agent""" - connectionState: String -"""The organization UUID that the agent belongs to""" - organizationUuid: String -"""The remote IP which made the request""" - requestIpAddress: String -"""The IP of the agent session which made the request""" - sessionIpAddress: String -} - -"""Kinds of contexts in which an audit event can be performed""" -union AuditContext =AuditAPIContext | AuditAgentAPIContext | AuditWebContext - -"""Audit record of an event which occurred in the system""" -type AuditEvent implements Node{ -"""The actor who caused this event""" - actor: AuditActor -"""The context in which this event occurred""" - context: AuditContext -"""The changed data in the event""" - data: JSON - id: ID! -"""The time at which this event occurred""" - occurredAt: DateTime! -"""The subject of this event""" - subject: AuditSubject -"""The type of event""" - type: AuditEventType! -"""The public UUID for the event""" - uuid: ID! -} - -"""All the possible types of an Audit Event""" -enum AuditEventType { - API_ACCESS_TOKEN_CREATED - API_ACCESS_TOKEN_DELETED - API_ACCESS_TOKEN_ORGANIZATION_ACCESS_REVOKED - API_ACCESS_TOKEN_UPDATED - AGENT_TOKEN_CREATED - AGENT_TOKEN_REVOKED - AGENT_TOKEN_UPDATED - AUTHORIZATION_CREATED - AUTHORIZATION_DELETED - CLUSTER_CREATED - CLUSTER_DELETED - CLUSTER_PERMISSION_CREATED - CLUSTER_PERMISSION_DELETED - CLUSTER_QUEUE_CREATED - CLUSTER_QUEUE_DELETED - CLUSTER_QUEUE_TOKEN_CREATED - CLUSTER_QUEUE_TOKEN_DELETED - CLUSTER_QUEUE_TOKEN_UPDATED - CLUSTER_QUEUE_UPDATED - CLUSTER_TOKEN_CREATED - CLUSTER_TOKEN_DELETED - CLUSTER_TOKEN_UPDATED - CLUSTER_UPDATED - NOTIFICATION_SERVICE_BROKEN - NOTIFICATION_SERVICE_CREATED - NOTIFICATION_SERVICE_DELETED - NOTIFICATION_SERVICE_DISABLED - NOTIFICATION_SERVICE_ENABLED - NOTIFICATION_SERVICE_UPDATED - ORGANIZATION_BANNER_CREATED - ORGANIZATION_BANNER_DELETED - ORGANIZATION_BANNER_UPDATED - ORGANIZATION_BUILD_EXPORT_UPDATED - ORGANIZATION_CREATED - ORGANIZATION_DELETED - ORGANIZATION_INVITATION_ACCEPTED - ORGANIZATION_INVITATION_CREATED - ORGANIZATION_INVITATION_RESENT - ORGANIZATION_INVITATION_REVOKED - ORGANIZATION_MEMBER_CREATED - ORGANIZATION_MEMBER_DELETED - ORGANIZATION_MEMBER_UPDATED - ORGANIZATION_TEAMS_DISABLED - ORGANIZATION_TEAMS_ENABLED - ORGANIZATION_UPDATED - PIPELINE_CREATED - PIPELINE_DELETED - PIPELINE_SCHEDULE_CREATED - PIPELINE_SCHEDULE_DELETED - PIPELINE_SCHEDULE_UPDATED - PIPELINE_TEMPLATE_CREATED - PIPELINE_TEMPLATE_DELETED - PIPELINE_TEMPLATE_UPDATED - PIPELINE_UPDATED - PIPELINE_VISIBILITY_CHANGED - PIPELINE_WEBHOOK_URL_ROTATED - SCM_PIPELINE_SETTINGS_CREATED - SCM_PIPELINE_SETTINGS_DELETED - SCM_PIPELINE_SETTINGS_UPDATED - SCM_REPOSITORY_HOST_CREATED - SCM_REPOSITORY_HOST_DESTROYED - SCM_REPOSITORY_HOST_UPDATED - SCM_SERVICE_CREATED - SCM_SERVICE_DELETED - SCM_SERVICE_UPDATED - SSO_PROVIDER_CREATED - SSO_PROVIDER_DELETED - SSO_PROVIDER_DISABLED - SSO_PROVIDER_ENABLED - SSO_PROVIDER_UPDATED - SECRET_CREATED - SECRET_DELETED - SECRET_QUERIED - SECRET_READ - SECRET_UPDATED - SUBSCRIPTION_PLAN_ADDED - SUBSCRIPTION_PLAN_CHANGE_SCHEDULED - SUBSCRIPTION_PLAN_CHANGED - SUITE_API_TOKEN_REGENERATED - SUITE_CREATED - SUITE_DELETED - SUITE_MONITOR_CREATED - SUITE_MONITOR_DELETED - SUITE_MONITOR_UPDATED - SUITE_UPDATED - SUITE_VISIBILITY_CHANGED - TEAM_CREATED - TEAM_DELETED - TEAM_MEMBER_CREATED - TEAM_MEMBER_DELETED - TEAM_MEMBER_UPDATED - TEAM_PIPELINE_CREATED - TEAM_PIPELINE_DELETED - TEAM_PIPELINE_UPDATED - TEAM_SUITE_CREATED - TEAM_SUITE_DELETED - TEAM_SUITE_UPDATED - TEAM_UPDATED - USER_API_ACCESS_TOKEN_ORGANIZATION_ACCESS_ADDED - USER_API_ACCESS_TOKEN_ORGANIZATION_ACCESS_REMOVED - USER_EMAIL_CREATED - USER_EMAIL_DELETED - USER_EMAIL_MARKED_PRIMARY - USER_EMAIL_VERIFIED - USER_PASSWORD_RESET - USER_PASSWORD_RESET_REQUESTED - USER_TOTP_ACTIVATED - USER_TOTP_CREATED - USER_TOTP_DELETED - USER_UPDATED -} - -"""The subject of an AuditEvent""" -type AuditSubject { -"""The GraphQL ID for the subject""" - id: ID! -"""The name or short description of this subject""" - name: String -"""The node corresponding to the subject, if available""" - node: AuditSubjectNode -"""The type of this subject""" - type: AuditSubjectType -"""The public UUID of this subject""" - uuid: ID! -} - -"""Kinds of subjects which can have audit events performed on them""" -union AuditSubjectNode =APIAccessToken | AgentToken | AuthorizationBitbucket | AuthorizationGitHub | AuthorizationGitHubEnterprise | Cluster | ClusterPermission | ClusterQueue | ClusterQueueToken | ClusterToken | Email | NotificationServiceSlack | NotificationServiceWebhook | Organization | OrganizationBanner | OrganizationInvitation | OrganizationMember | Pipeline | PipelineSchedule | PipelineTemplate | SCMPipelineSettings | SCMRepositoryHost | SCMService | SSOProviderGitHubApp | SSOProviderGoogleGSuite | SSOProviderSAML | Secret | Subscription | Suite | TOTP | Team | TeamMember | TeamPipeline | TeamSuite | User - -"""All the possible types of subjects in an Audit Event""" -enum AuditSubjectType { - USER_TOTP - CLUSTER_PERMISSION - USER - CLUSTER - SECRET - ORGANIZATION_MEMBER - ORGANIZATION - PIPELINE - TEAM - SSO_PROVIDER - SUITE - SUBSCRIPTION - AUTHORIZATION - AGENT_TOKEN - API_ACCESS_TOKEN - CLUSTER_QUEUE - CLUSTER_TOKEN - CLUSTER_QUEUE_TOKEN - NOTIFICATION_SERVICE - ORGANIZATION_BANNER - ORGANIZATION_INVITATION - PIPELINE_SCHEDULE - PIPELINE_TEMPLATE - TEAM_MEMBER - TEAM_PIPELINE - TEAM_SUITE - SCM_SERVICE - SCM_PIPELINE_SETTINGS - SCM_REPOSITORY_HOST - SUITE_MONITOR - USER_EMAIL -} - -"""Context for an audit event created during a web request""" -type AuditWebContext { -"""The remote IP which made the request""" - requestIpAddress: String -"""The client supplied user agent which made the request""" - requestUserAgent: String -"""When the session started, if available""" - sessionCreatedAt: DateTime -"""When the session was escalated, if available and escalated""" - sessionEscalatedAt: DateTime -"""The session's authenticated user, if available""" - sessionUser: User -"""The session's authenticated user's uuid""" - sessionUserUuid: ID -} +""" +Autogenerated input type of AgentPause +""" +input AgentPauseInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! -interface Authorization { - id: ID! -} + """ + Leave a note, e.g. describe why this agent is paused + """ + note: String -"""A Bitbucket account authorized with a Buildkite account""" -type AuthorizationBitbucket implements Authorization & Node{ -"""ID of the object.""" - id: ID! + """ + Specify how long the agent will remain paused for + """ + timeoutInMinutes: Int } -type AuthorizationConnection implements Connection{ - count: Int! - edges: [AuthorizationEdge] - pageInfo: PageInfo -} +""" +Autogenerated return type of AgentPause. +""" +type AgentPausePayload { + agent: Agent! -type AuthorizationEdge { - cursor: String! - node: Authorization + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String } -"""A GitHub account authorized with a Buildkite account""" -type AuthorizationGitHub implements Authorization & Node{ -"""ID of the object.""" - id: ID! -} +""" +Permissions information about what actions the current user can do against this agent +""" +type AgentPermissions { + """ + Whether the user can pause job dispatch to the agent + """ + agentPause: Permission -"""A GitHub app authorized with a Buildkite account""" -type AuthorizationGitHubApp implements Authorization & Node{ -"""ID of the object.""" - id: ID! -} + """ + Whether the user can resume job dispatch to the agent + """ + agentResume: Permission -"""A GitHub Enterprise account authorized with a Buildkite account""" -type AuthorizationGitHubEnterprise implements Authorization & Node{ -"""ID of the object.""" - id: ID! + """ + Whether the user can stop the agent remotely + """ + agentStop: Permission } -"""A Google account authorized with a Buildkite account""" -type AuthorizationGoogle implements Authorization & Node{ -"""ID of the object.""" - id: ID! +""" +Autogenerated input type of AgentResume +""" +input AgentResumeInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! } -"""A SAML account authorized with a Buildkite account""" -type AuthorizationSAML implements Authorization & Node{ -"""ID of the object.""" - id: ID! -} +""" +Autogenerated return type of AgentResume. +""" +type AgentResumePayload { + agent: Agent! -"""The type of the authorization""" -enum AuthorizationType { -"""GitHub Authorization""" - GITHUB -"""GitHub Enterprise Authorization""" - GITHUB_ENTERPRISE -"""Bitbucket Authorization""" - BITBUCKET + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String } -"""An avatar belonging to a user""" -type Avatar { -"""The URL of the avatar""" - url: String! -} - -"""Represents `true` or `false` values.""" -scalar Boolean - -"""A build from a pipeline""" -type Build implements Node{ - annotations( -"""Returns the first _n_ elements from the list.""" - first: Int -"""Returns the elements in the list that come after the specified cursor.""" - after: String -"""Returns the last _n_ elements from the list.""" - last: Int -"""Returns the elements in the list that come before the specified cursor.""" - before: String - style: [AnnotationStyle!] -"""Order the annotations""" - order: AnnotationOrder - ): AnnotationConnection -"""The current blocked state of the build""" - blockedState: BuildBlockedStates -"""The branch for the build""" - branch: String! -"""The time when the build was cancelled""" - canceledAt: DateTime -"""The user who canceled this build. If the build was canceled, and this value is null, then it was canceled automatically by Buildkite""" - canceledBy: User -"""The fully-qualified commit for the build""" - commit: String! -"""The time when the build was created""" - createdAt: DateTime - createdBy: BuildCreator -"""Custom environment variables passed to this build""" - env: [String!] -"""The time when the build finished""" - finishedAt: DateTime - id: ID! - jobs( -"""Returns the first _n_ elements from the list.""" - first: Int -"""Returns the elements in the list that come after the specified cursor.""" - after: String -"""Returns the last _n_ elements from the list.""" - last: Int -"""Returns the elements in the list that come before the specified cursor.""" - before: String - type: [JobTypes!] - state: [JobStates!] - priority: JobPrioritySearch - agentQueryRules: [String!] - concurrency: JobConcurrencySearch -"""Whether or not the command job passed. Passing `false` will return all failed jobs (including "soft failed" jobs)""" - passed: Boolean -"""Filtering jobs based on related step information""" - step: JobStepSearch -"""Order the jobs""" - order: JobOrder - ): JobConnection -"""The message for the build""" - message: String - metaData( - first: Int - last: Int - ): BuildMetaDataConnection -"""The number of the build""" - number: Int! - organization: Organization! - pipeline: Pipeline! - pullRequest: PullRequest -"""The build that this build was rebuilt from""" - rebuiltFrom: Build -"""The time when the build became scheduled for running""" - scheduledAt: DateTime -"""Where the build was created""" - source: BuildSource! -"""The time when the build started running""" - startedAt: DateTime -"""The current state of the build""" - state: BuildStates! -"""The job that this build was triggered from""" - triggeredFrom: JobTypeTrigger -"""The URL for the build""" - url: String! -"""The UUID for the build""" - uuid: String! -} - -"""Autogenerated input type of BuildAnnotate""" -input BuildAnnotateInput { -"""Autogenerated input type of BuildAnnotate""" - clientMutationId: String -"""Autogenerated input type of BuildAnnotate""" - buildID: ID! -"""Autogenerated input type of BuildAnnotate""" - body: String -"""Autogenerated input type of BuildAnnotate""" - style: AnnotationStyle -"""Autogenerated input type of BuildAnnotate""" - context: String -"""Autogenerated input type of BuildAnnotate""" - append: Boolean -"""Autogenerated input type of BuildAnnotate""" - priority: Int -} - -"""Autogenerated return type of BuildAnnotate.""" -type BuildAnnotatePayload { - annotation: Annotation - annotationEdge: AnnotationEdge - build: Build -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String -} +""" +Autogenerated input type of AgentStop +""" +input AgentStopInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String -"""Author for a build""" -input BuildAuthorInput { -"""Author for a build""" - name: String! -"""Author for a build""" - email: String! + """ + If this agent should finish the current job before stopping + """ + graceful: Boolean = true + id: ID! } -"""All the possible blocked states a build can be in""" -enum BuildBlockedStates { -"""The blocked build is running""" - RUNNING -"""The blocked build is passed""" - PASSED -"""The blocked build is failed""" - FAILED -} +""" +Autogenerated return type of AgentStop. +""" +type AgentStopPayload { + agent: Agent! -"""Autogenerated input type of BuildCancel""" -input BuildCancelInput { -"""Autogenerated input type of BuildCancel""" - clientMutationId: String -"""Autogenerated input type of BuildCancel""" - id: ID! + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String } -"""Autogenerated return type of BuildCancel.""" -type BuildCancelPayload { - build: Build! -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String +""" +A token used to connect an agent to Buildkite +""" +type AgentToken implements Node { + """ + The time this agent token was created + """ + createdAt: DateTime + + """ + The user that created this agent token + """ + createdBy: User + + """ + A description about what this agent token is used for + """ + description: String + id: ID! + organization: Organization + permissions: AgentTokenPermissions! + + """ + Whether agents registered with this token will be visible to everyone, including people outside this organization + """ + public: Boolean! + + """ + The time this agent token was revoked + """ + revokedAt: DateTime + + """ + The user that revoked this agent token + """ + revokedBy: User + + """ + The reason as defined by the user why this token was revoked + """ + revokedReason: String + + """ + The token value used to register a new agent + """ + token: String! @deprecated(reason: "Hiding these after creation to improve security. Use the `token_value` field on AgentTokenCreate instead.") + + """ + The public UUID for the agent + """ + uuid: ID! } -type BuildConnection implements Connection{ - count: Int! - edges: [BuildEdge] - pageInfo: PageInfo -} +""" +The connection type for AgentToken. +""" +type AgentTokenConnection implements Connection { + count: Int! -"""Autogenerated input type of BuildCreate""" -input BuildCreateInput { -"""Autogenerated input type of BuildCreate""" - clientMutationId: String -"""Autogenerated input type of BuildCreate""" - pipelineID: ID! -"""Autogenerated input type of BuildCreate""" - message: String -"""Autogenerated input type of BuildCreate""" - commit: String -"""Autogenerated input type of BuildCreate""" - branch: String -"""Autogenerated input type of BuildCreate""" - env: [String!] -"""Autogenerated input type of BuildCreate""" - metaData: [BuildMetaDataInput!] -"""Autogenerated input type of BuildCreate""" - author: BuildAuthorInput -} - -"""Autogenerated return type of BuildCreate.""" -type BuildCreatePayload { - build: Build -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String + """ + A list of edges. + """ + edges: [AgentTokenEdge] + pageInfo: PageInfo } -"""Either a `User` or an `UnregisteredUser` type""" -union BuildCreator =UnregisteredUser | User - -type BuildEdge { - cursor: String! - node: Build +""" +Autogenerated input type of AgentTokenCreate +""" +input AgentTokenCreateInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + description: String + organizationID: ID! + public: Boolean = false } -"""A comment on a build""" -type BuildMetaData { -"""The key used to set this meta data""" - key: String! -"""The value set to this meta data""" - value: String! -} +""" +Autogenerated return type of AgentTokenCreate. +""" +type AgentTokenCreatePayload { + agentTokenEdge: AgentTokenEdge! -type BuildMetaDataConnection implements Connection{ - count: Int! - edges: [BuildMetaDataEdge] - pageInfo: PageInfo -} + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + organization: Organization! -type BuildMetaDataEdge { - cursor: String! - node: BuildMetaData + """ + The token value used to register a new unclustered agent. Please ensure to + securely copy this value immediately upon generation as it will not be + displayed again. + """ + tokenValue: String! } -"""Meta-data key/value pairs for a build""" -input BuildMetaDataInput { -"""Meta-data key/value pairs for a build""" - key: String! -"""Meta-data key/value pairs for a build""" - value: String! -} +""" +An edge in a connection. +""" +type AgentTokenEdge { + """ + A cursor for use in pagination. + """ + cursor: String! -"""Autogenerated input type of BuildRebuild""" -input BuildRebuildInput { -"""Autogenerated input type of BuildRebuild""" - clientMutationId: String -"""Autogenerated input type of BuildRebuild""" - id: ID! + """ + The item at the end of the edge. + """ + node: AgentToken } -"""Autogenerated return type of BuildRebuild.""" -type BuildRebuildPayload { - build: Build! -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - rebuild: Build! +""" +Permissions information about what actions the current user can do against the agent token +""" +type AgentTokenPermissions { + """ + Whether the user can revoke this agent token + """ + agentTokenRevoke: Permission } -interface BuildSource { - name: String! -} +""" +Autogenerated input type of AgentTokenRevoke +""" +input AgentTokenRevokeInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! -"""A build was triggered via an API""" -type BuildSourceAPI implements BuildSource{ - name: String! + """ + The reason why this unclustered agent token should be revoked + """ + reason: String! } -"""A build was triggered manually via the frontend""" -type BuildSourceFrontend implements BuildSource{ - name: String! -} +""" +Autogenerated return type of AgentTokenRevoke. +""" +type AgentTokenRevokePayload { + agentToken: AgentToken! -"""A build was triggered via a schedule""" -type BuildSourceSchedule implements BuildSource{ - name: String! -"""The associated schedule that created this build. Will be `null` if the associated schedule has been deleted.""" - pipelineSchedule: PipelineSchedule + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String } -"""A build was triggered via a trigger job""" -type BuildSourceTriggerJob implements BuildSource{ - name: String! +""" +An annotation allows you to add arbitrary content to the top of a build page in the Buildkite UI +""" +type Annotation implements Node { + """ + The body of the annotation + """ + body: AnnotationBody + + """ + The context of the annotation that helps you differentiate this one from others + """ + context: String! + + """ + The date the annotation was created + """ + createdAt: DateTime! + id: ID! + + """ + The priority of the annotation + """ + priority: Int! + + """ + The scope of the annotation + """ + scope: AnnotationScope! + + """ + The visual style of the annotation + """ + style: AnnotationStyle + + """ + The last time the annotation was changed + """ + updatedAt: DateTime + + """ + The public UUID for this annotation + """ + uuid: ID! } -"""A build was triggered via a Webhook""" -type BuildSourceWebhook implements BuildSource{ -"""Provider specific headers sent along with the webhook. This will return null if the webhook has been purged by Buildkite.""" - headers: [String!] - name: String! -"""The body of the webhook. Buildkite only stores webhook data for a short period of time, so if this returns null - then the webhook data has been purged by Buildkite""" - payload: JSON -"""The UUID for this webhook. This will return null if the webhook has been purged by Buildkite""" - uuid: String -} +""" +A body of an annotation +""" +type AnnotationBody { + """ + The body of the annotation rendered as HTML. The renderer result could be an + empty string if the textual version has unsupported HTML tags + """ + html: String -"""All the possible states a build can be in""" -enum BuildStates { -"""The build was skipped""" - SKIPPED -"""The build is currently being created""" - CREATING -"""The build has yet to start running jobs""" - SCHEDULED -"""The build is currently running jobs""" - RUNNING -"""The build passed""" - PASSED -"""The build failed""" - FAILED -"""The build is failing""" - FAILING -"""The build is currently being canceled""" - CANCELING -"""The build was canceled""" - CANCELED -"""The build is blocked""" - BLOCKED -"""The build wasn't run""" - NOT_RUN -} - -"""The results of a `buildkite-agent pipeline upload`""" -type BuildStepUpload { -"""The uploaded step definition""" - definition: BuildStepUploadDefinition! - id: ID! -"""The UUID for this build step upload""" - uuid: ID! + """ + The body of the annotation as text + """ + text: String! } -"""The pipeline definition for a step upload""" -type BuildStepUploadDefinition { -"""The uploaded step definition rendered as JSON""" - json: String! -"""The uploaded step definition rendered as YAML""" - yaml: String! -} - -"""A changelog""" -type Changelog implements Node{ - author: ChangelogAuthor -"""The body of this changelog""" - body: String - id: ID! -"""The date and time this changelog was published""" - publishedAt: DateTime -"""The tag for this changelog""" - tag: String! -"""The title for this changelog""" - title: String! -"""The public UUID for this changelog""" - uuid: String! -} - -"""The author of the changelog""" -type ChangelogAuthor { - avatar: Avatar! -"""The name of the author""" - name: String! -} - -type ChangelogConnection implements Connection{ - count: Int! - edges: [ChangelogEdge] - pageInfo: PageInfo -} - -type ChangelogEdge { - cursor: String! - node: Changelog -} - -type Cluster implements Node{ -"""Returns agent tokens for the Cluster""" - agentTokens( - first: Int - last: Int - ): ClusterAgentTokenConnection -"""Color hex code for the cluster""" - color: String -"""User who created the cluster""" - createdBy: User -"""The default queue that agents connecting to the cluster without specifying a queue will accept jobs from""" - defaultQueue: ClusterQueue -"""Description of the cluster""" - description: String -"""Emoji for the cluster using Buildkite emoji syntax""" - emoji: String - id: ID! -"""Name of the cluster""" - name: String! - organization: Organization - queues( -"""Returns the first _n_ elements from the list.""" - first: Int -"""Returns the elements in the list that come after the specified cursor.""" - after: String -"""Returns the last _n_ elements from the list.""" - last: Int -"""Returns the elements in the list that come before the specified cursor.""" - before: String -"""Order the cluster queues""" - order: ClusterQueueOrder - ): ClusterQueueConnection -"""The public UUID for this cluster""" - uuid: ID! -} - -type ClusterAgentTokenConnection implements Connection{ - count: Int! - edges: [ClusterAgentTokenEdge] - pageInfo: PageInfo -} - -"""Autogenerated input type of ClusterAgentTokenCreate""" -input ClusterAgentTokenCreateInput { -"""Autogenerated input type of ClusterAgentTokenCreate""" - clientMutationId: String -"""Autogenerated input type of ClusterAgentTokenCreate""" - organizationId: ID! -"""Autogenerated input type of ClusterAgentTokenCreate""" - description: String! -"""Autogenerated input type of ClusterAgentTokenCreate""" - clusterId: ID! -"""Autogenerated input type of ClusterAgentTokenCreate""" - allowedIpAddresses: String -} - -"""Autogenerated return type of ClusterAgentTokenCreate.""" -type ClusterAgentTokenCreatePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - clusterAgentToken: ClusterToken! -"""The token value used to register a new agent token to this cluster. Please ensure to securely copy this value immediately upon generation as it will not be displayed again.""" - tokenValue: String! -} +""" +The connection type for Annotation. +""" +type AnnotationConnection implements Connection { + count: Int! -type ClusterAgentTokenEdge { - cursor: String! - node: ClusterToken + """ + A list of edges. + """ + edges: [AnnotationEdge] + pageInfo: PageInfo } -"""Autogenerated input type of ClusterAgentTokenRevoke""" -input ClusterAgentTokenRevokeInput { -"""Autogenerated input type of ClusterAgentTokenRevoke""" - clientMutationId: String -"""Autogenerated input type of ClusterAgentTokenRevoke""" - id: ID! -"""Autogenerated input type of ClusterAgentTokenRevoke""" - organizationId: ID! -} +""" +Autogenerated input type of AnnotationDelete +""" +input AnnotationDeleteInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String -"""Autogenerated return type of ClusterAgentTokenRevoke.""" -type ClusterAgentTokenRevokePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - deletedClusterAgentTokenId: ID! + """ + The GraphQL ID of the annotation to delete. + """ + id: ID! } -"""Autogenerated input type of ClusterAgentTokenUpdate""" -input ClusterAgentTokenUpdateInput { -"""Autogenerated input type of ClusterAgentTokenUpdate""" - clientMutationId: String -"""Autogenerated input type of ClusterAgentTokenUpdate""" - id: ID! -"""Autogenerated input type of ClusterAgentTokenUpdate""" - organizationId: ID! -"""Autogenerated input type of ClusterAgentTokenUpdate""" - description: String! -"""Autogenerated input type of ClusterAgentTokenUpdate""" - allowedIpAddresses: String -} - -"""Autogenerated return type of ClusterAgentTokenUpdate.""" -type ClusterAgentTokenUpdatePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - clusterAgentToken: ClusterToken! -} +""" +Autogenerated return type of AnnotationDelete. +""" +type AnnotationDeletePayload { + build: Build -type ClusterConnection implements Connection{ - count: Int! - edges: [ClusterEdge] - pageInfo: PageInfo + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + deletedAnnotationId: ID! } -"""Autogenerated input type of ClusterCreate""" -input ClusterCreateInput { -"""Autogenerated input type of ClusterCreate""" - clientMutationId: String -"""Autogenerated input type of ClusterCreate""" - organizationId: ID! -"""Autogenerated input type of ClusterCreate""" - name: String! -"""Autogenerated input type of ClusterCreate""" - description: String -"""Autogenerated input type of ClusterCreate""" - emoji: String -"""Autogenerated input type of ClusterCreate""" - color: String -} - -"""Autogenerated return type of ClusterCreate.""" -type ClusterCreatePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - cluster: Cluster! -} +""" +An edge in a connection. +""" +type AnnotationEdge { + """ + A cursor for use in pagination. + """ + cursor: String! -"""Autogenerated input type of ClusterDelete""" -input ClusterDeleteInput { -"""Autogenerated input type of ClusterDelete""" - clientMutationId: String -"""Autogenerated input type of ClusterDelete""" - organizationId: ID! -"""Autogenerated input type of ClusterDelete""" - id: ID! + """ + The item at the end of the edge. + """ + node: Annotation } -"""Autogenerated return type of ClusterDelete.""" -type ClusterDeletePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - deletedClusterId: ID! -} +""" +The different orders you can sort annotations by +""" +enum AnnotationOrder { + """ + Order by priority, then by the most recently created annotations first + """ + PRIORITY_RECENTLY_CREATED -type ClusterEdge { - cursor: String! - node: Cluster + """ + Order by the most recently created annotations first + """ + RECENTLY_CREATED } -"""The different orders you can sort clusters by""" -enum ClusterOrder { -"""Order by name alphabetically""" - NAME -"""Order by the most recently created clusters first""" - RECENTLY_CREATED -} +""" +The scope of the annotation +""" +enum AnnotationScope { + """ + The annotation is scoped to a build + """ + BUILD -type ClusterPermission { - actor: ClusterPermissionActor -"""Whether the actor can add pipelines to this cluster""" - can_add_pipelines: Boolean! -"""Whether the actor can manage the associated cluster""" - can_manage: Boolean! -"""Whether the actor can see this cluster's tokens""" - can_see_tokens: Boolean! - cluster: Cluster - id: ID! -"""The public UUID for this cluster permission""" - uuid: ID! -} - -"""Actor to whom a cluster permission is applied""" -union ClusterPermissionActor =OrganizationMember | Team - -type ClusterQueue implements Node{ - cluster: Cluster - createdBy: User - description: String -"""States whether job dispatch is paused for this cluster queue""" - dispatchPaused: Boolean! -"""The time this queue was paused""" - dispatchPausedAt: DateTime -"""The user who paused this cluster queue""" - dispatchPausedBy: User -"""Note describing why job dispatch was paused for this cluster queue""" - dispatchPausedNote: String - id: ID! - key: String! -"""The public UUID for this cluster queue""" - uuid: ID! -} - -type ClusterQueueConnection implements Connection{ - count: Int! - edges: [ClusterQueueEdge] - pageInfo: PageInfo -} - -"""Autogenerated input type of ClusterQueueCreate""" -input ClusterQueueCreateInput { -"""Autogenerated input type of ClusterQueueCreate""" - clientMutationId: String -"""Autogenerated input type of ClusterQueueCreate""" - organizationId: ID! -"""Autogenerated input type of ClusterQueueCreate""" - clusterId: ID! -"""Autogenerated input type of ClusterQueueCreate""" - key: String! -"""Autogenerated input type of ClusterQueueCreate""" - description: String -} - -"""Autogenerated return type of ClusterQueueCreate.""" -type ClusterQueueCreatePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - clusterQueue: ClusterQueue! + """ + The annotation is scoped to a job + """ + JOB } -"""Autogenerated input type of ClusterQueueDelete""" -input ClusterQueueDeleteInput { -"""Autogenerated input type of ClusterQueueDelete""" - clientMutationId: String -"""Autogenerated input type of ClusterQueueDelete""" - organizationId: ID! -"""Autogenerated input type of ClusterQueueDelete""" - id: ID! -} +""" +The visual style of the annotation +""" +enum AnnotationStyle { + """ + The default styling of an annotation + """ + DEFAULT -"""Autogenerated return type of ClusterQueueDelete.""" -type ClusterQueueDeletePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - deletedClusterQueueId: ID! -} + """ + The annotation has a red border with a cross next to it + """ + ERROR -type ClusterQueueEdge { - cursor: String! - node: ClusterQueue -} + """ + The annotation has a blue border with an information icon next to it + """ + INFO -"""The different orders you can sort cluster queues by""" -enum ClusterQueueOrder { -"""Order by key alphabetically""" - KEY -"""Order by the most recently created cluster queues first""" - RECENTLY_CREATED -} + """ + The annotation has a green border with a tick next to it + """ + SUCCESS -"""Autogenerated input type of ClusterQueuePauseDispatch""" -input ClusterQueuePauseDispatchInput { -"""Autogenerated input type of ClusterQueuePauseDispatch""" - clientMutationId: String -"""Autogenerated input type of ClusterQueuePauseDispatch""" - id: ID! -"""Autogenerated input type of ClusterQueuePauseDispatch""" - note: String + """ + The annotation has an orange border with a warning icon next to it + """ + WARNING } -"""Autogenerated return type of ClusterQueuePauseDispatch.""" -type ClusterQueuePauseDispatchPayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - queue: ClusterQueue! +""" +A file uploaded from the agent whilst running a job +""" +type Artifact implements Node { + """ + The download URL for the artifact. Unless you've used your own artifact + storage, the URL will be valid for only 10 minutes. + """ + downloadURL: String! + + """ + The time when the artifact will, or did, expire + """ + expiresAt: DateTime + id: ID! + + """ + The job that uploaded this artifact + """ + job: JobTypeCommand + + """ + The mime type of the file provided by the agent + """ + mimeType: String! + + """ + The path of the uploaded artifact + """ + path: String! + + """ + A SHA1SUM of the file + """ + sha1sum: String! + + """ + A SHA256SUM of the file + """ + sha256sum: String + + """ + The size of the file in bytes that was uploaded + """ + size: JSInt! + + """ + The upload state of the artifact + """ + state: String! + + """ + The public UUID for this artifact + """ + uuid: ID! } -"""Autogenerated input type of ClusterQueueResumeDispatch""" -input ClusterQueueResumeDispatchInput { -"""Autogenerated input type of ClusterQueueResumeDispatch""" - clientMutationId: String -"""Autogenerated input type of ClusterQueueResumeDispatch""" - id: ID! -} +""" +The connection type for Artifact. +""" +type ArtifactConnection implements Connection { + count: Int! -"""Autogenerated return type of ClusterQueueResumeDispatch.""" -type ClusterQueueResumeDispatchPayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - queue: ClusterQueue! -} - -"""A token used to register an agent with a Buildkite cluster queue""" -type ClusterQueueToken implements Node{ -"""A list of CIDR-notation IPv4 addresses from which agents can use this token. Please note that this feature is not yet available to all organizations""" - allowedIpAddresses: String - cluster: Cluster - clusterQueue: ClusterQueue - createdBy: User -"""A description for this cluster queue token""" - description: String! - id: ID! -"""The public UUID for this cluster queue token""" - uuid: ID! -} - -"""Autogenerated input type of ClusterQueueUpdate""" -input ClusterQueueUpdateInput { -"""Autogenerated input type of ClusterQueueUpdate""" - clientMutationId: String -"""Autogenerated input type of ClusterQueueUpdate""" - organizationId: ID! -"""Autogenerated input type of ClusterQueueUpdate""" - id: ID! -"""Autogenerated input type of ClusterQueueUpdate""" - description: String + """ + A list of edges. + """ + edges: [ArtifactEdge] + pageInfo: PageInfo } -"""Autogenerated return type of ClusterQueueUpdate.""" -type ClusterQueueUpdatePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - clusterQueue: ClusterQueue! -} - -"""A token used to connect an agent in cluster to Buildkite""" -type ClusterToken implements Node{ -"""A list of CIDR-notation IPv4 addresses from which agents can use this token. Please note that this feature is not yet available to all organizations""" - allowedIpAddresses: String - cluster: Cluster - createdBy: User -"""A description about what this cluster agent token is used for""" - description: String - id: ID! -"""The token value used to register a new agent to this tokens cluster. This will soon return an empty string before we finally remove this field.""" - token: String! -"""The public UUID for this cluster token""" - uuid: ID! -} - -"""Autogenerated input type of ClusterUpdate""" -input ClusterUpdateInput { -"""Autogenerated input type of ClusterUpdate""" - clientMutationId: String -"""Autogenerated input type of ClusterUpdate""" - organizationId: ID! -"""Autogenerated input type of ClusterUpdate""" - id: ID! -"""Autogenerated input type of ClusterUpdate""" - name: String -"""Autogenerated input type of ClusterUpdate""" - description: String -"""Autogenerated input type of ClusterUpdate""" - emoji: String -"""Autogenerated input type of ClusterUpdate""" - color: String -"""Autogenerated input type of ClusterUpdate""" - defaultQueueId: ID -} - -"""Autogenerated return type of ClusterUpdate.""" -type ClusterUpdatePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - cluster: Cluster! -} +""" +Autogenerated input type of ArtifactDelete +""" +input ArtifactDeleteInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String -interface Connection { - count: Int! - pageInfo: PageInfo + """ + The GraphQL ID of the artifact to delete. + """ + id: ID! } -"""An ISO-8601 encoded UTC date string""" -scalar DateTime +""" +Autogenerated return type of ArtifactDelete. +""" +type ArtifactDeletePayload { + artifact: Artifact -type Dependency { -"""Is this dependency allowed to fail""" - allowFailure: Boolean! - id: ID! -"""The step key or step identifier that this step depends on""" - key: String -"""The UUID for this dependency""" - uuid: ID! + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + deletedArtifactId: ID! } -type DependencyConnection implements Connection{ - count: Int! - edges: [DependencyEdge] - pageInfo: PageInfo -} +""" +An edge in a connection. +""" +type ArtifactEdge { + """ + A cursor for use in pagination. + """ + cursor: String! -type DependencyEdge { - cursor: String! - node: Dependency + """ + The item at the end of the edge. + """ + node: Artifact } -"""A job dispatch for a particular Organization""" -type Dispatch { - id: ID! -"""The public UUID for this organization dispatch""" - uuid: String! -} +""" +All the possible states an artifact can be in +""" +enum ArtifactStates { + """ + The artifact has been deleted + """ + DELETED -"""An email address""" -type Email implements Node{ -"""The email address""" - address: String! - id: ID! -"""Whether the email address is the user's primary address""" - primary: Boolean! -"""The public UUID for this email""" - uuid: ID! -"""Whether the email address has been verified by the user""" - verified: Boolean! -} + """ + The artifact failed to upload + """ + ERROR -"""The connection type for Email.""" -type EmailConnection implements Connection{ - count: Int! -"""A list of edges.""" - edges: [EmailEdge] -"""A list of nodes.""" - nodes: [Email] - pageInfo: PageInfo -} + """ + The artifact has aged out of its retention window + """ + EXPIRED -"""Autogenerated input type of EmailCreate""" -input EmailCreateInput { -"""Autogenerated input type of EmailCreate""" - clientMutationId: String -"""Autogenerated input type of EmailCreate""" - address: String! -} + """ + The artifact was uploaded successfully + """ + FINISHED -"""Autogenerated return type of EmailCreate.""" -type EmailCreatePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - emailEdge: EmailEdge! - viewer: Viewer! + """ + The artifact has been registered but not yet uploaded + """ + NEW } -"""An edge in a connection.""" -type EmailEdge { -"""A cursor for use in pagination.""" - cursor: String! -"""The item at the end of the edge.""" - node: Email -} +""" +Context for an audit event created during an REST/GraphQL API request +""" +type AuditAPIContext { + """ + The API access token UUID used to authenticate the request + """ + requestApiAccessTokenUuid: String -"""Autogenerated input type of EmailResendVerification""" -input EmailResendVerificationInput { -"""Autogenerated input type of EmailResendVerification""" - clientMutationId: String -"""Autogenerated input type of EmailResendVerification""" - id: ID! -} + """ + The remote IP which made the request + """ + requestIpAddress: String -"""Autogenerated return type of EmailResendVerification.""" -type EmailResendVerificationPayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - email: Email! + """ + The client supplied user agent which made the request + """ + requestUserAgent: String } -"""A shared GraphQL query""" -type GraphQLSnippet { -"""When this GraphQL snippet was created""" - createdAt: DateTime! - id: ID! -"""The default operation name for this snippet""" - operationName: String -"""The query of this GraphQL snippet""" - query: String! -"""The URL for the GraphQL snippet""" - url: String! -"""The public UUID for this snippet""" - uuid: ID! -} - -"""Autogenerated input type of GraphQLSnippetCreate""" -input GraphQLSnippetCreateInput { -"""Autogenerated input type of GraphQLSnippetCreate""" - clientMutationId: String -"""Autogenerated input type of GraphQLSnippetCreate""" - query: String! -"""Autogenerated input type of GraphQLSnippetCreate""" - operationName: ID -} +""" +The actor who caused an AuditEvent +""" +type AuditActor { + """ + The GraphQL ID for this actor + """ + id: ID! -"""Autogenerated return type of GraphQLSnippetCreate.""" -type GraphQLSnippetCreatePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - graphQLSnippet: GraphQLSnippet! -} + """ + The name or short description of this actor + """ + name: String -"""Represents a unique identifier that is Base64 obfuscated. It is often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `"VXNlci0xMA=="`) or integer (such as `4`) input value will be accepted as an ID.""" -scalar ID + """ + The node corresponding to this actor, if available + """ + node: AuditActorNode -"""An ISO 8601-encoded date""" -scalar ISO8601Date + """ + The type of this actor + """ + type: AuditActorType -"""Represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.""" -scalar Int + """ + The public UUID of this actor + """ + uuid: ID! +} -"""Represents non-fractional signed whole numeric values. +""" +Kinds of actors which can perform audit events +""" +union AuditActorNode = APIApplication | Agent | User -`JSInt` can represent values between -(2^53) + 1 and 2^53 - 1. """ -scalar JSInt +All the possible types of actors in an Audit Event +""" +enum AuditActorType { + AGENT + API_APPLICATION + USER +} -"""A blob of JSON represented as a pretty formatted string""" -scalar JSON +""" +Context for an audit event created during an agent API request +""" +type AuditAgentAPIContext { + """ + The agent UUID + """ + agentUuid: String -"""Kinds of jobs that can exist on a build""" -union Job =JobTypeBlock | JobTypeCommand | JobTypeTrigger | JobTypeWait + """ + The type of token that authenticated the agent + """ + authenticationType: String -"""Concurrency configuration for a job""" -type JobConcurrency { -"""The concurrency group""" - group: String! -"""The maximum amount of jobs in the concurrency that are allowed to run at any given time""" - limit: Int! -} + """ + The connection state of the agent + """ + connectionState: String -"""Searching for concurrency groups on jobs""" -input JobConcurrencySearch { -"""Searching for concurrency groups on jobs""" - group: [String!] -} + """ + The organization UUID that the agent belongs to + """ + organizationUuid: String -type JobConnection implements Connection{ - count: Int! - edges: [JobEdge] - pageInfo: PageInfo -} + """ + The remote IP which made the request + """ + requestIpAddress: String -type JobEdge { - cursor: String! - node: Job + """ + The IP of the agent session which made the request + """ + sessionIpAddress: String } -interface JobEvent { - actor: JobEventActor! - id: ID! - job: JobTypeCommand! - timestamp: DateTime! - type: JobEventType! - uuid: ID! +""" +Kinds of contexts in which an audit event can be performed +""" +union AuditContext = AuditAPIContext | AuditAgentAPIContext | AuditWebContext + +""" +Audit record of an event which occurred in the system +""" +type AuditEvent implements Node { + """ + The actor who caused this event + """ + actor: AuditActor + + """ + The context in which this event occurred + """ + context: AuditContext + + """ + The changed data in the event + """ + data: JSON + id: ID! + + """ + The time at which this event occurred + """ + occurredAt: DateTime! + + """ + The subject of this event + """ + subject: AuditSubject + + """ + The type of event + """ + type: AuditEventType! + + """ + The public UUID for the event + """ + uuid: ID! } -"""The actor who was responsible for the job event""" -type JobEventActor { -"""The node corresponding to this actor if available""" - node: JobEventActorNodeUnion -"""The type of this actor""" - type: JobEventActorType! -"""The public UUID of this actor if available""" - uuid: ID +""" +All the possible types of an Audit Event +""" +enum AuditEventType { + AGENT_TOKEN_CREATED + AGENT_TOKEN_REVOKED + AGENT_TOKEN_UPDATED + API_ACCESS_TOKEN_CREATED + API_ACCESS_TOKEN_DELETED + API_ACCESS_TOKEN_ORGANIZATION_ACCESS_REVOKED + API_ACCESS_TOKEN_UPDATED + API_APPLICATION_CREATED + API_APPLICATION_DELETED + API_APPLICATION_DISABLED + API_APPLICATION_ENABLED + API_APPLICATION_UPDATED + AUTHORIZATION_CREATED + AUTHORIZATION_DELETED + BUILD_PAGE_SETTING_CREATED + BUILD_PAGE_SETTING_DESTROYED + BUILD_PAGE_SETTING_UPDATED + CACHE_REGISTRY_CREATED + CACHE_REGISTRY_DELETED + CACHE_REGISTRY_UPDATED + CLUSTER_CREATED + CLUSTER_DELETED + CLUSTER_PERMISSION_CREATED + CLUSTER_PERMISSION_DELETED + CLUSTER_QUEUE_CREATED + CLUSTER_QUEUE_DELETED + CLUSTER_QUEUE_MIGRATION_CREATED + CLUSTER_QUEUE_TOKEN_CREATED + CLUSTER_QUEUE_TOKEN_DELETED + CLUSTER_QUEUE_TOKEN_UPDATED + CLUSTER_QUEUE_UPDATED + CLUSTER_TOKEN_CREATED + CLUSTER_TOKEN_DELETED + CLUSTER_TOKEN_UPDATED + CLUSTER_UPDATED + COMPOSITE_REGISTRY_UPSTREAM_ADDED + COMPOSITE_REGISTRY_UPSTREAM_REMOVED + CREDIT_CARD_ADDED + CREDIT_CARD_REMOVED + JOB_TERMINAL_SESSION_STARTED + MODEL_PROVIDER_CREATED + MODEL_PROVIDER_DELETED + MODEL_PROVIDER_UPDATED + NOTIFICATION_SERVICE_BROKEN + NOTIFICATION_SERVICE_CREATED + NOTIFICATION_SERVICE_DELETED + NOTIFICATION_SERVICE_DISABLED + NOTIFICATION_SERVICE_ENABLED + NOTIFICATION_SERVICE_UPDATED + OAUTH_APPLICATION_AUTHORIZED + ORGANIZATION_BANNER_CREATED + ORGANIZATION_BANNER_DELETED + ORGANIZATION_BANNER_UPDATED + ORGANIZATION_BILLING_SETTING_UPDATED + ORGANIZATION_BUILD_EXPORT_UPDATED + ORGANIZATION_CREATED + ORGANIZATION_DELETED + ORGANIZATION_IMPERSONATION_REQUEST_APPROVED + ORGANIZATION_IMPERSONATION_REQUEST_REVOKED + ORGANIZATION_INVITATION_ACCEPTED + ORGANIZATION_INVITATION_CREATED + ORGANIZATION_INVITATION_RESENT + ORGANIZATION_INVITATION_REVOKED + ORGANIZATION_MEMBER_CREATED + ORGANIZATION_MEMBER_DELETED + ORGANIZATION_MEMBER_UPDATED + ORGANIZATION_SECURITY_SETTINGS_UPDATED + ORGANIZATION_TEAMS_DISABLED + ORGANIZATION_TEAMS_ENABLED + ORGANIZATION_UPDATED + PIPELINE_CREATED + PIPELINE_DELETED + PIPELINE_SCHEDULE_CREATED + PIPELINE_SCHEDULE_DELETED + PIPELINE_SCHEDULE_UPDATED + PIPELINE_TEMPLATE_CREATED + PIPELINE_TEMPLATE_DELETED + PIPELINE_TEMPLATE_UPDATED + PIPELINE_TRIGGER_CREATED + PIPELINE_TRIGGER_DELETED + PIPELINE_TRIGGER_UPDATED + PIPELINE_UPDATED + PIPELINE_VISIBILITY_CHANGED + PIPELINE_WEBHOOK_URL_ROTATED + PORTAL_CREATED + PORTAL_DELETED + PORTAL_SECRET_CREATED + PORTAL_SECRET_DELETED + PORTAL_TOKEN_CODE_AUTHORIZED + PORTAL_TOKEN_CREATED + PORTAL_TOKEN_DELETED + PORTAL_UPDATED + REGISTRY_CREATED + REGISTRY_DELETED + REGISTRY_TOKEN_CREATED + REGISTRY_TOKEN_DELETED + REGISTRY_TOKEN_UPDATED + REGISTRY_UPDATED + REGISTRY_VISIBILITY_CHANGED + RULE_CREATED + RULE_DELETED + RULE_UPDATED + SCM_PIPELINE_SETTINGS_CREATED + SCM_PIPELINE_SETTINGS_DELETED + SCM_PIPELINE_SETTINGS_UPDATED + SCM_REPOSITORY_HOST_CREATED + SCM_REPOSITORY_HOST_DESTROYED + SCM_REPOSITORY_HOST_UPDATED + SCM_SERVICE_CREATED + SCM_SERVICE_DELETED + SCM_SERVICE_UPDATED + SECRET_CREATED + SECRET_DELETED + SECRET_QUERIED + SECRET_READ + SECRET_UPDATED + SECRET_VALUE_UPDATED + SSO_PROVIDER_CREATED + SSO_PROVIDER_DELETED + SSO_PROVIDER_DISABLED + SSO_PROVIDER_ENABLED + SSO_PROVIDER_UPDATED + STORAGE_CREATED + SUBSCRIPTION_ACTIVATED + SUBSCRIPTION_CANCELED + SUBSCRIPTION_CREATED + SUBSCRIPTION_PLAN_ADDED + SUBSCRIPTION_PLAN_CANCELATION_SCHEDULED + SUBSCRIPTION_PLAN_CANCELED + SUBSCRIPTION_PLAN_CHANGED + SUBSCRIPTION_PLAN_CHANGE_SCHEDULED + SUBSCRIPTION_SCHEDULED_PLAN_CHANGE_CANCELED + SUBSCRIPTION_TRIAL_EXPIRED + SUITE_API_TOKEN_REGENERATED + SUITE_CREATED + SUITE_DELETED + SUITE_MONITOR_CREATED + SUITE_MONITOR_DELETED + SUITE_MONITOR_UPDATED + SUITE_SAVED_VIEW_CREATED + SUITE_SAVED_VIEW_DELETED + SUITE_UPDATED + SUITE_VISIBILITY_CHANGED + SUITE_WORKFLOW_CREATED + SUITE_WORKFLOW_DELETED + SUITE_WORKFLOW_UPDATED + TEAM_CREATED + TEAM_DELETED + TEAM_MEMBER_CREATED + TEAM_MEMBER_DELETED + TEAM_MEMBER_UPDATED + TEAM_PIPELINE_CREATED + TEAM_PIPELINE_DELETED + TEAM_PIPELINE_UPDATED + TEAM_REGISTRY_CREATED + TEAM_REGISTRY_DELETED + TEAM_REGISTRY_UPDATED + TEAM_SECRET_CREATED + TEAM_SECRET_DELETED + TEAM_SECRET_UPDATED + TEAM_SUITE_CREATED + TEAM_SUITE_DELETED + TEAM_SUITE_UPDATED + TEAM_UPDATED + TEST_ENGINE_SAVED_VIEW_CREATED + TEST_ENGINE_SAVED_VIEW_DELETED + TEST_ENGINE_SAVED_VIEW_UPDATED + USER_API_ACCESS_TOKEN_ORGANIZATION_ACCESS_ADDED + USER_API_ACCESS_TOKEN_ORGANIZATION_ACCESS_REMOVED + USER_EMAIL_BUILD_NOTIFICATIONS_SUPPRESSED + USER_EMAIL_BUILD_NOTIFICATIONS_UNSUPPRESSED + USER_EMAIL_CREATED + USER_EMAIL_DELETED + USER_EMAIL_MARKED_PRIMARY + USER_EMAIL_VERIFIED + USER_IMPERSONATED + USER_PASSWORD_RESET + USER_PASSWORD_RESET_REQUESTED + USER_TOTP_ACTIVATED + USER_TOTP_CREATED + USER_TOTP_DELETED + USER_UPDATED } -"""Actor types that can create events on a job""" -union JobEventActorNodeUnion =Agent | Dispatch | User +""" +The subject of an AuditEvent +""" +type AuditSubject { + """ + The GraphQL ID for the subject + """ + id: ID! -"""All the actors that can have created a job event""" -enum JobEventActorType { -"""The actor was a user""" - USER -"""The actor was an agent""" - AGENT -"""The actor was the system""" - SYSTEM -"""The actor was the dispatcher""" - DISPATCH -} - -"""An event created when the dispatcher assigns the job to an agent""" -type JobEventAssigned implements JobEvent & Node{ -"""The actor that caused this event to occur""" - actor: JobEventActor! -"""The agent the job was assigned to""" - assignedAgent: Agent - id: ID! -"""The job that this event belongs to""" - job: JobTypeCommand! -"""The time when the event occurred""" - timestamp: DateTime! -"""The type of event""" - type: JobEventType! -"""The public UUID for this job event""" - uuid: ID! -} - -"""An event created when the job creates new build steps via pipeline upload""" -type JobEventBuildStepUploadCreated implements JobEvent & Node{ -"""The actor that caused this event to occur""" - actor: JobEventActor! - buildStepUpload: BuildStepUpload! - id: ID! -"""The job that this event belongs to""" - job: JobTypeCommand! -"""The time when the event occurred""" - timestamp: DateTime! -"""The type of event""" - type: JobEventType! -"""The public UUID for this job event""" - uuid: ID! -} - -"""An event created when the job is canceled""" -type JobEventCanceled implements JobEvent & Node{ -"""The actor that caused this event to occur""" - actor: JobEventActor! - exitStatus: JSInt! - id: ID! -"""The job that this event belongs to""" - job: JobTypeCommand! -"""The termination signal which killed the command, if the command was killed""" - signal: String -"""If the termination signal was sent by the agent, the reason the agent took that action. If this field is null, and the `signal` field is not null, the command was killed by another process or by the operating system.""" - signalReason: JobEventSignalReason -"""The time when the event occurred""" - timestamp: DateTime! -"""The type of event""" - type: JobEventType! -"""The public UUID for this job event""" - uuid: ID! -} - -type JobEventConnection implements Connection{ - count: Int! - edges: [JobEventEdge] - pageInfo: PageInfo -} + """ + The name or short description of this subject + """ + name: String -type JobEventEdge { - cursor: String! - node: JobEvent! -} - -"""An event created when the job is finished""" -type JobEventFinished implements JobEvent & Node{ -"""The actor that caused this event to occur""" - actor: JobEventActor! -"""The exit status returned by the command on the agent. A value of `-1` indicates either that the agent was lost or the process was killed. If the process was killed, the `signal` field will be non-null.""" - exitStatus: JSInt! - id: ID! -"""The job that this event belongs to""" - job: JobTypeCommand! -"""The termination signal which killed the command, if the command was killed""" - signal: String -"""If the termination signal was sent by the agent, the reason the agent took that action. If this field is null, and the `signal` field is not null, the command was killed by another process or by the operating system.""" - signalReason: JobEventSignalReason -"""The time when the event occurred""" - timestamp: DateTime! -"""The type of event""" - type: JobEventType! -"""The public UUID for this job event""" - uuid: ID! -} - -"""A generic event type that doesn't have any additional meta-information associated with the event""" -type JobEventGeneric implements JobEvent & Node{ -"""The actor that caused this event to occur""" - actor: JobEventActor! - id: ID! -"""The job that this event belongs to""" - job: JobTypeCommand! -"""The time when the event occurred""" - timestamp: DateTime! -"""The type of event""" - type: JobEventType! -"""The public UUID for this job event""" - uuid: ID! -} - -"""An event created when the job is retried""" -type JobEventRetried implements JobEvent & Node{ -"""The actor that caused this event to occur""" - actor: JobEventActor! - automaticRule: JobRetryRuleAutomatic - id: ID! -"""The job that this event belongs to""" - job: JobTypeCommand! - retriedInJob: JobTypeCommand -"""The time when the event occurred""" - timestamp: DateTime! -"""The type of event""" - type: JobEventType! -"""The public UUID for this job event""" - uuid: ID! -} - -"""The reason why a signal was sent to the job's process, or why the process did not start""" -enum JobEventSignalReason { -"""The agent sent the signal to the process because the agent was stopped""" - AGENT_STOP -"""The agent sent the signal to the process because the job was canceled""" - CANCEL -"""The agent was unable to start the job process, often due to memory or resource constraints. Note that in this case, no signal was sent to the process, it simply never started.""" - PROCESS_RUN_ERROR -"""The agent refused the job. Note that in this case, no signal was sent to the process, the job was not run at all.""" - AGENT_REFUSED -"""The agent refused the job because the signature could not be verified. Note that in this case, no signal was sent to the process, the job was not run at all.""" - SIGNATURE_REJECTED -} - -"""An event created when the job is timed out""" -type JobEventTimedOut implements JobEvent & Node{ -"""The actor that caused this event to occur""" - actor: JobEventActor! - exitStatus: JSInt! - id: ID! -"""The job that this event belongs to""" - job: JobTypeCommand! -"""The termination signal which killed the command, if the command was killed""" - signal: String -"""If the termination signal was sent by the agent, the reason the agent took that action. If this field is null, and the `signal` field is not null, the command was killed by another process or by the operating system.""" - signalReason: JobEventSignalReason -"""The time when the event occurred""" - timestamp: DateTime! -"""The type of event""" - type: JobEventType! -"""The public UUID for this job event""" - uuid: ID! -} - -"""All the possible types of events that happen to a Job""" -enum JobEventType { -"""The Job was assigned to an agent""" - ASSIGNED -"""The agent took too long to accept the job""" - ASSIGNED_EXPIRED -"""The Job was accepted by an agent""" - ACCEPTED -"""The agent took too long to start the job""" - ACCEPTED_EXPIRED -"""The Job was started by an agent""" - STARTED -"""The Job was finished by an agent""" - FINISHED -"""The Job was canceled""" - CANCELED -"""The Job was timed out""" - TIMED_OUT -"""The Job was retried either automatically or by a user""" - RETRIED -"""The Job was changed""" - CHANGED -"""The Job was unblocked by a user""" - UNBLOCKED -"""The Job was scheduled""" - SCHEDULED -"""The Job sent a notification""" - NOTIFICATION -"""The Job was marked for cancelation by a user""" - CANCELATION -"""The Job is limited by a concurrency group""" - LIMITED -"""The Job uploaded steps to the current build""" - BUILD_STEP_UPLOAD_CREATED -"""The Job expired before it was started on an agent""" - EXPIRED -"""The agent was stopped while processing this job""" - AGENT_STOPPED -"""The agent disconnected while processing this job""" - AGENT_DISCONNECTED -"""The agent was lost while processing this job""" - AGENT_LOST -"""The job log exceeded the limit""" - LOG_SIZE_LIMIT_EXCEEDED -} + """ + The node corresponding to the subject, if available + """ + node: AuditSubjectNode -interface JobInterface { - retried: Boolean! - retriedBy: User - retriesCount: Int - retrySource: Job - retryType: JobRetryTypes - uuid: String! -} + """ + The type of this subject + """ + type: AuditSubjectType -"""A record of job minutes usage, aggregated by day and pipeline.""" -type JobMinutesUsage implements ResourceUsageInterface{ - aggregatedOn: ISO8601Date! - pipeline: Pipeline - pipelineId: ID! -"""The recorded usage in seconds. For billing purposes, seconds are summed for a billing period and rounded down to the nearest minute.""" - seconds: Int! + """ + The public UUID of this subject + """ + uuid: ID! } -"""The different orders you can sort jobs by""" -enum JobOrder { -"""Order by the most recently assigned jobs first""" - RECENTLY_ASSIGNED -"""Order by the most recently created jobs first""" - RECENTLY_CREATED -} +""" +Kinds of subjects which can have audit events performed on them +""" +union AuditSubjectNode = APIAccessToken | APIApplication | AgentToken | AuthorizationBitbucket | AuthorizationGitHub | AuthorizationGitHubEnterprise | Cluster | ClusterPermission | ClusterQueue | ClusterQueueToken | ClusterToken | CompositeRegistryUpstream | Email | JobTypeBlock | JobTypeCommand | JobTypeTrigger | JobTypeWait | NotificationServiceOpenTelemetryTracing | NotificationServiceSlack | NotificationServiceWebhook | Organization | OrganizationBanner | OrganizationImpersonationRequest | OrganizationInvitation | OrganizationMember | OrganizationRepositoryProviderCursorOrigin | OrganizationRepositoryProviderGitHub | OrganizationRepositoryProviderGitHubEnterpriseServer | Pipeline | PipelineSchedule | PipelineTemplate | Registry | RegistryToken | Rule | SCMPipelineSettings | SCMRepositoryHost | SCMService | SSOProviderGitHubApp | SSOProviderGoogleGSuite | SSOProviderSAML | Secret | Subscription | Suite | TOTP | Team | TeamMember | TeamPipeline | TeamRegistry | TeamSuite | User -"""The priority with which a job will run""" -type JobPriority { - number: Int +""" +All the possible types of subjects in an Audit Event +""" +enum AuditSubjectType { + AGENT_TOKEN + API_ACCESS_TOKEN + API_APPLICATION + AUTHORIZATION + CACHE_REGISTRY + CLUSTER + CLUSTER_PERMISSION + CLUSTER_QUEUE + CLUSTER_QUEUE_TOKEN + CLUSTER_TOKEN + COMPOSITE_REGISTRY_UPSTREAM + CREDIT_CARD + JOB + MODEL_PROVIDER + NOTIFICATION_SERVICE + ORGANIZATION + ORGANIZATION_BANNER + ORGANIZATION_BILLING_SETTING + ORGANIZATION_IMPERSONATION_REQUEST + ORGANIZATION_INVITATION + ORGANIZATION_MEMBER + ORGANIZATION_SECURITY_SETTING + PIPELINE + PIPELINE_SCHEDULE + PIPELINE_TEMPLATE + PIPELINE_TRIGGER + PORTAL + PORTAL_SECRET + PORTAL_TOKEN + PORTAL_TOKEN_CODE + REGISTRY + REGISTRY_TOKEN + RULE + SCM_PIPELINE_SETTINGS + SCM_REPOSITORY_HOST + SCM_SERVICE + SECRET + SSO_PROVIDER + SUBSCRIPTION + SUITE + SUITE_MONITOR + SUITE_SAVED_VIEW + SUITE_WORKFLOW + TEAM + TEAM_MEMBER + TEAM_PIPELINE + TEAM_REGISTRY + TEAM_SECRET + TEAM_SUITE + USER + USER_EMAIL + USER_TOTP } -"""Search jobs by priority""" -input JobPrioritySearch { -"""Search jobs by priority""" - number: [Int!] -} +""" +Context for an audit event created during a web request +""" +type AuditWebContext { + """ + The remote IP which made the request + """ + requestIpAddress: String -"""Automatic retry rule configuration""" -type JobRetryRuleAutomatic { - exitStatus: String - limit: String - signal: String - signalReason: String -} + """ + The client supplied user agent which made the request + """ + requestUserAgent: String -"""Retry Rules for a job""" -type JobRetryRules { - automatic: [JobRetryRuleAutomatic] - manual: Boolean -} + """ + When the session started, if available + """ + sessionCreatedAt: DateTime -"""The retry types that can be made on a Job""" -enum JobRetryTypes { - MANUAL - AUTOMATIC -} + """ + When the session was escalated, if available and escalated + """ + sessionEscalatedAt: DateTime -"""All the possible states a job can be in""" -enum JobStates { -"""The job has just been created and doesn't have a state yet""" - PENDING -"""The job is waiting on a `wait` step to finish""" - WAITING -"""The job was in a `WAITING` state when the build failed""" - WAITING_FAILED -"""The job is waiting on a `block` step to finish""" - BLOCKED -"""The job was in a `BLOCKED` state when the build failed""" - BLOCKED_FAILED -"""This `block` job has been manually unblocked""" - UNBLOCKED -"""This `block` job was in an `UNBLOCKED` state when the build failed""" - UNBLOCKED_FAILED -"""The job is waiting on a concurrency group check before becoming either `LIMITED` or `SCHEDULED`""" - LIMITING -"""The job is waiting for jobs with the same concurrency group to finish""" - LIMITED -"""The job is scheduled and waiting for an agent""" - SCHEDULED -"""The job has been assigned to an agent, and it's waiting for it to accept""" - ASSIGNED -"""The job was accepted by the agent, and now it's waiting to start running""" - ACCEPTED -"""The job is running""" - RUNNING -"""The job has finished""" - FINISHED -"""The job is currently canceling""" - CANCELING -"""The job was canceled""" - CANCELED -"""The job is timing out for taking too long""" - TIMING_OUT -"""The job timed out""" - TIMED_OUT -"""The job was skipped""" - SKIPPED -"""The jobs configuration means that it can't be run""" - BROKEN -"""The job expired before it was started on an agent""" - EXPIRED -} - -"""Searching for jobs based on step information""" -input JobStepSearch { -"""Searching for jobs based on step information""" - key: [String!] -} - -"""A type of job that requires a user to unblock it before proceeding in a build pipeline""" -type JobTypeBlock implements JobInterface & Node{ -"""The build that this job is a part of""" - build: Build - id: ID! -"""Whether or not this job can be unblocked yet (may be waiting on another job to finish)""" - isUnblockable: Boolean -"""The label of this block step""" - label: String -"""If this job has been retried""" - retried: Boolean! -"""The user that retried this job""" - retriedBy: User -"""The number of times the job has been retried""" - retriesCount: Int -"""The job that was retried to create this job""" - retrySource: Job -"""The type of retry that was performed on this job""" - retryType: JobRetryTypes -"""The state of the job""" - state: JobStates! -"""The step that defined this job. Some older jobs in the system may not have an associated step""" - step: StepInput -"""The time when the job was created""" - unblockedAt: DateTime -"""The user that unblocked this job""" - unblockedBy: User -"""The UUID for this job""" - uuid: String! -} - -"""Autogenerated input type of JobTypeBlockUnblock""" -input JobTypeBlockUnblockInput { -"""Autogenerated input type of JobTypeBlockUnblock""" - clientMutationId: String -"""Autogenerated input type of JobTypeBlockUnblock""" - id: ID! -"""Autogenerated input type of JobTypeBlockUnblock""" - fields: JSON -} + """ + The session's authenticated user, if available + """ + sessionUser: User -"""Autogenerated return type of JobTypeBlockUnblock.""" -type JobTypeBlockUnblockPayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - jobTypeBlock: JobTypeBlock! -} - -"""A type of job that runs a command on an agent""" -type JobTypeCommand implements JobInterface & Node{ -"""The agent that is running the job""" - agent: Agent -"""The ruleset used to find an agent to run this job""" - agentQueryRules: [String!] -"""Artifacts uploaded to this job""" - artifacts( - first: Int - last: Int - ): ArtifactConnection -"""A glob of files to automatically upload after the job finishes""" - automaticArtifactUploadPaths: String -"""The build that this job is a part of""" - build: Build -"""The time when the job was cancelled""" - canceledAt: DateTime -"""The cluster of this job""" - cluster: Cluster -"""The cluster queue of this job""" - clusterQueue: ClusterQueue -"""The command the job will run""" - command: String -"""Concurrency information related to a job""" - concurrency: JobConcurrency -"""The time when the job was created""" - createdAt: DateTime -"""Environment variables for this job""" - env: [String!] -"""Job events""" - events( -"""Returns the first _n_ elements from the list.""" - first: Int -"""Returns the elements in the list that come after the specified cursor.""" - after: String -"""Returns the last _n_ elements from the list.""" - last: Int -"""Returns the elements in the list that come before the specified cursor.""" - before: String - ): JobEventConnection! -"""The exit status returned by the command on the agent""" - exitStatus: String -"""The time when the job was expired""" - expiredAt: DateTime -"""The time when the job finished""" - finishedAt: DateTime - id: ID! -"""The label of the job""" - label: String -"""The matrix configuration values for this particular job""" - matrix: JSON -"""The index of this job within the parallel job group it is a part of. Null if this job is not part of a parallel job group.""" - parallelGroupIndex: Int -"""The total number of jobs in the parallel job group this job is a part of. Null if this job is not part of a parallel job group.""" - parallelGroupTotal: Int -"""If the job has finished and passed""" - passed: Boolean! -"""The pipeline that this job is a part of""" - pipeline: Pipeline -"""The priority of this job""" - priority: JobPriority! -"""If this job has been retried""" - retried: Boolean! -"""The user that retried this job""" - retriedBy: User -"""The number of times the job has been retried""" - retriesCount: Int -"""Job retry rules""" - retryRules: JobRetryRules -"""The job that was retried to create this job""" - retrySource: Job -"""The type of retry that was performed on this job""" - retryType: JobRetryTypes -"""The time when the job became available to be run by an agent""" - runnableAt: DateTime -"""The time when the job became scheduled for running""" - scheduledAt: DateTime -"""The termination signal which killed the command, if the command was killed""" - signal: String -"""If the termination signal was sent by the agent, the reason the agent took that action. If this field is null, and the `signal` field is not null, the command was killed by another process or by the operating system.""" - signalReason: JobEventSignalReason -"""If the job soft failed""" - softFailed: Boolean! -"""The time when the job started running""" - startedAt: DateTime -"""The state of the job""" - state: JobStates! -"""The step that defined this job. Some older jobs in the system may not have an associated step""" - step: StepCommand -"""The URL for the job""" - url: String! -"""The UUID for this job""" - uuid: String! -} - -"""Autogenerated input type of JobTypeCommandCancel""" -input JobTypeCommandCancelInput { -"""Autogenerated input type of JobTypeCommandCancel""" - clientMutationId: String -"""Autogenerated input type of JobTypeCommandCancel""" - id: ID! + """ + The session's authenticated user's uuid + """ + sessionUserUuid: ID } -"""Autogenerated return type of JobTypeCommandCancel.""" -type JobTypeCommandCancelPayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - jobTypeCommand: JobTypeCommand! +interface Authorization { + """ + ID of the object. + """ + id: ID! } -"""Autogenerated input type of JobTypeCommandRetry""" -input JobTypeCommandRetryInput { -"""Autogenerated input type of JobTypeCommandRetry""" - clientMutationId: String -"""Autogenerated input type of JobTypeCommandRetry""" - id: ID! +""" +A Bitbucket account authorized with a Buildkite account +""" +type AuthorizationBitbucket implements Authorization & Node { + """ + ID of the object. + """ + id: ID! } -"""Autogenerated return type of JobTypeCommandRetry.""" -type JobTypeCommandRetryPayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - jobTypeCommand: JobTypeCommand! - retriedInJobTypeCommand: JobTypeCommand! -} - -"""A type of job that triggers another build on a pipeline""" -type JobTypeTrigger implements JobInterface & Node{ -"""Whether the triggered build runs asynchronously or not""" - async: Boolean! -"""The build that this job is a part of""" - build: Build - id: ID! -"""The label of this trigger step""" - label: String -"""If this job has been retried""" - retried: Boolean! -"""The user that retried this job""" - retriedBy: User -"""The number of times the job has been retried""" - retriesCount: Int -"""The job that was retried to create this job""" - retrySource: Job -"""The type of retry that was performed on this job""" - retryType: JobRetryTypes -"""The state of the job""" - state: JobStates! -"""The step that defined this job. Some older jobs in the system may not have an associated step""" - step: StepTrigger -"""The build that this job triggered""" - triggered: Build -"""The UUID for this job""" - uuid: String! -} - -"""A type of job that waits for all previous jobs to pass before proceeding the build pipeline""" -type JobTypeWait implements JobInterface & Node{ -"""The build that this job is a part of""" - build: Build - id: ID! -"""The label of this wait step""" - label: String -"""If this job has been retried""" - retried: Boolean! -"""The user that retried this job""" - retriedBy: User -"""The number of times the job has been retried""" - retriesCount: Int -"""The job that was retried to create this job""" - retrySource: Job -"""The type of retry that was performed on this job""" - retryType: JobRetryTypes -"""The state of the job""" - state: JobStates! -"""The step that defined this job. Some older jobs in the system may not have an associated step""" - step: StepWait -"""The UUID for this job""" - uuid: String! -} - -"""All the possible types of jobs that can exist""" -enum JobTypes { -"""A job that runs a command on an agent""" - COMMAND -"""A job that waits for all previous jobs to finish""" - WAIT -"""A job that blocks a pipeline from progressing until it's manually unblocked""" - BLOCK -"""A job that triggers another build on a pipeline""" - TRIGGER +type AuthorizationConnection implements Connection { + count: Int! + edges: [AuthorizationEdge] + pageInfo: PageInfo } -"""The root for mutations in this schema""" -type Mutation { -"""Instruct an agent to stop accepting new build jobs and shut itself down.""" - agentStop( -"""Parameters for AgentStop""" - input: AgentStopInput! - ): AgentStopPayload -"""Create a new unclustered agent token.""" - agentTokenCreate( -"""Parameters for AgentTokenCreate""" - input: AgentTokenCreateInput! - ): AgentTokenCreatePayload -"""Revoke an unclustered agent token.""" - agentTokenRevoke( -"""Parameters for AgentTokenRevoke""" - input: AgentTokenRevokeInput! - ): AgentTokenRevokePayload -"""Authorize an API Access Token Code generated by an API Application. Please note this mutation is private and cannot be executed externally.""" - apiAccessTokenCodeAuthorize( -"""Parameters for APIAccessTokenCodeAuthorizeMutation""" - input: APIAccessTokenCodeAuthorizeMutationInput! - ): APIAccessTokenCodeAuthorizeMutationPayload -"""Annotate a build with information to appear on the build page.""" - buildAnnotate( -"""Parameters for BuildAnnotate""" - input: BuildAnnotateInput! - ): BuildAnnotatePayload -"""Cancel a build.""" - buildCancel( -"""Parameters for BuildCancel""" - input: BuildCancelInput! - ): BuildCancelPayload -"""Create a build.""" - buildCreate( -"""Parameters for BuildCreate""" - input: BuildCreateInput! - ): BuildCreatePayload -"""Rebuild a build.""" - buildRebuild( -"""Parameters for BuildRebuild""" - input: BuildRebuildInput! - ): BuildRebuildPayload -"""Create an agent token for a cluster.""" - clusterAgentTokenCreate( -"""Parameters for ClusterAgentTokenCreate""" - input: ClusterAgentTokenCreateInput! - ): ClusterAgentTokenCreatePayload -"""Revokes an agent token for a cluster.""" - clusterAgentTokenRevoke( -"""Parameters for ClusterAgentTokenRevoke""" - input: ClusterAgentTokenRevokeInput! - ): ClusterAgentTokenRevokePayload -"""Updates an agent token for a cluster.""" - clusterAgentTokenUpdate( -"""Parameters for ClusterAgentTokenUpdate""" - input: ClusterAgentTokenUpdateInput! - ): ClusterAgentTokenUpdatePayload -"""Create a cluster.""" - clusterCreate( -"""Parameters for ClusterCreate""" - input: ClusterCreateInput! - ): ClusterCreatePayload -"""Delete a cluster.""" - clusterDelete( -"""Parameters for ClusterDelete""" - input: ClusterDeleteInput! - ): ClusterDeletePayload -"""Create a cluster queue.""" - clusterQueueCreate( -"""Parameters for ClusterQueueCreate""" - input: ClusterQueueCreateInput! - ): ClusterQueueCreatePayload -"""Delete a cluster queue.""" - clusterQueueDelete( -"""Parameters for ClusterQueueDelete""" - input: ClusterQueueDeleteInput! - ): ClusterQueueDeletePayload -"""This will prevent dispatch of jobs to agents on this queue. You can add an optional note describing the reason for pausing.""" - clusterQueuePauseDispatch( -"""Parameters for ClusterQueuePauseDispatch""" - input: ClusterQueuePauseDispatchInput! - ): ClusterQueuePauseDispatchPayload -"""This will resume dispatch of jobs on this queue.""" - clusterQueueResumeDispatch( -"""Parameters for ClusterQueueResumeDispatch""" - input: ClusterQueueResumeDispatchInput! - ): ClusterQueueResumeDispatchPayload -"""Updates a cluster queue.""" - clusterQueueUpdate( -"""Parameters for ClusterQueueUpdate""" - input: ClusterQueueUpdateInput! - ): ClusterQueueUpdatePayload -"""Updates a cluster.""" - clusterUpdate( -"""Parameters for ClusterUpdate""" - input: ClusterUpdateInput! - ): ClusterUpdatePayload -"""Add a new email address for the current user""" - emailCreate( -"""Parameters for EmailCreate""" - input: EmailCreateInput! - ): EmailCreatePayload -"""Resend a verification email.""" - emailResendVerification( -"""Parameters for EmailResendVerification""" - input: EmailResendVerificationInput! - ): EmailResendVerificationPayload -"""Create a GraphQL snippet.""" - graphQLSnippetCreate( -"""Parameters for GraphQLSnippetCreate""" - input: GraphQLSnippetCreateInput! - ): GraphQLSnippetCreatePayload -"""Unblocks a build's "Block pipeline" job.""" - jobTypeBlockUnblock( -"""Parameters for JobTypeBlockUnblock""" - input: JobTypeBlockUnblockInput! - ): JobTypeBlockUnblockPayload -"""Cancel a job.""" - jobTypeCommandCancel( -"""Parameters for JobTypeCommandCancel""" - input: JobTypeCommandCancelInput! - ): JobTypeCommandCancelPayload -"""Retry a job.""" - jobTypeCommandRetry( -"""Parameters for JobTypeCommandRetry""" - input: JobTypeCommandRetryInput! - ): JobTypeCommandRetryPayload -"""Dismisses a notice from the Buildkite UI. This mutation is idempotent so if you dismiss the same notice multiple times, it will return the original `dismissedAt` time""" - noticeDismiss( -"""Parameters for NoticeDismiss""" - input: NoticeDismissInput! - ): NoticeDismissPayload -"""Revokes access to an organization for a user's API access token. The organization can not be re-added to the same token, however the user can create a new token and add the organization to that token.""" - organizationApiAccessTokenRevoke( -"""Parameters for OrganizationAPIAccessTokenRevokeMutation""" - input: OrganizationAPIAccessTokenRevokeMutationInput! - ): OrganizationAPIAccessTokenRevokeMutationPayload -"""Sets an allowlist of IP addresses for API access to an organization. Please note that this is a beta feature and is not yet available to all organizations. """ - organizationApiIpAllowlistUpdate( -"""Parameters for OrganizationAPIIPAllowlistUpdateMutation""" - input: OrganizationAPIIPAllowlistUpdateMutationInput! - ): OrganizationAPIIPAllowlistUpdateMutationPayload -"""Delete the system banner""" - organizationBannerDelete( -"""Parameters for OrganizationBannerDelete""" - input: OrganizationBannerDeleteInput! - ): OrganizationBannerDeletePayload -"""Retrieves the active system banner for provided organization, then updates it with input data. If active banner is not found, a new banner is created with the provided input.""" - organizationBannerUpsert( -"""Parameters for OrganizationBannerUpsert""" - input: OrganizationBannerUpsertInput! - ): OrganizationBannerUpsertPayload -"""Sets whether the organization requires two-factor authentication for all members.""" - organizationEnforceTwoFactorAuthenticationForMembersUpdate( -"""Parameters for OrganizationEnforceTwoFactorAuthenticationForMembersUpdateMutation""" - input: OrganizationEnforceTwoFactorAuthenticationForMembersUpdateMutationInput! - ): OrganizationEnforceTwoFactorAuthenticationForMembersUpdateMutationPayload -"""Send email invitations to this organization.""" - organizationInvitationCreate( -"""Parameters for OrganizationInvitationCreate""" - input: OrganizationInvitationCreateInput! - ): OrganizationInvitationCreatePayload -"""Resend an organization invitation email.""" - organizationInvitationResend( -"""Parameters for OrganizationInvitationResend""" - input: OrganizationInvitationResendInput! - ): OrganizationInvitationResendPayload -"""Revoke an invitation to an organization so that it can no longer be accepted.""" - organizationInvitationRevoke( -"""Parameters for OrganizationInvitationRevoke""" - input: OrganizationInvitationRevokeInput! - ): OrganizationInvitationRevokePayload -"""Remove a user from an organization.""" - organizationMemberDelete( -"""Parameters for OrganizationMemberDelete""" - input: OrganizationMemberDeleteInput! - ): OrganizationMemberDeletePayload -"""Change a user's role within an organization.""" - organizationMemberUpdate( -"""Parameters for OrganizationMemberUpdate""" - input: OrganizationMemberUpdateInput! - ): OrganizationMemberUpdatePayload -"""Specify the maximum timeframe to revoke organization access from inactive API tokens.""" - organizationRevokeInactiveTokensAfterUpdate( -"""Parameters for OrganizationRevokeInactiveTokensAfterUpdateMutation""" - input: OrganizationRevokeInactiveTokensAfterUpdateMutationInput! - ): OrganizationRevokeInactiveTokensAfterUpdateMutationPayload -"""Archive a pipeline.""" - pipelineArchive( -"""Parameters for PipelineArchive""" - input: PipelineArchiveInput! - ): PipelineArchivePayload -"""Create a pipeline.""" - pipelineCreate( -"""Parameters for PipelineCreate""" - input: PipelineCreateInput! - ): PipelineCreatePayload -"""Create SCM webhooks for a pipeline.""" - pipelineCreateWebhook( -"""Parameters for PipelineCreateWebhook""" - input: PipelineCreateWebhookInput! - ): PipelineCreateWebhookPayload -"""Delete a pipeline.""" - pipelineDelete( -"""Parameters for PipelineDelete""" - input: PipelineDeleteInput! - ): PipelineDeletePayload -"""Favorite a pipeline.""" - pipelineFavorite( -"""Parameters for PipelineFavorite""" - input: PipelineFavoriteInput! - ): PipelineFavoritePayload -"""Rotate a pipeline's webhook URL. - -Note that the old webhook URL will stop working immediately and so must be updated quickly to avoid interruption. -""" - pipelineRotateWebhookURL( -"""Parameters for PipelineRotateWebhookURL""" - input: PipelineRotateWebhookURLInput! - ): PipelineRotateWebhookURLPayload -"""Create a scheduled build on pipeline.""" - pipelineScheduleCreate( -"""Parameters for PipelineScheduleCreate""" - input: PipelineScheduleCreateInput! - ): PipelineScheduleCreatePayload -"""Delete a scheduled build on pipeline.""" - pipelineScheduleDelete( -"""Parameters for PipelineScheduleDelete""" - input: PipelineScheduleDeleteInput! - ): PipelineScheduleDeletePayload -"""Update a scheduled build on pipeline.""" - pipelineScheduleUpdate( -"""Parameters for PipelineScheduleUpdate""" - input: PipelineScheduleUpdateInput! - ): PipelineScheduleUpdatePayload -"""Create a pipeline template.""" - pipelineTemplateCreate( -"""Parameters for PipelineTemplateCreate""" - input: PipelineTemplateCreateInput! - ): PipelineTemplateCreatePayload -"""Delete a pipeline template.""" - pipelineTemplateDelete( -"""Parameters for PipelineTemplateDelete""" - input: PipelineTemplateDeleteInput! - ): PipelineTemplateDeletePayload -"""Update a pipeline template.""" - pipelineTemplateUpdate( -"""Parameters for PipelineTemplateUpdate""" - input: PipelineTemplateUpdateInput! - ): PipelineTemplateUpdatePayload -"""Unarchive a pipeline.""" - pipelineUnarchive( -"""Parameters for PipelineUnarchive""" - input: PipelineUnarchiveInput! - ): PipelineUnarchivePayload -"""Change the settings for a pipeline.""" - pipelineUpdate( -"""Parameters for PipelineUpdate""" - input: PipelineUpdateInput! - ): PipelineUpdatePayload -"""Create a SSO provider.""" - ssoProviderCreate( -"""Parameters for SSOProviderCreate""" - input: SSOProviderCreateInput! - ): SSOProviderCreatePayload -"""Delete a SSO provider.""" - ssoProviderDelete( -"""Parameters for SSOProviderDelete""" - input: SSOProviderDeleteInput! - ): SSOProviderDeletePayload -"""Disable a SSO provider.""" - ssoProviderDisable( -"""Parameters for SSOProviderDisable""" - input: SSOProviderDisableInput! - ): SSOProviderDisablePayload -"""Enable a SSO provider.""" - ssoProviderEnable( -"""Parameters for SSOProviderEnable""" - input: SSOProviderEnableInput! - ): SSOProviderEnablePayload -"""Change the settings for a SSO provider.""" - ssoProviderUpdate( -"""Parameters for SSOProviderUpdate""" - input: SSOProviderUpdateInput! - ): SSOProviderUpdatePayload -"""Create a team.""" - teamCreate( -"""Parameters for TeamCreate""" - input: TeamCreateInput! - ): TeamCreatePayload -"""Delete a team.""" - teamDelete( -"""Parameters for TeamDelete""" - input: TeamDeleteInput! - ): TeamDeletePayload -"""Add a user to a team.""" - teamMemberCreate( -"""Parameters for TeamMemberCreate""" - input: TeamMemberCreateInput! - ): TeamMemberCreatePayload -"""Remove a user from a team.""" - teamMemberDelete( -"""Parameters for TeamMemberDelete""" - input: TeamMemberDeleteInput! - ): TeamMemberDeletePayload -"""Update a user's role in a team.""" - teamMemberUpdate( -"""Parameters for TeamMemberUpdate""" - input: TeamMemberUpdateInput! - ): TeamMemberUpdatePayload -"""Add a pipeline to a team.""" - teamPipelineCreate( -"""Parameters for TeamPipelineCreate""" - input: TeamPipelineCreateInput! - ): TeamPipelineCreatePayload -"""Remove a pipeline from a team.""" - teamPipelineDelete( -"""Parameters for TeamPipelineDelete""" - input: TeamPipelineDeleteInput! - ): TeamPipelineDeletePayload -"""Update a pipeline's access level within a team.""" - teamPipelineUpdate( -"""Parameters for TeamPipelineUpdate""" - input: TeamPipelineUpdateInput! - ): TeamPipelineUpdatePayload -"""Add a suite to a team.""" - teamSuiteCreate( -"""Parameters for TeamSuiteCreate""" - input: TeamSuiteCreateInput! - ): TeamSuiteCreatePayload -"""Remove a suite from a team.""" - teamSuiteDelete( -"""Parameters for TeamSuiteDelete""" - input: TeamSuiteDeleteInput! - ): TeamSuiteDeletePayload -"""Update a suite's access level within a team.""" - teamSuiteUpdate( -"""Parameters for TeamSuiteUpdate""" - input: TeamSuiteUpdateInput! - ): TeamSuiteUpdatePayload -"""Change the settings for a team.""" - teamUpdate( -"""Parameters for TeamUpdate""" - input: TeamUpdateInput! - ): TeamUpdatePayload -"""Activate a previously-generated TOTP configuration, and its Recovery Codes. - -Once activated, both this TOTP configuration, and the associated Recovery Codes will become active for the user. -Any previous TOTP configuration or Recovery Codes will no longer be usable. - -This mutation is private, requires an escalated session, and cannot be accessed via the public GraphQL API. -""" - totpActivate( -"""Parameters for TOTPActivate""" - input: TOTPActivateInput! - ): TOTPActivatePayload -"""Create a new TOTP configuration for the current user. - -This will produce a TOTP configuration with an associated set of Recovery Codes. The Recovery Codes must be presented to the user prior to the TOTP's activation with `totpActivate`. -Neither TOTP configuration nor Recovery Codes will be usable until they have been activated. - -This mutation is private, requires an escalated session, and cannot be accessed via the public GraphQL API. -""" - totpCreate( -"""Parameters for TOTPCreate""" - input: TOTPCreateInput! - ): TOTPCreatePayload -"""Delete a TOTP configuration. - -If a TOTP configuration was active, it will no longer be used for logging on to the user's account. -Any Recovery Codes associated with the TOTP configuration will also no longer be usable. - -This mutation is private, requires an escalated session, and cannot be accessed via the public GraphQL API. -""" - totpDelete( -"""Parameters for TOTPDelete""" - input: TOTPDeleteInput! - ): TOTPDeletePayload -"""Generate a new set of Recovery Codes for a given TOTP. - -The new Recovery Codes will immediately replace any existing recovery codes. - -This mutation is private, requires an escalated session, and cannot be accessed via the public GraphQL API. -""" - totpRecoveryCodesRegenerate( -"""Parameters for TOTPRecoveryCodesRegenerate""" - input: TOTPRecoveryCodesRegenerateInput! - ): TOTPRecoveryCodesRegeneratePayload -} - -"""An object with an ID.""" -interface Node { -"""An object with an ID.""" - id: ID! +type AuthorizationEdge { + cursor: String! + node: Authorization } -"""A notice or notice that a user sees in the Buildkite UI""" -type Notice { -"""The time when this notice was dismissed from the UI""" - dismissedAt: DateTime - id: ID! -"""The namespace of this notice""" - namespace: NoticeNamespaces! -"""The scope within the namespace""" - scope: String! +""" +A GitHub account authorized with a Buildkite account +""" +type AuthorizationGitHub implements Authorization & Node { + """ + ID of the object. + """ + id: ID! } -"""Autogenerated input type of NoticeDismiss""" -input NoticeDismissInput { -"""Autogenerated input type of NoticeDismiss""" - clientMutationId: String -"""Autogenerated input type of NoticeDismiss""" - id: ID! +""" +A GitHub app authorized with a Buildkite account +""" +type AuthorizationGitHubApp implements Authorization & Node { + """ + ID of the object. + """ + id: ID! } -"""Autogenerated return type of NoticeDismiss.""" -type NoticeDismissPayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - notice: Notice +""" +A GitHub Enterprise account authorized with a Buildkite account +""" +type AuthorizationGitHubEnterprise implements Authorization & Node { + """ + ID of the object. + """ + id: ID! } -"""All the possible namespaces for a notice""" -enum NoticeNamespaces { -"""A change to an existing feature""" - CHANGE -"""The user has had an email suggested to them""" - EMAIL_SUGGESTION -"""A new feature was added""" - FEATURE -"""An event announcement""" - EVENT +""" +A Google account authorized with a Buildkite account +""" +type AuthorizationGoogle implements Authorization & Node { + """ + ID of the object. + """ + id: ID! } -interface NotificationService { - description: String! - id: ID! - name: String! +""" +A SAML account authorized with a Buildkite account +""" +type AuthorizationSAML implements Authorization & Node { + """ + ID of the object. + """ + id: ID! } -"""Deliver notifications to Slack""" -type NotificationServiceSlack implements Node & NotificationService{ -"""The description of this service""" - description: String! - id: ID! -"""The name of the service provider""" - name: String! -} +""" +The type of the authorization +""" +enum AuthorizationType { + """ + Bitbucket Authorization + """ + BITBUCKET -"""Deliver notifications to a custom URL""" -type NotificationServiceWebhook implements NotificationService{ -"""The description of this service""" - description: String! - id: ID! -"""The name of the service provider""" - name: String! -} + """ + GitHub Authorization + """ + GITHUB -"""A operating system that an agent can run on""" -type OperatingSystem { -"""The name of the operating system""" - name: String! -} - -"""An organization""" -type Organization implements Node{ -"""Returns agent access tokens for an Organization. By default returns all tokens, whether revoked or non-revoked.""" - agentTokens( - first: Int - last: Int -"""Filter tokens by whether they are revoked or not""" - revoked: Boolean - ): AgentTokenConnection - agents( - first: Int - after: String - last: Int - before: String -"""Search agents for the given query terms case insensitively across name and meta data""" - search: String -"""Filter agents to those only having the matching meta data""" - metaData: [String!] -"""Filter agents by membership of a given cluster""" - cluster: ID -"""Filter agents to those within a given cluster queue""" - clusterQueue: [ID!] -"""Pass `false` to exclude agents that belong to a cluster queue""" - clustered: Boolean -"""Filter agents by whether they are running a job or not""" - isRunningJob: Boolean - ): AgentConnection -"""A space-separated allowlist of IP addresses that can access the organization via the GraphQL or REST API""" - allowedApiIpAddresses: String -"""Returns user API access tokens that can access this organization""" - apiAccessTokens( -"""Returns the elements in the list that come after the specified cursor.""" - after: String -"""Returns the elements in the list that come before the specified cursor.""" - before: String -"""Returns the first _n_ elements from the list.""" - first: Int -"""Returns the last _n_ elements from the list.""" - last: Int - ): OrganizationAPIAccessTokenConnection! - auditEvents( - first: Int - after: String - last: Int - before: String -"""Filter events which occurred from the given date and time""" - occurredAtFrom: DateTime -"""Filter events which occurred until the given date and time""" - occurredAtTo: DateTime -"""Filter the events by type""" - type: [AuditEventType!] -"""Filter the events by the type of actor who initiated them""" - actorType: [AuditActorType!] -"""Filter the events by the IDs of the actors who initiated them""" - actor: [ID!] -"""Filter the events by the type of subject they relate to""" - subjectType: [AuditSubjectType!] -"""Filter the events by the IDs of the subject they relate to""" - subject: [ID!] -"""Order the events""" - order: OrganizationAuditEventOrders -"""Filter the events by the UUIDs of the subject they relate to""" - subjectUUID: [ID!] - ): OrganizationAuditEventConnection -"""Returns active banners for this organization.""" - banners( -"""Returns the elements in the list that come after the specified cursor.""" - after: String -"""Returns the elements in the list that come before the specified cursor.""" - before: String -"""Returns the first _n_ elements from the list.""" - first: Int -"""Returns the last _n_ elements from the list.""" - last: Int - ): OrganizationBannerConnection! -"""Return cluster in the Organization by UUID""" - cluster( - id: ID! - ): Cluster -"""Returns clusters for an Organization""" - clusters( -"""Returns the first _n_ elements from the list.""" - first: Int -"""Returns the elements in the list that come after the specified cursor.""" - after: String -"""Returns the last _n_ elements from the list.""" - last: Int -"""Returns the elements in the list that come before the specified cursor.""" - before: String -"""Order the clusters""" - order: ClusterOrder - ): ClusterConnection -"""The URL to an icon representing this organization""" - iconUrl: String - id: ID! - invitations( - first: Int - after: String - last: Int - before: String - state: [OrganizationInvitationStates!] -"""Order the invitations""" - order: OrganizationInvitationOrders - ): OrganizationInvitationConnection -"""Whether teams is enabled for this organization""" - isTeamsEnabled: Boolean! - jobs( -"""Returns the first _n_ elements from the list.""" - first: Int -"""Returns the elements in the list that come after the specified cursor.""" - after: String -"""Returns the last _n_ elements from the list.""" - last: Int -"""Returns the elements in the list that come before the specified cursor.""" - before: String - type: [JobTypes!] - state: [JobStates!] - priority: JobPrioritySearch - agentQueryRules: [String!] - concurrency: JobConcurrencySearch -"""Whether or not the command job passed. Passing `false` will return all failed jobs (including "soft failed" jobs)""" - passed: Boolean -"""Filtering jobs based on related step information""" - step: JobStepSearch -"""Order the jobs""" - order: JobOrder -"""Filter jobs by membership of a given cluster""" - cluster: ID -"""Filter jobs to those within a given cluster queue""" - clusterQueue: [ID!] -"""Pass `false` to exclude jobs that belong to a cluster queue""" - clustered: Boolean - ): JobConnection -"""Returns users within the organization""" - members( - first: Int - after: String - last: Int - before: String -"""Search members named like the given query case insensitively""" - search: String -"""The primary email of the team member""" - email: String -"""Filter the members by team""" - team: TeamSelector -"""Search members by their role""" - role: [OrganizationMemberRole!] - security: OrganizationMemberSecurityInput - sso: OrganizationMemberSSOInput -"""Order the members""" - order: OrganizationMemberOrder - ): OrganizationMemberConnection -"""Whether this organization requires 2FA to access (Please note that this is a beta feature and is not yet available to all organizations.)""" - membersRequireTwoFactorAuthentication: Boolean! -"""The name of the organization""" - name: String! - permissions: OrganizationPermissions! -"""Return all the pipeline templates the current user has access to for this organization""" - pipelineTemplates( - first: Int - last: Int - after: String - before: String -"""Order the pipeline templates""" - order: PipelineTemplateOrder - ): PipelineTemplateConnection -"""Return all the pipelines the current user has access to for this organization""" - pipelines( - first: Int - after: String - last: Int - before: String -"""Search pipelines named like the given query case insensitively""" - search: String - repository: PipelineRepositoryInput -"""Filter pipelines by membership of a given cluster""" - cluster: ID -"""Pass `false` to exclude pipelines that belong to a cluster""" - clustered: Boolean -"""Filter pipelines based on whether or not they've been archived. If not provided, all pipelines are returned regardless of archived state.""" - archived: Boolean -"""Filter the pipelines by team""" - team: TeamSelector -"""Only return favorited pipelines""" - favorite: Boolean -"""Order the pipelines""" - order: PipelineOrders -"""Filter pipelines with those that have particular tags""" - tags: [String!] - createdAtFrom: DateTime - createdAtTo: DateTime - ): PipelineConnection -"""Whether this organization is visible to everyone, including people outside it""" - public: Boolean! -"""API tokens with access to this organization will be automatically revoked after this many seconds of inactivity. A `null` value indicates never revoke inactive tokens.""" - revokeInactiveTokensAfter: RevokeInactiveTokenPeriod -"""The slug used to represent the organization in URLs""" - slug: String! -"""The single sign-on configuration of this organization""" - sso: OrganizationSSO -"""Single sign on providers created for an organization""" - ssoProviders( -"""Returns the first _n_ elements from the list.""" - first: Int -"""Returns the elements in the list that come after the specified cursor.""" - after: String -"""Returns the last _n_ elements from the list.""" - last: Int -"""Returns the elements in the list that come before the specified cursor.""" - before: String - ): SSOProviderConnection -"""Return all the suite the current user has access to for this organization""" - suites( - first: Int - after: String - last: Int - before: String -"""Search suites named like the given query case insensitively""" - search: String -"""Filter the suites by team""" - team: TeamSelector -"""Order the suites""" - order: SuiteOrders - createdAtFrom: DateTime - createdAtTo: DateTime - ): SuiteConnection -"""Returns teams within the organization that the viewer can see""" - teams( - first: Int - after: String - last: Int - before: String -"""Search teams""" - search: String -"""Filter teams by pipeline""" - pipeline: PipelineSelector -"""Filter teams by user membership""" - user: UserSelector -"""Search teams by their privacy""" - privacy: [TeamPrivacy!] -"""Order the teams""" - order: TeamOrder - ): TeamConnection -"""Returns the resource usage data for this organization.""" - usage( -"""Returns the elements in the list that come after the specified cursor.""" - after: String -"""Returns the elements in the list that come before the specified cursor.""" - before: String -"""Returns the first _n_ elements from the list.""" - first: Int -"""Returns the last _n_ elements from the list.""" - last: Int -"""Filter aggregations performed from this date""" - aggregatedOnFrom: ISO8601Date -"""Filter aggregations performed until this date""" - aggregatedOnTo: ISO8601Date -"""Filter results by resource type""" - resource: [ResourceUsageType!] -"""Filter results by the associated Pipeline ID""" - pipelineIds: [ID!] -"""Filter results by the associated Suite ID""" - suiteIds: [ID!] - ): UsageUnionConnection! -"""The public UUID for this organization""" - uuid: String! -} - -"""Information on user API Access Tokens which can access the Organization. Excludes the token attribute""" -type OrganizationAPIAccessToken { - createdAt: DateTime! -"""A description of the token""" - description: String - id: ID! -"""The IP address of the last request to the Buildkite API""" - ipAddress: String -"""The last time the token was used to access the Buildkite API""" - lastAccessedAt: DateTime -"""The user associated with this token""" - owner: User -"""The organization scopes that the user's token has access to""" - scopes: [APIAccessTokenScopes!]! -"""The public UUID for the API Access Token""" - uuid: ID! -} - -"""The connection type for OrganizationAPIAccessToken.""" -type OrganizationAPIAccessTokenConnection { -"""A list of edges.""" - edges: [OrganizationAPIAccessTokenEdge] -"""A list of nodes.""" - nodes: [OrganizationAPIAccessToken] -"""Information to aid in pagination.""" - pageInfo: PageInfo! + """ + GitHub Enterprise Authorization + """ + GITHUB_ENTERPRISE } -"""An edge in a connection.""" -type OrganizationAPIAccessTokenEdge { -"""A cursor for use in pagination.""" - cursor: String! -"""The item at the end of the edge.""" - node: OrganizationAPIAccessToken +""" +An avatar belonging to a user +""" +type Avatar { + """ + The URL of the avatar + """ + url: String! } -"""Autogenerated input type of OrganizationAPIAccessTokenRevokeMutation""" -input OrganizationAPIAccessTokenRevokeMutationInput { -"""Autogenerated input type of OrganizationAPIAccessTokenRevokeMutation""" - clientMutationId: String -"""Autogenerated input type of OrganizationAPIAccessTokenRevokeMutation""" - organizationId: ID! -"""Autogenerated input type of OrganizationAPIAccessTokenRevokeMutation""" - apiAccessTokenId: ID! +""" +A build from a pipeline +""" +type Build implements Node { + annotations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Order the annotations + """ + order: AnnotationOrder = RECENTLY_CREATED + + """ + Filter annotations by scope. Defaults to BUILD. + """ + scope: [AnnotationScope!] + style: [AnnotationStyle!] + ): AnnotationConnection + + """ + The current blocked state of the build + """ + blockedState: BuildBlockedStates + + """ + The branch for the build + """ + branch: String! + + """ + The reason why the build was cancelled + """ + cancelReason: String + + """ + The time when the build was cancelled + """ + canceledAt: DateTime + + """ + The user who canceled this build. If the build was canceled, and this value is + null, then it was canceled automatically by Buildkite + """ + canceledBy: User + + """ + The fully-qualified commit for the build + """ + commit: String! + + """ + The time when the build was created + """ + createdAt: DateTime + createdBy: BuildCreator + + """ + Custom environment variables passed to this build + """ + env: [String!] + + """ + The time when the build started failing + """ + failingAt: DateTime + + """ + The time when the build finished + """ + finishedAt: DateTime + id: ID! + jobs( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Filter jobs based on matching agent query rules (for example, a single tag + match "queue=test", or an array of matches ["queue=test", "tag=value"]) + """ + agentQueryRules: [String!] + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + concurrency: JobConcurrencySearch + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Order the jobs + """ + order: JobOrder = RECENTLY_CREATED + + """ + Whether or not the command job passed. Passing `false` will return all failed jobs (including "soft failed" jobs) + """ + passed: Boolean + priority: JobPrioritySearch + state: [JobStates!] + + """ + Filtering jobs based on related step information + """ + step: JobStepSearch + type: [JobTypes!] + ): JobConnection + + """ + The message for the build + """ + message: String + metaData(first: Int, last: Int): BuildMetaDataConnection + + """ + The number of the build + """ + number: Int! + organization: Organization! + pipeline: Pipeline! + pullRequest: PullRequest + + """ + The build that this build was rebuilt from + """ + rebuiltFrom: Build + + """ + The time when the build became scheduled for running + """ + scheduledAt: DateTime + + """ + Where the build was created + """ + source: BuildSource! + + """ + The time when the build started running + """ + startedAt: DateTime + + """ + The current state of the build + """ + state: BuildStates! + + """ + The job that this build was triggered from + """ + triggeredFrom: JobTypeTrigger + + """ + The URL for the build + """ + url: String! + + """ + The UUID for the build + """ + uuid: String! } -"""Autogenerated return type of OrganizationAPIAccessTokenRevokeMutation.""" -type OrganizationAPIAccessTokenRevokeMutationPayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - revokedApiAccessTokenId: ID! +""" +Autogenerated input type of BuildAnnotate +""" +input BuildAnnotateInput { + """ + Append to an existing annotation + """ + append: Boolean = false + + """ + The body of the annotation. Markdown and some limited HTML is supported + """ + body: String + + """ + The GraphQL ID of the build you want to annotate + """ + buildID: ID! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + A string label to differentiate this annotation from other annotations. The default is `default` + """ + context: String = "default" + + """ + Priority of the annotation. By default annotations have a priority of 3. + Annotations with a priority of 10 will be shown first, and annotations with a + priority of 1 will be shown last. + """ + priority: Int = 3 + + """ + The style of the annotation. The default is `DEFAULT` + """ + style: AnnotationStyle = DEFAULT } -"""Autogenerated input type of OrganizationAPIIPAllowlistUpdateMutation""" -input OrganizationAPIIPAllowlistUpdateMutationInput { -"""Autogenerated input type of OrganizationAPIIPAllowlistUpdateMutation""" - clientMutationId: String -"""Autogenerated input type of OrganizationAPIIPAllowlistUpdateMutation""" - organizationID: ID! -"""Autogenerated input type of OrganizationAPIIPAllowlistUpdateMutation""" - ipAddresses: String! -} +""" +Autogenerated return type of BuildAnnotate. +""" +type BuildAnnotatePayload { + annotation: Annotation + annotationEdge: AnnotationEdge + build: Build -"""Autogenerated return type of OrganizationAPIIPAllowlistUpdateMutation.""" -type OrganizationAPIIPAllowlistUpdateMutationPayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - organization: Organization + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String } -type OrganizationAuditEventConnection implements Connection{ - count: Int! - edges: [OrganizationAuditEventEdge] - pageInfo: PageInfo -} +""" +Author for a build +""" +input BuildAuthorInput { + """ + The email for the build author + """ + email: String! -type OrganizationAuditEventEdge { - cursor: String! - node: AuditEvent + """ + The name for the build author + """ + name: String! } -"""The different orders you can sort audit events by""" -enum OrganizationAuditEventOrders { -"""Order by the most recently occurring events first""" - RECENTLY_OCCURRED -} +""" +All the possible blocked states a build can be in +""" +enum BuildBlockedStates { + """ + The blocked build is failed + """ + FAILED -"""System banner of an organization""" -type OrganizationBanner implements Node{ - id: ID! -"""The banner message""" - message: String! -"""The UUID of the organization banner""" - uuid: String! -} + """ + The blocked build is passed + """ + PASSED -"""The connection type for OrganizationBanner.""" -type OrganizationBannerConnection { -"""A list of edges.""" - edges: [OrganizationBannerEdge] -"""A list of nodes.""" - nodes: [OrganizationBanner] -"""Information to aid in pagination.""" - pageInfo: PageInfo! + """ + The blocked build is running + """ + RUNNING } -"""Autogenerated input type of OrganizationBannerDelete""" -input OrganizationBannerDeleteInput { -"""Autogenerated input type of OrganizationBannerDelete""" - clientMutationId: String -"""Autogenerated input type of OrganizationBannerDelete""" - organizationId: ID! +""" +Autogenerated input type of BuildCancel +""" +input BuildCancelInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! } -"""Autogenerated return type of OrganizationBannerDelete.""" -type OrganizationBannerDeletePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - deletedBannerId: ID! -} +""" +Autogenerated return type of BuildCancel. +""" +type BuildCancelPayload { + build: Build! -"""An edge in a connection.""" -type OrganizationBannerEdge { -"""A cursor for use in pagination.""" - cursor: String! -"""The item at the end of the edge.""" - node: OrganizationBanner + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String } -"""Autogenerated input type of OrganizationBannerUpsert""" -input OrganizationBannerUpsertInput { -"""Autogenerated input type of OrganizationBannerUpsert""" - clientMutationId: String -"""Autogenerated input type of OrganizationBannerUpsert""" - organizationId: ID! -"""Autogenerated input type of OrganizationBannerUpsert""" - message: String! +type BuildConnection implements Connection { + count: Int! + edges: [BuildEdge] + pageInfo: PageInfo } -"""Autogenerated return type of OrganizationBannerUpsert.""" -type OrganizationBannerUpsertPayload { - banner: OrganizationBanner! -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String -} +""" +Autogenerated input type of BuildCreate +""" +input BuildCreateInput { + author: BuildAuthorInput -type OrganizationConnection implements Connection{ - count: Int! - edges: [OrganizationEdge] - pageInfo: PageInfo -} + """ + The branch for the build + """ + branch: String -type OrganizationEdge { - cursor: String! - node: Organization -} + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String -"""Autogenerated input type of OrganizationEnforceTwoFactorAuthenticationForMembersUpdateMutation""" -input OrganizationEnforceTwoFactorAuthenticationForMembersUpdateMutationInput { -"""Autogenerated input type of OrganizationEnforceTwoFactorAuthenticationForMembersUpdateMutation""" - clientMutationId: String -"""Autogenerated input type of OrganizationEnforceTwoFactorAuthenticationForMembersUpdateMutation""" - organizationId: ID! -"""Autogenerated input type of OrganizationEnforceTwoFactorAuthenticationForMembersUpdateMutation""" - membersRequireTwoFactorAuthentication: Boolean! -} + """ + The commit for the build + """ + commit: String -"""Autogenerated return type of OrganizationEnforceTwoFactorAuthenticationForMembersUpdateMutation.""" -type OrganizationEnforceTwoFactorAuthenticationForMembersUpdateMutationPayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - organization: Organization! -} - -"""A pending invitation to a user to join this organization""" -type OrganizationInvitation implements Node{ -"""The time when the invitation was accepted""" - acceptedAt: DateTime -"""The user that accepted this invite""" - acceptedBy: User -"""The time when the invitation was created""" - createdAt: DateTime -"""The user that added invited this email address""" - createdBy: User -"""The email address of this invitation""" - email: String! -"""The time when the invitation was automatically expired""" - expiredAt: DateTime - id: ID! - organization: Organization - permissions: OrganizationInvitationPermissions! -"""The time when this invitation was revoked""" - revokedAt: DateTime -"""The user that revoked this invitation""" - revokedBy: User -"""The role the user will have in the organization once they've accepted the invitation""" - role: OrganizationMemberRole! -"""The slug of the invitation that can be used to find an invitation in the query root""" - slug: String! - sso: OrganizationInvitationSSOType! -"""The current state of the invitation""" - state: OrganizationInvitationStates! -"""Teams that have been assigned to this invitation""" - teams( -"""Returns the first _n_ elements from the list.""" - first: Int - ): OrganizationInvitationTeamAssignmentConnection -"""The UUID of the invitation""" - uuid: String! -} - -type OrganizationInvitationConnection implements Connection{ - count: Int! - edges: [OrganizationInvitationEdge] - pageInfo: PageInfo -} - -"""Autogenerated input type of OrganizationInvitationCreate""" -input OrganizationInvitationCreateInput { -"""Autogenerated input type of OrganizationInvitationCreate""" - clientMutationId: String -"""Autogenerated input type of OrganizationInvitationCreate""" - organizationID: ID! -"""Autogenerated input type of OrganizationInvitationCreate""" - emails: [String!]! -"""Autogenerated input type of OrganizationInvitationCreate""" - role: OrganizationMemberRole -"""Autogenerated input type of OrganizationInvitationCreate""" - sso: OrganizationInvitationSSOInput -"""Autogenerated input type of OrganizationInvitationCreate""" - teams: [OrganizationInvitationTeamAssignmentInput!] -} - -"""Autogenerated return type of OrganizationInvitationCreate.""" -type OrganizationInvitationCreatePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - invitationEdges: [OrganizationInvitationEdge] - organization: Organization -} + """ + Environment variables used for the build + """ + env: [String!] -type OrganizationInvitationEdge { - cursor: String! - node: OrganizationInvitation + """ + The message that is displayed on the build + """ + message: String + metaData: [BuildMetaDataInput!] + + """ + The GraphQL ID of the pipeline you want to create a build on + """ + pipelineID: ID! } -"""The different orders you can sort organization invitations by""" -enum OrganizationInvitationOrders { -"""Order by email address alphabetically""" - EMAIL -"""Order by the most recently created invitations first""" - RECENTLY_CREATED +""" +Autogenerated return type of BuildCreate. +""" +type BuildCreatePayload { + build: Build + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String } -"""Permissions information about what actions the current user can do against this invitation""" -type OrganizationInvitationPermissions { -"""Whether the user can resend this invitation""" - organizationInvitationResend: Permission -"""Whether the user can revoke this invitation""" - organizationInvitationRevoke: Permission +""" +Either a `User` or an `UnregisteredUser` type +""" +union BuildCreator = UnregisteredUser | User + +type BuildEdge { + cursor: String! + node: Build } -"""Autogenerated input type of OrganizationInvitationResend""" -input OrganizationInvitationResendInput { -"""Autogenerated input type of OrganizationInvitationResend""" - clientMutationId: String -"""Autogenerated input type of OrganizationInvitationResend""" - id: ID! +""" +A comment on a build +""" +type BuildMetaData { + """ + The key used to set this meta data + """ + key: String! + + """ + The value set to this meta data + """ + value: String! } -"""Autogenerated return type of OrganizationInvitationResend.""" -type OrganizationInvitationResendPayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - organizationInvitation: OrganizationInvitation! +""" +The connection type for BuildMetaData. +""" +type BuildMetaDataConnection implements Connection { + count: Int! + + """ + A list of edges. + """ + edges: [BuildMetaDataEdge] + pageInfo: PageInfo } -"""Autogenerated input type of OrganizationInvitationRevoke""" -input OrganizationInvitationRevokeInput { -"""Autogenerated input type of OrganizationInvitationRevoke""" - clientMutationId: String -"""Autogenerated input type of OrganizationInvitationRevoke""" - id: ID! +""" +An edge in a connection. +""" +type BuildMetaDataEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: BuildMetaData } -"""Autogenerated return type of OrganizationInvitationRevoke.""" -type OrganizationInvitationRevokePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - organization: Organization! - organizationInvitation: OrganizationInvitation! - organizationInvitationEdge: OrganizationInvitationEdge! +""" +Meta-data key/value pairs for a build +""" +input BuildMetaDataInput { + """ + The key for this meta-data item + """ + key: String! + + """ + The value for this meta-data item + """ + value: String! } -input OrganizationInvitationSSOInput { - mode: OrganizationMemberSSOModeEnum! +""" +Autogenerated input type of BuildRebuild +""" +input BuildRebuildInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! } -"""Information about the SSO setup for this invited organization member""" -type OrganizationInvitationSSOType { -"""The SSO mode of the invited organization member""" - mode: OrganizationMemberSSOModeEnum +""" +Autogenerated return type of BuildRebuild. +""" +type BuildRebuildPayload { + build: Build! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + rebuild: Build! } -"""All the possible states that an organization invitation can be""" -enum OrganizationInvitationStates { -"""The invitation is waiting for a user to accept it""" - PENDING -"""The invitation was accepted by the person it was sent to""" - ACCEPTED -"""The invitation wasn't accepted and the link has expired""" - EXPIRED -"""The invitation was revoked and can no longer be accepted""" - REVOKED +""" +Autogenerated input type of BuildRetryFailedJobs +""" +input BuildRetryFailedJobsInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! + + """ + Filter which failure types to retry. When omitted, retries all applicable jobs (matching the UI behavior). + """ + states: [BuildRetryFailedJobsStates!] } -"""A team that has been assigned to an invitation""" -type OrganizationInvitationTeamAssignment { - id: ID! -"""The role that the user will have once they've accepted the invite""" - role: TeamMemberRole! -"""The team that this assignment refers to""" - team: Team! +""" +Autogenerated return type of BuildRetryFailedJobs. +""" +type BuildRetryFailedJobsPayload { + build: Build! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + retriedJobsCount: Int! } -type OrganizationInvitationTeamAssignmentConnection implements Connection{ - count: Int! - edges: [OrganizationInvitationTeamAssignmentEdge] - pageInfo: PageInfo +""" +The failure types that can be retried when retrying failed jobs in a build +""" +enum BuildRetryFailedJobsStates { + """ + Jobs that were canceled + """ + CANCELED + + """ + Jobs that expired before being picked up by an agent + """ + EXPIRED + + """ + Hard-failed jobs (non-zero exit status not matching soft fail rules, or canceled/expired jobs with no exit status) + """ + FAILED + + """ + Soft-failed jobs (non-zero exit status, matching soft fail rules) + """ + SOFT_FAILED + + """ + Jobs that timed out + """ + TIMED_OUT } -type OrganizationInvitationTeamAssignmentEdge { - cursor: String! - node: OrganizationInvitationTeamAssignment +interface BuildSource { + name: String! } -"""Used to assign teams to organization invitation in mutations""" -input OrganizationInvitationTeamAssignmentInput { -"""Used to assign teams to organization invitation in mutations""" - id: ID! -"""Used to assign teams to organization invitation in mutations""" - role: TeamMemberRole! -} - -"""A member of an organization""" -type OrganizationMember implements Node{ -"""Whether or not organizations are required to pay for this user""" - complimentary: Boolean! -"""The time when this user was added to the organization""" - createdAt: DateTime! -"""The user that added invited this user""" - createdBy: User - id: ID! - organization: Organization! - permissions: OrganizationMemberPermissions! -"""Pipelines the user has access to within the organization""" - pipelines( -"""Returns the first _n_ elements from the list.""" - first: Int -"""Returns the elements in the list that come after the specified cursor.""" - after: String -"""Returns the last _n_ elements from the list.""" - last: Int -"""Returns the elements in the list that come before the specified cursor.""" - before: String -"""Search within the pipelines the user has access to""" - search: String -"""Order the pipelines returned""" - order: PipelineOrders - ): OrganizationMemberPipelineConnection! -"""The users role within the organization""" - role: OrganizationMemberRole! - security: OrganizationMemberSecurity! - sso: OrganizationMemberSSO! -"""Teams that this user is a part of within the organization""" - teams( - first: Int - after: String - last: Int - before: String -"""Order the members returned""" - order: TeamMemberOrder - ): TeamMemberConnection! - user: User! -"""The public UUID for this organization member""" - uuid: String! -} - -type OrganizationMemberConnection implements Connection{ - count: Int! - edges: [OrganizationMemberEdge] - pageInfo: PageInfo -} - -"""Autogenerated input type of OrganizationMemberDelete""" -input OrganizationMemberDeleteInput { -"""Autogenerated input type of OrganizationMemberDelete""" - clientMutationId: String -"""Autogenerated input type of OrganizationMemberDelete""" - id: ID! +""" +A build was triggered via an API +""" +type BuildSourceAPI implements BuildSource { + name: String! } -"""Autogenerated return type of OrganizationMemberDelete.""" -type OrganizationMemberDeletePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - deletedOrganizationMemberID: ID! - organization: Organization - user: User +""" +A build was triggered manually via the frontend +""" +type BuildSourceFrontend implements BuildSource { + name: String! } -type OrganizationMemberEdge { - cursor: String! - node: OrganizationMember +""" +A build was triggered via a schedule +""" +type BuildSourceSchedule implements BuildSource { + name: String! + + """ + The associated schedule that created this build. Will be `null` if the associated schedule has been deleted. + """ + pipelineSchedule: PipelineSchedule } -"""The different orders you can sort members by""" -enum OrganizationMemberOrder { -"""Order by name alphabetically""" - NAME -"""Order by the most recently created members first""" - RECENTLY_CREATED -"""Order by relevance when searching for members""" - RELEVANCE +""" +A build was triggered via a trigger job +""" +type BuildSourceTriggerJob implements BuildSource { + name: String! } -"""Permissions information about what actions the current user can do against the organization membership record""" -type OrganizationMemberPermissions { -"""Whether the user can delete the user from the organization""" - organizationMemberDelete: Permission -"""Whether the user can update the organization's members role information""" - organizationMemberUpdate: Permission +""" +A build was triggered via a Webhook +""" +type BuildSourceWebhook implements BuildSource { + """ + Provider specific headers sent along with the webhook. This will return null if the webhook has been purged by Buildkite. + """ + headers: [String!] + name: String! + + """ + The body of the webhook. Buildkite only stores webhook data for a short period + of time, so if this returns null - then the webhook data has been purged by Buildkite + """ + payload: JSON + + """ + The UUID for this webhook. This will return null if the webhook has been purged by Buildkite + """ + uuid: String } -"""Represents the connection between a user an a pipeline within an organization""" -type OrganizationMemberPipeline { -"""The pipeline the user has access to within the organization""" - pipeline: Pipeline! +""" +All the possible states a build can be in +""" +enum BuildStates { + """ + The build is blocked + """ + BLOCKED + + """ + The build was canceled + """ + CANCELED + + """ + The build is currently being canceled + """ + CANCELING + + """ + The build is currently being created + """ + CREATING + + """ + The build failed + """ + FAILED + + """ + The build is failing + """ + FAILING + + """ + The build wasn't run + """ + NOT_RUN + + """ + The build passed + """ + PASSED + + """ + The build is currently running jobs + """ + RUNNING + + """ + The build has yet to start running jobs + """ + SCHEDULED + + """ + The build was skipped + """ + SKIPPED } -type OrganizationMemberPipelineConnection implements Connection{ - count: Int! - edges: [OrganizationMemberPipelineEdge] - pageInfo: PageInfo +""" +The results of a `buildkite-agent pipeline upload` +""" +type BuildStepUpload { + """ + The uploaded step definition + """ + definition: BuildStepUploadDefinition! + id: ID! + + """ + The UUID for this build step upload + """ + uuid: ID! } -type OrganizationMemberPipelineEdge { - cursor: String! - node: OrganizationMemberPipeline +""" +The pipeline definition for a step upload +""" +type BuildStepUploadDefinition { + """ + The uploaded step definition rendered as JSON + """ + json: String! + + """ + The uploaded step definition rendered as YAML + """ + yaml: String! +} + +type Cluster implements Node { + """ + Returns agent tokens for the Cluster + """ + agentTokens(first: Int, last: Int): ClusterAgentTokenConnection + + """ + Color hex code for the cluster + """ + color: String + + """ + User who created the cluster + """ + createdBy: User + + """ + The default queue that agents connecting to the cluster without specifying a queue will accept jobs from + """ + defaultQueue: ClusterQueue + + """ + Description of the cluster + """ + description: String + + """ + Emoji for the cluster using Buildkite emoji syntax + """ + emoji: String + id: ID! + + """ + Name of the cluster + """ + name: String! + organization: Organization + queues( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Order the cluster queues + """ + order: ClusterQueueOrder = KEY + ): ClusterQueueConnection + + """ + The public UUID for this cluster + """ + uuid: ID! +} + +type ClusterAgentTokenConnection implements Connection { + count: Int! + edges: [ClusterAgentTokenEdge] + pageInfo: PageInfo } -"""The roles a user can be within an organization""" -enum OrganizationMemberRole { -"""The user is a regular member of the organization""" - MEMBER -"""Has full access to the entire organization""" - ADMIN +""" +Autogenerated input type of ClusterAgentTokenCreate +""" +input ClusterAgentTokenCreateInput { + """ + A list of CIDR-notation IPv4 addresses from which agents can use this token. + Please note that this feature is not yet available to all organizations + """ + allowedIpAddresses: String + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + clusterId: ID! + description: String! + + """ + The date and time at which this token will expire and no longer be valid. If not provided, the token will never expire. + """ + expiresAt: DateTime + organizationId: ID! } -"""Information about the SSO setup for this organization member""" -type OrganizationMemberSSO { -"""SSO authorizations provided by your organization that have been created for this user""" - authorizations( -"""Returns the first _n_ elements from the list.""" - first: Int -"""Returns the elements in the list that come after the specified cursor.""" - after: String -"""Returns the last _n_ elements from the list.""" - last: Int -"""Returns the elements in the list that come before the specified cursor.""" - before: String -"""Filter authorizations by state""" - state: [SSOAuthorizationState!] - ): SSOAuthorizationConnection -"""The SSO mode of the organization member""" - mode: OrganizationMemberSSOModeEnum +""" +Autogenerated return type of ClusterAgentTokenCreate. +""" +type ClusterAgentTokenCreatePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + clusterAgentToken: ClusterToken! + + """ + The token value used to register a new agent token to this cluster. Please + ensure to securely copy this value immediately upon generation as it will not + be displayed again. + """ + tokenValue: String! } -input OrganizationMemberSSOInput { - mode: OrganizationMemberSSOModeEnum! +type ClusterAgentTokenEdge { + cursor: String! + node: ClusterToken } -"""The SSO authorization modes you can use on a member""" -enum OrganizationMemberSSOModeEnum { -"""The member must use SSO to access your organization""" - REQUIRED -"""The member can either use SSO or their email & password""" - OPTIONAL +""" +Autogenerated input type of ClusterAgentTokenRevoke +""" +input ClusterAgentTokenRevokeInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! + organizationId: ID! } -"""Information about what security settings the user has enabled in Buildkite""" -type OrganizationMemberSecurity { -"""If the user has secured their Buildkite user account with a password""" - passwordProtected: Boolean! -"""If the user has enabled Two Factor Authentication""" - twoFactorEnabled: Boolean! +""" +Autogenerated return type of ClusterAgentTokenRevoke. +""" +type ClusterAgentTokenRevokePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + deletedClusterAgentTokenId: ID! } -input OrganizationMemberSecurityInput { - twoFactorEnabled: Boolean - passwordProtected: Boolean +""" +Autogenerated input type of ClusterAgentTokenUpdate +""" +input ClusterAgentTokenUpdateInput { + """ + A list of CIDR-notation IPv4 addresses from which agents can use this token. + Please note that this feature is not yet available to all organizations + """ + allowedIpAddresses: String + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + description: String! + id: ID! + organizationId: ID! } -"""Autogenerated input type of OrganizationMemberUpdate""" -input OrganizationMemberUpdateInput { -"""Autogenerated input type of OrganizationMemberUpdate""" - clientMutationId: String -"""Autogenerated input type of OrganizationMemberUpdate""" - id: ID! -"""Autogenerated input type of OrganizationMemberUpdate""" - role: OrganizationMemberRole -"""Autogenerated input type of OrganizationMemberUpdate""" - sso: OrganizationMemberSSOInput +""" +Autogenerated return type of ClusterAgentTokenUpdate. +""" +type ClusterAgentTokenUpdatePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + clusterAgentToken: ClusterToken! } -"""Autogenerated return type of OrganizationMemberUpdate.""" -type OrganizationMemberUpdatePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - organizationMember: OrganizationMember +""" +The connection type for Cluster. +""" +type ClusterConnection implements Connection { + count: Int! + + """ + A list of edges. + """ + edges: [ClusterEdge] + pageInfo: PageInfo } -"""Permissions information about what actions the current user can do against the organization""" -type OrganizationPermissions { -"""Whether the user can create agent tokens""" - agentTokenCreate: Permission -"""Whether the user can access agent tokens""" - agentTokenView: Permission -"""Whether the user can create a see a list of agents in organization""" - agentView: Permission -"""Whether the user can access audit events for the organization""" - auditEventsView: Permission -"""Whether the user can change the notification services for the organization""" - notificationServiceUpdate: Permission -"""Whether the user can view and manage billing for the organization""" - organizationBillingUpdate: Permission -"""Whether the user can invite members from an organization""" - organizationInvitationCreate: Permission -"""Whether the user can update/remove members from an organization""" - organizationMemberUpdate: Permission -"""Whether the user can see members in the organization""" - organizationMemberView: Permission -"""Whether the user can see sensitive information about members in the organization""" - organizationMemberViewSensitive: Permission -"""Whether the user can change the organization name and related source code provider settings""" - organizationUpdate: Permission -"""Whether the user can create a new pipeline in the organization""" - pipelineCreate: Permission -"""Whether the user can create a new pipeline without adding it to any teams within the organization""" - pipelineCreateWithoutTeams: Permission -"""Whether the user can create a see a list of pipelines in organization""" - pipelineView: Permission -"""Whether the user can change SSO Providers for the organization""" - ssoProviderCreate: Permission -"""Whether the user can change SSO Providers for the organization""" - ssoProviderUpdate: Permission -"""Whether the user can create a see a list of suites in organization""" - suiteView: Permission -"""Whether the user can administer one or all the teams in the organization""" - teamAdmin: Permission -"""Whether the user can create teams for the organization""" - teamCreate: Permission -"""Whether the user can toggle teams on/off for the organization""" - teamEnabledChange: Permission -"""Whether the user can see teams in the organization""" - teamView: Permission -} - -"""Autogenerated input type of OrganizationRevokeInactiveTokensAfterUpdateMutation""" -input OrganizationRevokeInactiveTokensAfterUpdateMutationInput { -"""Autogenerated input type of OrganizationRevokeInactiveTokensAfterUpdateMutation""" - clientMutationId: String -"""Autogenerated input type of OrganizationRevokeInactiveTokensAfterUpdateMutation""" - organizationId: ID! -"""Autogenerated input type of OrganizationRevokeInactiveTokensAfterUpdateMutation""" - revokeInactiveTokensAfter: RevokeInactiveTokenPeriod! +""" +Autogenerated input type of ClusterCreate +""" +input ClusterCreateInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Color hex code for the cluster + """ + color: String + + """ + Description for the cluster + """ + description: String + + """ + Emoji for the cluster using Buildkite emoji syntax + """ + emoji: String + + """ + Name for the cluster + """ + name: String! + organizationId: ID! +} + +""" +Autogenerated return type of ClusterCreate. +""" +type ClusterCreatePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + cluster: Cluster! +} + +""" +Autogenerated input type of ClusterDelete +""" +input ClusterDeleteInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! + organizationId: ID! +} + +""" +Autogenerated return type of ClusterDelete. +""" +type ClusterDeletePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + deletedClusterId: ID! +} + +""" +An edge in a connection. +""" +type ClusterEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Cluster +} + +""" +The different orders you can sort clusters by +""" +enum ClusterOrder { + """ + Order by name alphabetically + """ + NAME + + """ + Order by the most recently created clusters first + """ + RECENTLY_CREATED +} + +type ClusterPermission { + actor: ClusterPermissionActor + + """ + Whether the actor can add pipelines to this cluster + """ + can_add_pipelines: Boolean! + + """ + Whether the actor can manage the associated cluster + """ + can_manage: Boolean! + + """ + Whether the actor can see this cluster's tokens + """ + can_see_tokens: Boolean! + cluster: Cluster + id: ID! + + """ + The public UUID for this cluster permission + """ + uuid: ID! +} + +""" +Actor to whom a cluster permission is applied +""" +union ClusterPermissionActor = OrganizationMember | Team + +type ClusterQueue implements Node { + cluster: Cluster + createdBy: User + description: String + + """ + States whether job dispatch is paused for this cluster queue + """ + dispatchPaused: Boolean! + + """ + The time this queue was paused + """ + dispatchPausedAt: DateTime + + """ + The user who paused this cluster queue + """ + dispatchPausedBy: User + + """ + Note describing why job dispatch was paused for this cluster queue + """ + dispatchPausedNote: String + + """ + Whether this queue powers by hosted or self-hosted agents + """ + hosted: Boolean! + + """ + Settings for hosted agents used for jobs in this queue + """ + hostedAgents: HostedAgentQueueSettings + id: ID! + key: String! + + """ + Latest metrics for this cluster queue (only if advanced queue metrics are enabled) + """ + metrics: ClusterQueueMetrics + + """ + Dispatch behavior for retry jobs. Must be one of `prefer-warmest` or `prefer-different` + """ + retryAgentAffinity: String! + + """ + The health status of stacks associated with this queue + """ + stackHealth: String + + """ + The public UUID for this cluster queue + """ + uuid: ID! +} + +""" +The connection type for ClusterQueue. +""" +type ClusterQueueConnection implements Connection { + count: Int! + + """ + A list of edges. + """ + edges: [ClusterQueueEdge] + pageInfo: PageInfo +} + +""" +Autogenerated input type of ClusterQueueCreate +""" +input ClusterQueueCreateInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + clusterId: ID! + + """ + Description for the queue + """ + description: String + + """ + Settings for hosted agents on this queue + """ + hostedAgents: HostedAgentsQueueSettingsCreateInput + + """ + The queue tag used to connect an agent to the queue, this can't be updated later + """ + key: String! + organizationId: ID! + + """ + Dispatch behavior for retry jobs. Must be one of `prefer-warmest` or `prefer-different` + """ + retryAgentAffinity: String +} + +""" +Autogenerated return type of ClusterQueueCreate. +""" +type ClusterQueueCreatePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + clusterQueue: ClusterQueue! +} + +""" +Autogenerated input type of ClusterQueueDelete +""" +input ClusterQueueDeleteInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! + organizationId: ID! +} + +""" +Autogenerated return type of ClusterQueueDelete. +""" +type ClusterQueueDeletePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + deletedClusterQueueId: ID! +} + +""" +An edge in a connection. +""" +type ClusterQueueEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ClusterQueue +} + +""" +Latest metrics for a cluster queue (time bucket, agent/job counts) +""" +type ClusterQueueMetrics { + """ + Number of connected agents in the latest bucket + """ + connectedAgentsCount: Int! + + """ + Number of failed jobs in the latest bucket + """ + jobsFailedCount: Int! + + """ + Number of passed jobs in the latest bucket + """ + jobsPassedCount: Int! + + """ + Number of running jobs in the latest bucket + """ + runningJobsCount: Int! + + """ + The timestamp (start of the most recent time bucket, in UTC) + """ + timestamp: DateTime! + + """ + Wait time statistics in seconds for the latest bucket + """ + waitTimeSec: ClusterQueueWaitTime! + + """ + Number of waiting (scheduled) jobs in the latest bucket + """ + waitingJobsCount: Int! +} + +""" +The different orders you can sort cluster queues by +""" +enum ClusterQueueOrder { + """ + Order by key alphabetically + """ + KEY + + """ + Order by the most recently created cluster queues first + """ + RECENTLY_CREATED +} + +""" +Autogenerated input type of ClusterQueuePauseDispatch +""" +input ClusterQueuePauseDispatchInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! + + """ + An optional note describing the reason for pausing + """ + note: String +} + +""" +Autogenerated return type of ClusterQueuePauseDispatch. +""" +type ClusterQueuePauseDispatchPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + queue: ClusterQueue! +} + +""" +Autogenerated input type of ClusterQueueResumeDispatch +""" +input ClusterQueueResumeDispatchInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! +} + +""" +Autogenerated return type of ClusterQueueResumeDispatch. +""" +type ClusterQueueResumeDispatchPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + queue: ClusterQueue! +} + +""" +A token used to register an agent with a Buildkite cluster queue +""" +type ClusterQueueToken implements Node { + """ + A list of CIDR-notation IPv4 addresses from which agents can use this token. + Please note that this feature is not yet available to all organizations + """ + allowedIpAddresses: String + cluster: Cluster + clusterQueue: ClusterQueue + createdBy: User + + """ + A description for this cluster queue token + """ + description: String! + id: ID! + + """ + The public UUID for this cluster queue token + """ + uuid: ID! +} + +""" +Autogenerated input type of ClusterQueueUpdate +""" +input ClusterQueueUpdateInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Description for the queue + """ + description: String + + """ + Settings for hosted agents on this queue + """ + hostedAgents: HostedAgentsQueueSettingsUpdateInput + id: ID! + organizationId: ID! + + """ + Retry agent affinity + """ + retryAgentAffinity: String +} + +""" +Autogenerated return type of ClusterQueueUpdate. +""" +type ClusterQueueUpdatePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + clusterQueue: ClusterQueue! +} + +""" +Wait time statistics in seconds for a cluster queue +""" +type ClusterQueueWaitTime { + """ + Maximum wait time in seconds + """ + max: Float! + + """ + Minimum wait time in seconds + """ + min: Float! + + """ + Median (50th percentile) wait time in seconds + """ + p50: Float! + + """ + 95th percentile wait time in seconds + """ + p95: Float! +} + +""" +A token used to connect an agent in cluster to Buildkite +""" +type ClusterToken implements Node { + """ + A list of CIDR-notation IPv4 addresses from which agents can use this token. + Please note that this feature is not yet available to all organizations + """ + allowedIpAddresses: String + cluster: Cluster + createdBy: User + + """ + A description about what this cluster agent token is used for + """ + description: String + + """ + The date and time at which this token will expire and no longer be valid. If empty, the token will never expire. + """ + expiresAt: DateTime + id: ID! + + """ + The token value used to register a new agent to this tokens cluster. This will + soon return an empty string before we finally remove this field. + """ + token: String! @deprecated(reason: "Hiding these after creation to improve security. Use the `token_value` field on ClusterAgentTokenCreate instead.") + + """ + The public UUID for this cluster token + """ + uuid: ID! +} + +""" +Autogenerated input type of ClusterUpdate +""" +input ClusterUpdateInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Color hex code for the cluster + """ + color: String + + """ + ID of the queue to set as the cluster's default queue + """ + defaultQueueId: ID + + """ + Description for the cluster + """ + description: String + + """ + Emoji for the cluster using Buildkite emoji syntax + """ + emoji: String + id: ID! + + """ + Name for the cluster + """ + name: String + organizationId: ID! +} + +""" +Autogenerated return type of ClusterUpdate. +""" +type ClusterUpdatePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + cluster: Cluster! +} + +""" +The match mode for command word matching +""" +enum CommandWordMatchMode { + """ + Match if the command word appears anywhere + """ + CONTAINS + + """ + Match the command word exactly + """ + EXACT +} + +""" +A composite registry's upstream +""" +type CompositeRegistryUpstream implements Node { + compositeRegistry: Registry! + + """ + The time when the upstream was created + """ + createdAt: DateTime + id: ID! + organization: Organization! + registry: Registry! + + """ + The time when the upstream was updated + """ + updatedAt: DateTime + uuid: String! +} + +interface Connection { + count: Int! + pageInfo: PageInfo +} + +""" +An ISO-8601 encoded UTC date string +""" +scalar DateTime + +type Dependency { + """ + Is this dependency allowed to fail + """ + allowFailure: Boolean! + id: ID! + + """ + The step key or step identifier that this step depends on + """ + key: String + + """ + The UUID for this dependency + """ + uuid: ID! +} + +""" +The connection type for Dependency. +""" +type DependencyConnection implements Connection { + count: Int! + + """ + A list of edges. + """ + edges: [DependencyEdge] + pageInfo: PageInfo +} + +""" +An edge in a connection. +""" +type DependencyEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Dependency +} + +""" +An email address +""" +type Email implements Node { + """ + The email address + """ + address: String! + id: ID! + + """ + Whether the email address is the user's primary address + """ + primary: Boolean! + + """ + The public UUID for this email + """ + uuid: ID! + + """ + Whether the email address has been verified by the user + """ + verified: Boolean! +} + +""" +The connection type for Email. +""" +type EmailConnection implements Connection { + count: Int! + + """ + A list of edges. + """ + edges: [EmailEdge] + pageInfo: PageInfo +} + +""" +Autogenerated input type of EmailCreate +""" +input EmailCreateInput { + address: String! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String +} + +""" +Autogenerated return type of EmailCreate. +""" +type EmailCreatePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + emailEdge: EmailEdge! + viewer: Viewer! +} + +""" +An edge in a connection. +""" +type EmailEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Email +} + +""" +Autogenerated input type of EmailResendVerification +""" +input EmailResendVerificationInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! +} + +""" +Autogenerated return type of EmailResendVerification. +""" +type EmailResendVerificationPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + email: Email! +} + +""" +GitHub App Installation Rate Limit (limits set by GitHub) +""" +type GitHubRateLimit { + """ + The maximum number of requests that Buildkite is permitted to make per hour, as set by GitHub. + """ + limit: Int! + + """ + The number of requests remaining in the current rate limit window. + """ + remaining: Int! + + """ + The time at which the current rate limit window resets + """ + resetAt: DateTime! + + """ + The number of requests remaining in the current rate limit window. + """ + used: Int! +} + +""" +A shared GraphQL query +""" +type GraphQLSnippet { + """ + When this GraphQL snippet was created + """ + createdAt: DateTime! + id: ID! + + """ + The default operation name for this snippet + """ + operationName: String + + """ + The query of this GraphQL snippet + """ + query: String! + + """ + The URL for the GraphQL snippet + """ + url: String! + + """ + The public UUID for this snippet + """ + uuid: ID! +} + +""" +Autogenerated input type of GraphQLSnippetCreate +""" +input GraphQLSnippetCreateInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + operationName: ID + query: String! +} + +""" +Autogenerated return type of GraphQLSnippetCreate. +""" +type GraphQLSnippetCreatePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + graphQLSnippet: GraphQLSnippet! +} + +""" +Possible machine architectures for the hosted agent instance +""" +enum HostedAgentArchitecture { + """ + AMD64 + """ + AMD64 + + """ + ARM64 + """ + ARM64 +} + +""" +The hosted agent instance configuration for this cluster queue +""" +type HostedAgentInstanceShape { + """ + Specifies the architecture of the hosted agent instance, such as AMD64 + (x86_64) or ARM64 (AArch64), used in this cluster queue. + """ + architecture: HostedAgentArchitecture + + """ + Specifies the type of machine used for the hosted agent instance in this cluster queue (e.g., Linux or MacOS). + """ + machineType: HostedAgentMachineType + + """ + The amount of memory (in GB) available on each hosted agent instance in this cluster queue. + """ + memory: Int + + """ + Name of the instance shape + """ + name: HostedAgentInstanceShapeName + + """ + The overall size classification of the hosted agent instance, combining vCPU and memory, used in this cluster queue. + """ + size: HostedAgentSize + + """ + The number of CPU cores allocated to the hosted agent instance in this cluster queue. + """ + vcpu: Int +} + +""" +Possible instance shapes for the hosted agent instance +""" +enum HostedAgentInstanceShapeName { + """ + Linux 16 vCPU x 64 GB Memory + """ + LINUX_AMD64_16X64 + + """ + Linux 2 vCPU x 4 GB Memory + """ + LINUX_AMD64_2X4 + + """ + Linux 32 vCPU x 128 GB Memory + """ + LINUX_AMD64_32X128 + + """ + Linux 4 vCPU x 16 GB Memory + """ + LINUX_AMD64_4X16 + + """ + Linux 64 vCPU x 256 GB Memory + """ + LINUX_AMD64_64X256 + + """ + Linux 8 vCPU x 32 GB Memory + """ + LINUX_AMD64_8X32 + + """ + Linux 16 vCPU x 64 GB Memory + """ + LINUX_ARM64_16X64 + + """ + Linux 2 vCPU x 4 GB Memory + """ + LINUX_ARM64_2X4 + + """ + Linux 32 vCPU x 128 GB Memory + """ + LINUX_ARM64_32X128 + + """ + Linux 4 vCPU x 16 GB Memory + """ + LINUX_ARM64_4X16 + + """ + Linux 64 vCPU x 256 GB Memory + """ + LINUX_ARM64_64X256 + + """ + Linux 8 vCPU x 32 GB Memory + """ + LINUX_ARM64_8X32 + + """ + macOS 12 vCPU x 56 GB Memory + """ + MACOS_ARM64_M4_12X56 + + """ + macOS 6 vCPU x 28 GB Memory + """ + MACOS_ARM64_M4_6X28 +} + +""" +Configuration options specific to Linux hosted agent instances. +""" +type HostedAgentLinuxSettings { + """ + The image reference of a custom agent base image used by the hosted agent + instances in this cluster queue. Note: this must be a public image, or image + stored within the hosted agents internal registry. + """ + agentImageRef: String +} + +""" +Configuration options for the base image of hosted agent instances on macOS platforms. +""" +type HostedAgentMacOSSettingsType { + """ + The macOS version to use for macOS hosted agent instances for this cluster queue. + """ + macosVersion: HostedAgentMacOSVersion + + """ + The Xcode version to pre-select (via xcode-select) on macOS hosted agent instances for this cluster queue. + """ + xcodeVersion: String +} + +""" +Possible macOS versions for the Hosted Agent instance +""" +enum HostedAgentMacOSVersion { + """ + macOS Golden Gate (27.0) + """ + GOLDEN_GATE + + """ + macOS Sequoia (15.7.5) + """ + SEQUOIA + + """ + macOS Sonoma (14.8.3) + """ + SONOMA + + """ + macOS Tahoe (26.3.1) + """ + TAHOE + + """ + macOS Tahoe (26.6) + """ + TAHOE_26_6 + + """ + macOS Tahoe (26.5) + """ + TAHOE_SLIM +} + +""" +Possible machine types for the hosted agent instance +""" +enum HostedAgentMachineType { + """ + Linux + """ + LINUX + + """ + macOS + """ + MACOS +} + +""" +Platform-specific configuration for hosted agent instances. +""" +type HostedAgentPlatformSettings { + """ + Configuration options specific to Linux hosted agent instances. + """ + linux: HostedAgentLinuxSettings + + """ + Configuration options specific to macOS hosted agent instances. + """ + macos: HostedAgentMacOSSettingsType +} + +""" +Platform-specific configuration for hosted agent instances. +""" +type HostedAgentQueueSettings { + """ + The hardware specifications of the hosted agent instance, such as CPU and memory + """ + instanceShape: HostedAgentInstanceShape + + """ + Platform-specific configuration for Linux and macOS hosted agents. + """ + platformSettings: HostedAgentPlatformSettings +} + +""" +Possible sizes for the hosted agent instance, specifying vCPU and memory allocations. +""" +enum HostedAgentSize { + """ + Extra extra large capacity size: 32 vCPU, 128GB RAM (Linux); Not applicable for macOS. + """ + EXTRA_EXTRA_LARGE + + """ + Extra large capacity size: 16 vCPU, 64GB RAM (Linux); 12 vCPU, 56GB RAM (macOS). + """ + EXTRA_LARGE + + """ + Large capacity size: 8 vCPU, 32GB RAM (Linux); 12 vCPU, 28GB RAM (macOS). + """ + LARGE + + """ + Medium capacity size: 4 vCPU, 16GB RAM (Linux); 6 vCPU, 14GB RAM (macOS). + """ + MEDIUM + + """ + Small capacity size: 2 vCPU, 4GB RAM (Linux); 4 vCPU, 7GB RAM (macOS). + """ + SMALL + + """ + 3XL capacity size: 64 vCPU, 256GB RAM (Linux); Not applicable for macOS. + """ + THREE_XL +} + +""" +Settings for Linux hosted agents on this queue +""" +input HostedAgentsLinuxPlatformSettingsInput { + """ + Hosted Agents: The url to a custom agent image the hosted agent instance utilises for this cluster queue + """ + agentImageRef: String +} + +""" +Settings for Mac hosted agents on this queue +""" +input HostedAgentsMacosPlatformSettingsInput { + """ + The macOS version to use for macOS hosted agent instances for this cluster queue + """ + macosVersion: HostedAgentMacOSVersion + + """ + The Xcode version to pre-select (via xcode-select) on macOS hosted agent instances for this cluster queue + """ + xcodeVersion: String +} + +""" +Settings for hosted agents on this queue +""" +input HostedAgentsPlatformSettingsInput { + linux: HostedAgentsLinuxPlatformSettingsInput + macos: HostedAgentsMacosPlatformSettingsInput +} + +""" +Settings for hosted agents on this queue +""" +input HostedAgentsQueueSettingsCreateInput { + """ + Hosted agent instance shape + """ + instanceShape: HostedAgentInstanceShapeName! + + """ + Per-platform settings for hosted agents on this queue + """ + platformSettings: HostedAgentsPlatformSettingsInput +} + +""" +Settings for hosted agents on this queue +""" +input HostedAgentsQueueSettingsUpdateInput { + """ + Deprecated: Use `platformSetting.linux.agentImageRef instead` + """ + agentImageRef: String + + """ + Hosted agent instance shape + """ + instanceShape: HostedAgentInstanceShapeName + + """ + Per-platform settings for hosted agents on this queue + """ + platformSettings: HostedAgentsPlatformSettingsInput +} + +""" +Represents non-fractional signed whole numeric values. + +`JSInt` can represent values between -(2^53) + 1 and 2^53 - 1. +""" +scalar JSInt + +""" +A blob of JSON represented as a pretty formatted string +""" +scalar JSON + +""" +Kinds of jobs that can exist on a build +""" +union Job = JobTypeBlock | JobTypeCommand | JobTypeTrigger | JobTypeWait + +""" +Autogenerated input type of JobAnnotate +""" +input JobAnnotateInput { + """ + Append to an existing annotation + """ + append: Boolean = false + + """ + The body of the annotation. Markdown and some limited HTML is supported + """ + body: String + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + A string label to differentiate this annotation from other annotations. The default is `default` + """ + context: String = "default" + + """ + The GraphQL ID of the job you want to annotate + """ + jobId: ID! + + """ + Priority of the annotation. By default annotations have a priority of 3. + Annotations with a priority of 10 will be shown first, and annotations with a + priority of 1 will be shown last. + """ + priority: Int = 3 + + """ + The style of the annotation. The default is `DEFAULT` + """ + style: AnnotationStyle = DEFAULT +} + +""" +Autogenerated return type of JobAnnotate. +""" +type JobAnnotatePayload { + annotation: Annotation + annotationEdge: AnnotationEdge + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + job: JobTypeCommand +} + +""" +Concurrency configuration for a job +""" +type JobConcurrency { + """ + The concurrency group + """ + group: String! + + """ + The maximum amount of jobs in the concurrency that are allowed to run at any given time + """ + limit: Int! +} + +""" +Searching for concurrency groups on jobs +""" +input JobConcurrencySearch { + """ + The groups you want to search + """ + group: [String!] +} + +type JobConnection implements Connection { + count: Int! + edges: [JobEdge] + pageInfo: PageInfo +} + +type JobEdge { + cursor: String! + node: Job +} + +interface JobEvent { + """ + The actor that caused this event to occur + """ + actor: JobEventActor! + id: ID! + + """ + The job that this event belongs to + """ + job: JobTypeCommand! + + """ + The time when the event occurred + """ + timestamp: DateTime! + + """ + The type of event + """ + type: JobEventType! + + """ + The public UUID for this job event + """ + uuid: ID! +} + +""" +The actor who was responsible for the job event +""" +type JobEventActor { + """ + The node corresponding to this actor if available + """ + node: JobEventActorNodeUnion + + """ + The type of this actor + """ + type: JobEventActorType! + + """ + The public UUID of this actor if available + """ + uuid: ID +} + +""" +Actor types that can create events on a job +""" +union JobEventActorNodeUnion = Agent | User + +""" +All the actors that can have created a job event +""" +enum JobEventActorType { + """ + The actor was an agent + """ + AGENT + + """ + The actor was the dispatcher + """ + DISPATCH + + """ + The actor was an agent stack + """ + STACK + + """ + The actor was the system + """ + SYSTEM + + """ + The actor was a user + """ + USER +} + +""" +An event created when the dispatcher assigns the job to an agent +""" +type JobEventAssigned implements JobEvent & Node { + """ + The actor that caused this event to occur + """ + actor: JobEventActor! + + """ + The agent the job was assigned to + """ + assignedAgent: Agent + id: ID! + + """ + The job that this event belongs to + """ + job: JobTypeCommand! + + """ + The time when the event occurred + """ + timestamp: DateTime! + + """ + The type of event + """ + type: JobEventType! + + """ + The public UUID for this job event + """ + uuid: ID! +} + +""" +An event created when the job creates new build steps via pipeline upload +""" +type JobEventBuildStepUploadCreated implements JobEvent & Node { + """ + The actor that caused this event to occur + """ + actor: JobEventActor! + buildStepUpload: BuildStepUpload! + id: ID! + + """ + The job that this event belongs to + """ + job: JobTypeCommand! + + """ + The time when the event occurred + """ + timestamp: DateTime! + + """ + The type of event + """ + type: JobEventType! + + """ + The public UUID for this job event + """ + uuid: ID! +} + +""" +An event created when the job is canceled +""" +type JobEventCanceled implements JobEvent & Node { + """ + The actor that caused this event to occur + """ + actor: JobEventActor! + exitStatus: JSInt! + id: ID! + + """ + The job that this event belongs to + """ + job: JobTypeCommand! + + """ + The termination signal which killed the command, if the command was killed + """ + signal: String + + """ + If the termination signal was sent by the agent, the reason the agent took + that action. If this field is null, and the `signal` field is not null, the + command was killed by another process or by the operating system. + """ + signalReason: JobEventSignalReason + + """ + The time when the event occurred + """ + timestamp: DateTime! + + """ + The type of event + """ + type: JobEventType! + + """ + The public UUID for this job event + """ + uuid: ID! +} + +""" +A job event for when a job's attributes have been updated +""" +type JobEventChanged implements JobEvent & Node { + """ + The actor that caused this event to occur + """ + actor: JobEventActor! + + """ + The changes that were made to the job + """ + changedChanges: JSON + id: ID! + + """ + The job that this event belongs to + """ + job: JobTypeCommand! + + """ + The time when the event occurred + """ + timestamp: DateTime! + + """ + The type of event + """ + type: JobEventType! + + """ + The public UUID for this job event + """ + uuid: ID! +} + +type JobEventConnection implements Connection { + count: Int! + edges: [JobEventEdge] + pageInfo: PageInfo +} + +type JobEventEdge { + cursor: String! + node: JobEvent! +} + +""" +An event created when the job is finished +""" +type JobEventFinished implements JobEvent & Node { + """ + The actor that caused this event to occur + """ + actor: JobEventActor! + + """ + The exit status returned by the command on the agent. A value of `-1` + indicates either that the agent was lost or the process was killed. If the + process was killed, the `signal` field will be non-null. + """ + exitStatus: JSInt! + id: ID! + + """ + The job that this event belongs to + """ + job: JobTypeCommand! + + """ + The termination signal which killed the command, if the command was killed + """ + signal: String + + """ + If the termination signal was sent by the agent, the reason the agent took + that action. If this field is null, and the `signal` field is not null, the + command was killed by another process or by the operating system. + """ + signalReason: JobEventSignalReason + + """ + The time when the event occurred + """ + timestamp: DateTime! + + """ + The type of event + """ + type: JobEventType! + + """ + The public UUID for this job event + """ + uuid: ID! +} + +""" +A generic event type that doesn't have any additional meta-information associated with the event +""" +type JobEventGeneric implements JobEvent & Node { + """ + The actor that caused this event to occur + """ + actor: JobEventActor! + id: ID! + + """ + The job that this event belongs to + """ + job: JobTypeCommand! + + """ + The time when the event occurred + """ + timestamp: DateTime! + + """ + The type of event + """ + type: JobEventType! + + """ + The public UUID for this job event + """ + uuid: ID! +} + +""" +A job event for when a running job has declared an early failure with a promised exit status +""" +type JobEventPromisedExitStatus implements JobEvent & Node { + """ + The actor that caused this event to occur + """ + actor: JobEventActor! + id: ID! + + """ + The job that this event belongs to + """ + job: JobTypeCommand! + + """ + The exit status that the job has declared it will finish with + """ + promisedExitStatus: JSInt! + + """ + An optional human-readable reason for the declared early failure + """ + promisedExitStatusReason: String + + """ + The time when the event occurred + """ + timestamp: DateTime! + + """ + The type of event + """ + type: JobEventType! + + """ + The public UUID for this job event + """ + uuid: ID! +} + +""" +A job event for when a job's priority has been changed +""" +type JobEventReprioritized implements JobEvent & Node { + """ + The actor that caused this event to occur + """ + actor: JobEventActor! + + """ + The priority value after the change + """ + changedPriorityAfterValue: Int + + """ + The priority value before the change + """ + changedPriorityBeforeValue: Int + id: ID! + + """ + The job that this event belongs to + """ + job: JobTypeCommand! + + """ + The time when the event occurred + """ + timestamp: DateTime! + + """ + The type of event + """ + type: JobEventType! + + """ + The public UUID for this job event + """ + uuid: ID! +} + +""" +An event created when the job is retried +""" +type JobEventRetried implements JobEvent & Node { + """ + The actor that caused this event to occur + """ + actor: JobEventActor! + automaticRule: JobRetryRuleAutomatic + id: ID! + + """ + The job that this event belongs to + """ + job: JobTypeCommand! + retriedInJob: JobTypeCommand + + """ + The time when the event occurred + """ + timestamp: DateTime! + + """ + The type of event + """ + type: JobEventType! + + """ + The public UUID for this job event + """ + uuid: ID! +} + +""" +An event created when job fails to retry +""" +type JobEventRetryFailed implements JobEvent & Node { + """ + The actor that caused this event to occur + """ + actor: JobEventActor! + id: ID! + + """ + The job that this event belongs to + """ + job: JobTypeCommand! + + """ + The reason why the job was unable to be retried + """ + retryFailedReason: String! + + """ + The time when the event occurred + """ + timestamp: DateTime! + + """ + The type of event + """ + type: JobEventType! + + """ + The public UUID for this job event + """ + uuid: ID! +} + +""" +The reason why a signal was sent to the job's process, or why the process did not start +""" +enum JobEventSignalReason { + """ + The agent was incompatible with the job requirements (e.g., version too old to + support required features). Note that in this case, no signal was sent to the + process, the job was not run at all. + """ + AGENT_INCOMPATIBLE + + """ + The agent refused the job. Note that in this case, no signal was sent to the process, the job was not run at all. + """ + AGENT_REFUSED + + """ + The agent sent the signal to the process because the agent was stopped + """ + AGENT_STOP + + """ + The agent sent the signal to the process because the job was canceled + """ + CANCEL + + """ + The agent was unable to start the job process, often due to memory or resource + constraints. Note that in this case, no signal was sent to the process, it + simply never started. + """ + PROCESS_RUN_ERROR + + """ + The agent refused the job because the signature could not be verified. Note + that in this case, no signal was sent to the process, the job was not run at all. + """ + SIGNATURE_REJECTED + + """ + The job couldn't be launched by the stack controlling agents. This could be + due to a misconfiguration of the job, or due to a lack of resources. + """ + STACK_ERROR +} + +""" +An event created when a stack error is reported +""" +type JobEventStackError implements JobEvent & Node { + """ + The actor that caused this event to occur + """ + actor: JobEventActor! + + """ + Details about the stack error + """ + errorDetail: String + id: ID! + + """ + The job that this event belongs to + """ + job: JobTypeCommand! + + """ + The time when the event occurred + """ + timestamp: DateTime! + + """ + The type of event + """ + type: JobEventType! + + """ + The public UUID for this job event + """ + uuid: ID! +} + +""" +An event created when a stack finishes a job and marks it as success +""" +type JobEventStackFinished implements JobEvent & Node { + """ + The actor that caused this event to occur + """ + actor: JobEventActor! + + """ + Details about why stack finishes this job + """ + detail: String + id: ID! + + """ + The job that this event belongs to + """ + job: JobTypeCommand! + + """ + The time when the event occurred + """ + timestamp: DateTime! + + """ + The type of event + """ + type: JobEventType! + + """ + The public UUID for this job event + """ + uuid: ID! +} + +""" +An event created when a stack notification is triggered +""" +type JobEventStackNotification implements JobEvent & Node { + """ + The actor that caused this event to occur + """ + actor: JobEventActor! + id: ID! + + """ + The job that this event belongs to + """ + job: JobTypeCommand! + + """ + Message from the stack notification + """ + message: String + + """ + The time when the event occurred + """ + timestamp: DateTime! + + """ + The type of event + """ + type: JobEventType! + + """ + The public UUID for this job event + """ + uuid: ID! +} + +""" +An event created when the job is timed out +""" +type JobEventTimedOut implements JobEvent & Node { + """ + The actor that caused this event to occur + """ + actor: JobEventActor! + exitStatus: JSInt! + id: ID! + + """ + The job that this event belongs to + """ + job: JobTypeCommand! + + """ + The termination signal which killed the command, if the command was killed + """ + signal: String + + """ + If the termination signal was sent by the agent, the reason the agent took + that action. If this field is null, and the `signal` field is not null, the + command was killed by another process or by the operating system. + """ + signalReason: JobEventSignalReason + + """ + The time when the event occurred + """ + timestamp: DateTime! + + """ + The type of event + """ + type: JobEventType! + + """ + The public UUID for this job event + """ + uuid: ID! +} + +""" +All the possible types of events that happen to a Job +""" +enum JobEventType { + """ + The Job was accepted by an agent + """ + ACCEPTED + + """ + The agent took too long to start the job + """ + ACCEPTED_EXPIRED + + """ + The agent disconnected while processing this job + """ + AGENT_DISCONNECTED + + """ + The agent was lost while processing this job + """ + AGENT_LOST + + """ + The agent was stopped while processing this job + """ + AGENT_STOPPED + + """ + The Job was assigned to an agent + """ + ASSIGNED + + """ + The agent took too long to accept the job + """ + ASSIGNED_EXPIRED + + """ + The Job uploaded steps to the current build + """ + BUILD_STEP_UPLOAD_CREATED + + """ + The Job was marked for cancelation by a user + """ + CANCELATION + + """ + The Job was canceled + """ + CANCELED + + """ + The Job was changed + """ + CHANGED + + """ + The Job expired before it was started on an agent + """ + EXPIRED + + """ + The Job was finished by an agent + """ + FINISHED + + """ + The Job is limited by a concurrency group + """ + LIMITED + + """ + The job log exceeded the limit + """ + LOG_SIZE_LIMIT_EXCEEDED + + """ + The Job sent a notification + """ + NOTIFICATION + + """ + The Job is limited by a platform limit + """ + PLATFORM_LIMITED + + """ + The Job declared an early failure with a promised exit status + """ + PROMISED_EXIT_STATUS + + """ + The Job's priority was changed + """ + REPRIORITIZED + + """ + The Job was reserved by a stack for later execution + """ + RESERVED + + """ + The Job was reserved by a stack but the stack took too long to spin up agent + """ + RESERVED_EXPIRED + + """ + The Job was retried either automatically or by a user + """ + RETRIED + + """ + The Job was unable to be retried + """ + RETRY_FAILED + + """ + The Job was scheduled + """ + SCHEDULED + + """ + Stack encountered an error handling this job + """ + STACK_ERRORED + + """ + Stack ends this job without raising error + """ + STACK_FINISHED + + """ + Stack sent a notification for this job + """ + STACK_NOTIFICATION + + """ + The Job was started by an agent + """ + STARTED + + """ + The Job was timed out + """ + TIMED_OUT + + """ + The Job was unblocked by a user + """ + UNBLOCKED +} + +interface JobInterface { + """ + If this job has been retried + """ + retried: Boolean! + + """ + The user that retried this job + """ + retriedBy: User + + """ + The number of times the job has been retried + """ + retriesCount: Int + + """ + The job that was retried to create this job + """ + retrySource: Job + + """ + The type of retry that was performed on this job + """ + retryType: JobRetryTypes + + """ + The UUID for this job + """ + uuid: String! +} + +""" +The different orders you can sort jobs by +""" +enum JobOrder { + """ + Order by the most recently assigned jobs first + """ + RECENTLY_ASSIGNED + + """ + Order by the most recently created jobs first + """ + RECENTLY_CREATED +} + +""" +The priority with which a job will run +""" +type JobPriority { + number: Int +} + +""" +Search jobs by priority +""" +input JobPrioritySearch { + """ + The priority number to search + """ + number: [Int!] +} + +""" +Automatic retry rule configuration +""" +type JobRetryRuleAutomatic { + exitStatus: String + limit: String + signal: String + signalReason: String +} + +""" +Retry Rules for a job +""" +type JobRetryRules { + automatic: [JobRetryRuleAutomatic] + manual: Boolean +} + +""" +The retry types that can be made on a Job +""" +enum JobRetryTypes { + AUTOMATIC + MANUAL +} + +""" +All the possible states a job can be in +""" +enum JobStates { + """ + The job was accepted by the agent, and now it's waiting to start running + """ + ACCEPTED + + """ + The job has been assigned to an agent, and it's waiting for it to accept + """ + ASSIGNED + + """ + The job is waiting on a `block` step to finish + """ + BLOCKED + + """ + The job was in a `BLOCKED` state when the build failed + """ + BLOCKED_FAILED + + """ + The jobs configuration means that it can't be run + """ + BROKEN + + """ + The job was canceled + """ + CANCELED + + """ + The job is currently canceling + """ + CANCELING + + """ + The job expired before it was started on an agent + """ + EXPIRED + + """ + The job has finished + """ + FINISHED + + """ + The job is waiting for jobs with the same concurrency group to finish + """ + LIMITED + + """ + The job is waiting on a concurrency group check before becoming either `LIMITED` or `SCHEDULED` + """ + LIMITING + + """ + The job has just been created and doesn't have a state yet + """ + PENDING + + """ + The job is blocked by platform-wide concurrency/resource limits + """ + PLATFORM_LIMITED + + """ + The job is waiting on platform-wide concurrency/resource limits before becoming either `PLATFORM_LIMITED` or `SCHEDULED` + """ + PLATFORM_LIMITING + + """ + The job is reserved by a stack for later execution + """ + RESERVED + + """ + The job is running + """ + RUNNING + + """ + The job is scheduled and waiting for an agent + """ + SCHEDULED + + """ + The job was skipped + """ + SKIPPED + + """ + The job timed out + """ + TIMED_OUT + + """ + The job is timing out for taking too long + """ + TIMING_OUT + + """ + This `block` job has been manually unblocked + """ + UNBLOCKED + + """ + This `block` job was in an `UNBLOCKED` state when the build failed + """ + UNBLOCKED_FAILED + + """ + The job is waiting on a `wait` step to finish + """ + WAITING + + """ + The job was in a `WAITING` state when the build failed + """ + WAITING_FAILED +} + +""" +Searching for jobs based on step information +""" +input JobStepSearch { + """ + The key assigned to the step + """ + key: [String!] +} + +""" +A type of job that requires a user to unblock it before proceeding in a build pipeline +""" +type JobTypeBlock implements JobInterface & Node { + """ + The build that this job is a part of + """ + build: Build + id: ID! + + """ + Whether or not this job can be unblocked yet (may be waiting on another job to finish) + """ + isUnblockable: Boolean + + """ + The label of this block step + """ + label: String + + """ + If this job has been retried + """ + retried: Boolean! + + """ + The user that retried this job + """ + retriedBy: User + + """ + The number of times the job has been retried + """ + retriesCount: Int + + """ + The job that was retried to create this job + """ + retrySource: Job + + """ + The type of retry that was performed on this job + """ + retryType: JobRetryTypes + + """ + The state of the job + """ + state: JobStates! + + """ + The step that defined this job + """ + step: StepInput + + """ + The time when the job was created + """ + unblockedAt: DateTime + + """ + The user that unblocked this job + """ + unblockedBy: User + + """ + The UUID for this job + """ + uuid: String! +} + +""" +Autogenerated input type of JobTypeBlockUnblock +""" +input JobTypeBlockUnblockInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Hash of values for the block step's fields. + """ + fields: JSON + id: ID! +} + +""" +Autogenerated return type of JobTypeBlockUnblock. +""" +type JobTypeBlockUnblockPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + jobTypeBlock: JobTypeBlock! +} + +""" +A type of job that runs a command on an agent +""" +type JobTypeCommand implements JobInterface & Node { + """ + The agent that is running the job + """ + agent: Agent + + """ + The ruleset used to find an agent to run this job + """ + agentQueryRules: [String!] + annotations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Order the annotations + """ + order: AnnotationOrder = RECENTLY_CREATED + style: [AnnotationStyle!] + ): AnnotationConnection + + """ + Artifacts uploaded to this job + """ + artifacts( + first: Int + last: Int + + """ + Filter artifacts by path. A `*` in the value is treated as a glob wildcard + (for example `logs/*`), otherwise the path must match exactly. + """ + path: String + + """ + Filter artifacts by their state + """ + state: ArtifactStates + ): ArtifactConnection + + """ + A glob of files to automatically upload after the job finishes + """ + automaticArtifactUploadPaths: String + + """ + Why the job is broken: a reason code (e.g. `conditional_failed`, + `branch_mismatch`) or a free-text skip reason. Null unless the job is broken. + """ + brokenReason: String + + """ + The build that this job is a part of + """ + build: Build + + """ + The time when the job was cancelled + """ + canceledAt: DateTime + + """ + The cluster of this job + """ + cluster: Cluster + + """ + The cluster queue of this job + """ + clusterQueue: ClusterQueue + + """ + The command the job will run + """ + command: String + + """ + Concurrency information related to a job + """ + concurrency: JobConcurrency + + """ + The time when the job was created + """ + createdAt: DateTime + + """ + Environment variables for this job + """ + env: [String!] + + """ + Job events + """ + events( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): JobEventConnection! + + """ + The exit status returned by the command on the agent + """ + exitStatus: String + + """ + The time when the job was expired + """ + expiredAt: DateTime + + """ + The time when the job finished + """ + finishedAt: DateTime + id: ID! + + """ + The label of the job + """ + label: String + + """ + The matrix configuration values for this particular job + """ + matrix: JSON + + """ + The index of this job within the parallel job group it is a part of. Null if this job is not part of a parallel job group. + """ + parallelGroupIndex: Int + + """ + The total number of jobs in the parallel job group this job is a part of. Null + if this job is not part of a parallel job group. + """ + parallelGroupTotal: Int + + """ + If the job has finished and passed + """ + passed: Boolean! + + """ + The pipeline that this job is a part of + """ + pipeline: Pipeline + + """ + The priority of this job + """ + priority: JobPriority! + + """ + The exit status the job said it will finish with in the future + """ + promisedExitStatus: JSInt + + """ + The time the job set promised_exit_status + """ + promisedExitStatusAt: DateTime + + """ + If this job has been retried + """ + retried: Boolean! + + """ + The user that retried this job + """ + retriedBy: User + + """ + The number of times the job has been retried + """ + retriesCount: Int + + """ + Job retry rules + """ + retryRules: JobRetryRules + + """ + The job that was retried to create this job + """ + retrySource: Job + + """ + The type of retry that was performed on this job + """ + retryType: JobRetryTypes + + """ + The time when the job became available to be run by an agent + """ + runnableAt: DateTime + + """ + The time when the job became scheduled for running + """ + scheduledAt: DateTime + + """ + The termination signal which killed the command, if the command was killed + """ + signal: String + + """ + If the termination signal was sent by the agent, the reason the agent took + that action. If this field is null, and the `signal` field is not null, the + command was killed by another process or by the operating system. + """ + signalReason: JobEventSignalReason + + """ + If the job soft failed + """ + softFailed: Boolean! + + """ + The time when the job started running + """ + startedAt: DateTime + + """ + The state of the job + """ + state: JobStates! + + """ + The step that defined this job + """ + step: StepCommand + + """ + The URL for the job + """ + url: String! + + """ + The UUID for this job + """ + uuid: String! +} + +""" +Autogenerated input type of JobTypeCommandCancel +""" +input JobTypeCommandCancelInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! +} + +""" +Autogenerated return type of JobTypeCommandCancel. +""" +type JobTypeCommandCancelPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + jobTypeCommand: JobTypeCommand! +} + +""" +Autogenerated input type of JobTypeCommandRetry +""" +input JobTypeCommandRetryInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! +} + +""" +Autogenerated return type of JobTypeCommandRetry. +""" +type JobTypeCommandRetryPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + jobTypeCommand: JobTypeCommand! + retriedInJobTypeCommand: JobTypeCommand! +} + +""" +A type of job that triggers another build on a pipeline +""" +type JobTypeTrigger implements JobInterface & Node { + """ + Whether the triggered build runs asynchronously or not + """ + async: Boolean! + + """ + The build that this job is a part of + """ + build: Build + id: ID! + + """ + The label of this trigger step + """ + label: String + + """ + If this job has been retried + """ + retried: Boolean! + + """ + The user that retried this job + """ + retriedBy: User + + """ + The number of times the job has been retried + """ + retriesCount: Int + + """ + The job that was retried to create this job + """ + retrySource: Job + + """ + The type of retry that was performed on this job + """ + retryType: JobRetryTypes + + """ + The state of the job + """ + state: JobStates! + + """ + The step that defined this job + """ + step: StepTrigger + + """ + The build that this job triggered + """ + triggered: Build + + """ + The UUID for this job + """ + uuid: String! +} + +""" +A type of job that waits for all previous jobs to pass before proceeding the build pipeline +""" +type JobTypeWait implements JobInterface & Node { + """ + The build that this job is a part of + """ + build: Build + id: ID! + + """ + The label of this wait step + """ + label: String + + """ + If this job has been retried + """ + retried: Boolean! + + """ + The user that retried this job + """ + retriedBy: User + + """ + The number of times the job has been retried + """ + retriesCount: Int + + """ + The job that was retried to create this job + """ + retrySource: Job + + """ + The type of retry that was performed on this job + """ + retryType: JobRetryTypes + + """ + The state of the job + """ + state: JobStates! + + """ + The step that defined this job + """ + step: StepWait + + """ + The UUID for this job + """ + uuid: String! +} + +""" +All the possible types of jobs that can exist +""" +enum JobTypes { + """ + A job that blocks a pipeline from progressing until it's manually unblocked + """ + BLOCK + + """ + A job that runs a command on an agent + """ + COMMAND + + """ + A job that triggers another build on a pipeline + """ + TRIGGER + + """ + A job that waits for all previous jobs to finish + """ + WAIT +} + +""" +The root for mutations in this schema +""" +type Mutation { + """ + Pause an agent, preventing dispatch of new jobs but allowing any existing job to finish + """ + agentPause( + """ + Parameters for AgentPause + """ + input: AgentPauseInput! + ): AgentPausePayload + + """ + Resume a paused agent, allowing it to run jobs again + """ + agentResume( + """ + Parameters for AgentResume + """ + input: AgentResumeInput! + ): AgentResumePayload + + """ + Instruct an agent to stop accepting new build jobs and shut itself down. + """ + agentStop( + """ + Parameters for AgentStop + """ + input: AgentStopInput! + ): AgentStopPayload + + """ + Create a new unclustered agent token. + """ + agentTokenCreate( + """ + Parameters for AgentTokenCreate + """ + input: AgentTokenCreateInput! + ): AgentTokenCreatePayload + + """ + Revoke an unclustered agent token. + """ + agentTokenRevoke( + """ + Parameters for AgentTokenRevoke + """ + input: AgentTokenRevokeInput! + ): AgentTokenRevokePayload + + """ + Delete an annotation from a build or job. + """ + annotationDelete( + """ + Parameters for AnnotationDelete + """ + input: AnnotationDeleteInput! + ): AnnotationDeletePayload + + """ + Authorize an API Access Token Code generated by an API Application. Please + note this mutation is private and cannot be executed externally. + """ + apiAccessTokenCodeAuthorize( + """ + Parameters for APIAccessTokenCodeAuthorizeMutation + """ + input: APIAccessTokenCodeAuthorizeMutationInput! + ): APIAccessTokenCodeAuthorizeMutationPayload + + """ + Delete an artifact. The artifact record is retained and marked as deleted. + Files stored by Buildkite are removed from storage asynchronously; artifacts + hosted outside Buildkite are left in place. + """ + artifactDelete( + """ + Parameters for ArtifactDelete + """ + input: ArtifactDeleteInput! + ): ArtifactDeletePayload + + """ + Annotate a build with information to appear on the build page. + """ + buildAnnotate( + """ + Parameters for BuildAnnotate + """ + input: BuildAnnotateInput! + ): BuildAnnotatePayload + + """ + Cancel a build. + """ + buildCancel( + """ + Parameters for BuildCancel + """ + input: BuildCancelInput! + ): BuildCancelPayload + + """ + Create a build. + """ + buildCreate( + """ + Parameters for BuildCreate + """ + input: BuildCreateInput! + ): BuildCreatePayload + + """ + Rebuild a build. + """ + buildRebuild( + """ + Parameters for BuildRebuild + """ + input: BuildRebuildInput! + ): BuildRebuildPayload + + """ + Retry all failed jobs in a build. + """ + buildRetryFailedJobs( + """ + Parameters for BuildRetryFailedJobs + """ + input: BuildRetryFailedJobsInput! + ): BuildRetryFailedJobsPayload + + """ + Create an agent token for a cluster. + """ + clusterAgentTokenCreate( + """ + Parameters for ClusterAgentTokenCreate + """ + input: ClusterAgentTokenCreateInput! + ): ClusterAgentTokenCreatePayload + + """ + Revokes an agent token for a cluster. + """ + clusterAgentTokenRevoke( + """ + Parameters for ClusterAgentTokenRevoke + """ + input: ClusterAgentTokenRevokeInput! + ): ClusterAgentTokenRevokePayload + + """ + Updates an agent token for a cluster. + """ + clusterAgentTokenUpdate( + """ + Parameters for ClusterAgentTokenUpdate + """ + input: ClusterAgentTokenUpdateInput! + ): ClusterAgentTokenUpdatePayload + + """ + Create a cluster. + """ + clusterCreate( + """ + Parameters for ClusterCreate + """ + input: ClusterCreateInput! + ): ClusterCreatePayload + + """ + Delete a cluster. + """ + clusterDelete( + """ + Parameters for ClusterDelete + """ + input: ClusterDeleteInput! + ): ClusterDeletePayload + + """ + Create a cluster queue. + """ + clusterQueueCreate( + """ + Parameters for ClusterQueueCreate + """ + input: ClusterQueueCreateInput! + ): ClusterQueueCreatePayload + + """ + Delete a cluster queue. + """ + clusterQueueDelete( + """ + Parameters for ClusterQueueDelete + """ + input: ClusterQueueDeleteInput! + ): ClusterQueueDeletePayload + + """ + This will prevent dispatch of jobs to agents on this queue. You can add an + optional note describing the reason for pausing. + """ + clusterQueuePauseDispatch( + """ + Parameters for ClusterQueuePauseDispatch + """ + input: ClusterQueuePauseDispatchInput! + ): ClusterQueuePauseDispatchPayload + + """ + This will resume dispatch of jobs on this queue. + """ + clusterQueueResumeDispatch( + """ + Parameters for ClusterQueueResumeDispatch + """ + input: ClusterQueueResumeDispatchInput! + ): ClusterQueueResumeDispatchPayload + + """ + Updates a cluster queue. + """ + clusterQueueUpdate( + """ + Parameters for ClusterQueueUpdate + """ + input: ClusterQueueUpdateInput! + ): ClusterQueueUpdatePayload + + """ + Updates a cluster. + """ + clusterUpdate( + """ + Parameters for ClusterUpdate + """ + input: ClusterUpdateInput! + ): ClusterUpdatePayload + + """ + Add a new email address for the current user + """ + emailCreate( + """ + Parameters for EmailCreate + """ + input: EmailCreateInput! + ): EmailCreatePayload + + """ + Resend a verification email. + """ + emailResendVerification( + """ + Parameters for EmailResendVerification + """ + input: EmailResendVerificationInput! + ): EmailResendVerificationPayload + + """ + Create a GraphQL snippet. + """ + graphQLSnippetCreate( + """ + Parameters for GraphQLSnippetCreate + """ + input: GraphQLSnippetCreateInput! + ): GraphQLSnippetCreatePayload + + """ + Annotate a job with information to appear on the job page. + """ + jobAnnotate( + """ + Parameters for JobAnnotate + """ + input: JobAnnotateInput! + ): JobAnnotatePayload + + """ + Unblocks a build's "Block pipeline" job. + """ + jobTypeBlockUnblock( + """ + Parameters for JobTypeBlockUnblock + """ + input: JobTypeBlockUnblockInput! + ): JobTypeBlockUnblockPayload + + """ + Cancel a job. + """ + jobTypeCommandCancel( + """ + Parameters for JobTypeCommandCancel + """ + input: JobTypeCommandCancelInput! + ): JobTypeCommandCancelPayload + + """ + Retry a job. + """ + jobTypeCommandRetry( + """ + Parameters for JobTypeCommandRetry + """ + input: JobTypeCommandRetryInput! + ): JobTypeCommandRetryPayload + + """ + Dismisses a notice from the Buildkite UI. This mutation is idempotent so if + you dismiss the same notice multiple times, it will return the original + `dismissedAt` time + """ + noticeDismiss( + """ + Parameters for NoticeDismiss + """ + input: NoticeDismissInput! + ): NoticeDismissPayload + + """ + Revokes access to an organization for a user's API access token. The + organization can not be re-added to the same token, however the user can + create a new token and add the organization to that token. + """ + organizationApiAccessTokenRevoke( + """ + Parameters for OrganizationAPIAccessTokenRevokeMutation + """ + input: OrganizationAPIAccessTokenRevokeMutationInput! + ): OrganizationAPIAccessTokenRevokeMutationPayload + + """ + Sets an allowlist of IP addresses for API access to an organization. Please + note that this is a beta feature and is not yet available to all + organizations. + """ + organizationApiIpAllowlistUpdate( + """ + Parameters for OrganizationAPIIPAllowlistUpdateMutation + """ + input: OrganizationAPIIPAllowlistUpdateMutationInput! + ): OrganizationAPIIPAllowlistUpdateMutationPayload + + """ + Delete the system banner + """ + organizationBannerDelete( + """ + Parameters for OrganizationBannerDelete + """ + input: OrganizationBannerDeleteInput! + ): OrganizationBannerDeletePayload + + """ + Retrieves the active system banner for provided organization, then updates it + with input data. If active banner is not found, a new banner is created with + the provided input. + """ + organizationBannerUpsert( + """ + Parameters for OrganizationBannerUpsert + """ + input: OrganizationBannerUpsertInput! + ): OrganizationBannerUpsertPayload + + """ + Sets whether the organization requires two-factor authentication for all members. + """ + organizationEnforceTwoFactorAuthenticationForMembersUpdate( + """ + Parameters for OrganizationEnforceTwoFactorAuthenticationForMembersUpdateMutation + """ + input: OrganizationEnforceTwoFactorAuthenticationForMembersUpdateMutationInput! + ): OrganizationEnforceTwoFactorAuthenticationForMembersUpdateMutationPayload + + """ + Send email invitations to this organization. + """ + organizationInvitationCreate( + """ + Parameters for OrganizationInvitationCreate + """ + input: OrganizationInvitationCreateInput! + ): OrganizationInvitationCreatePayload + + """ + Resend an organization invitation email. + """ + organizationInvitationResend( + """ + Parameters for OrganizationInvitationResend + """ + input: OrganizationInvitationResendInput! + ): OrganizationInvitationResendPayload + + """ + Revoke an invitation to an organization so that it can no longer be accepted. + """ + organizationInvitationRevoke( + """ + Parameters for OrganizationInvitationRevoke + """ + input: OrganizationInvitationRevokeInput! + ): OrganizationInvitationRevokePayload + + """ + Remove a user from an organization. + """ + organizationMemberDelete( + """ + Parameters for OrganizationMemberDelete + """ + input: OrganizationMemberDeleteInput! + ): OrganizationMemberDeletePayload + + """ + Change a user's role within an organization. + """ + organizationMemberUpdate( + """ + Parameters for OrganizationMemberUpdate + """ + input: OrganizationMemberUpdateInput! + ): OrganizationMemberUpdatePayload + + """ + Specify the maximum timeframe to revoke organization access from inactive API tokens. + """ + organizationRevokeInactiveTokensAfterUpdate( + """ + Parameters for OrganizationRevokeInactiveTokensAfterUpdateMutation + """ + input: OrganizationRevokeInactiveTokensAfterUpdateMutationInput! + ): OrganizationRevokeInactiveTokensAfterUpdateMutationPayload + + """ + Archive a pipeline. + """ + pipelineArchive( + """ + Parameters for PipelineArchive + """ + input: PipelineArchiveInput! + ): PipelineArchivePayload + + """ + Create a pipeline. + """ + pipelineCreate( + """ + Parameters for PipelineCreate + """ + input: PipelineCreateInput! + ): PipelineCreatePayload + + """ + Create a webhook on the repository for a pipeline. + + This mutation creates a webhook on the pipeline's source repository (e.g., GitHub) + that will trigger builds when code is pushed. Requires a GitHub App integration + to be configured for the organization. + + Returns an error if a webhook already exists for the repository. + """ + pipelineCreateWebhook( + """ + Parameters for PipelineCreateWebhook + """ + input: PipelineCreateWebhookInput! + ): PipelineCreateWebhookPayload + + """ + Delete a pipeline. + """ + pipelineDelete( + """ + Parameters for PipelineDelete + """ + input: PipelineDeleteInput! + ): PipelineDeletePayload + + """ + Delete the webhook on the repository for a pipeline. + + This mutation removes the webhook from the pipeline's source repository (e.g., GitHub) + that triggers builds when code is pushed. Requires a GitHub App integration + to be configured for the organization. + """ + pipelineDeleteWebhook( + """ + Parameters for PipelineDeleteWebhook + """ + input: PipelineDeleteWebhookInput! + ): PipelineDeleteWebhookPayload + + """ + Favorite a pipeline. + """ + pipelineFavorite( + """ + Parameters for PipelineFavorite + """ + input: PipelineFavoriteInput! + ): PipelineFavoritePayload + + """ + Rotate a pipeline's webhook URL. + + Note that the old webhook URL will stop working immediately and so must be updated quickly to avoid interruption. + """ + pipelineRotateWebhookURL( + """ + Parameters for PipelineRotateWebhookURL + """ + input: PipelineRotateWebhookURLInput! + ): PipelineRotateWebhookURLPayload + + """ + Create a scheduled build on pipeline. + """ + pipelineScheduleCreate( + """ + Parameters for PipelineScheduleCreate + """ + input: PipelineScheduleCreateInput! + ): PipelineScheduleCreatePayload + + """ + Delete a scheduled build on pipeline. + """ + pipelineScheduleDelete( + """ + Parameters for PipelineScheduleDelete + """ + input: PipelineScheduleDeleteInput! + ): PipelineScheduleDeletePayload + + """ + Update a scheduled build on pipeline. + """ + pipelineScheduleUpdate( + """ + Parameters for PipelineScheduleUpdate + """ + input: PipelineScheduleUpdateInput! + ): PipelineScheduleUpdatePayload + + """ + Create a pipeline template. + """ + pipelineTemplateCreate( + """ + Parameters for PipelineTemplateCreate + """ + input: PipelineTemplateCreateInput! + ): PipelineTemplateCreatePayload + + """ + Delete a pipeline template. + """ + pipelineTemplateDelete( + """ + Parameters for PipelineTemplateDelete + """ + input: PipelineTemplateDeleteInput! + ): PipelineTemplateDeletePayload + + """ + Update a pipeline template. + """ + pipelineTemplateUpdate( + """ + Parameters for PipelineTemplateUpdate + """ + input: PipelineTemplateUpdateInput! + ): PipelineTemplateUpdatePayload + + """ + Unarchive a pipeline. + """ + pipelineUnarchive( + """ + Parameters for PipelineUnarchive + """ + input: PipelineUnarchiveInput! + ): PipelineUnarchivePayload + + """ + Change the settings for a pipeline. + """ + pipelineUpdate( + """ + Parameters for PipelineUpdate + """ + input: PipelineUpdateInput! + ): PipelineUpdatePayload + + """ + Create a rule. + """ + ruleCreate( + """ + Parameters for RuleCreate + """ + input: RuleCreateInput! + ): RuleCreatePayload + + """ + Delete a rule. + """ + ruleDelete( + """ + Parameters for RuleDelete + """ + input: RuleDeleteInput! + ): RuleDeletePayload + + """ + Update a rule. + """ + ruleUpdate( + """ + Parameters for RuleUpdate + """ + input: RuleUpdateInput! + ): RuleUpdatePayload + + """ + Create a SSO provider. + """ + ssoProviderCreate( + """ + Parameters for SSOProviderCreate + """ + input: SSOProviderCreateInput! + ): SSOProviderCreatePayload + + """ + Delete a SSO provider. + """ + ssoProviderDelete( + """ + Parameters for SSOProviderDelete + """ + input: SSOProviderDeleteInput! + ): SSOProviderDeletePayload + + """ + Disable a SSO provider. + """ + ssoProviderDisable( + """ + Parameters for SSOProviderDisable + """ + input: SSOProviderDisableInput! + ): SSOProviderDisablePayload + + """ + Enable a SSO provider. + """ + ssoProviderEnable( + """ + Parameters for SSOProviderEnable + """ + input: SSOProviderEnableInput! + ): SSOProviderEnablePayload + + """ + Change the settings for a SSO provider. + """ + ssoProviderUpdate( + """ + Parameters for SSOProviderUpdate + """ + input: SSOProviderUpdateInput! + ): SSOProviderUpdatePayload + + """ + Create a team. + """ + teamCreate( + """ + Parameters for TeamCreate + """ + input: TeamCreateInput! + ): TeamCreatePayload + + """ + Delete a team. + """ + teamDelete( + """ + Parameters for TeamDelete + """ + input: TeamDeleteInput! + ): TeamDeletePayload + + """ + Add a user to a team. + """ + teamMemberCreate( + """ + Parameters for TeamMemberCreate + """ + input: TeamMemberCreateInput! + ): TeamMemberCreatePayload + + """ + Remove a user from a team. + """ + teamMemberDelete( + """ + Parameters for TeamMemberDelete + """ + input: TeamMemberDeleteInput! + ): TeamMemberDeletePayload + + """ + Update a user's role in a team. + """ + teamMemberUpdate( + """ + Parameters for TeamMemberUpdate + """ + input: TeamMemberUpdateInput! + ): TeamMemberUpdatePayload + + """ + Add a pipeline to a team. + """ + teamPipelineCreate( + """ + Parameters for TeamPipelineCreate + """ + input: TeamPipelineCreateInput! + ): TeamPipelineCreatePayload + + """ + Remove a pipeline from a team. + """ + teamPipelineDelete( + """ + Parameters for TeamPipelineDelete + """ + input: TeamPipelineDeleteInput! + ): TeamPipelineDeletePayload + + """ + Update a pipeline's access level within a team. + """ + teamPipelineUpdate( + """ + Parameters for TeamPipelineUpdate + """ + input: TeamPipelineUpdateInput! + ): TeamPipelineUpdatePayload + + """ + Add a registry to a team. + """ + teamRegistryCreate( + """ + Parameters for TeamRegistryCreate + """ + input: TeamRegistryCreateInput! + ): TeamRegistryCreatePayload + + """ + Remove a registry from a team. + """ + teamRegistryDelete( + """ + Parameters for TeamRegistryDelete + """ + input: TeamRegistryDeleteInput! + ): TeamRegistryDeletePayload + + """ + Update a registry's access level within a team. + """ + teamRegistryUpdate( + """ + Parameters for TeamRegistryUpdate + """ + input: TeamRegistryUpdateInput! + ): TeamRegistryUpdatePayload + + """ + Add a suite to a team. + """ + teamSuiteCreate( + """ + Parameters for TeamSuiteCreate + """ + input: TeamSuiteCreateInput! + ): TeamSuiteCreatePayload + + """ + Remove a suite from a team. + """ + teamSuiteDelete( + """ + Parameters for TeamSuiteDelete + """ + input: TeamSuiteDeleteInput! + ): TeamSuiteDeletePayload + + """ + Update a suite's access level within a team. + """ + teamSuiteUpdate( + """ + Parameters for TeamSuiteUpdate + """ + input: TeamSuiteUpdateInput! + ): TeamSuiteUpdatePayload + + """ + Change the settings for a team. + """ + teamUpdate( + """ + Parameters for TeamUpdate + """ + input: TeamUpdateInput! + ): TeamUpdatePayload + + """ + Activate a previously-generated TOTP configuration, and its Recovery Codes. + + Once activated, both this TOTP configuration, and the associated Recovery Codes will become active for the user. + Any previous TOTP configuration or Recovery Codes will no longer be usable. + + This mutation is private, requires an escalated session, and cannot be accessed via the public GraphQL API. + """ + totpActivate( + """ + Parameters for TOTPActivate + """ + input: TOTPActivateInput! + ): TOTPActivatePayload + + """ + Create a new TOTP configuration for the current user. + + This will produce a TOTP configuration with an associated set of Recovery + Codes. The Recovery Codes must be presented to the user prior to the TOTP's + activation with `totpActivate`. + Neither TOTP configuration nor Recovery Codes will be usable until they have been activated. + + This mutation is private, requires an escalated session, and cannot be accessed via the public GraphQL API. + """ + totpCreate( + """ + Parameters for TOTPCreate + """ + input: TOTPCreateInput! + ): TOTPCreatePayload + + """ + Delete a TOTP configuration. + + If a TOTP configuration was active, it will no longer be used for logging on to the user's account. + Any Recovery Codes associated with the TOTP configuration will also no longer be usable. + + This mutation is private, requires an escalated session, and cannot be accessed via the public GraphQL API. + """ + totpDelete( + """ + Parameters for TOTPDelete + """ + input: TOTPDeleteInput! + ): TOTPDeletePayload + + """ + Generate a new set of Recovery Codes for a given TOTP. + + The new Recovery Codes will immediately replace any existing recovery codes. + + This mutation is private, requires an escalated session, and cannot be accessed via the public GraphQL API. + """ + totpRecoveryCodesRegenerate( + """ + Parameters for TOTPRecoveryCodesRegenerate + """ + input: TOTPRecoveryCodesRegenerateInput! + ): TOTPRecoveryCodesRegeneratePayload +} + +""" +An object with an ID. +""" +interface Node { + """ + ID of the object. + """ + id: ID! +} + +""" +A notice or notice that a user sees in the Buildkite UI +""" +type Notice { + """ + The time when this notice was dismissed from the UI + """ + dismissedAt: DateTime + id: ID! + + """ + The namespace of this notice + """ + namespace: NoticeNamespaces! + + """ + The scope within the namespace + """ + scope: String! +} + +""" +Autogenerated input type of NoticeDismiss +""" +input NoticeDismissInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! +} + +""" +Autogenerated return type of NoticeDismiss. +""" +type NoticeDismissPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + notice: Notice +} + +""" +All the possible namespaces for a notice +""" +enum NoticeNamespaces { + """ + A change to an existing feature + """ + CHANGE + + """ + The user has had an email suggested to them + """ + EMAIL_SUGGESTION + + """ + An event announcement + """ + EVENT + + """ + A new feature was added + """ + FEATURE +} + +interface NotificationService { + """ + The description of this service + """ + description: String! + id: ID! + + """ + The name of the service provider + """ + name: String! +} + +""" +Deliver OpenTelemetry Traces to a custom OTLP endpoint +""" +type NotificationServiceOpenTelemetryTracing implements NotificationService { + """ + The description of this service + """ + description: String! + id: ID! + + """ + The name of the service provider + """ + name: String! +} + +""" +Deliver notifications to Slack +""" +type NotificationServiceSlack implements Node & NotificationService { + """ + The description of this service + """ + description: String! + id: ID! + + """ + The name of the service provider + """ + name: String! +} + +""" +Deliver notifications to a custom URL +""" +type NotificationServiceWebhook implements NotificationService { + """ + The description of this service + """ + description: String! + id: ID! + + """ + The name of the service provider + """ + name: String! +} + +""" +A operating system that an agent can run on +""" +type OperatingSystem { + """ + The name of the operating system + """ + name: String! +} + +""" +An organization +""" +type Organization implements Node { + """ + Returns agent access tokens for an Organization. By default returns all tokens, whether revoked or non-revoked. + """ + agentTokens( + first: Int + last: Int + + """ + Filter tokens by whether they are revoked or not + """ + revoked: Boolean + ): AgentTokenConnection + agents( + after: String + before: String + + """ + Filter agents by membership of a given cluster + """ + cluster: ID + + """ + Filter agents to those within a given cluster queue + """ + clusterQueue: [ID!] + + """ + Pass `false` to exclude agents that belong to a cluster queue + """ + clustered: Boolean = true + first: Int + + """ + Filter agents by whether they are running a job or not + """ + isRunningJob: Boolean + last: Int + + """ + Filter agents to those only having the matching meta data + """ + metaData: [String!] + + """ + Filter agents by whether they are paused or not + """ + paused: Boolean + + """ + Search agents for the given query terms case insensitively across name and meta data + """ + search: String + ): AgentConnection + + """ + A space-separated allowlist of IP addresses that can access the organization via the GraphQL or REST API + """ + allowedApiIpAddresses: String + + """ + Returns user API access tokens that can access this organization + """ + apiAccessTokens( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): OrganizationAPIAccessTokenConnection! + auditEvents( + """ + Filter the events by the IDs of the actors who initiated them + """ + actor: [ID!] + + """ + Filter the events by the type of actor who initiated them + """ + actorType: [AuditActorType!] + after: String + before: String + first: Int + last: Int + + """ + Filter events which occurred from the given date and time + """ + occurredAtFrom: DateTime + + """ + Filter events which occurred until the given date and time + """ + occurredAtTo: DateTime + + """ + Order the events + """ + order: OrganizationAuditEventOrders = RECENTLY_OCCURRED + + """ + Filter the events by the IDs of the subject they relate to + """ + subject: [ID!] + + """ + Filter the events by the type of subject they relate to + """ + subjectType: [AuditSubjectType!] + + """ + Filter the events by the UUIDs of the subject they relate to + """ + subjectUUID: [ID!] + + """ + Filter the events by type + """ + type: [AuditEventType!] + ): OrganizationAuditEventConnection + + """ + Returns active banners for this organization. + """ + banners( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): OrganizationBannerConnection! + + """ + Return cluster in the Organization by UUID + """ + cluster(id: ID!): Cluster + + """ + Returns clusters for an Organization + """ + clusters( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Order the clusters + """ + order: ClusterOrder = NAME + ): ClusterConnection + + """ + The URL to an icon representing this organization + """ + iconUrl: String + id: ID! + invitations( + after: String + before: String + first: Int + last: Int + + """ + Order the invitations + """ + order: OrganizationInvitationOrders = RECENTLY_CREATED + state: [OrganizationInvitationStates!] + ): OrganizationInvitationConnection + + """ + Whether teams is enabled for this organization + """ + isTeamsEnabled: Boolean + jobs( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Filter jobs based on matching agent query rules (for example, a single tag + match "queue=test", or an array of matches ["queue=test", "tag=value"]) + """ + agentQueryRules: [String!] + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Filter jobs by membership of a given cluster + """ + cluster: ID + + """ + Filter jobs to those within a given cluster queue + """ + clusterQueue: [ID!] + + """ + Pass `false` to exclude jobs that belong to a cluster queue + """ + clustered: Boolean = true + concurrency: JobConcurrencySearch + + """ + Filter jobs by created at from, ISO8601 format + """ + createdAtFrom: DateTime + + """ + Filter jobs by created at to, ISO8601 format + """ + createdAtTo: DateTime + + """ + Filter jobs by the time they finished, format yyyy-mm-dd + """ + finishedAt: DateTime + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Order the jobs + """ + order: JobOrder = RECENTLY_CREATED + + """ + Whether or not the command job passed. Passing `false` will return all failed jobs (including "soft failed" jobs) + """ + passed: Boolean + priority: JobPrioritySearch + state: [JobStates!] + + """ + Filtering jobs based on related step information + """ + step: JobStepSearch + type: [JobTypes!] + ): JobConnection + + """ + Returns users within the organization + """ + members( + after: String + before: String + + """ + The primary email of the team member + """ + email: String + first: Int + + """ + Filter to members with a 'last seen at' value that is nil or before the given date + """ + inactiveSince: DateTime + last: Int + + """ + Order the members + """ + order: OrganizationMemberOrder = RECENTLY_CREATED + + """ + Search members by their role + """ + role: [OrganizationMemberRole!] + + """ + Search members named like the given query case insensitively + """ + search: String + security: OrganizationMemberSecurityInput + sso: OrganizationMemberSSOInput + + """ + Filter the members by team + """ + team: TeamSelector + ): OrganizationMemberConnection + + """ + Whether this organization requires 2FA to access (Please note that this is a + beta feature and is not yet available to all organizations.) + """ + membersRequireTwoFactorAuthentication: Boolean + + """ + The name of the organization + """ + name: String! + permissions: OrganizationPermissions! + + """ + Return all the pipeline templates the current user has access to for this organization + """ + pipelineTemplates( + after: String + before: String + first: Int + last: Int + + """ + Order the pipeline templates + """ + order: PipelineTemplateOrder = NAME + ): PipelineTemplateConnection + + """ + Return all the pipelines the current user has access to for this organization + """ + pipelines( + after: String + + """ + Filter pipelines based on whether or not they've been archived. If not + provided, all pipelines are returned regardless of archived state. + """ + archived: Boolean + before: String + + """ + Filter pipelines by membership of a given cluster + """ + cluster: ID + + """ + Pass `false` to exclude pipelines that belong to a cluster + """ + clustered: Boolean = true + createdAtFrom: DateTime + createdAtTo: DateTime + + """ + Only return favorited pipelines + """ + favorite: Boolean + first: Int + last: Int + + """ + Order the pipelines + """ + order: PipelineOrders = RECENTLY_CREATED + repository: PipelineRepositoryInput + + """ + Search pipelines named like the given query case insensitively + """ + search: String + + """ + Filter pipelines with those that have particular tags + """ + tags: [String!] + + """ + Filter the pipelines by team + """ + team: TeamSelector + ): PipelineConnection + + """ + Whether this organization is visible to everyone, including people outside it + """ + public: Boolean! + + """ + Return all the registries the current user has access to for this organization + """ + registries( + after: String + before: String + createdAtFrom: DateTime + createdAtTo: DateTime + first: Int + last: Int + + """ + Order the registries + """ + order: RegistryOrders = RECENTLY_CREATED + + """ + Search registries named like the given query case insensitively + """ + search: String + + """ + Filter the registries by team + """ + team: TeamSelector + ): RegistryConnection + + """ + Returns the repository providers for this organization + """ + repositoryProviders: [OrganizationRepositoryProvider] + + """ + API tokens with access to this organization will be automatically revoked + after this many seconds of inactivity. A `null` value indicates never revoke + inactive tokens. + """ + revokeInactiveTokensAfter: RevokeInactiveTokenPeriod + + """ + Returns rules for an Organization + """ + rules( + """ + Filter the rules by action + """ + action: [RuleAction!] + + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Order the rules + """ + order: RuleOrder = RECENTLY_CREATED + + """ + Filter the rules by source Pipeline GraphQL ID + """ + sourceId: ID + + """ + Filter the rules by source type + """ + sourceType: [RuleSourceType!] + + """ + Filter the rules by target Pipeline GraphQL ID + """ + targetId: ID + + """ + Filter the rules by target type + """ + targetType: [RuleTargetType!] + ): RuleConnection + + """ + The slug used to represent the organization in URLs + """ + slug: String! + + """ + The single sign-on configuration of this organization + """ + sso: OrganizationSSO + + """ + Single sign on providers created for an organization + """ + ssoProviders( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): SSOProviderConnection + + """ + Return all the suite the current user has access to for this organization + """ + suites( + after: String + before: String + createdAtFrom: DateTime + createdAtTo: DateTime + first: Int + last: Int + + """ + Order the suites + """ + order: SuiteOrders = RECENTLY_CREATED + + """ + Search suites named like the given query case insensitively + """ + search: String + + """ + Filter the suites by team + """ + team: TeamSelector + ): SuiteConnection + + """ + Returns teams within the organization that the viewer can see + """ + teams( + after: String + before: String + first: Int + last: Int + + """ + Order the teams + """ + order: TeamOrder = NAME + + """ + Filter teams by pipeline + """ + pipeline: PipelineSelector + + """ + Search teams by their privacy + """ + privacy: [TeamPrivacy!] + + """ + Search teams + """ + search: String + + """ + Filter teams by user membership + """ + user: UserSelector + ): TeamConnection + + """ + The public UUID for this organization + """ + uuid: String! +} + +""" +Information on user API Access Tokens which can access the Organization. Excludes the token attribute +""" +type OrganizationAPIAccessToken { + createdAt: DateTime! + + """ + A description of the token + """ + description: String + + """ + The time at which this API access token will expire. If null, the token will never expire. + """ + expiresAt: DateTime + id: ID! + + """ + The IP address of the last request to the Buildkite API + """ + ipAddress: String + + """ + The last time the token was used to access the Buildkite API + """ + lastAccessedAt: DateTime + + """ + The user associated with this token + """ + owner: User + + """ + The organization scopes that the user's token has access to + """ + scopes: [APIAccessTokenScopes!]! + + """ + The public UUID for the API Access Token + """ + uuid: ID! +} + +""" +The connection type for OrganizationAPIAccessToken. +""" +type OrganizationAPIAccessTokenConnection { + """ + A list of edges. + """ + edges: [OrganizationAPIAccessTokenEdge] + + """ + A list of nodes. + """ + nodes: [OrganizationAPIAccessToken] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type OrganizationAPIAccessTokenEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: OrganizationAPIAccessToken +} + +""" +Autogenerated input type of OrganizationAPIAccessTokenRevokeMutation +""" +input OrganizationAPIAccessTokenRevokeMutationInput { + apiAccessTokenId: ID! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + organizationId: ID! +} + +""" +Autogenerated return type of OrganizationAPIAccessTokenRevokeMutation. +""" +type OrganizationAPIAccessTokenRevokeMutationPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + revokedApiAccessTokenId: ID! +} + +""" +Autogenerated input type of OrganizationAPIIPAllowlistUpdateMutation +""" +input OrganizationAPIIPAllowlistUpdateMutationInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + ipAddresses: String! + organizationID: ID! +} + +""" +Autogenerated return type of OrganizationAPIIPAllowlistUpdateMutation. +""" +type OrganizationAPIIPAllowlistUpdateMutationPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + organization: Organization +} + +type OrganizationAuditEventConnection implements Connection { + count: Int! + edges: [OrganizationAuditEventEdge] + pageInfo: PageInfo +} + +type OrganizationAuditEventEdge { + cursor: String! + node: AuditEvent +} + +""" +The different orders you can sort audit events by +""" +enum OrganizationAuditEventOrders { + """ + Order by the most recently occurring events first + """ + RECENTLY_OCCURRED +} + +""" +System banner of an organization +""" +type OrganizationBanner implements Node { + id: ID! + + """ + The banner message + """ + message: String! + + """ + The UUID of the organization banner + """ + uuid: String! +} + +""" +The connection type for OrganizationBanner. +""" +type OrganizationBannerConnection { + """ + A list of edges. + """ + edges: [OrganizationBannerEdge] + + """ + A list of nodes. + """ + nodes: [OrganizationBanner] + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +Autogenerated input type of OrganizationBannerDelete +""" +input OrganizationBannerDeleteInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + organizationId: ID! +} + +""" +Autogenerated return type of OrganizationBannerDelete. +""" +type OrganizationBannerDeletePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + deletedBannerId: ID! +} + +""" +An edge in a connection. +""" +type OrganizationBannerEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: OrganizationBanner +} + +""" +Autogenerated input type of OrganizationBannerUpsert +""" +input OrganizationBannerUpsertInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + message: String! + organizationId: ID! +} + +""" +Autogenerated return type of OrganizationBannerUpsert. +""" +type OrganizationBannerUpsertPayload { + banner: OrganizationBanner! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String +} + +type OrganizationConnection implements Connection { + count: Int! + edges: [OrganizationEdge] + pageInfo: PageInfo +} + +type OrganizationEdge { + cursor: String! + node: Organization +} + +""" +Autogenerated input type of OrganizationEnforceTwoFactorAuthenticationForMembersUpdateMutation +""" +input OrganizationEnforceTwoFactorAuthenticationForMembersUpdateMutationInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + membersRequireTwoFactorAuthentication: Boolean! + organizationId: ID! +} + +""" +Autogenerated return type of OrganizationEnforceTwoFactorAuthenticationForMembersUpdateMutation. +""" +type OrganizationEnforceTwoFactorAuthenticationForMembersUpdateMutationPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + organization: Organization! +} + +""" +A request made by Buildkite to impersonate a user in an organization +""" +type OrganizationImpersonationRequest { + approvedAt: DateTime + createdAt: DateTime + duration: String + reason: String + uuid: String! +} + +""" +A pending invitation to a user to join this organization +""" +type OrganizationInvitation implements Node { + """ + The time when the invitation was accepted + """ + acceptedAt: DateTime + + """ + The user that accepted this invite + """ + acceptedBy: User + + """ + The time when the invitation was created + """ + createdAt: DateTime + + """ + The user that added invited this email address + """ + createdBy: User + + """ + The email address of this invitation + """ + email: String! + + """ + The time when the invitation was automatically expired + """ + expiredAt: DateTime + id: ID! + organization: Organization + permissions: OrganizationInvitationPermissions! + + """ + The time when this invitation was revoked + """ + revokedAt: DateTime + + """ + The user that revoked this invitation + """ + revokedBy: User + + """ + The role the user will have in the organization once they've accepted the invitation + """ + role: OrganizationMemberRole! + + """ + The slug of the invitation that can be used to find an invitation in the query root + """ + slug: String! + sso: OrganizationInvitationSSOType! + + """ + The current state of the invitation + """ + state: OrganizationInvitationStates! + + """ + Teams that have been assigned to this invitation + """ + teams( + """ + Returns the first _n_ elements from the list. + """ + first: Int + ): OrganizationInvitationTeamAssignmentConnection + + """ + The UUID of the invitation + """ + uuid: String! +} + +""" +The connection type for OrganizationInvitation. +""" +type OrganizationInvitationConnection implements Connection { + count: Int! + + """ + A list of edges. + """ + edges: [OrganizationInvitationEdge] + pageInfo: PageInfo +} + +""" +Autogenerated input type of OrganizationInvitationCreate +""" +input OrganizationInvitationCreateInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + emails: [String!]! + organizationID: ID! + role: OrganizationMemberRole + sso: OrganizationInvitationSSOInput + teams: [OrganizationInvitationTeamAssignmentInput!] +} + +""" +Autogenerated return type of OrganizationInvitationCreate. +""" +type OrganizationInvitationCreatePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + invitationEdges: [OrganizationInvitationEdge] + organization: Organization +} + +""" +An edge in a connection. +""" +type OrganizationInvitationEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: OrganizationInvitation +} + +""" +The different orders you can sort organization invitations by +""" +enum OrganizationInvitationOrders { + """ + Order by email address alphabetically + """ + EMAIL + + """ + Order by the most recently created invitations first + """ + RECENTLY_CREATED +} + +""" +Permissions information about what actions the current user can do against this invitation +""" +type OrganizationInvitationPermissions { + """ + Whether the user can resend this invitation + """ + organizationInvitationResend: Permission + + """ + Whether the user can revoke this invitation + """ + organizationInvitationRevoke: Permission +} + +""" +Autogenerated input type of OrganizationInvitationResend +""" +input OrganizationInvitationResendInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! +} + +""" +Autogenerated return type of OrganizationInvitationResend. +""" +type OrganizationInvitationResendPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + organizationInvitation: OrganizationInvitation! +} + +""" +Autogenerated input type of OrganizationInvitationRevoke +""" +input OrganizationInvitationRevokeInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! +} + +""" +Autogenerated return type of OrganizationInvitationRevoke. +""" +type OrganizationInvitationRevokePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + organization: Organization! + organizationInvitation: OrganizationInvitation! + organizationInvitationEdge: OrganizationInvitationEdge! +} + +input OrganizationInvitationSSOInput { + mode: OrganizationMemberSSOModeEnum! +} + +""" +Information about the SSO setup for this invited organization member +""" +type OrganizationInvitationSSOType { + """ + The SSO mode of the invited organization member + """ + mode: OrganizationMemberSSOModeEnum +} + +""" +All the possible states that an organization invitation can be +""" +enum OrganizationInvitationStates { + """ + The invitation was accepted by the person it was sent to + """ + ACCEPTED + + """ + The invitation wasn't accepted and the link has expired + """ + EXPIRED + + """ + The invitation is waiting for a user to accept it + """ + PENDING + + """ + The invitation was revoked and can no longer be accepted + """ + REVOKED +} + +""" +A team that has been assigned to an invitation +""" +type OrganizationInvitationTeamAssignment { + id: ID! + + """ + The role that the user will have once they've accepted the invite + """ + role: TeamMemberRole! + + """ + The team that this assignment refers to + """ + team: Team! +} + +""" +The connection type for OrganizationInvitationTeamAssignment. +""" +type OrganizationInvitationTeamAssignmentConnection implements Connection { + count: Int! + + """ + A list of edges. + """ + edges: [OrganizationInvitationTeamAssignmentEdge] + pageInfo: PageInfo +} + +""" +An edge in a connection. +""" +type OrganizationInvitationTeamAssignmentEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: OrganizationInvitationTeamAssignment +} + +""" +Used to assign teams to organization invitation in mutations +""" +input OrganizationInvitationTeamAssignmentInput { + """ + The ID of the team you want the user to join once they've accepted the invite + """ + id: ID! + + """ + The role in the team you want the user to have + """ + role: TeamMemberRole! +} + +""" +A member of an organization +""" +type OrganizationMember implements Node { + """ + Whether or not organizations are required to pay for this user + """ + complimentary: Boolean! + + """ + The time when this user was added to the organization + """ + createdAt: DateTime! + + """ + The user that added invited this user + """ + createdBy: User + id: ID! + + """ + The time this member was last active within the organization + """ + lastSeenAt: DateTime + organization: Organization! + permissions: OrganizationMemberPermissions! + + """ + Pipelines the user has access to within the organization + """ + pipelines( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Order the pipelines returned + """ + order: PipelineOrders = RECENTLY_CREATED + + """ + Search within the pipelines the user has access to + """ + search: String + ): OrganizationMemberPipelineConnection! + + """ + The users role within the organization + """ + role: OrganizationMemberRole! + security: OrganizationMemberSecurity! + sso: OrganizationMemberSSO! + + """ + Teams that this user is a part of within the organization + """ + teams( + after: String + before: String + first: Int + last: Int + + """ + Order the members returned + """ + order: TeamMemberOrder = RECENTLY_CREATED + ): TeamMemberConnection! + user: User! + + """ + The public UUID for this organization member + """ + uuid: String! +} + +""" +The connection type for OrganizationMember. +""" +type OrganizationMemberConnection implements Connection { + count: Int! + + """ + A list of edges. + """ + edges: [OrganizationMemberEdge] + pageInfo: PageInfo +} + +""" +Autogenerated input type of OrganizationMemberDelete +""" +input OrganizationMemberDeleteInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! +} + +""" +Autogenerated return type of OrganizationMemberDelete. +""" +type OrganizationMemberDeletePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + deletedOrganizationMemberID: ID! + organization: Organization + user: User +} + +""" +An edge in a connection. +""" +type OrganizationMemberEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: OrganizationMember +} + +""" +The different orders you can sort members by +""" +enum OrganizationMemberOrder { + """ + Order by name alphabetically + """ + NAME + + """ + Order by the most recently created members first + """ + RECENTLY_CREATED + + """ + Order by relevance when searching for members + """ + RELEVANCE +} + +""" +Permissions information about what actions the current user can do against the organization membership record +""" +type OrganizationMemberPermissions { + """ + Whether the user can delete the user from the organization + """ + organizationMemberDelete: Permission + + """ + Whether the user can update the organization's members role information + """ + organizationMemberUpdate: Permission +} + +""" +Represents the connection between a user an a pipeline within an organization +""" +type OrganizationMemberPipeline { + """ + The pipeline the user has access to within the organization + """ + pipeline: Pipeline! +} + +""" +The connection type for OrganizationMemberPipeline. +""" +type OrganizationMemberPipelineConnection implements Connection { + count: Int! + + """ + A list of edges. + """ + edges: [OrganizationMemberPipelineEdge] + pageInfo: PageInfo +} + +""" +An edge in a connection. +""" +type OrganizationMemberPipelineEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: OrganizationMemberPipeline +} + +""" +The roles a user can be within an organization +""" +enum OrganizationMemberRole { + """ + Has full access to the entire organization + """ + ADMIN + + """ + The user is a regular member of the organization + """ + MEMBER +} + +""" +Information about the SSO setup for this organization member +""" +type OrganizationMemberSSO { + """ + SSO authorizations provided by your organization that have been created for this user + """ + authorizations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Filter authorizations by state + """ + state: [SSOAuthorizationState!] + ): SSOAuthorizationConnection + + """ + The SSO mode of the organization member + """ + mode: OrganizationMemberSSOModeEnum +} + +input OrganizationMemberSSOInput { + mode: OrganizationMemberSSOModeEnum! +} + +""" +The SSO authorization modes you can use on a member +""" +enum OrganizationMemberSSOModeEnum { + """ + The member can either use SSO or their email & password + """ + OPTIONAL + + """ + The member must use SSO to access your organization + """ + REQUIRED +} + +""" +Information about what security settings the user has enabled in Buildkite +""" +type OrganizationMemberSecurity { + """ + If the user has secured their Buildkite user account with a password + """ + passwordProtected: Boolean! + + """ + If the user has enabled Two Factor Authentication + """ + twoFactorEnabled: Boolean! +} + +input OrganizationMemberSecurityInput { + passwordProtected: Boolean + twoFactorEnabled: Boolean +} + +""" +Autogenerated input type of OrganizationMemberUpdate +""" +input OrganizationMemberUpdateInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! + role: OrganizationMemberRole + sso: OrganizationMemberSSOInput +} + +""" +Autogenerated return type of OrganizationMemberUpdate. +""" +type OrganizationMemberUpdatePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + organizationMember: OrganizationMember +} + +""" +Permissions information about what actions the current user can do against the organization +""" +type OrganizationPermissions { + """ + Whether the user can create agent tokens + """ + agentTokenCreate: Permission + + """ + Whether the user can access agent tokens + """ + agentTokenView: Permission + + """ + Whether the user can create a see a list of agents in organization + """ + agentView: Permission + + """ + Whether the user can access audit events for the organization + """ + auditEventsView: Permission + + """ + Whether the user can change the notification services for the organization + """ + notificationServiceUpdate: Permission + + """ + Whether the user can view and manage billing for the organization + """ + organizationBillingUpdate: Permission + + """ + Whether the user can invite members from an organization + """ + organizationInvitationCreate: Permission + + """ + Whether the user can update/remove members from an organization + """ + organizationMemberUpdate: Permission + + """ + Whether the user can see members in the organization + """ + organizationMemberView: Permission + + """ + Whether the user can see sensitive information about members in the organization + """ + organizationMemberViewSensitive: Permission + + """ + Whether the user can change the organization name and related source code provider settings + """ + organizationUpdate: Permission + + """ + Whether the user can create a new pipeline in the organization + """ + pipelineCreate: Permission + + """ + Whether the user can create a new pipeline without adding it to any teams within the organization + """ + pipelineCreateWithoutTeams: Permission + + """ + Whether the user can create a see a list of pipelines in organization + """ + pipelineView: Permission + + """ + Whether the user can change SSO Providers for the organization + """ + ssoProviderCreate: Permission + + """ + Whether the user can change SSO Providers for the organization + """ + ssoProviderUpdate: Permission + + """ + Whether the user can create a see a list of suites in organization + """ + suiteView: Permission + + """ + Whether the user can administer one or all the teams in the organization + """ + teamAdmin: Permission + + """ + Whether the user can create teams for the organization + """ + teamCreate: Permission + + """ + Whether the user can toggle teams on/off for the organization + """ + teamEnabledChange: Permission + + """ + Whether the user can see teams in the organization + """ + teamView: Permission +} + +interface OrganizationRepositoryProvider { + """ + The name of the OrganizationRepositoryProvider + """ + name: String! +} + +""" +Cursor Origin installation associated with this organization +""" +type OrganizationRepositoryProviderCursorOrigin implements Node & OrganizationRepositoryProvider { + """ + The ID of the provider + """ + id: ID! + + """ + The name of the OrganizationRepositoryProvider + """ + name: String! +} + +""" +GitHub installation associated with this organization +""" +type OrganizationRepositoryProviderGitHub implements Node & OrganizationRepositoryProvider { + """ + The ID of the provider + """ + id: ID! + + """ + The name of the OrganizationRepositoryProvider + """ + name: String! + + """ + Rate limit for this GitHub Installation + """ + rateLimit: OrganizationRepositoryProviderGitHubRateLimit +} + +""" +GitHub Enterprise Server associated with this organization +""" +type OrganizationRepositoryProviderGitHubEnterpriseServer implements Node & OrganizationRepositoryProvider { + """ + The ID of the provider + """ + id: ID! + + """ + The name of the OrganizationRepositoryProvider + """ + name: String! + + """ + Rate limit for GitHub Installation (GitHub App only) + """ + rateLimit: OrganizationRepositoryProviderGitHubRateLimit + + """ + URL of the GitHub Enterprise Server + """ + url: String +} + +type OrganizationRepositoryProviderGitHubRateLimit { + """ + The most recent rate limit data from GitHub + """ + mostRecent: GitHubRateLimit +} + +""" +Autogenerated input type of OrganizationRevokeInactiveTokensAfterUpdateMutation +""" +input OrganizationRevokeInactiveTokensAfterUpdateMutationInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + organizationId: ID! + revokeInactiveTokensAfter: RevokeInactiveTokenPeriod! +} + +""" +Autogenerated return type of OrganizationRevokeInactiveTokensAfterUpdateMutation. +""" +type OrganizationRevokeInactiveTokensAfterUpdateMutationPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + organization: Organization +} + +""" +Single sign-on settings for an organization +""" +type OrganizationSSO { + """ + Whether this account is configured for single sign-on + """ + isEnabled: Boolean + + """ + The single sign-on provider for this organization + """ + provider: OrganizationSSOProvider +} + +""" +Single sign-on provider information for an organization +""" +type OrganizationSSOProvider { + name: String! +} + +""" +Information about pagination in a connection. +""" +type PageInfo { + """ + When paginating forwards, the cursor to continue. + """ + endCursor: String + + """ + When paginating forwards, are there more items? + """ + hasNextPage: Boolean! + + """ + When paginating backwards, are there more items? + """ + hasPreviousPage: Boolean! + + """ + When paginating backwards, the cursor to continue. + """ + startCursor: String +} + +""" +The result of checking a permissions +""" +type Permission { + allowed: Boolean! + code: String + message: String +} + +""" +A pipeline +""" +type Pipeline implements Node { + """ + Whether existing builds can be rebuilt as new builds. + """ + allowRebuilds: Boolean + + """ + Whether this pipeline has been archived + """ + archived: Boolean! + + """ + The time when the pipeline was archived + """ + archivedAt: DateTime + + """ + The user that archived this pipeline + """ + archivedBy: User + + """ + The URL for build badge to the show the current build state for a pipeline. + """ + badgeURL: String! + + """ + A branch filter pattern to limit which pushed branches trigger builds on this pipeline. + """ + branchConfiguration: String + + """ + Returns the builds for this pipeline + """ + builds( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Use `%default` to search by the Pipelines default branch + """ + branch: [String!] + commit: [String!] + createdAtFrom: DateTime + createdAtTo: DateTime + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + metaData: [String!] + state: [BuildStates!] + ): BuildConnection + + """ + When a new build is created on a branch, any previous builds that are running + on the same branch will be automatically cancelled + """ + cancelIntermediateBuilds: Boolean! + + """ + Limit which branches build cancelling applies to, for example `!main` will + ensure that the main branch won't have it's builds automatically cancelled. + """ + cancelIntermediateBuildsBranchFilter: String + + """ + The optional repository URL agents use as a Git clone mirror. + """ + cloneMirrorUrl: String + cluster: Cluster + + """ + The color of the pipeline + """ + color: String + + """ + The shortest length to which any git commit ID may be truncated while guaranteeing referring to a unique commit + """ + commitShortLength: Int! + + """ + The time when the pipeline was created + """ + createdAt: DateTime + + """ + The user who created the pipeline + """ + createdBy: User + + """ + The default branch for this pipeline + """ + defaultBranch: String + + """ + The default timeout in minutes for all command steps in this pipeline. This can still be overridden in any command step + """ + defaultTimeoutInMinutes: Int + + """ + The short description of the pipeline + """ + description: String + + """ + The emoji of the pipeline + """ + emoji: String + + """ + Returns true if the viewer has favorited this pipeline + """ + favorite: Boolean! + id: ID! + jobs( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Filter jobs based on matching agent query rules (for example, a single tag + match "queue=test", or an array of matches ["queue=test", "tag=value"]) + """ + agentQueryRules: [String!] + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + concurrency: JobConcurrencySearch + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Order the jobs + """ + order: JobOrder = RECENTLY_CREATED + + """ + Whether or not the command job passed. Passing `false` will return all failed jobs (including "soft failed" jobs) + """ + passed: Boolean + priority: JobPrioritySearch + state: [JobStates!] + + """ + Filtering jobs based on related step information + """ + step: JobStepSearch + type: [JobTypes!] + ): JobConnection + + """ + The maximum timeout in minutes for all command steps in this pipeline. Any + command step without a timeout or with a timeout greater than this value will + be set to this value. + """ + maximumTimeoutInMinutes: Int + metrics(first: Int, last: Int): PipelineMetricConnection + + """ + The name of the pipeline + """ + name: String! + + """ + The next build number + """ + nextBuildNumber: Int! + organization: Organization! + permissions: PipelinePermissions! + pipelineTemplate: PipelineTemplate + + """ + Whether this pipeline is visible to everyone, including people outside this organization + """ + public: Boolean! @deprecated(reason: "Use `visibility`") + + """ + The repository for this pipeline + """ + repository: Repository + + """ + Schedules for this pipeline + """ + schedules(first: Int): PipelineScheduleConnection + + """ + When a new build is created on a branch, any previous builds that haven't yet + started on the same branch will be automatically marked as skipped. + """ + skipIntermediateBuilds: Boolean! + + """ + Limit which branches build skipping applies to, for example `!main` will + ensure that the main branch won't have it's builds automatically skipped. + """ + skipIntermediateBuildsBranchFilter: String + + """ + The slug of the pipeline + """ + slug: String! + steps: PipelineSteps + + """ + Tags that have been given to this pipeline + """ + tags: [PipelineTag!]! + + """ + Teams associated with this pipeline + """ + teams( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Order the pipelines returned + """ + order: TeamPipelineOrder = RECENTLY_CREATED + + """ + Search for teams associated that this pipeline is assigned to + """ + search: String + ): TeamPipelineConnection + + """ + The URL for the pipeline + """ + url: String! + + """ + The UUID of the pipeline + """ + uuid: String! + + """ + Whether this pipeline is visible to everyone, including people outside this organization + """ + visibility: PipelineVisibility! + + """ + The webhookURL field returns the webhook URL if the user has edit permissions + for the pipeline. Otherwise, it returns null. + """ + webhookURL: String +} + +""" +The access levels that can be assigned to a pipeline +""" +enum PipelineAccessLevels { + """ + Allows builds and read only + """ + BUILD_AND_READ + + """ + Allows edits, builds and reads + """ + MANAGE_BUILD_AND_READ + + """ + Read only - no builds or edits + """ + READ_ONLY +} + +""" +Autogenerated input type of PipelineArchive +""" +input PipelineArchiveInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! +} + +""" +Autogenerated return type of PipelineArchive. +""" +type PipelineArchivePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + pipeline: Pipeline! +} + +""" +The connection type for Pipeline. +""" +type PipelineConnection implements Connection { + count: Int! + + """ + A list of edges. + """ + edges: [PipelineEdge] + pageInfo: PageInfo +} + +""" +Autogenerated input type of PipelineCreate +""" +input PipelineCreateInput { + """ + If existing builds can be rebuilt as new builds. + """ + allowRebuilds: Boolean = true + + """ + A branch filter pattern to limit which pushed branches trigger builds on this pipeline. + """ + branchConfiguration: String + + """ + If intermediate builds should be canceled as new builds are created + """ + cancelIntermediateBuilds: Boolean + + """ + A branch filter to scope which builds this is applied to + """ + cancelIntermediateBuildsBranchFilter: String + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + An optional repository URL agents use as a Git clone mirror. + """ + cloneMirrorUrl: String + + """ + The GraphQL ID of the cluster you want to use for the pipeline + """ + clusterId: ID + + """ + A color hex code to represent this pipeline. + """ + color: String + + """ + The default branch used to show statistics about the build + """ + defaultBranch: String = "main" + + """ + The default timeout in minutes for all command steps in this pipeline. This can still be overridden in any command step. + """ + defaultTimeoutInMinutes: Int + + """ + A description of this pipeline. + """ + description: String + + """ + An emoji to represent this pipeline. + """ + emoji: String + + """ + The maximum timeout in minutes for all command steps in this pipeline. Any + command step without a timeout or with a timeout greater than this value will + be set to this value. + """ + maximumTimeoutInMinutes: Int + + """ + The `graphql_name` of the pipeline. + """ + name: String! + + """ + The initial build number to use + """ + nextBuildNumber: Int + organizationId: ID! + + """ + The GraphQL ID of the pipeline template you want to use for the pipeline + """ + pipelineTemplateId: ID + + """ + A source code repository that will back this pipeline + """ + repository: PipelineRepositoryInput! + + """ + If intermediate builds should be skipped as new builds are created + """ + skipIntermediateBuilds: Boolean + + """ + A branch filter to scope which builds this is applied to + """ + skipIntermediateBuildsBranchFilter: String + + """ + Steps used by this pipeline defined as YAML + """ + steps: PipelineStepsInput + + """ + Tags you want this pipeline to have + """ + tags: [PipelineTagInput!] + + """ + Which teams this pipeline should be assigned to + """ + teams: [PipelineTeamAssignmentInput!] + + """ + The visibility of the pipeline, either PUBLIC or PRIVATE. + """ + visibility: PipelineVisibility = PRIVATE +} + +""" +Autogenerated return type of PipelineCreate. +""" +type PipelineCreatePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + cluster: Cluster + organization: Organization! + pipeline: Pipeline! + pipelineEdge: PipelineEdge! + pipelineTemplate: PipelineTemplate +} + +""" +Autogenerated input type of PipelineCreateWebhook +""" +input PipelineCreateWebhookInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The GraphQL ID of the pipeline + """ + id: ID! +} + +""" +Autogenerated return type of PipelineCreateWebhook. +""" +type PipelineCreateWebhookPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The pipeline + """ + pipeline: Pipeline! + + """ + The GraphQL ID of the pipeline + """ + pipelineID: ID! @deprecated(reason: "Use `pipeline { id }` instead") + + """ + The created webhook + """ + webhook: RepositoryProviderWebhook! +} + +""" +Autogenerated input type of PipelineDelete +""" +input PipelineDeleteInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! +} + +""" +Autogenerated return type of PipelineDelete. +""" +type PipelineDeletePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + deletedPipelineID: ID! + organization: Organization! +} + +""" +Autogenerated input type of PipelineDeleteWebhook +""" +input PipelineDeleteWebhookInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The GraphQL ID of the pipeline + """ + id: ID! + + """ + The repository URL to delete the webhook from. Defaults to the pipeline's + current repository. Useful when the pipeline's repository has changed and the + webhook needs to be removed from the previous repository. + """ + repository: String +} + +""" +Autogenerated return type of PipelineDeleteWebhook. +""" +type PipelineDeleteWebhookPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The provider-specific ID of the deleted webhook + """ + deletedWebhookExternalId: String! + + """ + The pipeline + """ + pipeline: Pipeline! +} + +""" +An edge in a connection. +""" +type PipelineEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Pipeline +} + +""" +Autogenerated input type of PipelineFavorite +""" +input PipelineFavoriteInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + favorite: Boolean! + id: ID! +} + +""" +Autogenerated return type of PipelineFavorite. +""" +type PipelineFavoritePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + pipeline: Pipeline +} + +""" +A metric for a pipeline +""" +type PipelineMetric implements Node { + id: ID! + + """ + The label of this metric + """ + label: ID! + + """ + The URL for this metric + """ + url: String + + """ + The value for this metric + """ + value: String +} + +""" +The connection type for PipelineMetric. +""" +type PipelineMetricConnection implements Connection { + count: Int! + + """ + A list of edges. + """ + edges: [PipelineMetricEdge] + pageInfo: PageInfo +} + +""" +An edge in a connection. +""" +type PipelineMetricEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: PipelineMetric +} + +""" +The different orders you can sort pipelines by +""" +enum PipelineOrders { + """ + Order by name alphabetically + """ + NAME + + """ + Order by favorites first alphabetically, then the rest of the pipelines alphabetically + """ + NAME_WITH_FAVORITES_FIRST + + """ + Order by the most recently created pipelines first + """ + RECENTLY_CREATED + + """ + Order by relevance when searching for pipelines + """ + RELEVANCE +} + +""" +Permission information about what actions the current user can do against the pipeline +""" +type PipelinePermissions { + """ + Whether the user can create builds on this pipeline + """ + buildCreate: Permission! + + """ + Whether the user can delete this pipeline + """ + pipelineDelete: Permission! + + """ + Whether the user can favorite this pipeline + """ + pipelineFavorite: Permission! + + """ + Whether the user can create schedules on this pipeline + """ + pipelineScheduleCreate: Permission! + + """ + Whether the user can edit the settings of this pipeline + """ + pipelineUpdate: Permission! +} + +""" +Repository information for a pipeline +""" +input PipelineRepositoryInput { + """ + The remote URL for this repository i.e. git@github.com:foo/bar.git + """ + url: String! +} + +""" +Autogenerated input type of PipelineRotateWebhookURL +""" +input PipelineRotateWebhookURLInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! +} + +""" +Autogenerated return type of PipelineRotateWebhookURL. +""" +type PipelineRotateWebhookURLPayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + pipeline: Pipeline! +} + +""" +A schedule of when a build should automatically triggered for a Pipeline +""" +type PipelineSchedule implements Node { + """ + The branch to use for builds that this schedule triggers. Defaults to to the default branch in the Pipeline + """ + branch: String + + """ + Returns the builds created by this schedule + """ + builds( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): BuildConnection + + """ + The commit to use for builds that this schedule triggers. Defaults to `HEAD` + """ + commit: String + + """ + The time when this schedule was created + """ + createdAt: DateTime + createdBy: User + + """ + A definition of the trigger build schedule in cron syntax + """ + cronline: String! + + """ + If this Pipeline schedule is currently enabled + """ + enabled: Boolean + + """ + Environment variables passed to any triggered builds + """ + env: [String!] + + """ + The time when this schedule failed + """ + failedAt: DateTime + + """ + If the last attempt at triggering this scheduled build fails, this will be the reason + """ + failedMessage: String + id: ID! + + """ + A short description of the Pipeline schedule + """ + label: String! + + """ + The message to use for builds that this schedule triggers + """ + message: String + + """ + The time when this schedule will create a build next + """ + nextBuildAt: DateTime + permissions: PipelineSchedulePermissions! + pipeline: Pipeline + + """ + The UUID of the Pipeline schedule + """ + uuid: String! +} + +""" +The connection type for PipelineSchedule. +""" +type PipelineScheduleConnection implements Connection { + count: Int! + + """ + A list of edges. + """ + edges: [PipelineScheduleEdge] + pageInfo: PageInfo +} + +""" +Autogenerated input type of PipelineScheduleCreate +""" +input PipelineScheduleCreateInput { + branch: String + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + commit: String + cronline: String + enabled: Boolean + env: String + label: String + message: String + pipelineID: ID! +} + +""" +Autogenerated return type of PipelineScheduleCreate. +""" +type PipelineScheduleCreatePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + pipeline: Pipeline! + pipelineScheduleEdge: PipelineScheduleEdge! +} + +""" +Autogenerated input type of PipelineScheduleDelete +""" +input PipelineScheduleDeleteInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! +} + +""" +Autogenerated return type of PipelineScheduleDelete. +""" +type PipelineScheduleDeletePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + deletedPipelineScheduleID: ID! + pipeline: Pipeline +} + +""" +An edge in a connection. +""" +type PipelineScheduleEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: PipelineSchedule +} + +""" +Permission information about what actions the current user can do against the pipeline schedule +""" +type PipelineSchedulePermissions { + """ + Whether the user can delete the schedule + """ + pipelineScheduleDelete: Permission + + """ + Whether the user can update the schedule + """ + pipelineScheduleUpdate: Permission +} + +""" +Autogenerated input type of PipelineScheduleUpdate +""" +input PipelineScheduleUpdateInput { + branch: String + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + commit: String + cronline: String + enabled: Boolean + env: String + id: ID! + label: String + message: String +} + +""" +Autogenerated return type of PipelineScheduleUpdate. +""" +type PipelineScheduleUpdatePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + pipelineSchedule: PipelineSchedule! +} + +""" +A Pipeline identifier using a slug, and optionally negated with a leading `!` +""" +scalar PipelineSelector + +""" +Steps defined on a pipeline +""" +type PipelineSteps { + """ + A YAML representation of the pipeline steps + """ + yaml: YAML +} + +""" +Step definition for a pipeline +""" +input PipelineStepsInput { + """ + A YAML representation of the steps in this pipeline. This is formatted the same as `buildkite-agent pipeline upload + """ + yaml: String! +} + +""" +A tag associated with a pipeline +""" +type PipelineTag { + """ + The label for this tag + """ + label: String! +} + +""" +Tag associated with a pipeline +""" +input PipelineTagInput { + """ + The label of this tag + """ + label: String! +} + +""" +Used to assign teams to pipelines +""" +input PipelineTeamAssignmentInput { + """ + The access level members within the team have to the pipeline + """ + accessLevel: PipelineAccessLevels = MANAGE_BUILD_AND_READ + + """ + The ID of the team you want to be assigned + """ + id: ID! +} + +""" +A template defining a fixed step configuration for a pipeline +""" +type PipelineTemplate implements Node { + """ + If the pipeline template is available for assignment by non admin users + """ + available: Boolean! + + """ + A YAML representation of the step configuration + """ + configuration: YAML! + + """ + The time when the template was created + """ + createdAt: DateTime! + + """ + The user who created the template + """ + createdBy: User! + + """ + The short description of the template + """ + description: String + id: ID! + + """ + The name of the template + """ + name: String! + + """ + The last time the template was changed + """ + updatedAt: DateTime! + + """ + The user who last updated the template + """ + updatedBy: User! + + """ + The UUID for the template + """ + uuid: ID! +} + +""" +The connection type for PipelineTemplate. +""" +type PipelineTemplateConnection implements Connection { + count: Int! + + """ + A list of edges. + """ + edges: [PipelineTemplateEdge] + pageInfo: PageInfo +} + +""" +Autogenerated input type of PipelineTemplateCreate +""" +input PipelineTemplateCreateInput { + """ + If the pipeline template is available for assignment by non admin users + """ + available: Boolean = false + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + YAML step configuration for the pipeline template + """ + configuration: String! + + """ + Description for the pipeline template + """ + description: String + + """ + Name for the pipeline template + """ + name: String! + organizationId: ID! +} + +""" +Autogenerated return type of PipelineTemplateCreate. +""" +type PipelineTemplateCreatePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + pipelineTemplate: PipelineTemplate! +} + +""" +Autogenerated input type of PipelineTemplateDelete +""" +input PipelineTemplateDeleteInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! + organizationId: ID! +} + +""" +Autogenerated return type of PipelineTemplateDelete. +""" +type PipelineTemplateDeletePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + deletedPipelineTemplateId: ID! +} + +""" +An edge in a connection. +""" +type PipelineTemplateEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: PipelineTemplate +} + +""" +The different orders you can sort pipeline templates by +""" +enum PipelineTemplateOrder { + """ + Order by name alphabetically + """ + NAME + + """ + Order by the most recently created pipeline templates first + """ + RECENTLY_CREATED +} + +""" +Autogenerated input type of PipelineTemplateUpdate +""" +input PipelineTemplateUpdateInput { + """ + If the pipeline template is available for assignment by non admin users + """ + available: Boolean + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + YAML step configuration for the pipeline template + """ + configuration: String + + """ + Description for the pipeline template + """ + description: String + id: ID! + + """ + Name for the pipeline template + """ + name: String + organizationId: ID! +} + +""" +Autogenerated return type of PipelineTemplateUpdate. +""" +type PipelineTemplateUpdatePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + pipelineTemplate: PipelineTemplate! +} + +""" +Autogenerated input type of PipelineUnarchive +""" +input PipelineUnarchiveInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! +} + +""" +Autogenerated return type of PipelineUnarchive. +""" +type PipelineUnarchivePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + pipeline: Pipeline! +} + +""" +Autogenerated input type of PipelineUpdate +""" +input PipelineUpdateInput { + """ + If existing builds can be rebuilt as new builds. + """ + allowRebuilds: Boolean = true + + """ + Whether or not this pipeline should be archived. This field is deprecated and + will be removed on 2022-06-01. Use ArchivePipeline and UnarchivePipeline + mutations instead. + """ + archived: Boolean + + """ + A branch filter pattern to limit which pushed branches trigger builds on this pipeline. + """ + branchConfiguration: String + + """ + If intermediate builds should be canceled as new builds are created + """ + cancelIntermediateBuilds: Boolean + + """ + A branch filter to scope which builds this is applied to + """ + cancelIntermediateBuildsBranchFilter: String + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + An optional repository URL agents use as a Git clone mirror. Set to null to clear it. + """ + cloneMirrorUrl: String + + """ + The GraphQL ID of the cluster you want to update for the pipeline + """ + clusterId: ID + + """ + A color hex code to represent this pipeline. + """ + color: String + + """ + The default branch used to show statistics about the build + """ + defaultBranch: String + + """ + The default timeout in minutes for all command steps in this pipeline. This can still be overridden in any command step. + """ + defaultTimeoutInMinutes: Int + + """ + A description of this pipeline. + """ + description: String + + """ + An emoji to represent this pipeline. + """ + emoji: String + id: ID! + + """ + The maximum timeout in minutes for all command steps in this pipeline. Any + command step without a timeout or with a timeout greater than this value will + be set to this value. + """ + maximumTimeoutInMinutes: Int + + """ + The `graphql_name` of the pipeline. + """ + name: String + + """ + The next build number to use + """ + nextBuildNumber: Int + + """ + The GraphQL ID of the pipeline template you want to apply to this pipeline + """ + pipelineTemplateId: ID + + """ + A source code repository that will back this pipeline + """ + repository: PipelineRepositoryInput + + """ + If intermediate builds should be skipped as new builds are created + """ + skipIntermediateBuilds: Boolean + + """ + A branch filter to scope which builds this is applied to + """ + skipIntermediateBuildsBranchFilter: String + + """ + Steps used by this pipeline defined as YAML + """ + steps: PipelineStepsInput + + """ + Tags you want this pipeline to have + """ + tags: [PipelineTagInput!] + + """ + The visibility of the pipeline, either PUBLIC or PRIVATE. + """ + visibility: PipelineVisibility +} + +""" +Autogenerated return type of PipelineUpdate. +""" +type PipelineUpdatePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + pipeline: Pipeline! +} + +""" +The visibility of the pipeline +""" +enum PipelineVisibility { + """ + The pipeline is private + """ + PRIVATE + + """ + The pipeline is public + """ + PUBLIC +} + +""" +A pull request on a provider +""" +type PullRequest { + id: String! +} + +""" +The query root for this schema +""" +type Query { + """ + Find an agent by its slug + """ + agent( + """ + The UUID for the agent, prefixed by its organization's slug i.e. `acme-inc/0bd5ea7c-89b3-4f40-8ca3-ffac805771eb` + """ + slug: ID! + ): Agent + + """ + Find an agent token by its slug + """ + agentToken( + """ + The UUID for the agent token, prefixed by its organization's slug i.e. `acme-inc/0bd5ea7c-89b3-4f40-8ca3-ffac805771eb` + """ + slug: ID! + ): AgentToken + + """ + Find a API Access Token code + """ + apiAccessTokenCode( + """ + The code provided by the Auth API + """ + code: ID! + ): APIAccessTokenCode + + """ + Find an artifact by its UUID + """ + artifact(uuid: ID!): Artifact + + """ + Find an audit event via its uuid + """ + auditEvent( + """ + The UUID for the audit event i.e. `0bd5ea7c-89b3-4f40-8ca3-ffac805771eb` + """ + uuid: ID! + ): AuditEvent + + """ + Find a build + """ + build( + """ + The number of the build, prefixed with its organization and pipeline. i.e. `acme-inc/my-pipeline/123` + """ + slug: ID + + """ + The UUID of the build + """ + uuid: ID + ): Build + + """ + Find a GraphQL snippet + """ + graphQLSnippet( + """ + The UUID for this GraphQL snippet + """ + uuid: String! + ): GraphQLSnippet + + """ + Find a build job + """ + job(uuid: ID!): Job + + """ + Fetches an object given its ID. + """ + node( + """ + ID of the object. + """ + id: ID! + ): Node + + """ + Find a notification service via its UUID + """ + notificationService( + """ + The UUID for the notification service i.e. `0bd5ea7c-89b3-4f40-8ca3-ffac805771eb` + """ + uuid: ID! + ): NotificationService + + """ + Find an organization + """ + organization( + """ + The slug of the organization + """ + slug: ID + + """ + The UUID of the organization + """ + uuid: ID + ): Organization + + """ + Find an organization invitation via its slug + """ + organizationInvitation( + """ + The UUID for the invitation, prefixed by its organization's slug i.e. `acme-inc/0bd5ea7c-89b3-4f40-8ca3-ffac805771eb` + """ + slug: ID! + ): OrganizationInvitation + + """ + Find an organization membership via its slug + """ + organizationMember( + """ + The UUID for the membership, prefixed by its organization's slug i.e. `acme-inc/0bd5ea7c-89b3-4f40-8ca3-ffac805771eb` + """ + slug: ID! + ): OrganizationMember + + """ + Find a pipeline + """ + pipeline( + """ + The slug of the pipeline, prefixed with its organization. i.e. `acme-inc/my-pipeline` + """ + slug: ID + + """ + The UUID of the pipeline + """ + uuid: ID + ): Pipeline + + """ + Find a pipeline schedule by its slug + """ + pipelineSchedule( + """ + The UUID for the pipeline schedule, prefixed by its organization and + pipeline's slug i.e. + `acme-inc/my-pipeline/0bd5ea7c-89b3-4f40-8ca3-ffac805771eb` + """ + slug: ID! + ): PipelineSchedule + + """ + Find a pipeline template + """ + pipelineTemplate( + """ + The UUID of the pipeline template + """ + uuid: ID! + ): PipelineTemplate + + """ + Find a registry + """ + registry( + """ + The slug of the registry, prefixed with its organization. i.e. `acme-inc/my-registry` + """ + slug: ID + + """ + The UUID of the registry + """ + uuid: ID + ): Registry + + """ + Find a rule via its UUID + """ + rule( + """ + The UUID for the rule i.e. `0bd5ea7c-89b3-4f40-8ca3-ffac805771eb` + """ + uuid: ID! + ): Rule + + """ + Find a secret via its uuid. This does not contain the value of the secret or encrypted material. + """ + secret( + """ + The UUID for the secret i.e. `0bd5ea7c-89b3-4f40-8ca3-ffac805771eb` + """ + uuid: ID! + ): Secret + + """ + Find an sso provider either using it's slug, or UUID + """ + ssoProvider( + """ + The slug for the sso provider, prefixed by its organization's slug i.e. `acme-inc/0bd5ea7c-89b3-4f40-8ca3-ffac805771eb` + """ + slug: ID + + """ + The UUID of the sso provider + """ + uuid: ID + ): SSOProvider + + """ + Find a team + """ + team( + """ + The slug of the team, prefixed with its organization. i.e. `acme-inc/awesome-team` + """ + slug: ID! + ): Team + + """ + Context of the current user using the GraphQL API + """ + viewer: Viewer +} + +""" +A recovery code +""" +type RecoveryCode { + """ + The recovery code. + """ + code: String! + + """ + Whether the recovery codes is used + """ + consumed: Boolean! + + """ + Foo + """ + consumedAt: String +} + +""" +A batch of recovery codes +""" +type RecoveryCodeBatch { + """ + Whether the batch of recovery codes is active + """ + active: Boolean! + + """ + The recovery codes from this batch. Codes are consumed when used, and codes + will be included in this list whether consumed or not + """ + codes: [RecoveryCode!]! + id: ID! +} + +""" +A registry +""" +type Registry implements Node { + """ + The hex code for the registry navatar background color in the Registries page + """ + color: String + + """ + The time when the registry was created + """ + createdAt: DateTime + + """ + The description of the registry + """ + description: String + + """ + The emoji that will display as a registry navatar in the Registries page + """ + emoji: String + id: ID! + + """ + The name of the registry + """ + name: String! + organization: Organization! + + """ + The slug of the registry + """ + slug: String! + + """ + Teams associated with this registry + """ + teams( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Order the registries returned + """ + order: TeamRegistryOrder = RECENTLY_CREATED + + """ + Search for teams associated that this registry is assigned to + """ + search: String + ): TeamRegistryConnection + + """ + The time when the registry was updated + """ + updatedAt: DateTime + + """ + The URL for the registry + """ + url: String! + uuid: String! +} + +""" +The access levels that can be assigned to a registry +""" +enum RegistryAccessLevels { + """ + Allow read and push + """ + READ_AND_WRITE + + """ + Read only + """ + READ_ONLY + + """ + Allow read, push, delete and management + """ + READ_WRITE_AND_ADMIN +} + +""" +The connection type for Registry. +""" +type RegistryConnection implements Connection { + count: Int! + + """ + A list of edges. + """ + edges: [RegistryEdge] + pageInfo: PageInfo +} + +""" +An edge in a connection. +""" +type RegistryEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Registry +} + +""" +The different orders you can sort registries by +""" +enum RegistryOrders { + """ + Order by name alphabetically + """ + NAME + + """ + Order by the most recently created registries first + """ + RECENTLY_CREATED + + """ + Order by relevance when searching for registries + """ + RELEVANCE +} + +""" +A registry token +""" +type RegistryToken implements Node { + """ + The time when this token was created + """ + createdAt: DateTime + + """ + The user who created this token + """ + createdBy: User + + """ + The description of the purpose for this registry token + """ + description: String + id: ID! + organization: Organization! + registry: Registry! + + """ + The time when this token was last updated + """ + updatedAt: DateTime + + """ + The user who last updated this token + """ + updatedBy: User + uuid: String! +} + +""" +A repository associated with a pipeline +""" +type Repository { + """ + The repository’s provider + """ + provider: RepositoryProvider + + """ + The git URL for this repository + """ + url: String! +} + +interface RepositoryProvider { + """ + The name of the provider + """ + name: String! + + """ + This URL to the provider’s web interface + """ + url: String + + """ + The URL to use when setting up webhooks from the provider to trigger Buildkite builds + """ + webhookUrl: String +} + +""" +A pipeline's repository is being provided by Beanstalk +""" +type RepositoryProviderBeanstalk implements RepositoryProvider { + """ + The name of the provider + """ + name: String! + + """ + The repository’s provider settings + """ + settings: RepositoryProviderBeanstalkSettings + + """ + This URL to the provider’s web interface + """ + url: String + + """ + The URL to use when setting up webhooks from the provider to trigger Buildkite builds + """ + webhookUrl: String +} + +""" +Settings for a Beanstalk repository. +""" +type RepositoryProviderBeanstalkSettings implements RepositoryProviderSettings { + """ + The conditions under which this pipeline will trigger a build. + """ + filterCondition: String + + """ + Whether the filter is enabled + """ + filterEnabled: Boolean +} + +""" +A pipeline's repository is being provided by Bitbucket +""" +type RepositoryProviderBitbucket implements RepositoryProvider { + """ + The name of the provider + """ + name: String! + + """ + The repository’s provider settings + """ + settings: RepositoryProviderBitbucketSettings + + """ + This URL to the provider’s web interface + """ + url: String + + """ + The URL to use when setting up webhooks from the provider to trigger Buildkite builds + """ + webhookUrl: String +} + +""" +A pipeline's repository is being provided by Bitbucket Server +""" +type RepositoryProviderBitbucketServer implements RepositoryProvider { + """ + The name of the provider + """ + name: String! + + """ + The repository’s provider settings + """ + settings: RepositoryProviderBitbucketServerSettings + + """ + This URL to the provider’s web interface + """ + url: String + + """ + The URL to use when setting up webhooks from the provider to trigger Buildkite builds + """ + webhookUrl: String +} + +""" +Settings for Bitbucket Server repository +""" +type RepositoryProviderBitbucketServerSettings implements RepositoryProviderSettings { + """ + Whether to create builds when branches are pushed. + """ + buildBranches: Boolean! + + """ + Whether to create builds for commits that are part of a Pull Request. + """ + buildPullRequests: Boolean! + + """ + Whether to create builds when tags are pushed. + """ + buildTags: Boolean! + + """ + The conditions under which this pipeline will trigger a build. + """ + filterCondition: String + + """ + Whether the filter is enabled + """ + filterEnabled: Boolean +} + +""" +Settings for a Bitbucket repository. +""" +type RepositoryProviderBitbucketSettings implements RepositoryProviderSettings { + """ + Whether to create builds when branches are pushed. + """ + buildBranches: Boolean! + + """ + Whether to create builds for commits that are part of a Pull Request. + """ + buildPullRequests: Boolean! + + """ + Whether to create builds when tags are pushed. + """ + buildTags: Boolean! + + """ + A boolean to enable automatically cancelling any running builds for a branch if the branch is deleted. + """ + cancelDeletedBranchBuilds: Boolean + + """ + The conditions under which this pipeline will trigger a build. + """ + filterCondition: String + + """ + Whether the filter is enabled + """ + filterEnabled: Boolean + + """ + Ensure that even if Build Pull Requests is disabled, all commits to the default branch will trigger a build. + """ + ignoreDefaultBranchPullRequests: Boolean! + + """ + Whether to update the status of commits in Bitbucket. + """ + publishCommitStatus: Boolean! + + """ + Whether to create a separate status for each job in a build, allowing you to + see the status of each job directly in Bitbucket. + """ + publishCommitStatusPerStep: Boolean! + + """ + The branch filtering pattern. Only pull requests on branches matching this pattern will cause builds to be created. + """ + pullRequestBranchFilterConfiguration: String + + """ + Whether to limit the creation of builds to specific branches or patterns. + """ + pullRequestBranchFilterEnabled: Boolean! + + """ + Whether to skip creating a new build if a build for the commit and branch already exists. + """ + skipBuildsForExistingCommits: Boolean + + """ + Whether to skip creating a new build for a pull request if an existing build for the commit and branch already exists. + """ + skipPullRequestBuildsForExistingCommits: Boolean! +} + +""" +A pipeline's repository is being provided by Codebase +""" +type RepositoryProviderCodebase implements RepositoryProvider { + """ + The name of the provider + """ + name: String! + + """ + The repository’s provider settings + """ + settings: RepositoryProviderCodebaseSettings + + """ + This URL to the provider’s web interface + """ + url: String + + """ + The URL to use when setting up webhooks from the provider to trigger Buildkite builds + """ + webhookUrl: String +} + +""" +Settings for a Codebase repository. +""" +type RepositoryProviderCodebaseSettings implements RepositoryProviderSettings { + """ + The conditions under which this pipeline will trigger a build. + """ + filterCondition: String + + """ + Whether the filter is enabled + """ + filterEnabled: Boolean +} + +""" +A pipeline's repository is being provided by Cursor Origin +""" +type RepositoryProviderCursorOrigin implements RepositoryProvider { + """ + The name of the provider + """ + name: String! + + """ + The repository’s provider settings + """ + settings: RepositoryProviderCursorOriginSettings + + """ + This URL to the provider’s web interface + """ + url: String + + """ + The URL to use when setting up webhooks from the provider to trigger Buildkite builds + """ + webhookUrl: String +} + +""" +Settings for a Cursor Origin repository +""" +type RepositoryProviderCursorOriginSettings implements RepositoryProviderSettings { + """ + Whether to create builds when branches are pushed. + """ + buildBranches: Boolean! + + """ + Whether to create builds for commits that are part of a pull request. + """ + buildPullRequests: Boolean! + + """ + Whether to create builds when tags are pushed. + """ + buildTags: Boolean! + + """ + The conditions under which this pipeline will trigger a build. + """ + filterCondition: String + + """ + Whether the filter is enabled + """ + filterEnabled: Boolean + + """ + Whether to publish build results to Cursor Origin as a check run. + """ + publishCommitStatus: Boolean! +} + +""" +Settings for a GitHub Enterprise repository. +""" +type RepositoryProviderGitHubEnterpriseSettings implements RepositoryProviderSettings { + """ + Whether to create builds when branches are pushed. + """ + buildBranches: Boolean! + + """ + Whether to create builds when a check run completes. + """ + buildCheckRunCompleted: Boolean! + + """ + Whether to create builds when a branch or tag is created. + """ + buildCreateEvent: Boolean! + + """ + Whether to create builds when a deployment status is created. + """ + buildDeploymentStatusCreated: Boolean! + + """ + Whether to create builds when an issue comment is created on a pull request. + """ + buildIssueCommentCreated: Boolean! + + """ + Whether to create builds for merge group check runs. + """ + buildMergeGroupChecksRequested: Boolean! + + """ + Whether to create builds for pull requests when the base branch is changed. + """ + buildPullRequestBaseBranchChanged: Boolean! + + """ + Whether to create builds when a pull request is converted to draft. + """ + buildPullRequestConvertedToDraft: Boolean! + + """ + Whether to create builds when a pull request is removed from a merge queue. + """ + buildPullRequestDequeued: Boolean! + + """ + Whether to create builds when a pull request is edited. + """ + buildPullRequestEdited: Boolean! + + """ + Whether to create builds for pull requests from third-party forks. + """ + buildPullRequestForks: Boolean! + + """ + Whether to create builds for pull requests when labels are added or removed. + """ + buildPullRequestLabelsChanged: Boolean! + + """ + Whether to create builds for the test merge commit of a pull request. + """ + buildPullRequestMergeCommits: Boolean! + + """ + Whether to create builds for pull requests that are ready for review. + """ + buildPullRequestReadyForReview: Boolean! + + """ + Whether to create builds when a pull request is reopened. + """ + buildPullRequestReopened: Boolean! + + """ + Whether to create builds when an inline review comment is created on a pull request. + """ + buildPullRequestReviewCommentCreated: Boolean! + + """ + Whether to create builds when a pull request review is dismissed. + """ + buildPullRequestReviewDismissed: Boolean! + + """ + Whether to create builds when a pull request review is requested. + """ + buildPullRequestReviewRequested: Boolean! + + """ + Whether to create builds when a pull request review is submitted. + """ + buildPullRequestReviewSubmitted: Boolean! + + """ + Whether to create builds for stacked pull requests. + """ + buildPullRequestStacks: Boolean! + + """ + Whether to create builds for commits that are part of a Pull Request. + """ + buildPullRequests: Boolean! + + """ + Whether to create builds when a release is created. + """ + buildReleaseCreated: Boolean! + + """ + Whether to create builds when a release is published. + """ + buildReleasePublished: Boolean! + + """ + Whether to create builds when a release is released. + """ + buildReleaseReleased: Boolean! + + """ + Whether to create builds when tags are pushed. + """ + buildTags: Boolean! + + """ + A boolean to enable automatically cancelling any running builds for a branch if the branch is deleted. + """ + cancelDeletedBranchBuilds: Boolean! + + """ + Whether to cancel running builds when a merge group is destroyed. + """ + cancelWhenMergeGroupDestroyed: Boolean! + + """ + The conditions under which this pipeline will trigger a build. + """ + filterCondition: String + + """ + Whether the filter is enabled + """ + filterEnabled: Boolean + + """ + Whether all GitHub webhook processing is disabled for this pipeline. + """ + githubWebhooksDisabled: Boolean! + + """ + Ensure that even if Build Pull Requests is disabled, all commits to the default branch will trigger a build. + """ + ignoreDefaultBranchPullRequests: Boolean! + + """ + The command word used to trigger builds from issue comments (e.g. "/bk"). Only + comments containing this word will trigger builds. + """ + issueCommentCommandWord: String + + """ + The match mode for issue comment command words. + """ + issueCommentMatchMode: CommandWordMatchMode + + """ + Prefix branch names for third-party fork builds to ensure they don't trigger + branch conditions. For example, the main branch from some-user will become + some-user:main. + """ + prefixPullRequestForkBranchNames: Boolean! + + """ + The status to use for blocked builds. Pending can be used with required status + checks to prevent merging pull requests with blocked builds. + """ + publishBlockedAsPending: Boolean! + + """ + Whether to update the status of commits in Bitbucket or GitHub. + """ + publishCommitStatus: Boolean! + + """ + Whether to create a separate status for each job in a build, allowing you to + see the status of each job directly in GitHub. + """ + publishCommitStatusPerStep: Boolean! + + """ + The branch filtering pattern. Only pull requests on branches matching this pattern will cause builds to be created. + """ + pullRequestBranchFilterConfiguration: String + + """ + Whether to limit the creation of builds to specific branches or patterns. + """ + pullRequestBranchFilterEnabled: Boolean! + + """ + The command word used to trigger builds from inline PR review comments (e.g. + "/bk"). Only comments containing this word will trigger builds. + """ + reviewCommentCommandWord: String + + """ + The match mode for review comment command words. + """ + reviewCommentMatchMode: CommandWordMatchMode + + """ + Whether to create a separate status for pull request builds, allowing you to + require a passing pull request build in your required status checks in GitHub. + """ + separatePullRequestStatuses: Boolean! + + """ + Whether to skip creating a new build if a build for the commit and branch already exists. + """ + skipBuildsForExistingCommits: Boolean! + + """ + Whether to skip creating a new build for a pull request if an existing build for the commit and branch already exists. + """ + skipPullRequestBuildsForExistingCommits: Boolean! + + """ + What type of event to trigger builds on. + """ + triggerMode: String! + + """ + Whether to use the merge group base commit for git diff base. + """ + useMergeGroupBaseCommitForGitDiffBase: Boolean! + + """ + Whether to use step keys as commit status names for per-step commit statuses. + Requires publish_commit_status and publish_commit_status_per_step to also be enabled. + """ + useStepKeyAsCommitStatus: Boolean! +} + +""" +Settings for a GitHub repository. +""" +type RepositoryProviderGitHubSettings implements RepositoryProviderSettings { + """ + Whether to create builds when branches are pushed. + """ + buildBranches: Boolean! + + """ + Whether to create builds when a check run completes. + """ + buildCheckRunCompleted: Boolean! + + """ + Whether to create builds when a branch or tag is created. + """ + buildCreateEvent: Boolean! + + """ + Whether to create builds when a deployment status is created. + """ + buildDeploymentStatusCreated: Boolean! + + """ + Whether to create builds when an issue comment is created on a pull request. + """ + buildIssueCommentCreated: Boolean! + + """ + Whether to create builds for merge group check runs. + """ + buildMergeGroupChecksRequested: Boolean! + + """ + Whether to create builds for pull requests when the base branch is changed. + """ + buildPullRequestBaseBranchChanged: Boolean! + + """ + Whether to create builds when a pull request is converted to draft. + """ + buildPullRequestConvertedToDraft: Boolean! + + """ + Whether to create builds when a pull request is removed from a merge queue. + """ + buildPullRequestDequeued: Boolean! + + """ + Whether to create builds when a pull request is edited. + """ + buildPullRequestEdited: Boolean! + + """ + Whether to create builds for pull requests from third-party forks. + """ + buildPullRequestForks: Boolean! + + """ + Whether to create builds for pull requests when labels are added or removed. + """ + buildPullRequestLabelsChanged: Boolean! + + """ + Whether to create builds for the test merge commit of a pull request. + """ + buildPullRequestMergeCommits: Boolean! + + """ + Whether to create builds for pull requests that are ready for review. + """ + buildPullRequestReadyForReview: Boolean! + + """ + Whether to create builds when a pull request is reopened. + """ + buildPullRequestReopened: Boolean! + + """ + Whether to create builds when an inline review comment is created on a pull request. + """ + buildPullRequestReviewCommentCreated: Boolean! + + """ + Whether to create builds when a pull request review is dismissed. + """ + buildPullRequestReviewDismissed: Boolean! + + """ + Whether to create builds when a pull request review is requested. + """ + buildPullRequestReviewRequested: Boolean! + + """ + Whether to create builds when a pull request review is submitted. + """ + buildPullRequestReviewSubmitted: Boolean! + + """ + Whether to create builds for stacked pull requests. + """ + buildPullRequestStacks: Boolean! + + """ + Whether to create builds for commits that are part of a Pull Request. + """ + buildPullRequests: Boolean! + + """ + Whether to create builds when a release is created. + """ + buildReleaseCreated: Boolean! + + """ + Whether to create builds when a release is published. + """ + buildReleasePublished: Boolean! + + """ + Whether to create builds when a release is released. + """ + buildReleaseReleased: Boolean! + + """ + Whether to create builds when tags are pushed. + """ + buildTags: Boolean! + + """ + A boolean to enable automatically cancelling any running builds for a branch if the branch is deleted. + """ + cancelDeletedBranchBuilds: Boolean! + + """ + Whether to cancel running builds when a merge group is destroyed. + """ + cancelWhenMergeGroupDestroyed: Boolean! + + """ + The conditions under which this pipeline will trigger a build. + """ + filterCondition: String + + """ + Whether the filter is enabled + """ + filterEnabled: Boolean + + """ + Whether all GitHub webhook processing is disabled for this pipeline. + """ + githubWebhooksDisabled: Boolean! + + """ + Ensure that even if Build Pull Requests is disabled, all commits to the default branch will trigger a build. + """ + ignoreDefaultBranchPullRequests: Boolean! + + """ + The command word used to trigger builds from issue comments (e.g. "/bk"). Only + comments containing this word will trigger builds. + """ + issueCommentCommandWord: String + + """ + The match mode for issue comment command words. + """ + issueCommentMatchMode: CommandWordMatchMode + + """ + Prefix branch names for third-party fork builds to ensure they don't trigger + branch conditions. For example, the main branch from some-user will become + some-user:main. + """ + prefixPullRequestForkBranchNames: Boolean! + + """ + The status to use for blocked builds. Pending can be used with required status + checks to prevent merging pull requests with blocked builds. + """ + publishBlockedAsPending: Boolean! + + """ + Whether to update the status of commits in Bitbucket or GitHub. + """ + publishCommitStatus: Boolean! + + """ + Whether to create a separate status for each job in a build, allowing you to + see the status of each job directly in GitHub. + """ + publishCommitStatusPerStep: Boolean! + + """ + The branch filtering pattern. Only pull requests on branches matching this pattern will cause builds to be created. + """ + pullRequestBranchFilterConfiguration: String + + """ + Whether to limit the creation of builds to specific branches or patterns. + """ + pullRequestBranchFilterEnabled: Boolean! + + """ + The command word used to trigger builds from inline PR review comments (e.g. + "/bk"). Only comments containing this word will trigger builds. + """ + reviewCommentCommandWord: String + + """ + The match mode for review comment command words. + """ + reviewCommentMatchMode: CommandWordMatchMode + + """ + Whether to create a separate status for pull request builds, allowing you to + require a passing pull request build in your required status checks in GitHub. + """ + separatePullRequestStatuses: Boolean! + + """ + Whether to skip creating a new build if a build for the commit and branch already exists. + """ + skipBuildsForExistingCommits: Boolean! + + """ + Whether to skip creating a new build for a pull request if an existing build for the commit and branch already exists. + """ + skipPullRequestBuildsForExistingCommits: Boolean! + + """ + What type of event to trigger builds on. + """ + triggerMode: String! + + """ + Whether to use the merge group base commit for git diff base. + """ + useMergeGroupBaseCommitForGitDiffBase: Boolean! + + """ + Whether to use step keys as commit status names for per-step commit statuses. + Requires publish_commit_status and publish_commit_status_per_step to also be enabled. + """ + useStepKeyAsCommitStatus: Boolean! +} + +""" +A pipeline's repository is being provided by GitHub +""" +type RepositoryProviderGithub implements RepositoryProvider { + """ + The name of the provider + """ + name: String! + + """ + The repository's provider settings + """ + settings: RepositoryProviderGitHubSettings + + """ + This URL to the provider’s web interface + """ + url: String + + """ + The webhook configured on the repository to trigger builds. Returns null if no + webhook exists or if the user doesn't have edit permissions. + """ + webhook: RepositoryProviderGithubWebhook + + """ + The URL to use when setting up webhooks from the provider to trigger Buildkite builds + """ + webhookUrl: String +} + +""" +A pipeline's repository is being provided by GitHub Enterprise +""" +type RepositoryProviderGithubEnterprise implements RepositoryProvider { + """ + The name of the provider + """ + name: String! + + """ + The repository's provider settings + """ + settings: RepositoryProviderGitHubEnterpriseSettings + + """ + This URL to the provider’s web interface + """ + url: String + + """ + The webhook configured on the repository to trigger builds. Returns null if no + webhook exists or if the user doesn't have edit permissions. + """ + webhook: RepositoryProviderGithubEnterpriseWebhook + + """ + The URL to use when setting up webhooks from the provider to trigger Buildkite builds + """ + webhookUrl: String +} + +""" +A webhook configured on a GitHub Enterprise repository to trigger pipeline builds +""" +type RepositoryProviderGithubEnterpriseWebhook implements RepositoryProviderWebhook { + """ + The provider-specific ID of the webhook + """ + externalId: String! + + """ + The repository provider + """ + provider: RepositoryProvider! + + """ + The URL that the webhook delivers events to + """ + url: String! } -"""Autogenerated return type of OrganizationRevokeInactiveTokensAfterUpdateMutation.""" -type OrganizationRevokeInactiveTokensAfterUpdateMutationPayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - organization: Organization -} +""" +A webhook configured on a GitHub repository to trigger pipeline builds +""" +type RepositoryProviderGithubWebhook implements RepositoryProviderWebhook { + """ + The provider-specific ID of the webhook + """ + externalId: String! -"""Single sign-on settings for an organization""" -type OrganizationSSO { -"""Whether this account is configured for single sign-on""" - isEnabled: Boolean! -"""The single sign-on provider for this organization""" - provider: OrganizationSSOProvider -} + """ + The repository provider + """ + provider: RepositoryProvider! -"""Single sign-on provider information for an organization""" -type OrganizationSSOProvider { - name: String! + """ + The URL that the webhook delivers events to + """ + url: String! } -"""Information about pagination in a connection.""" -type PageInfo { -"""When paginating forwards, the cursor to continue.""" - endCursor: String -"""When paginating forwards, are there more items?""" - hasNextPage: Boolean! -"""When paginating backwards, are there more items?""" - hasPreviousPage: Boolean! -"""When paginating backwards, the cursor to continue.""" - startCursor: String -} +""" +A pipeline's repository is being provided by GitLab +""" +type RepositoryProviderGitlab implements RepositoryProvider { + """ + The name of the provider + """ + name: String! -"""The result of checking a permissions""" -type Permission { - allowed: Boolean! - code: String - message: String -} - -"""A pipeline""" -type Pipeline implements Node{ -"""Whether existing builds can be rebuilt as new builds.""" - allowRebuilds: Boolean -"""Whether this pipeline has been archived""" - archived: Boolean! -"""The time when the pipeline was archived""" - archivedAt: DateTime -"""The user that archived this pipeline""" - archivedBy: User -"""A branch filter pattern to limit which pushed branches trigger builds on this pipeline.""" - branchConfiguration: String -"""Returns the builds for this pipeline""" - builds( -"""Returns the first _n_ elements from the list.""" - first: Int -"""Returns the elements in the list that come after the specified cursor.""" - after: String -"""Returns the last _n_ elements from the list.""" - last: Int -"""Returns the elements in the list that come before the specified cursor.""" - before: String - state: [BuildStates!] -"""Use `%default` to search by the Pipelines default branch""" - branch: [String!] - commit: [String!] - metaData: [String!] - createdAtFrom: DateTime - createdAtTo: DateTime - ): BuildConnection -"""When a new build is created on a branch, any previous builds that are running on the same branch will be automatically cancelled""" - cancelIntermediateBuilds: Boolean! -"""Limit which branches build cancelling applies to, for example `!main` will ensure that the main branch won't have it's builds automatically cancelled.""" - cancelIntermediateBuildsBranchFilter: String - cluster: Cluster -"""The color of the pipeline""" - color: String -"""The shortest length to which any git commit ID may be truncated while guaranteeing referring to a unique commit""" - commitShortLength: Int! -"""The time when the pipeline was created""" - createdAt: DateTime -"""The user who created the pipeline""" - createdBy: User -"""The default branch for this pipeline""" - defaultBranch: String -"""The default timeout in minutes for all command steps in this pipeline. This can still be overridden in any command step""" - defaultTimeoutInMinutes: Int -"""The short description of the pipeline""" - description: String -"""The emoji of the pipeline""" - emoji: String -"""Returns true if the viewer has favorited this pipeline""" - favorite: Boolean! - id: ID! - jobs( -"""Returns the first _n_ elements from the list.""" - first: Int -"""Returns the elements in the list that come after the specified cursor.""" - after: String -"""Returns the last _n_ elements from the list.""" - last: Int -"""Returns the elements in the list that come before the specified cursor.""" - before: String - type: [JobTypes!] - state: [JobStates!] - priority: JobPrioritySearch - agentQueryRules: [String!] - concurrency: JobConcurrencySearch -"""Whether or not the command job passed. Passing `false` will return all failed jobs (including "soft failed" jobs)""" - passed: Boolean -"""Filtering jobs based on related step information""" - step: JobStepSearch -"""Order the jobs""" - order: JobOrder - ): JobConnection -"""The maximum timeout in minutes for all command steps in this pipeline. Any command step without a timeout or with a timeout greater than this value will be set to this value.""" - maximumTimeoutInMinutes: Int - metrics( - first: Int - last: Int - ): PipelineMetricConnection -"""The name of the pipeline""" - name: String! -"""The next build number in the sequence""" - nextBuildNumber: Int! - organization: Organization! - permissions: PipelinePermissions! - pipelineTemplate: PipelineTemplate -"""Whether this pipeline is visible to everyone, including people outside this organization""" - public: Boolean! -"""The repository for this pipeline""" - repository: Repository -"""Schedules for this pipeline""" - schedules( - first: Int - ): PipelineScheduleConnection -"""When a new build is created on a branch, any previous builds that haven't yet started on the same branch will be automatically marked as skipped.""" - skipIntermediateBuilds: Boolean! -"""Limit which branches build skipping applies to, for example `!main` will ensure that the main branch won't have it's builds automatically skipped.""" - skipIntermediateBuildsBranchFilter: String -"""The slug of the pipeline""" - slug: String! - steps: PipelineSteps -"""Tags that have been given to this pipeline""" - tags: [PipelineTag!]! -"""Teams associated with this pipeline""" - teams( -"""Returns the first _n_ elements from the list.""" - first: Int -"""Returns the elements in the list that come after the specified cursor.""" - after: String -"""Returns the last _n_ elements from the list.""" - last: Int -"""Returns the elements in the list that come before the specified cursor.""" - before: String -"""Search for teams associated that this pipeline is assigned to""" - search: String -"""Order the pipelines returned""" - order: TeamPipelineOrder - ): TeamPipelineConnection -"""The URL for the pipeline""" - url: String! -"""The UUID of the pipeline""" - uuid: String! -"""Whether this pipeline is visible to everyone, including people outside this organization""" - visibility: PipelineVisibility! -"""The URL to use in your repository settings for commit webhooks""" - webhookURL: String! -} - -"""The access levels that can be assigned to a pipeline""" -enum PipelineAccessLevels { -"""Allows edits, builds and reads""" - MANAGE_BUILD_AND_READ -"""Allows builds and read only""" - BUILD_AND_READ -"""Read only - no builds or edits""" - READ_ONLY -} + """ + The repository’s provider settings + """ + settings: RepositoryProviderGitlabSettings -"""Autogenerated input type of PipelineArchive""" -input PipelineArchiveInput { -"""Autogenerated input type of PipelineArchive""" - clientMutationId: String -"""Autogenerated input type of PipelineArchive""" - id: ID! -} + """ + This URL to the provider’s web interface + """ + url: String -"""Autogenerated return type of PipelineArchive.""" -type PipelineArchivePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - pipeline: Pipeline! + """ + The URL to use when setting up webhooks from the provider to trigger Buildkite builds + """ + webhookUrl: String } -type PipelineConnection implements Connection{ - count: Int! - edges: [PipelineEdge] - pageInfo: PageInfo -} +""" +Deprecated: Use RepositoryProviderGitlabEnterpriseType instead. This type represented GitLab Community Edition. +""" +type RepositoryProviderGitlabCommunity implements RepositoryProvider { + """ + The name of the provider + """ + name: String! -"""Autogenerated input type of PipelineCreate""" -input PipelineCreateInput { -"""Autogenerated input type of PipelineCreate""" - clientMutationId: String -"""Autogenerated input type of PipelineCreate""" - organizationId: ID! -"""Autogenerated input type of PipelineCreate""" - name: String! -"""Autogenerated input type of PipelineCreate""" - description: String -"""Autogenerated input type of PipelineCreate""" - emoji: String -"""Autogenerated input type of PipelineCreate""" - color: String -"""Autogenerated input type of PipelineCreate""" - visibility: PipelineVisibility -"""Autogenerated input type of PipelineCreate""" - repository: PipelineRepositoryInput! -"""Autogenerated input type of PipelineCreate""" - steps: PipelineStepsInput -"""Autogenerated input type of PipelineCreate""" - skipIntermediateBuilds: Boolean -"""Autogenerated input type of PipelineCreate""" - skipIntermediateBuildsBranchFilter: String -"""Autogenerated input type of PipelineCreate""" - cancelIntermediateBuilds: Boolean -"""Autogenerated input type of PipelineCreate""" - cancelIntermediateBuildsBranchFilter: String -"""Autogenerated input type of PipelineCreate""" - allowRebuilds: Boolean -"""Autogenerated input type of PipelineCreate""" - defaultTimeoutInMinutes: Int -"""Autogenerated input type of PipelineCreate""" - maximumTimeoutInMinutes: Int -"""Autogenerated input type of PipelineCreate""" - teams: [PipelineTeamAssignmentInput!] -"""Autogenerated input type of PipelineCreate""" - defaultBranch: String -"""Autogenerated input type of PipelineCreate""" - nextBuildNumber: Int -"""Autogenerated input type of PipelineCreate""" - clusterId: ID -"""Autogenerated input type of PipelineCreate""" - pipelineTemplateId: ID -"""Autogenerated input type of PipelineCreate""" - tags: [PipelineTagInput!] -"""Autogenerated input type of PipelineCreate""" - branchConfiguration: String -} - -"""Autogenerated return type of PipelineCreate.""" -type PipelineCreatePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - cluster: Cluster - organization: Organization! - pipeline: Pipeline! - pipelineEdge: PipelineEdge! - pipelineTemplate: PipelineTemplate -} + """ + The repository’s provider settings + """ + settings: RepositoryProviderGitlabSettings -"""Autogenerated input type of PipelineCreateWebhook""" -input PipelineCreateWebhookInput { -"""Autogenerated input type of PipelineCreateWebhook""" - clientMutationId: String -"""Autogenerated input type of PipelineCreateWebhook""" - id: ID! -} + """ + This URL to the provider’s web interface + """ + url: String -"""Autogenerated return type of PipelineCreateWebhook.""" -type PipelineCreateWebhookPayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - pipelineID: ID! + """ + The URL to use when setting up webhooks from the provider to trigger Buildkite builds + """ + webhookUrl: String } -"""Autogenerated input type of PipelineDelete""" -input PipelineDeleteInput { -"""Autogenerated input type of PipelineDelete""" - clientMutationId: String -"""Autogenerated input type of PipelineDelete""" - id: ID! -} +""" +A pipeline's repository is being provided by a GitLab Self-Managed instance. +""" +type RepositoryProviderGitlabEnterprise implements RepositoryProvider { + """ + The name of the provider + """ + name: String! -"""Autogenerated return type of PipelineDelete.""" -type PipelineDeletePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - deletedPipelineID: ID! - organization: Organization! -} + """ + The repository’s provider settings + """ + settings: RepositoryProviderGitlabSettings -type PipelineEdge { - cursor: String! - node: Pipeline -} + """ + This URL to the provider’s web interface + """ + url: String -"""Autogenerated input type of PipelineFavorite""" -input PipelineFavoriteInput { -"""Autogenerated input type of PipelineFavorite""" - clientMutationId: String -"""Autogenerated input type of PipelineFavorite""" - id: ID! -"""Autogenerated input type of PipelineFavorite""" - favorite: Boolean! + """ + The URL to use when setting up webhooks from the provider to trigger Buildkite builds + """ + webhookUrl: String } -"""Autogenerated return type of PipelineFavorite.""" -type PipelineFavoritePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - pipeline: Pipeline -} +""" +Settings for a GitLab repository. +""" +type RepositoryProviderGitlabSettings implements RepositoryProviderSettings { + """ + The conditions under which this pipeline will trigger a build. + """ + filterCondition: String -"""A metric for a pipeline""" -type PipelineMetric implements Node{ - id: ID! -"""The label of this metric""" - label: ID! -"""The URL for this metric""" - url: String -"""The value for this metric""" - value: String + """ + Whether the filter is enabled + """ + filterEnabled: Boolean } -type PipelineMetricConnection implements Connection{ - count: Int! - edges: [PipelineMetricEdge] - pageInfo: PageInfo -} +interface RepositoryProviderSettings { + """ + The conditions under which this pipeline will trigger a build. + """ + filterCondition: String -type PipelineMetricEdge { - cursor: String! - node: PipelineMetric + """ + Whether the filter is enabled + """ + filterEnabled: Boolean } -"""The different orders you can sort pipelines by""" -enum PipelineOrders { -"""Order by name alphabetically""" - NAME -"""Order by favorites first alphabetically, then the rest of the pipelines alphabetically""" - NAME_WITH_FAVORITES_FIRST -"""Order by the most recently created pipelines first""" - RECENTLY_CREATED -"""Order by relevance when searching for pipelines""" - RELEVANCE -} +""" +A pipeline's repository is being provided by a service unknown to Buildkite +""" +type RepositoryProviderUnknown implements RepositoryProvider { + """ + The name of the provider + """ + name: String! -"""Permission information about what actions the current user can do against the pipeline""" -type PipelinePermissions { -"""Whether the user can create builds on this pipeline""" - buildCreate: Permission! -"""Whether the user can delete this pipeline""" - pipelineDelete: Permission! -"""Whether the user can favorite this pipeline""" - pipelineFavorite: Permission! -"""Whether the user can create schedules on this pipeline""" - pipelineScheduleCreate: Permission! -"""Whether the user can edit the settings of this pipeline""" - pipelineUpdate: Permission! -} - -"""Repository information for a pipeline""" -input PipelineRepositoryInput { -"""Repository information for a pipeline""" - url: String! -} + """ + The repository’s provider settings + """ + settings: RepositoryProviderUnknownSettings -"""Autogenerated input type of PipelineRotateWebhookURL""" -input PipelineRotateWebhookURLInput { -"""Autogenerated input type of PipelineRotateWebhookURL""" - clientMutationId: String -"""Autogenerated input type of PipelineRotateWebhookURL""" - id: ID! -} + """ + This URL to the provider’s web interface + """ + url: String -"""Autogenerated return type of PipelineRotateWebhookURL.""" -type PipelineRotateWebhookURLPayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - pipeline: Pipeline! -} - -"""A schedule of when a build should automatically triggered for a Pipeline""" -type PipelineSchedule implements Node{ -"""The branch to use for builds that this schedule triggers. Defaults to to the default branch in the Pipeline""" - branch: String -"""Returns the builds created by this schedule""" - builds( -"""Returns the first _n_ elements from the list.""" - first: Int -"""Returns the elements in the list that come after the specified cursor.""" - after: String -"""Returns the last _n_ elements from the list.""" - last: Int -"""Returns the elements in the list that come before the specified cursor.""" - before: String - ): BuildConnection -"""The commit to use for builds that this schedule triggers. Defaults to `HEAD`""" - commit: String -"""The time when this schedule was created""" - createdAt: DateTime - createdBy: User -"""A definition of the trigger build schedule in cron syntax""" - cronline: String! -"""If this Pipeline schedule is currently enabled""" - enabled: Boolean -"""Environment variables passed to any triggered builds""" - env: [String!] -"""The time when this schedule failed""" - failedAt: DateTime -"""If the last attempt at triggering this scheduled build fails, this will be the reason""" - failedMessage: String - id: ID! -"""A short description of the Pipeline schedule""" - label: String! -"""The message to use for builds that this schedule triggers""" - message: String -"""The time when this schedule will create a build next""" - nextBuildAt: DateTime - permissions: PipelineSchedulePermissions! - pipeline: Pipeline -"""The UUID of the Pipeline schedule""" - uuid: String! -} - -type PipelineScheduleConnection implements Connection{ - count: Int! - edges: [PipelineScheduleEdge] - pageInfo: PageInfo -} - -"""Autogenerated input type of PipelineScheduleCreate""" -input PipelineScheduleCreateInput { -"""Autogenerated input type of PipelineScheduleCreate""" - clientMutationId: String -"""Autogenerated input type of PipelineScheduleCreate""" - pipelineID: ID! -"""Autogenerated input type of PipelineScheduleCreate""" - label: String -"""Autogenerated input type of PipelineScheduleCreate""" - cronline: String -"""Autogenerated input type of PipelineScheduleCreate""" - message: String -"""Autogenerated input type of PipelineScheduleCreate""" - commit: String -"""Autogenerated input type of PipelineScheduleCreate""" - branch: String -"""Autogenerated input type of PipelineScheduleCreate""" - env: String -"""Autogenerated input type of PipelineScheduleCreate""" - enabled: Boolean -} - -"""Autogenerated return type of PipelineScheduleCreate.""" -type PipelineScheduleCreatePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - pipeline: Pipeline! - pipelineScheduleEdge: PipelineScheduleEdge! + """ + The URL to use when setting up webhooks from the provider to trigger Buildkite builds + """ + webhookUrl: String } -"""Autogenerated input type of PipelineScheduleDelete""" -input PipelineScheduleDeleteInput { -"""Autogenerated input type of PipelineScheduleDelete""" - clientMutationId: String -"""Autogenerated input type of PipelineScheduleDelete""" - id: ID! -} +""" +Settings for a repository provided by service unknown to Buildkite +""" +type RepositoryProviderUnknownSettings implements RepositoryProviderSettings { + """ + The conditions under which this pipeline will trigger a build. + """ + filterCondition: String -"""Autogenerated return type of PipelineScheduleDelete.""" -type PipelineScheduleDeletePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - deletedPipelineScheduleID: ID! - pipeline: Pipeline + """ + Whether the filter is enabled + """ + filterEnabled: Boolean } -type PipelineScheduleEdge { - cursor: String! - node: PipelineSchedule -} +""" +A webhook configured on a repository to trigger pipeline builds +""" +interface RepositoryProviderWebhook { + """ + The provider-specific ID of the webhook + """ + externalId: String! -"""Permission information about what actions the current user can do against the pipeline schedule""" -type PipelineSchedulePermissions { -"""Whether the user can delete the schedule""" - pipelineScheduleDelete: Permission -"""Whether the user can update the schedule""" - pipelineScheduleUpdate: Permission + """ + The repository provider + """ + provider: RepositoryProvider! + + """ + The URL that the webhook delivers events to + """ + url: String! } -"""Autogenerated input type of PipelineScheduleUpdate""" -input PipelineScheduleUpdateInput { -"""Autogenerated input type of PipelineScheduleUpdate""" - clientMutationId: String -"""Autogenerated input type of PipelineScheduleUpdate""" - id: ID! -"""Autogenerated input type of PipelineScheduleUpdate""" - label: String -"""Autogenerated input type of PipelineScheduleUpdate""" - cronline: String -"""Autogenerated input type of PipelineScheduleUpdate""" - message: String -"""Autogenerated input type of PipelineScheduleUpdate""" - commit: String -"""Autogenerated input type of PipelineScheduleUpdate""" - branch: String -"""Autogenerated input type of PipelineScheduleUpdate""" - env: String -"""Autogenerated input type of PipelineScheduleUpdate""" - enabled: Boolean -} - -"""Autogenerated return type of PipelineScheduleUpdate.""" -type PipelineScheduleUpdatePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - pipelineSchedule: PipelineSchedule! +""" +API tokens with access to this organization will be automatically revoked after this many days of inactivity. +""" +enum RevokeInactiveTokenPeriod { + """ + Revoke organization access from API tokens after 180 days of inactivity + """ + DAYS_180 + + """ + Revoke organization access from API tokens after 30 days of inactivity + """ + DAYS_30 + + """ + Revoke organization access from API tokens after 365 days of inactivity + """ + DAYS_365 + + """ + Revoke organization access from API tokens after 60 days of inactivity + """ + DAYS_60 + + """ + Revoke organization access from API tokens after 90 days of inactivity + """ + DAYS_90 + + """ + Never revoke organization access from inactive API tokens + """ + NEVER +} + +type Rule implements Node { + """ + Action for the rule + """ + action: RuleAction + + """ + User who created the rule + """ + createdBy: User + + """ + Description of the rule + """ + description: String + + """ + A formatted JSON document of the Rule + """ + document: String + + """ + Effect for the rule + """ + effect: RuleEffect + id: ID! + organization: Organization + + """ + The source for the rule + """ + source: RuleSource + + """ + Source type for the rule + """ + sourceType: RuleSourceType + + """ + The target for the rule + """ + target: RuleTarget + + """ + Target type for the rule + """ + targetType: RuleTargetType + + """ + The type of rule + """ + type: String! + + """ + The public UUID for the rule + """ + uuid: ID! } -"""A Pipeline identifier using a slug, and optionally negated with a leading `!`""" -scalar PipelineSelector +""" +The action a rule enforces +""" +enum RuleAction { + """ + Artifacts read + """ + ARTIFACTS_READ -"""Steps defined on a pipeline""" -type PipelineSteps { -"""A YAML representation of the pipeline steps""" - yaml: YAML + """ + Trigger build + """ + TRIGGER_BUILD } -"""Step definition for a pipeline""" -input PipelineStepsInput { -"""Step definition for a pipeline""" - yaml: String! -} +""" +The connection type for Rule. +""" +type RuleConnection implements Connection { + count: Int! -"""A tag associated with a pipeline""" -type PipelineTag { -"""The label for this tag""" - label: String! + """ + A list of edges. + """ + edges: [RuleEdge] + pageInfo: PageInfo } -"""Tag associated with a pipeline""" -input PipelineTagInput { -"""Tag associated with a pipeline""" - label: String! -} +""" +Autogenerated input type of RuleCreate +""" +input RuleCreateInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String -"""Used to assign teams to pipelines""" -input PipelineTeamAssignmentInput { -"""Used to assign teams to pipelines""" - id: ID! -"""Used to assign teams to pipelines""" - accessLevel: PipelineAccessLevels -} - -"""A template defining a fixed step configuration for a pipeline""" -type PipelineTemplate implements Node{ -"""If the pipeline template is available for assignment by non admin users""" - available: Boolean! -"""A YAML representation of the step configuration""" - configuration: YAML! -"""The time when the template was created""" - createdAt: DateTime! -"""The user who created the template""" - createdBy: User! -"""The short description of the template""" - description: String - id: ID! -"""The name of the template""" - name: String! -"""The last time the template was changed""" - updatedAt: DateTime! -"""The user who last updated the template""" - updatedBy: User! -"""The UUID for the template""" - uuid: ID! -} - -type PipelineTemplateConnection implements Connection{ - count: Int! - edges: [PipelineTemplateEdge] - pageInfo: PageInfo -} - -"""Autogenerated input type of PipelineTemplateCreate""" -input PipelineTemplateCreateInput { -"""Autogenerated input type of PipelineTemplateCreate""" - clientMutationId: String -"""Autogenerated input type of PipelineTemplateCreate""" - organizationId: ID! -"""Autogenerated input type of PipelineTemplateCreate""" - name: String! -"""Autogenerated input type of PipelineTemplateCreate""" - description: String -"""Autogenerated input type of PipelineTemplateCreate""" - configuration: String! -"""Autogenerated input type of PipelineTemplateCreate""" - available: Boolean -} - -"""Autogenerated return type of PipelineTemplateCreate.""" -type PipelineTemplateCreatePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - pipelineTemplate: PipelineTemplate! -} + """ + Description of the rule + """ + description: String + organizationId: ID! -"""Autogenerated input type of PipelineTemplateDelete""" -input PipelineTemplateDeleteInput { -"""Autogenerated input type of PipelineTemplateDelete""" - clientMutationId: String -"""Autogenerated input type of PipelineTemplateDelete""" - organizationId: ID! -"""Autogenerated input type of PipelineTemplateDelete""" - id: ID! -} + """ + Rule type + """ + type: String! -"""Autogenerated return type of PipelineTemplateDelete.""" -type PipelineTemplateDeletePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - deletedPipelineTemplateId: ID! + """ + Serialised JSON of the attributes for this rule + """ + value: JSON! } -type PipelineTemplateEdge { - cursor: String! - node: PipelineTemplate +""" +Autogenerated return type of RuleCreate. +""" +type RuleCreatePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + rule: Rule! } -"""The different orders you can sort pipeline templates by""" -enum PipelineTemplateOrder { -"""Order by name alphabetically""" - NAME -"""Order by the most recently created pipeline templates first""" - RECENTLY_CREATED +""" +Autogenerated input type of RuleDelete +""" +input RuleDeleteInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! + organizationId: ID! } -"""Autogenerated input type of PipelineTemplateUpdate""" -input PipelineTemplateUpdateInput { -"""Autogenerated input type of PipelineTemplateUpdate""" - clientMutationId: String -"""Autogenerated input type of PipelineTemplateUpdate""" - organizationId: ID! -"""Autogenerated input type of PipelineTemplateUpdate""" - id: ID! -"""Autogenerated input type of PipelineTemplateUpdate""" - name: String -"""Autogenerated input type of PipelineTemplateUpdate""" - description: String -"""Autogenerated input type of PipelineTemplateUpdate""" - configuration: String -"""Autogenerated input type of PipelineTemplateUpdate""" - available: Boolean -} - -"""Autogenerated return type of PipelineTemplateUpdate.""" -type PipelineTemplateUpdatePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - pipelineTemplate: PipelineTemplate! +""" +Autogenerated return type of RuleDelete. +""" +type RuleDeletePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + deletedRuleId: ID! } -"""Autogenerated input type of PipelineUnarchive""" -input PipelineUnarchiveInput { -"""Autogenerated input type of PipelineUnarchive""" - clientMutationId: String -"""Autogenerated input type of PipelineUnarchive""" - id: ID! -} +""" +An edge in a connection. +""" +type RuleEdge { + """ + A cursor for use in pagination. + """ + cursor: String! -"""Autogenerated return type of PipelineUnarchive.""" -type PipelineUnarchivePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - pipeline: Pipeline! + """ + The item at the end of the edge. + """ + node: Rule } -"""Autogenerated input type of PipelineUpdate""" -input PipelineUpdateInput { -"""Autogenerated input type of PipelineUpdate""" - clientMutationId: String -"""Autogenerated input type of PipelineUpdate""" - id: ID! -"""Autogenerated input type of PipelineUpdate""" - name: String -"""Autogenerated input type of PipelineUpdate""" - description: String -"""Autogenerated input type of PipelineUpdate""" - emoji: String -"""Autogenerated input type of PipelineUpdate""" - color: String -"""Autogenerated input type of PipelineUpdate""" - visibility: PipelineVisibility -"""Autogenerated input type of PipelineUpdate""" - repository: PipelineRepositoryInput -"""Autogenerated input type of PipelineUpdate""" - steps: PipelineStepsInput -"""Autogenerated input type of PipelineUpdate""" - defaultBranch: String -"""Autogenerated input type of PipelineUpdate""" - nextBuildNumber: Int -"""Autogenerated input type of PipelineUpdate""" - skipIntermediateBuilds: Boolean -"""Autogenerated input type of PipelineUpdate""" - skipIntermediateBuildsBranchFilter: String -"""Autogenerated input type of PipelineUpdate""" - cancelIntermediateBuilds: Boolean -"""Autogenerated input type of PipelineUpdate""" - cancelIntermediateBuildsBranchFilter: String -"""Autogenerated input type of PipelineUpdate""" - allowRebuilds: Boolean -"""Autogenerated input type of PipelineUpdate""" - defaultTimeoutInMinutes: Int -"""Autogenerated input type of PipelineUpdate""" - maximumTimeoutInMinutes: Int -"""Autogenerated input type of PipelineUpdate""" - clusterId: ID -"""Autogenerated input type of PipelineUpdate""" - pipelineTemplateId: ID -"""Autogenerated input type of PipelineUpdate""" - archived: Boolean -"""Autogenerated input type of PipelineUpdate""" - tags: [PipelineTagInput!] -"""Autogenerated input type of PipelineUpdate""" - branchConfiguration: String -} - -"""Autogenerated return type of PipelineUpdate.""" -type PipelineUpdatePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - pipeline: Pipeline! +""" +The effect a rule has +""" +enum RuleEffect { + """ + Allow + """ + ALLOW } -"""The visibility of the pipeline""" -enum PipelineVisibility { -"""The pipeline is public""" - PUBLIC -"""The pipeline is private""" - PRIVATE +""" +The different orders you can sort rules by +""" +enum RuleOrder { + """ + Order by the most recently created rules first + """ + RECENTLY_CREATED } -"""A pull request on a provider""" -type PullRequest { - id: String! -} +""" +Kinds of sources for a rule +""" +union RuleSource = Pipeline -"""The query root for this schema""" -type Query { -"""Find an agent by its slug""" - agent( -"""The UUID for the agent, prefixed by its organization's slug i.e. `acme-inc/0bd5ea7c-89b3-4f40-8ca3-ffac805771eb`""" - slug: ID! - ): Agent -"""Find an agent token by its slug""" - agentToken( -"""The UUID for the agent token, prefixed by its organization's slug i.e. `acme-inc/0bd5ea7c-89b3-4f40-8ca3-ffac805771eb`""" - slug: ID! - ): AgentToken -"""Find a API Access Token code""" - apiAccessTokenCode( -"""The code provided by the Auth API""" - code: ID! - ): APIAccessTokenCode -"""Find an artifact by its UUID""" - artifact( - uuid: ID! - ): Artifact -"""Find an audit event via its uuid""" - auditEvent( -"""The UUID for the audit event i.e. `0bd5ea7c-89b3-4f40-8ca3-ffac805771eb`""" - uuid: ID! - ): AuditEvent -"""Find a build""" - build( -"""The number of the build, prefixed with its organization and pipeline. i.e. `acme-inc/my-pipeline/123`""" - slug: ID -"""The UUID of the build""" - uuid: ID - ): Build -"""Find a GraphQL snippet""" - graphQLSnippet( -"""The UUID for this GraphQL snippet""" - uuid: String! - ): GraphQLSnippet -"""Find a build job""" - job( - uuid: ID! - ): Job -"""Fetches an object given its ID.""" - node( -"""ID of the object.""" - id: ID! - ): Node -"""Find a notification service via its UUID""" - notificationService( -"""The UUID for the notification service i.e. `0bd5ea7c-89b3-4f40-8ca3-ffac805771eb`""" - uuid: ID! - ): NotificationService -"""Find an organization""" - organization( -"""The slug of the organization""" - slug: ID -"""The UUID of the organization""" - uuid: ID - ): Organization -"""Find an organization invitation via its slug""" - organizationInvitation( -"""The UUID for the invitation, prefixed by its organization's slug i.e. `acme-inc/0bd5ea7c-89b3-4f40-8ca3-ffac805771eb`""" - slug: ID! - ): OrganizationInvitation -"""Find an organization membership via its slug""" - organizationMember( -"""The UUID for the membership, prefixed by its organization's slug i.e. `acme-inc/0bd5ea7c-89b3-4f40-8ca3-ffac805771eb`""" - slug: ID! - ): OrganizationMember -"""Find a pipeline""" - pipeline( -"""The slug of the pipeline, prefixed with its organization. i.e. `acme-inc/my-pipeline`""" - slug: ID -"""The UUID of the pipeline""" - uuid: ID - ): Pipeline -"""Find a pipeline schedule by its slug""" - pipelineSchedule( -"""The UUID for the pipeline schedule, prefixed by its organization and pipeline's slug i.e. `acme-inc/my-pipeline/0bd5ea7c-89b3-4f40-8ca3-ffac805771eb`""" - slug: ID! - ): PipelineSchedule -"""Find a pipeline template""" - pipelineTemplate( -"""The UUID of the pipeline template""" - uuid: ID! - ): PipelineTemplate -"""Find a secret via its uuid. This does not contain the value of the secret or encrypted material.""" - secret( -"""The UUID for the secret i.e. `0bd5ea7c-89b3-4f40-8ca3-ffac805771eb`""" - uuid: ID! - ): Secret -"""Find an sso provider either using it's slug, or UUID""" - ssoProvider( -"""The slug for the sso provider, prefixed by its organization's slug i.e. `acme-inc/0bd5ea7c-89b3-4f40-8ca3-ffac805771eb`""" - slug: ID -"""The UUID of the sso provider""" - uuid: ID - ): SSOProvider -"""Find a team""" - team( -"""The slug of the team, prefixed with its organization. i.e. `acme-inc/awesome-team`""" - slug: ID! - ): Team -"""Context of the current user using the GraphQL API""" - viewer: Viewer -} - -"""A recovery code""" -type RecoveryCode { -"""The recovery code.""" - code: String! -"""Whether the recovery codes is used""" - consumed: Boolean! -"""Foo""" - consumedAt: String +""" +The source type for a rule +""" +enum RuleSourceType { + """ + Pipeline + """ + PIPELINE } -"""A batch of recovery codes""" -type RecoveryCodeBatch { -"""Whether the batch of recovery codes is active""" - active: Boolean! -"""The recovery codes from this batch. Codes are consumed when used, and codes will be included in this list whether consumed or not""" - codes: [RecoveryCode!]! - id: ID! +""" +Kinds of targets for a rule +""" +union RuleTarget = Pipeline + +""" +The target type for a rule +""" +enum RuleTargetType { + """ + Pipeline + """ + PIPELINE } -"""A repository associated with a pipeline""" -type Repository { -"""The repository’s provider""" - provider: RepositoryProvider -"""The git URL for this repository""" - url: String! +""" +Autogenerated input type of RuleUpdate +""" +input RuleUpdateInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + Description of the rule + """ + description: String + id: ID! + organizationId: ID! + + """ + Serialised JSON of the attributes for this rule + """ + value: JSON! } -interface RepositoryProvider { - name: String! - url: String - webhookUrl: String -} - -"""A pipeline's repository is being provided by Beanstalk""" -type RepositoryProviderBeanstalk implements RepositoryProvider{ -"""The name of the provider""" - name: String! -"""This URL to the provider’s web interface""" - url: String -"""The URL to use when setting up webhooks from the provider to trigger Buildkite builds""" - webhookUrl: String -} - -"""A pipeline's repository is being provided by Bitbucket""" -type RepositoryProviderBitbucket implements RepositoryProvider{ -"""The name of the provider""" - name: String! -"""This URL to the provider’s web interface""" - url: String -"""The URL to use when setting up webhooks from the provider to trigger Buildkite builds""" - webhookUrl: String -} - -"""A pipeline's repository is being provided by Bitbucket Server""" -type RepositoryProviderBitbucketServer implements RepositoryProvider{ -"""The name of the provider""" - name: String! -"""This URL to the provider’s web interface""" - url: String -"""The URL to use when setting up webhooks from the provider to trigger Buildkite builds""" - webhookUrl: String -} - -"""A pipeline's repository is being provided by Codebase""" -type RepositoryProviderCodebase implements RepositoryProvider{ -"""The name of the provider""" - name: String! -"""This URL to the provider’s web interface""" - url: String -"""The URL to use when setting up webhooks from the provider to trigger Buildkite builds""" - webhookUrl: String -} - -"""A pipeline's repository is being provided by GitHub""" -type RepositoryProviderGithub implements RepositoryProvider{ -"""The name of the provider""" - name: String! -"""This URL to the provider’s web interface""" - url: String -"""The URL to use when setting up webhooks from the provider to trigger Buildkite builds""" - webhookUrl: String -} - -"""A pipeline's repository is being provided by GitHub Enterprise""" -type RepositoryProviderGithubEnterprise implements RepositoryProvider{ -"""The name of the provider""" - name: String! -"""This URL to the provider’s web interface""" - url: String -"""The URL to use when setting up webhooks from the provider to trigger Buildkite builds""" - webhookUrl: String -} - -"""A pipeline's repository is being provided by GitLab""" -type RepositoryProviderGitlab implements RepositoryProvider{ -"""The name of the provider""" - name: String! -"""This URL to the provider’s web interface""" - url: String -"""The URL to use when setting up webhooks from the provider to trigger Buildkite builds""" - webhookUrl: String -} - -"""A pipeline's repository is being provided by GitLab Community Edition""" -type RepositoryProviderGitlabCommunity implements RepositoryProvider{ -"""The name of the provider""" - name: String! -"""This URL to the provider’s web interface""" - url: String -"""The URL to use when setting up webhooks from the provider to trigger Buildkite builds""" - webhookUrl: String -} - -"""A pipeline's repository is being provided by GitLab Enterprise Edition""" -type RepositoryProviderGitlabEnterprise implements RepositoryProvider{ -"""The name of the provider""" - name: String! -"""This URL to the provider’s web interface""" - url: String -"""The URL to use when setting up webhooks from the provider to trigger Buildkite builds""" - webhookUrl: String -} - -"""A pipeline's repository is being provided by a service unknown to Buildkite""" -type RepositoryProviderUnknown implements RepositoryProvider{ -"""The name of the provider""" - name: String! -"""This URL to the provider’s web interface""" - url: String -"""The URL to use when setting up webhooks from the provider to trigger Buildkite builds""" - webhookUrl: String -} - -"""An aggregate of resource usage, grouped by day and resource.""" -interface ResourceUsageInterface { -"""An aggregate of resource usage, grouped by day and resource.""" - aggregatedOn: ISO8601Date! -} - -"""All types of billable resources""" -enum ResourceUsageType { -"""These records represent a pipeline's job minutes usage for a single day""" - JOB_MINUTES -"""These records represent a suite's test executions usage for a single day""" - TEST_EXECUTIONS -} - -"""API tokens with access to this organization will be automatically revoked after this many days of inactivity.""" -enum RevokeInactiveTokenPeriod { -"""Revoke organization access from API tokens after 30 days of inactivity""" - DAYS_30 -"""Revoke organization access from API tokens after 60 days of inactivity""" - DAYS_60 -"""Revoke organization access from API tokens after 90 days of inactivity""" - DAYS_90 -"""Revoke organization access from API tokens after 180 days of inactivity""" - DAYS_180 -"""Revoke organization access from API tokens after 365 days of inactivity""" - DAYS_365 -"""Never revoke organization access from inactive API tokens""" - NEVER +""" +Autogenerated return type of RuleUpdate. +""" +type RuleUpdatePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + rule: Rule! } type SCMPipelineSettings { - id: ID! + id: ID! } type SCMRepositoryHost { - id: ID! + id: ID! } type SCMService { - id: ID! + id: ID! } type SSOAuthorization { -"""The time when this SSO Authorization was created""" - createdAt: DateTime! -"""The time when this SSO Authorization was expired""" - expiredAt: DateTime - id: ID! -"""Details around the identity provided by the SSO provider""" - identity: SSOAuthorizationIdentity -"""The time when this SSO Authorization was manually revoked""" - revokedAt: DateTime -"""The SSO provider associated with this authorization""" - ssoProvider: SSOProvider! -"""The current state of the SSO Authorization""" - state: SSOAuthorizationState! -"""The user associated with this authorization""" - user: User -"""The time when this SSO Authorization was destroyed because the user logged out""" - userSessionDestroyedAt: DateTime -"""The public UUID for this SSO authorization""" - uuid: String! -} - -type SSOAuthorizationConnection implements Connection{ - count: Int! - edges: [SSOAuthorizationEdge] - pageInfo: PageInfo + """ + The time when this SSO Authorization was created + """ + createdAt: DateTime! + + """ + The time when this SSO Authorization was expired + """ + expiredAt: DateTime + id: ID! + + """ + Details around the identity provided by the SSO provider + """ + identity: SSOAuthorizationIdentity + + """ + The time when this SSO Authorization was manually revoked + """ + revokedAt: DateTime + + """ + The SSO provider associated with this authorization + """ + ssoProvider: SSOProvider! + + """ + The current state of the SSO Authorization + """ + state: SSOAuthorizationState! + + """ + The user associated with this authorization + """ + user: User + + """ + The time when this SSO Authorization was destroyed because the user logged out + """ + userSessionDestroyedAt: DateTime + + """ + The public UUID for this SSO authorization + """ + uuid: String! } +""" +The connection type for SSOAuthorization. +""" +type SSOAuthorizationConnection implements Connection { + count: Int! + + """ + A list of edges. + """ + edges: [SSOAuthorizationEdge] + pageInfo: PageInfo +} + +""" +An edge in a connection. +""" type SSOAuthorizationEdge { - cursor: String! - node: SSOAuthorization + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: SSOAuthorization } type SSOAuthorizationIdentity { -"""The avatar URL provided in this identity""" - avatarURL: String -"""The email addresses provided in this identity""" - email: String -"""The name provided in this identity""" - name: String -"""The identifier provided in this identity""" - uid: String + """ + The avatar URL provided in this identity + """ + avatarURL: String + + """ + The email addresses provided in this identity + """ + email: String + + """ + The name provided in this identity + """ + name: String + + """ + The identifier provided in this identity + """ + uid: String } -"""All the possible states an SSO Authorization""" +""" +All the possible states an SSO Authorization +""" enum SSOAuthorizationState { -"""The authorization has been verified and is in use""" - VERIFIED -"""The authorization was verified but has since been destroyed as the user logged out of that session""" - VERIFIED_USER_SESSION_DESTROYED -"""The authorization was verified but has since been manually revoked""" - VERIFIED_REVOKED -"""The authorization was verified but has since expired""" - VERIFIED_EXPIRED + """ + The authorization has been verified and is in use + """ + VERIFIED + + """ + The authorization was verified but has since expired + """ + VERIFIED_EXPIRED + + """ + The authorization was verified but has since been manually revoked + """ + VERIFIED_REVOKED + + """ + The authorization was verified but has since been destroyed as the user logged out of that session + """ + VERIFIED_USER_SESSION_DESTROYED } interface SSOProvider { - createdAt: DateTime! - createdBy: User! - disabledAt: DateTime - disabledBy: User - disabledReason: String - emailDomain: String - emailDomainVerificationAddress: String - emailDomainVerifiedAt: DateTime - enabledAt: DateTime - enabledBy: User - id: ID! - note: String - organization: Organization - pinSessionToIpAddress: Boolean - sessionDurationInHours: Int - state: SSOProviderStates! - testAuthorizationRequired: Boolean - type: SSOProviderTypes! - url: String! - uuid: ID! -} - -type SSOProviderConnection implements Connection{ - count: Int! - edges: [SSOProviderEdge] - pageInfo: PageInfo -} - -"""Autogenerated input type of SSOProviderCreate""" + """ + The time when this SSO Provider was created + """ + createdAt: DateTime! + + """ + The user that created this SSO Provider + """ + createdBy: User! + + """ + The time when this SSO Provider was disabled + """ + disabledAt: DateTime + + """ + The user that disabled this SSO Provider + """ + disabledBy: User + + """ + The reason this SSO Provider was disabled + """ + disabledReason: String + + """ + An email domain whose addresses should be offered this SSO Provider during login. + """ + emailDomain: String + emailDomainVerificationAddress: String + emailDomainVerifiedAt: DateTime + + """ + The time when this SSO Provider was enabled + """ + enabledAt: DateTime + + """ + The user that enabled this SSO Provider + """ + enabledBy: User + id: ID! + + """ + An extra message that can be added the Authorization screen of an SSO Provider + """ + note: String + organization: Organization + + """ + Defaults to false. If true, users are required to re-authenticate when their IP address changes. + """ + pinSessionToIpAddress: Boolean + + """ + How long a session should last before requiring re-authorization. A `null` value indicates an infinite session. + """ + sessionDurationInHours: Int + + """ + The current state of the SSO Provider + """ + state: SSOProviderStates! + + """ + Whether the SSO Provider requires a test authorization. If true, the provider can not yet be activated. + """ + testAuthorizationRequired: Boolean + + """ + The type of SSO Provider + """ + type: SSOProviderTypes! + + """ + The authorization URL for this SSO Provider + """ + url: String! + + """ + The UUID for this SSO Provider + """ + uuid: ID! +} + +type SSOProviderConnection implements Connection { + count: Int! + edges: [SSOProviderEdge] + pageInfo: PageInfo +} + +""" +Autogenerated input type of SSOProviderCreate +""" input SSOProviderCreateInput { -"""Autogenerated input type of SSOProviderCreate""" - clientMutationId: String -"""Autogenerated input type of SSOProviderCreate""" - organizationId: ID! -"""Autogenerated input type of SSOProviderCreate""" - type: SSOProviderTypes! -"""Autogenerated input type of SSOProviderCreate""" - note: String -"""Autogenerated input type of SSOProviderCreate""" - sessionDurationInHours: Int -"""Autogenerated input type of SSOProviderCreate""" - pinSessionToIpAddress: Boolean -"""Autogenerated input type of SSOProviderCreate""" - emailDomain: String -"""Autogenerated input type of SSOProviderCreate""" - emailDomainVerificationAddress: String -"""Autogenerated input type of SSOProviderCreate""" - identityProvider: SSOProviderSAMLIdP -"""Autogenerated input type of SSOProviderCreate""" - digestMethod: SSOProviderSAMLXMLSecurity -"""Autogenerated input type of SSOProviderCreate""" - signatureMethod: SSOProviderSAMLRSAXMLSecurity -"""Autogenerated input type of SSOProviderCreate""" - githubOrganizationName: String -"""Autogenerated input type of SSOProviderCreate""" - googleHostedDomain: String -"""Autogenerated input type of SSOProviderCreate""" - discloseGoogleHostedDomain: Boolean -} - -"""Autogenerated return type of SSOProviderCreate.""" + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + digestMethod: SSOProviderSAMLXMLSecurity + discloseGoogleHostedDomain: Boolean + emailDomain: String + emailDomainVerificationAddress: String + githubOrganizationName: String + googleHostedDomain: String + identityProvider: SSOProviderSAMLIdP + note: String + organizationId: ID! + + """ + When enabled, users will be required to re-authenticate if their IP address + changes. This feature is only available for some billing plans. + """ + pinSessionToIpAddress: Boolean + sessionDurationInHours: Int + signatureMethod: SSOProviderSAMLRSAXMLSecurity + type: SSOProviderTypes! +} + +""" +Autogenerated return type of SSOProviderCreate. +""" type SSOProviderCreatePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - organization: Organization! - ssoProvider: SSOProvider! - ssoProviderEdge: SSOProviderEdge! + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + organization: Organization! + ssoProvider: SSOProvider! + ssoProviderEdge: SSOProviderEdge! } -"""Autogenerated input type of SSOProviderDelete""" +""" +Autogenerated input type of SSOProviderDelete +""" input SSOProviderDeleteInput { -"""Autogenerated input type of SSOProviderDelete""" - clientMutationId: String -"""Autogenerated input type of SSOProviderDelete""" - id: ID! + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! } -"""Autogenerated return type of SSOProviderDelete.""" +""" +Autogenerated return type of SSOProviderDelete. +""" type SSOProviderDeletePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - deletedSSOProviderId: ID! - organization: Organization! + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + deletedSSOProviderId: ID! + organization: Organization! } -"""Autogenerated input type of SSOProviderDisable""" +""" +Autogenerated input type of SSOProviderDisable +""" input SSOProviderDisableInput { -"""Autogenerated input type of SSOProviderDisable""" - clientMutationId: String -"""Autogenerated input type of SSOProviderDisable""" - id: ID! -"""Autogenerated input type of SSOProviderDisable""" - disabledReason: String + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + disabledReason: String + id: ID! } -"""Autogenerated return type of SSOProviderDisable.""" +""" +Autogenerated return type of SSOProviderDisable. +""" type SSOProviderDisablePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - ssoProvider: SSOProvider! + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + ssoProvider: SSOProvider! } type SSOProviderEdge { - cursor: String! - node: SSOProvider + cursor: String! + node: SSOProvider } -"""Autogenerated input type of SSOProviderEnable""" +""" +Autogenerated input type of SSOProviderEnable +""" input SSOProviderEnableInput { -"""Autogenerated input type of SSOProviderEnable""" - clientMutationId: String -"""Autogenerated input type of SSOProviderEnable""" - id: ID! + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! } -"""Autogenerated return type of SSOProviderEnable.""" +""" +Autogenerated return type of SSOProviderEnable. +""" type SSOProviderEnablePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - ssoProvider: SSOProvider! -} - -"""Single sign-on provided by GitHub""" -type SSOProviderGitHubApp implements Node & SSOProvider{ -"""The time when this SSO Provider was created""" - createdAt: DateTime! -"""The user that created this SSO Provider""" - createdBy: User! -"""The time when this SSO Provider was disabled""" - disabledAt: DateTime -"""The user that disabled this SSO Provider""" - disabledBy: User -"""The reason this SSO Provider was disabled""" - disabledReason: String -"""An email domain whose addresses should be offered this SSO Provider during login.""" - emailDomain: String - emailDomainVerificationAddress: String - emailDomainVerifiedAt: DateTime -"""The time when this SSO Provider was enabled""" - enabledAt: DateTime -"""The user that enabled this SSO Provider""" - enabledBy: User -"""The name of the organization on GitHub that the user must be in for an SSO authorization to be verified""" - githubOrganizationName: String! - id: ID! -"""An extra message that can be added the Authorization screen of an SSO Provider""" - note: String - organization: Organization -"""Defaults to false. If true, users are required to re-authenticate when their IP address changes.""" - pinSessionToIpAddress: Boolean -"""How long a session should last before requiring re-authorization. A `null` value indicates an infinite session.""" - sessionDurationInHours: Int -"""The current state of the SSO Provider""" - state: SSOProviderStates! -"""Whether the SSO Provider requires a test authorization. If true, the provider can not yet be activated.""" - testAuthorizationRequired: Boolean -"""The type of SSO Provider""" - type: SSOProviderTypes! -"""The authorization URL for this SSO Provider""" - url: String! -"""The UUID for this SSO Provider""" - uuid: ID! -} - -"""Single sign-on provided by Google""" -type SSOProviderGoogleGSuite implements Node & SSOProvider{ -"""The time when this SSO Provider was created""" - createdAt: DateTime! -"""The user that created this SSO Provider""" - createdBy: User! -"""The time when this SSO Provider was disabled""" - disabledAt: DateTime -"""The user that disabled this SSO Provider""" - disabledBy: User -"""The reason this SSO Provider was disabled""" - disabledReason: String -"""Whether or not the hosted domain should be presented to the user during SSO""" - discloseGoogleHostedDomain: Boolean! -"""An email domain whose addresses should be offered this SSO Provider during login.""" - emailDomain: String - emailDomainVerificationAddress: String - emailDomainVerifiedAt: DateTime -"""The time when this SSO Provider was enabled""" - enabledAt: DateTime -"""The user that enabled this SSO Provider""" - enabledBy: User -"""The Google hosted domain that is required to be present in OAuth""" - googleHostedDomain: String! - id: ID! -"""An extra message that can be added the Authorization screen of an SSO Provider""" - note: String - organization: Organization -"""Defaults to false. If true, users are required to re-authenticate when their IP address changes.""" - pinSessionToIpAddress: Boolean -"""How long a session should last before requiring re-authorization. A `null` value indicates an infinite session.""" - sessionDurationInHours: Int -"""The current state of the SSO Provider""" - state: SSOProviderStates! -"""Whether the SSO Provider requires a test authorization. If true, the provider can not yet be activated.""" - testAuthorizationRequired: Boolean -"""The type of SSO Provider""" - type: SSOProviderTypes! -"""The authorization URL for this SSO Provider""" - url: String! -"""The UUID for this SSO Provider""" - uuid: ID! -} - -"""Single sign-on provided via SAML""" -type SSOProviderSAML implements Node & SSOProvider{ -"""The time when this SSO Provider was created""" - createdAt: DateTime! -"""The user that created this SSO Provider""" - createdBy: User! -"""The algorithm used to calculate the digest value during a SAML exchange""" - digestMethod: SSOProviderSAMLXMLSecurity! -"""The time when this SSO Provider was disabled""" - disabledAt: DateTime -"""The user that disabled this SSO Provider""" - disabledBy: User -"""The reason this SSO Provider was disabled""" - disabledReason: String -"""An email domain whose addresses should be offered this SSO Provider during login.""" - emailDomain: String - emailDomainVerificationAddress: String - emailDomainVerifiedAt: DateTime -"""The time when this SSO Provider was enabled""" - enabledAt: DateTime -"""The user that enabled this SSO Provider""" - enabledBy: User - id: ID! -"""Information about the IdP""" - identityProvider: SSOProviderSAMLIdPType -"""An extra message that can be added the Authorization screen of an SSO Provider""" - note: String - organization: Organization -"""Defaults to false. If true, users are required to re-authenticate when their IP address changes.""" - pinSessionToIpAddress: Boolean - serviceProvider: SSOProviderSAMLSPType! -"""How long a session should last before requiring re-authorization. A `null` value indicates an infinite session.""" - sessionDurationInHours: Int -"""The algorithm used to calculate the signature value during a SAML exchange""" - signatureMethod: SSOProviderSAMLRSAXMLSecurity! -"""The current state of the SSO Provider""" - state: SSOProviderStates! -"""Whether the SSO Provider requires a test authorization. If true, the provider can not yet be activated.""" - testAuthorizationRequired: Boolean -"""The type of SSO Provider""" - type: SSOProviderTypes! -"""The authorization URL for this SSO Provider""" - url: String! -"""The UUID for this SSO Provider""" - uuid: ID! + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + ssoProvider: SSOProvider! +} + +""" +Single sign-on provided by GitHub +""" +type SSOProviderGitHubApp implements Node & SSOProvider { + """ + The time when this SSO Provider was created + """ + createdAt: DateTime! + + """ + The user that created this SSO Provider + """ + createdBy: User! + + """ + The time when this SSO Provider was disabled + """ + disabledAt: DateTime + + """ + The user that disabled this SSO Provider + """ + disabledBy: User + + """ + The reason this SSO Provider was disabled + """ + disabledReason: String + + """ + An email domain whose addresses should be offered this SSO Provider during login. + """ + emailDomain: String + emailDomainVerificationAddress: String + emailDomainVerifiedAt: DateTime + + """ + The time when this SSO Provider was enabled + """ + enabledAt: DateTime + + """ + The user that enabled this SSO Provider + """ + enabledBy: User + + """ + The name of the organization on GitHub that the user must be in for an SSO authorization to be verified + """ + githubOrganizationName: String! + id: ID! + + """ + An extra message that can be added the Authorization screen of an SSO Provider + """ + note: String + organization: Organization + + """ + Defaults to false. If true, users are required to re-authenticate when their IP address changes. + """ + pinSessionToIpAddress: Boolean + + """ + How long a session should last before requiring re-authorization. A `null` value indicates an infinite session. + """ + sessionDurationInHours: Int + + """ + The current state of the SSO Provider + """ + state: SSOProviderStates! + + """ + Whether the SSO Provider requires a test authorization. If true, the provider can not yet be activated. + """ + testAuthorizationRequired: Boolean + + """ + The type of SSO Provider + """ + type: SSOProviderTypes! + + """ + The authorization URL for this SSO Provider + """ + url: String! + + """ + The UUID for this SSO Provider + """ + uuid: ID! +} + +""" +Single sign-on provided by Google +""" +type SSOProviderGoogleGSuite implements Node & SSOProvider { + """ + The time when this SSO Provider was created + """ + createdAt: DateTime! + + """ + The user that created this SSO Provider + """ + createdBy: User! + + """ + The time when this SSO Provider was disabled + """ + disabledAt: DateTime + + """ + The user that disabled this SSO Provider + """ + disabledBy: User + + """ + The reason this SSO Provider was disabled + """ + disabledReason: String + + """ + Whether or not the hosted domain should be presented to the user during SSO + """ + discloseGoogleHostedDomain: Boolean! + + """ + An email domain whose addresses should be offered this SSO Provider during login. + """ + emailDomain: String + emailDomainVerificationAddress: String + emailDomainVerifiedAt: DateTime + + """ + The time when this SSO Provider was enabled + """ + enabledAt: DateTime + + """ + The user that enabled this SSO Provider + """ + enabledBy: User + + """ + The Google hosted domain that is required to be present in OAuth + """ + googleHostedDomain: String! + id: ID! + + """ + An extra message that can be added the Authorization screen of an SSO Provider + """ + note: String + organization: Organization + + """ + Defaults to false. If true, users are required to re-authenticate when their IP address changes. + """ + pinSessionToIpAddress: Boolean + + """ + How long a session should last before requiring re-authorization. A `null` value indicates an infinite session. + """ + sessionDurationInHours: Int + + """ + The current state of the SSO Provider + """ + state: SSOProviderStates! + + """ + Whether the SSO Provider requires a test authorization. If true, the provider can not yet be activated. + """ + testAuthorizationRequired: Boolean + + """ + The type of SSO Provider + """ + type: SSOProviderTypes! + + """ + The authorization URL for this SSO Provider + """ + url: String! + + """ + The UUID for this SSO Provider + """ + uuid: ID! +} + +""" +Single sign-on provided via SAML +""" +type SSOProviderSAML implements Node & SSOProvider { + """ + The time when this SSO Provider was created + """ + createdAt: DateTime! + + """ + The user that created this SSO Provider + """ + createdBy: User! + + """ + The algorithm used to calculate the digest value during a SAML exchange + """ + digestMethod: SSOProviderSAMLXMLSecurity! + + """ + The time when this SSO Provider was disabled + """ + disabledAt: DateTime + + """ + The user that disabled this SSO Provider + """ + disabledBy: User + + """ + The reason this SSO Provider was disabled + """ + disabledReason: String + + """ + An email domain whose addresses should be offered this SSO Provider during login. + """ + emailDomain: String + emailDomainVerificationAddress: String + emailDomainVerifiedAt: DateTime + + """ + The time when this SSO Provider was enabled + """ + enabledAt: DateTime + + """ + The user that enabled this SSO Provider + """ + enabledBy: User + id: ID! + + """ + Information about the IdP + """ + identityProvider: SSOProviderSAMLIdPType + + """ + An extra message that can be added the Authorization screen of an SSO Provider + """ + note: String + organization: Organization + + """ + Defaults to false. If true, users are required to re-authenticate when their IP address changes. + """ + pinSessionToIpAddress: Boolean + serviceProvider: SSOProviderSAMLSPType! + + """ + How long a session should last before requiring re-authorization. A `null` value indicates an infinite session. + """ + sessionDurationInHours: Int + + """ + The algorithm used to calculate the signature value during a SAML exchange + """ + signatureMethod: SSOProviderSAMLRSAXMLSecurity! + + """ + The current state of the SSO Provider + """ + state: SSOProviderStates! + + """ + Whether the SSO Provider requires a test authorization. If true, the provider can not yet be activated. + """ + testAuthorizationRequired: Boolean + + """ + The type of SSO Provider + """ + type: SSOProviderTypes! + + """ + The authorization URL for this SSO Provider + """ + url: String! + + """ + The UUID for this SSO Provider + """ + uuid: ID! } input SSOProviderSAMLIdP { - issuer: String - ssoURL: String - certificate: String - metadata: SSOProviderSAMLIdPMetadata + certificate: String + issuer: String + metadata: SSOProviderSAMLIdPMetadata + ssoURL: String } input SSOProviderSAMLIdPMetadata { - xml: XML - url: String + url: String + xml: XML } -"""Information about the IdP for a SAML SSO Provider""" +""" +Information about the IdP for a SAML SSO Provider +""" type SSOProviderSAMLIdPType { -"""The certificated provided by the IdP""" - certificate: String -"""The IdP Issuer value for this SSO Provider""" - issuer: String -"""The metadata used to configure this SSO provider if it was provided""" - metadata: SSOProviderSAMLMetadataType -"""The name of the IdP Service. Returns nil if no name can be guessed from the SSO URL""" - name: String -"""The IdP SSO URL for this SSO Provider""" - ssoURL: String -} - -"""SAML metadata used for configuration""" + """ + The certificated provided by the IdP + """ + certificate: String + + """ + The IdP Issuer value for this SSO Provider + """ + issuer: String + + """ + The metadata used to configure this SSO provider if it was provided + """ + metadata: SSOProviderSAMLMetadataType + + """ + The name of the IdP Service. Returns nil if no name can be guessed from the SSO URL + """ + name: String + + """ + The IdP SSO URL for this SSO Provider + """ + ssoURL: String +} + +""" +SAML metadata used for configuration +""" type SSOProviderSAMLMetadataType { -"""The URL that this metadata can be publicly accessed at""" - url: String -"""The XML for this metadata""" - xml: XML + """ + The URL that this metadata can be publicly accessed at + """ + url: String + + """ + The XML for this metadata + """ + xml: XML } -"""XML RSA security algorithms used in the SAML exchange""" +""" +XML RSA security algorithms used in the SAML exchange +""" enum SSOProviderSAMLRSAXMLSecurity { -"""http://www.w3.org/2000/09/xmldsig#rsa-sha1""" - RSA_SHA1 -"""http://www.w3.org/2001/04/xmldsig-more#rsa-sha256""" - RSA_SHA256 -"""http://www.w3.org/2001/04/xmldsig-more#rsa-sha384""" - RSA_SHA384 -"""http://www.w3.org/2001/04/xmldsig-more#rsa-sha512""" - RSA_SHA512 + """ + http://www.w3.org/2000/09/xmldsig#rsa-sha1 + """ + RSA_SHA1 + + """ + http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 + """ + RSA_SHA256 + + """ + http://www.w3.org/2001/04/xmldsig-more#rsa-sha384 + """ + RSA_SHA384 + + """ + http://www.w3.org/2001/04/xmldsig-more#rsa-sha512 + """ + RSA_SHA512 } -"""Information about Buildkite as a SAML Service Provider""" +""" +Information about Buildkite as a SAML Service Provider +""" type SSOProviderSAMLSPType { -"""The IdP Issuer value for this SSO Provider""" - issuer: String -"""The metadata used to configure this SSO provider if it was provided""" - metadata: SSOProviderSAMLMetadataType -"""The IdP SSO URL for this SSO Provider""" - ssoURL: String + """ + The IdP Issuer value for this SSO Provider + """ + issuer: String + + """ + The metadata used to configure this SSO provider if it was provided + """ + metadata: SSOProviderSAMLMetadataType + + """ + The IdP SSO URL for this SSO Provider + """ + ssoURL: String } -"""XML security algorithms used in the SAML exchange""" +""" +XML security algorithms used in the SAML exchange +""" enum SSOProviderSAMLXMLSecurity { -"""http://www.w3.org/2000/09/xmldsig#sha1""" - SHA1 -"""http://www.w3.org/2001/04/xmlenc#sha256""" - SHA256 -"""http://www.w3.org/2001/04/xmldsig-more#sha384""" - SHA384 -"""http://www.w3.org/2001/04/xmlenc#sha512""" - SHA512 + """ + http://www.w3.org/2000/09/xmldsig#sha1 + """ + SHA1 + + """ + http://www.w3.org/2001/04/xmlenc#sha256 + """ + SHA256 + + """ + http://www.w3.org/2001/04/xmldsig-more#sha384 + """ + SHA384 + + """ + http://www.w3.org/2001/04/xmlenc#sha512 + """ + SHA512 } -"""All the possible states an SSO Provider can be in""" +""" +All the possible states an SSO Provider can be in +""" enum SSOProviderStates { -"""The SSO Provider has been created, but has not been enabled for use yet""" - CREATED -"""The SSO Provider has been setup correctly and can be used by users""" - ENABLED -"""The SSO Provider has been disabled and can't be used directly""" - DISABLED + """ + The SSO Provider has been created, but has not been enabled for use yet + """ + CREATED + + """ + The SSO Provider has been disabled and can't be used directly + """ + DISABLED + + """ + The SSO Provider has been setup correctly and can be used by users + """ + ENABLED } -"""All the possible SSO Provider types""" +""" +All the possible SSO Provider types +""" enum SSOProviderTypes { -"""An SSO Provider configured to use SAML""" - SAML -"""A SSO Provider configured to use Google G Suite for authorization""" - GOOGLE_GSUITE -"""A SSO Provider configured to use a GitHub App for authorization""" - GITHUB_APP + """ + A SSO Provider configured to use a GitHub App for authorization + """ + GITHUB_APP + + """ + A SSO Provider configured to use Google G Suite for authorization + """ + GOOGLE_GSUITE + + """ + An SSO Provider configured to use SAML + """ + SAML } -"""Autogenerated input type of SSOProviderUpdate""" +""" +Autogenerated input type of SSOProviderUpdate +""" input SSOProviderUpdateInput { -"""Autogenerated input type of SSOProviderUpdate""" - clientMutationId: String -"""Autogenerated input type of SSOProviderUpdate""" - id: ID! -"""Autogenerated input type of SSOProviderUpdate""" - note: String -"""Autogenerated input type of SSOProviderUpdate""" - sessionDurationInHours: Int -"""Autogenerated input type of SSOProviderUpdate""" - pinSessionToIpAddress: Boolean -"""Autogenerated input type of SSOProviderUpdate""" - emailDomain: String -"""Autogenerated input type of SSOProviderUpdate""" - emailDomainVerificationAddress: String -"""Autogenerated input type of SSOProviderUpdate""" - identityProvider: SSOProviderSAMLIdP -"""Autogenerated input type of SSOProviderUpdate""" - digestMethod: SSOProviderSAMLXMLSecurity -"""Autogenerated input type of SSOProviderUpdate""" - signatureMethod: SSOProviderSAMLRSAXMLSecurity -"""Autogenerated input type of SSOProviderUpdate""" - githubOrganizationName: String -"""Autogenerated input type of SSOProviderUpdate""" - googleHostedDomain: String -"""Autogenerated input type of SSOProviderUpdate""" - discloseGoogleHostedDomain: Boolean -} - -"""Autogenerated return type of SSOProviderUpdate.""" + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + digestMethod: SSOProviderSAMLXMLSecurity + discloseGoogleHostedDomain: Boolean + emailDomain: String + emailDomainVerificationAddress: String + githubOrganizationName: String + googleHostedDomain: String + id: ID! + identityProvider: SSOProviderSAMLIdP + note: String + + """ + When enabled, users will be required to re-authenticate if their IP address + changes. This feature is only available for some billing plans. + """ + pinSessionToIpAddress: Boolean + sessionDurationInHours: Int + signatureMethod: SSOProviderSAMLRSAXMLSecurity +} + +""" +Autogenerated return type of SSOProviderUpdate. +""" type SSOProviderUpdatePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - ssoProvider: SSOProvider! -} - -"""A secret hosted by Buildkite. This does not contain the secret value or encrypted material.""" -type Secret implements Node{ -"""The cluster that the secret belongs to""" - cluster: Cluster -"""The time this secret was created""" - createdAt: DateTime -"""A description about what this secret is used for""" - description: String -"""The time this secret was destroyed""" - destroyedAt: DateTime - id: ID! -"""The key value used to name the secret""" - key: String! -"""The organization that the secret belongs to""" - organization: Organization! -"""The time this secret was updated""" - updatedAt: DateTime -"""The public UUID for the secret""" - uuid: ID! + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + ssoProvider: SSOProvider! +} + +""" +A secret hosted by Buildkite. This does not contain the secret value or encrypted material. +""" +type Secret implements Node { + """ + The cluster that the secret belongs to + """ + cluster: Cluster + + """ + The time this secret was created + """ + createdAt: DateTime + + """ + A description about what this secret is used for + """ + description: String + + """ + The time this secret was destroyed + """ + destroyedAt: DateTime + id: ID! + + """ + The key value used to name the secret + """ + key: String! + + """ + The organization that the secret belongs to + """ + organization: Organization! + + """ + The time this secret was updated + """ + updatedAt: DateTime + + """ + The public UUID for the secret + """ + uuid: ID! } interface Step { - conditional: String - dependencies: DependencyConnection - key: String - uuid: String! -} - -"""A step in a build that runs a command on an agent""" -type StepCommand implements Step{ -"""The conditional evaluated for this step""" - conditional: String -"""Dependencies of this job""" - dependencies( -"""Returns the first _n_ elements from the list.""" - first: Int -"""Returns the elements in the list that come after the specified cursor.""" - after: String -"""Returns the last _n_ elements from the list.""" - last: Int -"""Returns the elements in the list that come before the specified cursor.""" - before: String - ): DependencyConnection -"""The user-defined key for this step""" - key: String -"""The UUID for this step""" - uuid: String! -} - -"""An input step collects information from a user""" -type StepInput implements Step{ -"""The conditional evaluated for this step""" - conditional: String -"""Dependencies of this job""" - dependencies( -"""Returns the first _n_ elements from the list.""" - first: Int -"""Returns the elements in the list that come after the specified cursor.""" - after: String -"""Returns the last _n_ elements from the list.""" - last: Int -"""Returns the elements in the list that come before the specified cursor.""" - before: String - ): DependencyConnection -"""The user-defined key for this step""" - key: String -"""The UUID for this step""" - uuid: String! -} - -"""A trigger step creates a build on another pipeline""" -type StepTrigger implements Step{ -"""The conditional evaluated for this step""" - conditional: String -"""Dependencies of this job""" - dependencies( -"""Returns the first _n_ elements from the list.""" - first: Int -"""Returns the elements in the list that come after the specified cursor.""" - after: String -"""Returns the last _n_ elements from the list.""" - last: Int -"""Returns the elements in the list that come before the specified cursor.""" - before: String - ): DependencyConnection -"""The user-defined key for this step""" - key: String -"""The UUID for this step""" - uuid: String! -} - -"""A wait step waits for all previous steps to have successfully completed before allowing following jobs to continue""" -type StepWait implements Step{ -"""The conditional evaluated for this step""" - conditional: String -"""Dependencies of this job""" - dependencies( -"""Returns the first _n_ elements from the list.""" - first: Int -"""Returns the elements in the list that come after the specified cursor.""" - after: String -"""Returns the last _n_ elements from the list.""" - last: Int -"""Returns the elements in the list that come before the specified cursor.""" - before: String - ): DependencyConnection -"""The user-defined key for this step""" - key: String -"""The UUID for this step""" - uuid: String! -} - -"""Represents textual data as UTF-8 character sequences. This type is most often used by GraphQL to represent free-form human-readable text.""" -scalar String + """ + The conditional evaluated for this step + """ + conditional: String + + """ + Dependencies of this job + """ + dependencies( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): DependencyConnection + + """ + The user-defined key for this step + """ + key: String + + """ + The UUID for this step + """ + uuid: String! +} + +""" +A step in a build that runs a command on an agent +""" +type StepCommand implements Step { + """ + The conditional evaluated for this step + """ + conditional: String + + """ + Dependencies of this job + """ + dependencies( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): DependencyConnection + + """ + The user-defined key for this step + """ + key: String + + """ + The UUID for this step + """ + uuid: String! +} + +""" +An input step collects information from a user +""" +type StepInput implements Step { + """ + The conditional evaluated for this step + """ + conditional: String + + """ + Dependencies of this job + """ + dependencies( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): DependencyConnection + + """ + The user-defined key for this step + """ + key: String + + """ + The UUID for this step + """ + uuid: String! +} + +""" +A trigger step creates a build on another pipeline +""" +type StepTrigger implements Step { + """ + The conditional evaluated for this step + """ + conditional: String + + """ + Dependencies of this job + """ + dependencies( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): DependencyConnection + + """ + The user-defined key for this step + """ + key: String + + """ + The UUID for this step + """ + uuid: String! +} + +""" +A wait step waits for all previous steps to have successfully completed before allowing following jobs to continue +""" +type StepWait implements Step { + """ + The conditional evaluated for this step + """ + conditional: String + + """ + Dependencies of this job + """ + dependencies( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): DependencyConnection + + """ + The user-defined key for this step + """ + key: String + + """ + The UUID for this step + """ + uuid: String! +} type Subscription { - id: ID! -} - -"""A suite""" -type Suite implements Node{ -"""The application name for the suite""" - applicationName: String -"""The hex code for the suite navatar background color in the Test Suites page""" - color: String -"""The time when the suite was created""" - createdAt: DateTime -"""The default branch for this suite""" - defaultBranch: String -"""The emoji that will display as a suite navatar in the Test Suites page""" - emoji: String - id: ID! -"""The name of the suite""" - name: String! - organization: Organization! -"""The slug of the suite""" - slug: String! -"""Teams associated with this suite""" - teams( -"""Returns the first _n_ elements from the list.""" - first: Int -"""Returns the elements in the list that come after the specified cursor.""" - after: String -"""Returns the last _n_ elements from the list.""" - last: Int -"""Returns the elements in the list that come before the specified cursor.""" - before: String -"""Search for teams associated that this suite is assigned to""" - search: String -"""Order the suites returned""" - order: TeamSuiteOrder - ): TeamSuiteConnection -"""The URL for the suite""" - url: String! - uuid: String! -} - -"""The access levels that can be assigned to a suite""" + id: ID! +} + +""" +A suite +""" +type Suite implements Node { + """ + The application name for the suite + """ + applicationName: String + + """ + The hex code for the suite navatar background color in the Test Suites page + """ + color: String + + """ + The time when the suite was created + """ + createdAt: DateTime + + """ + The default branch for this suite + """ + defaultBranch: String + + """ + The emoji that will display as a suite navatar in the Test Suites page + """ + emoji: String + id: ID! + + """ + The name of the suite + """ + name: String! + organization: Organization! + + """ + The slug of the suite + """ + slug: String! + + """ + Teams associated with this suite + """ + teams( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Order the suites returned + """ + order: TeamSuiteOrder = RECENTLY_CREATED + + """ + Search for teams associated that this suite is assigned to + """ + search: String + ): TeamSuiteConnection + + """ + The URL for the suite + """ + url: String! + uuid: String! +} + +""" +The access levels that can be assigned to a suite +""" enum SuiteAccessLevels { -"""Allows edits and reads""" - MANAGE_AND_READ -"""Read only""" - READ_ONLY + """ + Allows edits and reads + """ + MANAGE_AND_READ + + """ + Read only + """ + READ_ONLY } -type SuiteConnection implements Connection{ - count: Int! - edges: [SuiteEdge] - pageInfo: PageInfo +""" +The connection type for Suite. +""" +type SuiteConnection implements Connection { + count: Int! + + """ + A list of edges. + """ + edges: [SuiteEdge] + pageInfo: PageInfo } +""" +An edge in a connection. +""" type SuiteEdge { - cursor: String! - node: Suite + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Suite } -"""The different orders you can sort suites by""" +""" +The different orders you can sort suites by +""" enum SuiteOrders { -"""Order by name alphabetically""" - NAME -"""Order by the most recently created suites first""" - RECENTLY_CREATED -"""Order by relevance when searching for suites""" - RELEVANCE + """ + Order by name alphabetically + """ + NAME + + """ + Order by the most recently created suites first + """ + RECENTLY_CREATED + + """ + Order by relevance when searching for suites + """ + RELEVANCE } -"""A TOTP configuration""" +""" +A TOTP configuration +""" type TOTP { - id: ID! -"""The recovery code batch associated with this TOTP configuration""" - recoveryCodes: RecoveryCodeBatch! -"""Whether the TOTP configuration has been verified yet""" - verified: Boolean! + id: ID! + + """ + The recovery code batch associated with this TOTP configuration + """ + recoveryCodes: RecoveryCodeBatch! + + """ + Whether the TOTP configuration has been verified yet + """ + verified: Boolean! } -"""Autogenerated input type of TOTPActivate""" +""" +Autogenerated input type of TOTPActivate +""" input TOTPActivateInput { -"""Autogenerated input type of TOTPActivate""" - clientMutationId: String -"""Autogenerated input type of TOTPActivate""" - id: ID! -"""Autogenerated input type of TOTPActivate""" - token: String! + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! + + """ + The current one-time password associated with this TOTP configuration. + """ + token: String! } -"""Autogenerated return type of TOTPActivate.""" +""" +Autogenerated return type of TOTPActivate. +""" type TOTPActivatePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - totp: TOTP! - viewer: Viewer! + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + totp: TOTP! + viewer: Viewer! } -"""Autogenerated input type of TOTPCreate""" +""" +Autogenerated input type of TOTPCreate +""" input TOTPCreateInput { -"""Autogenerated input type of TOTPCreate""" - clientMutationId: String + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String } -"""Autogenerated return type of TOTPCreate.""" +""" +Autogenerated return type of TOTPCreate. +""" type TOTPCreatePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String -"""The URI to enter into your one-time password generator. Usually presented to the user as a QR Code""" - provisioningUri: String! - totp: TOTP! + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The URI to enter into your one-time password generator. Usually presented to the user as a QR Code + """ + provisioningUri: String! + totp: TOTP! } -"""Autogenerated input type of TOTPDelete""" +""" +Autogenerated input type of TOTPDelete +""" input TOTPDeleteInput { -"""Autogenerated input type of TOTPDelete""" - clientMutationId: String -"""Autogenerated input type of TOTPDelete""" - id: ID! + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! } -"""Autogenerated return type of TOTPDelete.""" +""" +Autogenerated return type of TOTPDelete. +""" type TOTPDeletePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - viewer: Viewer! + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + viewer: Viewer! } -"""Autogenerated input type of TOTPRecoveryCodesRegenerate""" +""" +Autogenerated input type of TOTPRecoveryCodesRegenerate +""" input TOTPRecoveryCodesRegenerateInput { -"""Autogenerated input type of TOTPRecoveryCodesRegenerate""" - clientMutationId: String -"""Autogenerated input type of TOTPRecoveryCodesRegenerate""" - totpId: ID! + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + The ID of the TOTP to generate the Recovery Codes for + """ + totpId: ID! } -"""Autogenerated return type of TOTPRecoveryCodesRegenerate.""" +""" +Autogenerated return type of TOTPRecoveryCodesRegenerate. +""" type TOTPRecoveryCodesRegeneratePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - recoveryCodes: RecoveryCodeBatch! - totp: TOTP! -} - -"""An organization team""" -type Team implements Node{ -"""The time when this team was created""" - createdAt: DateTime! -"""The user that created this team""" - createdBy: User -"""New organization members will be granted this role on this team""" - defaultMemberRole: TeamMemberRole! -"""A description of the team""" - description: String - id: ID! -"""Add new organization members to this team by default""" - isDefaultTeam: Boolean! -"""Users that are part of this team""" - members( - first: Int - after: String - last: Int - before: String -"""Search team members named like the given query case insensitively""" - search: String -"""Search team members by their role""" - role: [TeamMemberRole!] -"""Order the members returned""" - order: TeamMemberOrder - ): TeamMemberConnection -"""Whether or not team members can create new pipelines in this team""" - membersCanCreatePipelines: Boolean! -"""Whether or not team members can delete pipelines in this team""" - membersCanDeletePipelines: Boolean! -"""The name of the team""" - name: String! -"""The organization that this team is a part of""" - organization: Organization - permissions: TeamPermissions! -"""Pipelines associated with this team""" - pipelines( - first: Int - after: String - last: Int - before: String -"""Search pipelines named like the given query case insensitively""" - search: String -"""Order the pipelines returned""" - order: TeamPipelineOrder - ): TeamPipelineConnection -"""The privacy setting for this team""" - privacy: TeamPrivacy! -"""The slug of the team""" - slug: String! -"""Suites associated with this team""" - suites( - first: Int - after: String - last: Int - before: String -"""Order the suites returned""" - order: TeamSuiteOrder - ): TeamSuiteConnection -"""The public UUID for this team""" - uuid: ID! -} - -type TeamConnection implements Connection{ - count: Int! - edges: [TeamEdge] - pageInfo: PageInfo -} - -"""Autogenerated input type of TeamCreate""" + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + recoveryCodes: RecoveryCodeBatch! + totp: TOTP! +} + +""" +An organization team +""" +type Team implements Node { + """ + The time when this team was created + """ + createdAt: DateTime! + + """ + The user that created this team + """ + createdBy: User + + """ + New organization members will be granted this role on this team + """ + defaultMemberRole: TeamMemberRole! + + """ + A description of the team + """ + description: String + id: ID! + + """ + Add new organization members to this team by default + """ + isDefaultTeam: Boolean! + + """ + Users that are part of this team + """ + members( + after: String + before: String + first: Int + last: Int + + """ + Order the members returned + """ + order: TeamMemberOrder = RECENTLY_CREATED + + """ + Search team members by their role + """ + role: [TeamMemberRole!] + + """ + Search team members named like the given query case insensitively + """ + search: String + ): TeamMemberConnection + + """ + Whether or not team members can create new pipelines in this team + """ + membersCanCreatePipelines: Boolean! + + """ + Whether or not team members can create new registries in this team + """ + membersCanCreateRegistries: Boolean! + + """ + Whether or not team members can create new test suites in this team + """ + membersCanCreateSuites: Boolean! + + """ + Whether or not team members can delete pipelines in this team + """ + membersCanDeletePipelines: Boolean! @deprecated(reason: "This property has been removed without replacement") + + """ + Whether or not team members can delete packages in this team + """ + membersCanDestroyPackages: Boolean! + + """ + Whether or not team members can delete registries in this team + """ + membersCanDestroyRegistries: Boolean! + + """ + The name of the team + """ + name: String! + + """ + The organization that this team is a part of + """ + organization: Organization + permissions: TeamPermissions! + + """ + Pipelines associated with this team + """ + pipelines( + after: String + before: String + first: Int + last: Int + + """ + Order the pipelines returned + """ + order: TeamPipelineOrder = RECENTLY_CREATED + + """ + Search pipelines named like the given query case insensitively + """ + search: String + ): TeamPipelineConnection + + """ + The privacy setting for this team + """ + privacy: TeamPrivacy! + + """ + Registries associated with this team + """ + registries( + after: String + before: String + first: Int + last: Int + + """ + Order the registries returned + """ + order: TeamRegistryOrder = RECENTLY_CREATED + ): TeamRegistryConnection + + """ + The slug of the team + """ + slug: String! + + """ + Suites associated with this team + """ + suites( + after: String + before: String + first: Int + last: Int + + """ + Order the suites returned + """ + order: TeamSuiteOrder = RECENTLY_CREATED + ): TeamSuiteConnection + + """ + The public UUID for this team + """ + uuid: ID! +} + +""" +The connection type for Team. +""" +type TeamConnection implements Connection { + count: Int! + + """ + A list of edges. + """ + edges: [TeamEdge] + pageInfo: PageInfo +} + +""" +Autogenerated input type of TeamCreate +""" input TeamCreateInput { -"""Autogenerated input type of TeamCreate""" - clientMutationId: String -"""Autogenerated input type of TeamCreate""" - organizationID: ID! -"""Autogenerated input type of TeamCreate""" - name: String! -"""Autogenerated input type of TeamCreate""" - description: String -"""Autogenerated input type of TeamCreate""" - privacy: TeamPrivacy! -"""Autogenerated input type of TeamCreate""" - isDefaultTeam: Boolean! -"""Autogenerated input type of TeamCreate""" - defaultMemberRole: TeamMemberRole! -"""Autogenerated input type of TeamCreate""" - membersCanCreatePipelines: Boolean -"""Autogenerated input type of TeamCreate""" - membersCanDeletePipelines: Boolean -} - -"""Autogenerated return type of TeamCreate.""" + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + New organization members will be granted this role on this team + """ + defaultMemberRole: TeamMemberRole! + description: String + + """ + Add new organization members to this team by default + """ + isDefaultTeam: Boolean! + + """ + If members in this team can create pipelines in it + """ + membersCanCreatePipelines: Boolean = true + + """ + If members in this team can create registries in it + """ + membersCanCreateRegistries: Boolean = true + + """ + If members in this team can create test suites in it + """ + membersCanCreateSuites: Boolean = true + + """ + Deprecated: If members in this team can delete pipelines assigned to it + """ + membersCanDeletePipelines: Boolean = true + + """ + If members in this team can delete packages in registries assigned to it + """ + membersCanDestroyPackages: Boolean = false + + """ + If members in this team can delete registries assigned to it + """ + membersCanDestroyRegistries: Boolean = false + name: String! + organizationID: ID! + + """ + The privacy setting for this team + """ + privacy: TeamPrivacy! +} + +""" +Autogenerated return type of TeamCreate. +""" type TeamCreatePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - organization: Organization! - teamEdge: TeamEdge! + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + organization: Organization! + teamEdge: TeamEdge! } -"""Autogenerated input type of TeamDelete""" +""" +Autogenerated input type of TeamDelete +""" input TeamDeleteInput { -"""Autogenerated input type of TeamDelete""" - clientMutationId: String -"""Autogenerated input type of TeamDelete""" - id: ID! + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! } -"""Autogenerated return type of TeamDelete.""" +""" +Autogenerated return type of TeamDelete. +""" type TeamDeletePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - deletedTeamID: ID! - organization: Organization! + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + deletedTeamID: ID! + organization: Organization! } +""" +An edge in a connection. +""" type TeamEdge { - cursor: String! - node: Team -} - -"""An member of a team""" -type TeamMember implements Node{ -"""The time when the team member was added""" - createdAt: DateTime! -"""The user that added this team member""" - createdBy: User - id: ID! -"""The organization member associated with this team member""" - organizationMember: OrganizationMember - permissions: TeamMemberPermissions! -"""The users role within the team""" - role: TeamMemberRole! -"""The team associated with this team member""" - team: Team -"""The user associated with this team member""" - user: User -"""The public UUID for this team member""" - uuid: ID! -} - -type TeamMemberConnection implements Connection{ - count: Int! - edges: [TeamMemberEdge] - pageInfo: PageInfo -} - -"""Autogenerated input type of TeamMemberCreate""" + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Team +} + +""" +An member of a team +""" +type TeamMember implements Node { + """ + The time when the team member was added + """ + createdAt: DateTime! + + """ + The user that added this team member + """ + createdBy: User + id: ID! + + """ + The organization member associated with this team member + """ + organizationMember: OrganizationMember + permissions: TeamMemberPermissions! + + """ + The users role within the team + """ + role: TeamMemberRole! + + """ + The team associated with this team member + """ + team: Team + + """ + The user associated with this team member + """ + user: User + + """ + The public UUID for this team member + """ + uuid: ID! +} + +""" +The connection type for TeamMember. +""" +type TeamMemberConnection implements Connection { + count: Int! + + """ + A list of edges. + """ + edges: [TeamMemberEdge] + pageInfo: PageInfo +} + +""" +Autogenerated input type of TeamMemberCreate +""" input TeamMemberCreateInput { -"""Autogenerated input type of TeamMemberCreate""" - clientMutationId: String -"""Autogenerated input type of TeamMemberCreate""" - teamID: ID! -"""Autogenerated input type of TeamMemberCreate""" - userID: ID! -"""Autogenerated input type of TeamMemberCreate""" - role: TeamMemberRole + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + If no role is specified, the team member will be assigned the team's default role. + """ + role: TeamMemberRole + teamID: ID! + userID: ID! } -"""Autogenerated return type of TeamMemberCreate.""" +""" +Autogenerated return type of TeamMemberCreate. +""" type TeamMemberCreatePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - team: Team - teamMemberEdge: TeamMemberEdge + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + team: Team + teamMemberEdge: TeamMemberEdge } -"""Autogenerated input type of TeamMemberDelete""" +""" +Autogenerated input type of TeamMemberDelete +""" input TeamMemberDeleteInput { -"""Autogenerated input type of TeamMemberDelete""" - clientMutationId: String -"""Autogenerated input type of TeamMemberDelete""" - id: ID! + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! } -"""Autogenerated return type of TeamMemberDelete.""" +""" +Autogenerated return type of TeamMemberDelete. +""" type TeamMemberDeletePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - deletedTeamMemberID: ID! - team: Team + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + deletedTeamMemberID: ID! + team: Team } +""" +An edge in a connection. +""" type TeamMemberEdge { - cursor: String! - node: TeamMember + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: TeamMember } -"""The different orders you can sort team members by""" +""" +The different orders you can sort team members by +""" enum TeamMemberOrder { -"""Order by name alphabetically""" - NAME -"""Order by most relevant results when doing a search""" - RELEVANCE -"""Order by the most recently added members first""" - RECENTLY_CREATED + """ + Order by name alphabetically + """ + NAME + + """ + Order by the most recently added members first + """ + RECENTLY_CREATED + + """ + Order by most relevant results when doing a search + """ + RELEVANCE } -"""Permissions information about what actions the current user can do against the team membership record""" +""" +Permissions information about what actions the current user can do against the team membership record +""" type TeamMemberPermissions { -"""Whether the user can delete the user from the team""" - teamMemberDelete: Permission -"""Whether the user can update the team's members admin status""" - teamMemberUpdate: Permission + """ + Whether the user can delete the user from the team + """ + teamMemberDelete: Permission + + """ + Whether the user can update the team's members admin status + """ + teamMemberUpdate: Permission } -"""The roles a user can be within a team""" +""" +The roles a user can be within a team +""" enum TeamMemberRole { -"""The user is a regular member of the team""" - MEMBER -"""The user can manage pipelines and users within the team""" - MAINTAINER + """ + The user can manage pipelines and users within the team + """ + MAINTAINER + + """ + The user is a regular member of the team + """ + MEMBER } -"""Autogenerated input type of TeamMemberUpdate""" +""" +Autogenerated input type of TeamMemberUpdate +""" input TeamMemberUpdateInput { -"""Autogenerated input type of TeamMemberUpdate""" - clientMutationId: String -"""Autogenerated input type of TeamMemberUpdate""" - id: ID! -"""Autogenerated input type of TeamMemberUpdate""" - role: TeamMemberRole! + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! + role: TeamMemberRole! } -"""Autogenerated return type of TeamMemberUpdate.""" +""" +Autogenerated return type of TeamMemberUpdate. +""" type TeamMemberUpdatePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - teamMember: TeamMember! + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + teamMember: TeamMember! } -"""The different orders you can sort teams by""" +""" +The different orders you can sort teams by +""" enum TeamOrder { -"""Order by name alphabetically""" - NAME -"""Order by the most recently created teams first""" - RECENTLY_CREATED -"""Order by relevance when searching for teams""" - RELEVANCE + """ + Order by name alphabetically + """ + NAME + + """ + Order by the most recently created teams first + """ + RECENTLY_CREATED + + """ + Order by relevance when searching for teams + """ + RELEVANCE } -"""Permissions information about what actions the current user can do against the team""" +""" +Permissions information about what actions the current user can do against the team +""" type TeamPermissions { -"""Whether the user can see the pipelines within the team""" - pipelineView: Permission -"""Whether the user can delete the team""" - teamDelete: Permission -"""Whether the user can administer add members from the organization to this team""" - teamMemberCreate: Permission -"""Whether the user can add pipelines from other teams to this one""" - teamPipelineCreate: Permission -"""Whether the user can add suites from other teams to this one""" - teamSuiteCreate: Permission -"""Whether the user can update the team's name and description""" - teamUpdate: Permission -} - -"""An pipeline that's been assigned to a team""" -type TeamPipeline implements Node{ -"""The access level users have to this pipeline""" - accessLevel: PipelineAccessLevels! -"""The time when the pipeline was added""" - createdAt: DateTime! -"""The user that added this pipeline to the team""" - createdBy: User - id: ID! - permissions: TeamPipelinePermissions! -"""The pipeline associated with this team member""" - pipeline: Pipeline -"""The team associated with this team member""" - team: Team -"""The public UUID for this team member""" - uuid: ID! -} - -"""A collection of TeamPipeline records""" -type TeamPipelineConnection implements Connection{ - count: Int! - edges: [TeamPipelineEdge] - pageInfo: PageInfo -} - -"""Autogenerated input type of TeamPipelineCreate""" + """ + Whether the user can see the pipelines within the team + """ + pipelineView: Permission + + """ + Whether the user can delete the team + """ + teamDelete: Permission + + """ + Whether the user can administer add members from the organization to this team + """ + teamMemberCreate: Permission + + """ + Whether the user can add pipelines from other teams to this one + """ + teamPipelineCreate: Permission + + """ + Whether the user can add registries from other teams to this one + """ + teamRegistryCreate: Permission + + """ + Whether the user can add suites from other teams to this one + """ + teamSuiteCreate: Permission + + """ + Whether the user can update the team's name and description + """ + teamUpdate: Permission +} + +""" +An pipeline that's been assigned to a team +""" +type TeamPipeline implements Node { + """ + The access level users have to this pipeline + """ + accessLevel: PipelineAccessLevels! + + """ + The time when the pipeline was added + """ + createdAt: DateTime! + + """ + The user that added this pipeline to the team + """ + createdBy: User + id: ID! + permissions: TeamPipelinePermissions! + + """ + The pipeline associated with this team member + """ + pipeline: Pipeline + + """ + The team associated with this team member + """ + team: Team + + """ + The public UUID for this team member + """ + uuid: ID! +} + +""" +The connection type for TeamPipeline. +""" +type TeamPipelineConnection implements Connection { + count: Int! + + """ + A list of edges. + """ + edges: [TeamPipelineEdge] + pageInfo: PageInfo +} + +""" +Autogenerated input type of TeamPipelineCreate +""" input TeamPipelineCreateInput { -"""Autogenerated input type of TeamPipelineCreate""" - clientMutationId: String -"""Autogenerated input type of TeamPipelineCreate""" - teamID: ID! -"""Autogenerated input type of TeamPipelineCreate""" - pipelineID: ID! -"""Autogenerated input type of TeamPipelineCreate""" - accessLevel: PipelineAccessLevels + accessLevel: PipelineAccessLevels = READ_ONLY + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + pipelineID: ID! + teamID: ID! } -"""Autogenerated return type of TeamPipelineCreate.""" +""" +Autogenerated return type of TeamPipelineCreate. +""" type TeamPipelineCreatePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - pipeline: Pipeline - team: Team - teamPipeline: TeamPipeline - teamPipelineEdge: TeamPipelineEdge + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + pipeline: Pipeline + team: Team + teamPipeline: TeamPipeline + teamPipelineEdge: TeamPipelineEdge } -"""Autogenerated input type of TeamPipelineDelete""" +""" +Autogenerated input type of TeamPipelineDelete +""" input TeamPipelineDeleteInput { -"""Autogenerated input type of TeamPipelineDelete""" - clientMutationId: String -"""Autogenerated input type of TeamPipelineDelete""" - id: ID! -"""Autogenerated input type of TeamPipelineDelete""" - force: Boolean + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + force: Boolean + id: ID! } -"""Autogenerated return type of TeamPipelineDelete.""" +""" +Autogenerated return type of TeamPipelineDelete. +""" type TeamPipelineDeletePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - deletedTeamPipelineID: ID! - team: Team + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + deletedTeamPipelineID: ID! + team: Team } +""" +An edge in a connection. +""" type TeamPipelineEdge { - cursor: String! - node: TeamPipeline + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: TeamPipeline } -"""The different orders you can sort pipelines by""" +""" +The different orders you can sort pipelines by +""" enum TeamPipelineOrder { -"""Order by name alphabetically""" - NAME -"""Order by most relevant results when doing a search""" - RELEVANCE -"""Order by the most recently added pipelines first""" - RECENTLY_CREATED + """ + Order by name alphabetically + """ + NAME + + """ + Order by the most recently added pipelines first + """ + RECENTLY_CREATED + + """ + Order by most relevant results when doing a search + """ + RELEVANCE } -"""Permission information about what actions the current user can do against the team pipelines""" +""" +Permission information about what actions the current user can do against the team pipelines +""" type TeamPipelinePermissions { -"""Whether the user can delete the pipeline from the team""" - teamPipelineDelete: Permission -"""Whether the user can update the pipeline connection to the team""" - teamPipelineUpdate: Permission + """ + Whether the user can delete the pipeline from the team + """ + teamPipelineDelete: Permission + + """ + Whether the user can update the pipeline connection to the team + """ + teamPipelineUpdate: Permission } -"""Autogenerated input type of TeamPipelineUpdate""" +""" +Autogenerated input type of TeamPipelineUpdate +""" input TeamPipelineUpdateInput { -"""Autogenerated input type of TeamPipelineUpdate""" - clientMutationId: String -"""Autogenerated input type of TeamPipelineUpdate""" - id: ID! -"""Autogenerated input type of TeamPipelineUpdate""" - accessLevel: PipelineAccessLevels! + accessLevel: PipelineAccessLevels! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! } -"""Autogenerated return type of TeamPipelineUpdate.""" +""" +Autogenerated return type of TeamPipelineUpdate. +""" type TeamPipelineUpdatePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - teamPipeline: TeamPipeline! + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + teamPipeline: TeamPipeline! } -"""Whether a team is visible or secret within an organization""" +""" +Whether a team is visible or secret within an organization +""" enum TeamPrivacy { -"""Visible to all members of the organization""" - VISIBLE -"""Visible to organization administrators and members""" - SECRET + """ + Visible to organization administrators and members + """ + SECRET + + """ + Visible to all members of the organization + """ + VISIBLE +} + +""" +A registry that's been assigned to a team +""" +type TeamRegistry implements Node { + """ + The access level users have to this registry + """ + accessLevel: RegistryAccessLevels! + + """ + The time when the registry was added + """ + createdAt: DateTime! + + """ + The user that added this registry to the team + """ + createdBy: User + id: ID! + permissions: TeamRegistryPermissions! + + """ + The registry associated with this team member + """ + registry: Registry + + """ + The team associated with this team member + """ + team: Team + + """ + The time when the assignment was last updated + """ + updatedAt: DateTime! + + """ + The user that last updated this assignment + """ + updatedBy: User + + """ + The public UUID for this team registry + """ + uuid: String! +} + +""" +The connection type for TeamRegistry. +""" +type TeamRegistryConnection implements Connection { + count: Int! + + """ + A list of edges. + """ + edges: [TeamRegistryEdge] + pageInfo: PageInfo +} + +""" +Autogenerated input type of TeamRegistryCreate +""" +input TeamRegistryCreateInput { + accessLevel: RegistryAccessLevels = READ_ONLY + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + registryID: ID! + teamID: ID! +} + +""" +Autogenerated return type of TeamRegistryCreate. +""" +type TeamRegistryCreatePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + registry: Registry + team: Team + teamRegistry: TeamRegistry + teamRegistryEdge: TeamRegistryEdge +} + +""" +Autogenerated input type of TeamRegistryDelete +""" +input TeamRegistryDeleteInput { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + force: Boolean + id: ID! +} + +""" +Autogenerated return type of TeamRegistryDelete. +""" +type TeamRegistryDeletePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + deletedTeamRegistryID: ID! + team: Team +} + +""" +An edge in a connection. +""" +type TeamRegistryEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: TeamRegistry +} + +""" +The different orders you can sort team registries by +""" +enum TeamRegistryOrder { + """ + Order by name alphabetically + """ + NAME + + """ + Order by the most recently added registries first + """ + RECENTLY_CREATED + + """ + Order by most relevant results when doing a search + """ + RELEVANCE +} + +""" +Permission information about what actions the current user can do against the team registries +""" +type TeamRegistryPermissions { + """ + Whether the user can delete the registry from the team + """ + teamRegistryDelete: Permission + + """ + Whether the user can update the registry connection to the team + """ + teamRegistryUpdate: Permission +} + +""" +Autogenerated input type of TeamRegistryUpdate +""" +input TeamRegistryUpdateInput { + accessLevel: RegistryAccessLevels! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! +} + +""" +Autogenerated return type of TeamRegistryUpdate. +""" +type TeamRegistryUpdatePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + teamRegistry: TeamRegistry! } -"""A Team identifier using a slug, and optionally negated with a leading `!`""" +""" +A Team identifier using a slug, and optionally negated with a leading `!` +""" scalar TeamSelector -"""A suite that's been assigned to a team""" -type TeamSuite implements Node{ -"""The access level users have to this suite""" - accessLevel: SuiteAccessLevels! -"""The time when the suite was added""" - createdAt: DateTime! -"""The user that added this suite to the team""" - createdBy: User - id: ID! - permissions: TeamSuitePermissions! -"""The suite associated with this team member""" - suite: Suite -"""The team associated with this team member""" - team: Team -"""The public UUID for this team suite""" - uuid: String! -} - -"""A collection of TeamSuite records""" -type TeamSuiteConnection implements Connection{ - count: Int! - edges: [TeamSuiteEdge] - pageInfo: PageInfo -} - -"""Autogenerated input type of TeamSuiteCreate""" +""" +A suite that's been assigned to a team +""" +type TeamSuite implements Node { + """ + The access level users have to this suite + """ + accessLevel: SuiteAccessLevels! + + """ + The time when the suite was added + """ + createdAt: DateTime! + + """ + The user that added this suite to the team + """ + createdBy: User + id: ID! + permissions: TeamSuitePermissions! + + """ + The suite associated with this team member + """ + suite: Suite + + """ + The team associated with this team member + """ + team: Team + + """ + The public UUID for this team suite + """ + uuid: String! +} + +""" +The connection type for TeamSuite. +""" +type TeamSuiteConnection implements Connection { + count: Int! + + """ + A list of edges. + """ + edges: [TeamSuiteEdge] + pageInfo: PageInfo +} + +""" +Autogenerated input type of TeamSuiteCreate +""" input TeamSuiteCreateInput { -"""Autogenerated input type of TeamSuiteCreate""" - clientMutationId: String -"""Autogenerated input type of TeamSuiteCreate""" - teamID: ID! -"""Autogenerated input type of TeamSuiteCreate""" - suiteID: ID! -"""Autogenerated input type of TeamSuiteCreate""" - accessLevel: SuiteAccessLevels + accessLevel: SuiteAccessLevels = READ_ONLY + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + suiteID: ID! + teamID: ID! } -"""Autogenerated return type of TeamSuiteCreate.""" +""" +Autogenerated return type of TeamSuiteCreate. +""" type TeamSuiteCreatePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - suite: Suite - team: Team - teamSuite: TeamSuite - teamSuiteEdge: TeamSuiteEdge + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + suite: Suite + team: Team + teamSuite: TeamSuite + teamSuiteEdge: TeamSuiteEdge } -"""Autogenerated input type of TeamSuiteDelete""" +""" +Autogenerated input type of TeamSuiteDelete +""" input TeamSuiteDeleteInput { -"""Autogenerated input type of TeamSuiteDelete""" - clientMutationId: String -"""Autogenerated input type of TeamSuiteDelete""" - id: ID! -"""Autogenerated input type of TeamSuiteDelete""" - force: Boolean + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + force: Boolean + id: ID! } -"""Autogenerated return type of TeamSuiteDelete.""" +""" +Autogenerated return type of TeamSuiteDelete. +""" type TeamSuiteDeletePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - deletedTeamSuiteID: ID! - team: Team + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + deletedTeamSuiteID: ID! + team: Team } +""" +An edge in a connection. +""" type TeamSuiteEdge { - cursor: String! - node: TeamSuite + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: TeamSuite } -"""The different orders you can sort suites by""" +""" +The different orders you can sort suites by +""" enum TeamSuiteOrder { -"""Order by name alphabetically""" - NAME -"""Order by most relevant results when doing a search""" - RELEVANCE -"""Order by the most recently added suites first""" - RECENTLY_CREATED + """ + Order by name alphabetically + """ + NAME + + """ + Order by the most recently added suites first + """ + RECENTLY_CREATED + + """ + Order by most relevant results when doing a search + """ + RELEVANCE } -"""Permission information about what actions the current user can do against the team suites""" +""" +Permission information about what actions the current user can do against the team suites +""" type TeamSuitePermissions { -"""Whether the user can delete the suite from the team""" - teamSuiteDelete: Permission -"""Whether the user can update the suite connection to the team""" - teamSuiteUpdate: Permission + """ + Whether the user can delete the suite from the team + """ + teamSuiteDelete: Permission + + """ + Whether the user can update the suite connection to the team + """ + teamSuiteUpdate: Permission } -"""Autogenerated input type of TeamSuiteUpdate""" +""" +Autogenerated input type of TeamSuiteUpdate +""" input TeamSuiteUpdateInput { -"""Autogenerated input type of TeamSuiteUpdate""" - clientMutationId: String -"""Autogenerated input type of TeamSuiteUpdate""" - id: ID! -"""Autogenerated input type of TeamSuiteUpdate""" - accessLevel: SuiteAccessLevels! + accessLevel: SuiteAccessLevels! + + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + id: ID! } -"""Autogenerated return type of TeamSuiteUpdate.""" +""" +Autogenerated return type of TeamSuiteUpdate. +""" type TeamSuiteUpdatePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - teamSuite: TeamSuite! + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + teamSuite: TeamSuite! } -"""Autogenerated input type of TeamUpdate""" +""" +Autogenerated input type of TeamUpdate +""" input TeamUpdateInput { -"""Autogenerated input type of TeamUpdate""" - clientMutationId: String -"""Autogenerated input type of TeamUpdate""" - id: ID! -"""Autogenerated input type of TeamUpdate""" - name: String! -"""Autogenerated input type of TeamUpdate""" - description: String -"""Autogenerated input type of TeamUpdate""" - privacy: TeamPrivacy -"""Autogenerated input type of TeamUpdate""" - isDefaultTeam: Boolean! -"""Autogenerated input type of TeamUpdate""" - defaultMemberRole: TeamMemberRole! -"""Autogenerated input type of TeamUpdate""" - membersCanCreatePipelines: Boolean -"""Autogenerated input type of TeamUpdate""" - membersCanDeletePipelines: Boolean -} - -"""Autogenerated return type of TeamUpdate.""" -type TeamUpdatePayload { -"""A unique identifier for the client performing the mutation.""" - clientMutationId: String - team: Team! + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + + """ + New organization members will be granted this role on this team + """ + defaultMemberRole: TeamMemberRole! + description: String + id: ID! + + """ + Add new organization members to this team by default + """ + isDefaultTeam: Boolean! + + """ + If members in this team can create pipelines in it + """ + membersCanCreatePipelines: Boolean + + """ + If members in this team can create registries in it + """ + membersCanCreateRegistries: Boolean + + """ + If members in this team can create test suites in it + """ + membersCanCreateSuites: Boolean + + """ + Deprecated: If members in this team can delete pipelines assigned to it + """ + membersCanDeletePipelines: Boolean = true + + """ + If members in this team can delete packages in registries assigned to it + """ + membersCanDestroyPackages: Boolean + + """ + If members in this team can delete registries assigned to it + """ + membersCanDestroyRegistries: Boolean + name: String! + + """ + The privacy setting for this team + """ + privacy: TeamPrivacy } -"""A record of test executions usage, aggregated by day and test suite.""" -type TestExecutionsUsage implements ResourceUsageInterface{ - aggregatedOn: ISO8601Date! -"""The recorded usage.""" - executions: Int! - suite: Suite - suiteId: ID! +""" +Autogenerated return type of TeamUpdate. +""" +type TeamUpdatePayload { + """ + A unique identifier for the client performing the mutation. + """ + clientMutationId: String + team: Team! } -"""A person who hasn’t signed up to Buildkite""" +""" +A person who hasn’t signed up to Buildkite +""" type UnregisteredUser { - avatar: Avatar! -"""The email for the user""" - email: String -"""The name of the user""" - name: String -} - -"""The possible resource usage types""" -union UsageUnion =JobMinutesUsage | TestExecutionsUsage - -"""The connection type for UsageUnion.""" -type UsageUnionConnection { -"""A list of edges.""" - edges: [UsageUnionEdge] -"""A list of nodes.""" - nodes: [UsageUnion] -"""Information to aid in pagination.""" - pageInfo: PageInfo! -} - -"""An edge in a connection.""" -type UsageUnionEdge { -"""A cursor for use in pagination.""" - cursor: String! -"""The item at the end of the edge.""" - node: UsageUnion -} - -"""A user""" -type User implements Node{ - avatar: Avatar! -"""If this user account is an official bot managed by Buildkite""" - bot: Boolean! -"""Returns builds that this user has created.""" - builds( - first: Int - last: Int - state: [BuildStates!] - branch: [String!] - metaData: [String!] - ): BuildConnection -"""The primary email for the user""" - email: String! -"""Does the user have a password set""" - hasPassword: Boolean! - id: ID! -"""The name of the user""" - name: String! -"""The public UUID of the user""" - uuid: String! -} - -"""A User identifier using a UUID, and optionally negated with a leading `!`""" + avatar: Avatar! + + """ + The email for the user + """ + email: String + + """ + The name of the user + """ + name: String +} + +""" +A user +""" +type User implements Node { + avatar: Avatar! + + """ + If this user account is an official bot managed by Buildkite + """ + bot: Boolean! + + """ + Returns builds that this user has created. + """ + builds(branch: [String!], first: Int, last: Int, metaData: [String!], state: [BuildStates!]): BuildConnection + + """ + The primary email for the user + """ + email: String! + + """ + Does the user have a password set + """ + hasPassword: Boolean! + id: ID! + + """ + The name of the user + """ + name: String! + + """ + The public UUID of the user + """ + uuid: String! +} + +""" +A User identifier using a UUID, and optionally negated with a leading `!` +""" scalar UserSelector -"""Represents the current user session""" -type Viewer implements Node{ - authorizations( -"""Returns the first _n_ elements from the list.""" - first: Int -"""Returns the elements in the list that come after the specified cursor.""" - after: String -"""Returns the last _n_ elements from the list.""" - last: Int -"""Returns the elements in the list that come before the specified cursor.""" - before: String - type: [AuthorizationType!] - ): AuthorizationConnection - builds( - first: Int - last: Int - state: [BuildStates!] - branch: String - metaData: [String!] - ): BuildConnection - changelogs( - first: Int - last: Int - read: Boolean - ): ChangelogConnection -"""Emails associated with the current user""" - emails( -"""Returns the elements in the list that come after the specified cursor.""" - after: String -"""Returns the elements in the list that come before the specified cursor.""" - before: String -"""Returns the first _n_ elements from the list.""" - first: Int -"""Returns the last _n_ elements from the list.""" - last: Int -"""Filter by whether the email is verified or not""" - verified: Boolean - ): EmailConnection -"""The ID of the current user""" - id: ID! - jobs( - first: Int - after: String - last: Int - before: String - type: [JobTypes!] - state: [JobStates!] - priority: JobPrioritySearch - agentQueryRules: [String!] -"""Order the jobs""" - order: JobOrder - ): JobConnection - notice( - namespace: NoticeNamespaces! - scope: String! - ): Notice - organizations( - first: Int - last: Int - ): OrganizationConnection -"""The current user's permissions""" - permissions: ViewerPermissions! -"""The user's active TOTP configuration, if any. - -This field is private, requires an escalated session, and cannot be accessed via the public GraphQL API.""" - totp( - id: ID - ): TOTP -"""The current user""" - user: User -} - -"""Permissions information about what actions the current user can do""" +""" +Represents the current user session +""" +type Viewer implements Node { + authorizations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + type: [AuthorizationType!] + ): AuthorizationConnection + builds(branch: String, first: Int, last: Int, metaData: [String!], state: [BuildStates!]): BuildConnection + + """ + Emails associated with the current user + """ + emails( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Filter by whether the email is verified or not + """ + verified: Boolean + ): EmailConnection + + """ + The ID of the current user + """ + id: ID! + notice(namespace: NoticeNamespaces!, scope: String!): Notice + organizations(first: Int, last: Int): OrganizationConnection + + """ + The current user's permissions + """ + permissions: ViewerPermissions! + + """ + The user's active TOTP configuration, if any. + + This field is private, requires an escalated session, and cannot be accessed via the public GraphQL API. + """ + totp(id: ID): TOTP + + """ + The current user + """ + user: User +} + +""" +Permissions information about what actions the current user can do +""" type ViewerPermissions { -"""Whether the viewer can configure two-factor authentication""" - totpConfigure: Permission! + """ + Whether the viewer can configure two-factor authentication + """ + totpConfigure: Permission! } -"""A blob of XML represented as a pretty formatted string""" +""" +A blob of XML represented as a pretty formatted string +""" scalar XML -"""A blob of YAML""" +""" +A blob of YAML +""" scalar YAML - From 2c96b7ec659984671dd36019a549e9a912565b51 Mon Sep 17 00:00:00 2001 From: Joe Coleman Date: Fri, 7 Aug 2026 16:33:50 +0100 Subject: [PATCH 2/2] Apply --state server-side when filtering by --queue --- cmd/job/graphql/jobs.graphql | 8 +- cmd/job/list.go | 110 +++++++++---- cmd/job/list_test.go | 290 ++++++++++++++++++++++++++++++++++ internal/graphql/generated.go | 36 +++-- 4 files changed, 394 insertions(+), 50 deletions(-) diff --git a/cmd/job/graphql/jobs.graphql b/cmd/job/graphql/jobs.graphql index 4428b5da..45c6f334 100644 --- a/cmd/job/graphql/jobs.graphql +++ b/cmd/job/graphql/jobs.graphql @@ -36,9 +36,9 @@ query FindQueuesForCluster($clusterId: ID!, $cursor: String) { } } -query ListJobsByQueue($org: ID!, $clusterQueue: [ID!], $first: Int, $after: String) { +query ListJobsByQueue($org: ID!, $clusterQueue: [ID!], $state: [JobStates!], $first: Int, $after: String) { organization(slug: $org) { - jobs(clusterQueue: $clusterQueue, first: $first, after: $after) { + jobs(clusterQueue: $clusterQueue, state: $state, first: $first, after: $after) { edges { node { ... on JobTypeCommand { @@ -117,9 +117,9 @@ query ListJobsByState($org: ID!, $state: [JobStates!], $first: Int, $after: Stri } } -query ListJobsByAgentQueryRules($org: ID!, $agentQueryRules: [String!], $first: Int, $after: String) { +query ListJobsByAgentQueryRules($org: ID!, $agentQueryRules: [String!], $state: [JobStates!], $first: Int, $after: String) { organization(slug: $org) { - jobs(first: $first, after: $after, agentQueryRules: $agentQueryRules) { + jobs(first: $first, after: $after, agentQueryRules: $agentQueryRules, state: $state) { edges { node { ... on JobTypeCommand { diff --git a/cmd/job/list.go b/cmd/job/list.go index a1b82f90..25e2730d 100644 --- a/cmd/job/list.go +++ b/cmd/job/list.go @@ -26,6 +26,8 @@ import ( const ( maxJobLimit = 5000 pageSize = 100 + // Pages to walk while a filter the server cannot apply is discarding results. + maxClientFilterPages = 20 ) type ListCmd struct { @@ -49,14 +51,13 @@ func (c *ListCmd) Help() string { When a build number is known, use --build to fetch its jobs directly. The pipeline can be passed with --pipeline or resolved from the current repository or config. -Client-side filters: --queue, --state, --duration -Server-side filters: --pipeline, --build, --step-key, --group-key, --since, --until +Server-side filters: --pipeline, --build, --step-key, --group-key, --since, +--until, --queue, --state -With --build, --state is also applied by the server. Client-side filters and -ordering are applied after all required cursor pages have been fetched. +Client-side filters: --duration, and --state without --queue or --build Without --build, the command fetches up to 200 builds for filtering by default. -Use --no-limit if you need to search across more builds to find all matching jobs. +Use --no-limit to search further. Jobs can be filtered by queue, state, duration, and other attributes. When filtering by duration, you can use operators like >, <, >=, and <= to specify your criteria. @@ -69,6 +70,9 @@ Examples: # List jobs from a specific queue $ bk job list --queue test-queue + # List running jobs in a queue (both filters applied by the server) + $ bk job list --queue test-queue --state running + # List running jobs $ bk job list --state running @@ -381,15 +385,25 @@ func fetchJobs(ctx context.Context, f *factory.Factory, org string, opts jobList return allJobs, nil } -type listJobsByQueue func(ctx context.Context, f *factory.Factory, org string, queueIDs []string, cursor *string) ([]buildkite.Job, *string, bool, error) +type listJobsByQueue func(ctx context.Context, f *factory.Factory, org string, queueIDs []string, states []bkGraphQL.JobStates, cursor *string) ([]buildkite.Job, *string, bool, error) func listJobsWithPagination(ctx context.Context, f *factory.Factory, org string, queueIDs []string, opts jobListOptions, listJobs listJobsByQueue) ([]buildkite.Job, error) { var jobs []buildkite.Job var cursor *string - noQueueOpts := opts.withoutQueue() + states, exactStates := graphQLStatesFor(opts.state) + + clientOpts := opts.withoutQueue() + if exactStates { + clientOpts.state = nil + } + + // Without a bound, a filter matching fewer than --limit jobs walks the + // queue's entire history. + pagesRemaining := maxClientFilterPages + boundPages := !opts.noLimit && (len(clientOpts.state) > 0 || clientOpts.duration != "") for len(jobs) < opts.limit { - jobBatch, nextCursor, hasNext, err := listJobs(ctx, f, org, queueIDs, cursor) + jobBatch, nextCursor, hasNext, err := listJobs(ctx, f, org, queueIDs, states, cursor) if err != nil { return nil, err } @@ -398,8 +412,8 @@ func listJobsWithPagination(ctx context.Context, f *factory.Factory, org string, } // Apply client-side filters if needed - if len(noQueueOpts.state) > 0 || noQueueOpts.duration != "" { - jobBatch, err = applyClientSideFilters(jobBatch, noQueueOpts, nil) + if len(clientOpts.state) > 0 || clientOpts.duration != "" { + jobBatch, err = applyClientSideFilters(jobBatch, clientOpts, nil) if err != nil { return nil, fmt.Errorf("failed to apply filters: %w", err) } @@ -415,6 +429,12 @@ func listJobsWithPagination(ctx context.Context, f *factory.Factory, org string, if !hasNext { break } + if boundPages { + if pagesRemaining--; pagesRemaining <= 0 { + fmt.Fprintf(os.Stderr, "Stopped after searching %d jobs. Narrow the search, or use --no-limit to keep going.\n", maxClientFilterPages*pageSize) + break + } + } cursor = nextCursor } @@ -570,9 +590,9 @@ func fetchQueuesForCluster(ctx context.Context, client graphql.Client, clusterID return matchingQueueIDs, nil } -func listJobsByClusterQueue(ctx context.Context, f *factory.Factory, org string, queueIDs []string, cursor *string) ([]buildkite.Job, *string, bool, error) { +func listJobsByClusterQueue(ctx context.Context, f *factory.Factory, org string, queueIDs []string, states []bkGraphQL.JobStates, cursor *string) ([]buildkite.Job, *string, bool, error) { first := pageSize - resp, err := bkGraphQL.ListJobsByQueue(ctx, f.GraphQLClient, org, queueIDs, &first, cursor) + resp, err := bkGraphQL.ListJobsByQueue(ctx, f.GraphQLClient, org, queueIDs, states, &first, cursor) if err != nil { return nil, nil, false, fmt.Errorf("failed to list jobs: %w", err) } @@ -633,10 +653,10 @@ func convertGraphQLJobToBuildkiteJob(jobNode *bkGraphQL.ListJobsByQueueOrganizat } } -func listJobsByAgentQueryRules(ctx context.Context, f *factory.Factory, org string, agentQueryRules []string, cursor *string) ([]buildkite.Job, *string, bool, error) { +func listJobsByAgentQueryRules(ctx context.Context, f *factory.Factory, org string, agentQueryRules []string, states []bkGraphQL.JobStates, cursor *string) ([]buildkite.Job, *string, bool, error) { first := pageSize - resp, err := bkGraphQL.ListJobsByAgentQueryRules(ctx, f.GraphQLClient, org, agentQueryRules, &first, cursor) + resp, err := bkGraphQL.ListJobsByAgentQueryRules(ctx, f.GraphQLClient, org, agentQueryRules, states, &first, cursor) if err != nil { return nil, nil, false, fmt.Errorf("failed to list jobs: %w", err) } @@ -734,31 +754,53 @@ func derefString(s *string) string { // mapGraphQLState converts GraphQL job states to REST API equivalent states func mapGraphQLState(graphqlState, exitStatus string) string { - switch graphqlState { - case "FINISHED": - // For finished jobs, determine success/failure based on exit status + // FINISHED is the only state REST splits, by exit status. A job with no + // exit status recorded counts as failed. + if graphqlState == "FINISHED" { if exitStatus == "0" { return "passed" } return "failed" - case "RUNNING": - return "running" - case "SCHEDULED", "ASSIGNED", "ACCEPTED": - return "scheduled" - case "CANCELED", "CANCELING": - return "canceled" - case "TIMED_OUT", "TIMING_OUT": - return "timed_out" - case "SKIPPED": - return "skipped" - case "BLOCKED": - return "blocked" - case "WAITING": - return "waiting" - default: - // For unknown states, return lowercase version of GraphQL state - return strings.ToLower(graphqlState) } + + return strings.ToLower(graphqlState) +} + +// --state values with no single JobStates equivalent. +var inexactGraphQLStates = map[string][]bkGraphQL.JobStates{ + "passed": {bkGraphQL.JobStatesFinished}, + "failed": {bkGraphQL.JobStatesFinished}, +} + +// graphQLStatesFor maps --state values onto JobStates for the server-side +// filter. The bool reports whether the server alone produces the exact set; +// passed and failed are both FINISHED, so those still need the client pass. +func graphQLStatesFor(states []string) ([]bkGraphQL.JobStates, bool) { + var mapped []bkGraphQL.JobStates + seen := make(map[bkGraphQL.JobStates]struct{}, len(states)) + exact := true + + for _, state := range states { + normalized := strings.ToLower(strings.TrimSpace(state)) + + candidates, inexact := inexactGraphQLStates[normalized] + if inexact { + exact = false + } else { + // Uppercasing also covers states newer than the vendored schema. + candidates = []bkGraphQL.JobStates{bkGraphQL.JobStates(strings.ToUpper(normalized))} + } + + for _, candidate := range candidates { + if _, ok := seen[candidate]; ok { + continue + } + seen[candidate] = struct{}{} + mapped = append(mapped, candidate) + } + } + + return mapped, exact } func jobListOptionsFromFlags(opts *jobListOptions) (*buildkite.BuildsListOptions, error) { diff --git a/cmd/job/list_test.go b/cmd/job/list_test.go index 06a700f8..8ed3d24b 100644 --- a/cmd/job/list_test.go +++ b/cmd/job/list_test.go @@ -15,6 +15,7 @@ import ( "github.com/Khan/genqlient/graphql" "github.com/alecthomas/kong" "github.com/buildkite/cli/v3/internal/config" + bkGraphQL "github.com/buildkite/cli/v3/internal/graphql" "github.com/buildkite/cli/v3/internal/pipeline" "github.com/buildkite/cli/v3/pkg/cmd/factory" "github.com/buildkite/cli/v3/pkg/output" @@ -520,3 +521,292 @@ func TestFilterJobs(t *testing.T) { t.Errorf("Expected 1 job with 'test-queue', got %d", len(filtered)) } } + +func TestGraphQLStatesFor(t *testing.T) { + tests := []struct { + name string + states []string + want []bkGraphQL.JobStates + wantExact bool + }{ + {name: "empty", states: nil, want: nil, wantExact: true}, + {name: "running", states: []string{"running"}, want: []bkGraphQL.JobStates{"RUNNING"}, wantExact: true}, + {name: "mixed case", states: []string{"ScHeDuLeD"}, want: []bkGraphQL.JobStates{"SCHEDULED"}, wantExact: true}, + {name: "distinct states are not collapsed", states: []string{"assigned", "accepted"}, want: []bkGraphQL.JobStates{"ASSIGNED", "ACCEPTED"}, wantExact: true}, + {name: "states with no generated constant still map", states: []string{"platform_limited"}, want: []bkGraphQL.JobStates{"PLATFORM_LIMITED"}, wantExact: true}, + {name: "passed narrows to finished", states: []string{"passed"}, want: []bkGraphQL.JobStates{"FINISHED"}, wantExact: false}, + {name: "failed narrows to finished", states: []string{"failed"}, want: []bkGraphQL.JobStates{"FINISHED"}, wantExact: false}, + {name: "passed and failed dedupe", states: []string{"passed", "failed"}, want: []bkGraphQL.JobStates{"FINISHED"}, wantExact: false}, + {name: "one inexact state taints the set", states: []string{"running", "passed"}, want: []bkGraphQL.JobStates{"RUNNING", "FINISHED"}, wantExact: false}, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, exact := graphQLStatesFor(tt.states) + if fmt.Sprint(got) != fmt.Sprint(tt.want) { + t.Fatalf("states = %v, want %v", got, tt.want) + } + if exact != tt.wantExact { + t.Fatalf("exact = %v, want %v", exact, tt.wantExact) + } + }) + } +} + +func TestMapGraphQLStateKeepsDistinctStates(t *testing.T) { + tests := []struct { + graphqlState string + exitStatus string + want string + }{ + {graphqlState: "RUNNING", want: "running"}, + {graphqlState: "SCHEDULED", want: "scheduled"}, + {graphqlState: "ASSIGNED", want: "assigned"}, + {graphqlState: "ACCEPTED", want: "accepted"}, + {graphqlState: "CANCELING", want: "canceling"}, + {graphqlState: "CANCELED", want: "canceled"}, + {graphqlState: "TIMING_OUT", want: "timing_out"}, + {graphqlState: "TIMED_OUT", want: "timed_out"}, + {graphqlState: "FINISHED", exitStatus: "0", want: "passed"}, + {graphqlState: "FINISHED", exitStatus: "1", want: "failed"}, + {graphqlState: "FINISHED", want: "failed"}, + } + + for _, tt := range tests { + t.Run(tt.graphqlState+"/"+tt.exitStatus, func(t *testing.T) { + if got := mapGraphQLState(tt.graphqlState, tt.exitStatus); got != tt.want { + t.Fatalf("mapGraphQLState(%q, %q) = %q, want %q", tt.graphqlState, tt.exitStatus, got, tt.want) + } + }) + } +} + +// jobListGraphQLServer serves the cluster/queue lookup plus one page of jobs, +// recording the variables each job query was called with. +func jobListGraphQLServer(t *testing.T, jobs string, calls *[]map[string]any) *httptest.Server { + t.Helper() + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + var request struct { + OperationName string `json:"operationName"` + Variables map[string]any `json:"variables"` + } + if err := json.NewDecoder(r.Body).Decode(&request); err != nil { + t.Fatalf("decode GraphQL request: %v", err) + } + w.Header().Set("Content-Type", "application/json") + switch request.OperationName { + case "FindClusters": + _, _ = w.Write([]byte(`{"data":{"organization":{"clusters":{"edges":[{"node":{"id":"cluster-id","name":"Test"}}],"pageInfo":{"hasNextPage":false}}}}}`)) + case "FindQueuesForCluster": + _, _ = w.Write([]byte(`{"data":{"node":{"__typename":"Cluster","id":"cluster-id","name":"Test","queues":{"edges":[{"node":{"id":"test-queue-id","key":"packages-on-origin"}}],"pageInfo":{"hasNextPage":false}}}}}`)) + case "ListJobsByQueue", "ListJobsByAgentQueryRules": + *calls = append(*calls, request.Variables) + _, _ = w.Write([]byte(`{"data":{"organization":{"jobs":{"edges":` + jobs + `,"pageInfo":{"hasNextPage":false}}}}}`)) + default: + t.Fatalf("unexpected GraphQL operation %q", request.OperationName) + } + })) + t.Cleanup(server.Close) + return server +} + +func TestQueueJobListSendsStateFilterToServer(t *testing.T) { + var calls []map[string]any + page := `[{"node":{"__typename":"JobTypeCommand","id":"job-1","uuid":"uuid-1","state":"RUNNING"}}]` + server := jobListGraphQLServer(t, page, &calls) + + f := newJobListTestFactory(t, server.URL, nil) + f.GraphQLClient = graphql.NewClient(server.URL, server.Client()) + + opts := jobListOptions{queue: "packages-on-origin", state: []string{"running"}, limit: 100} + jobs, err := fetchJobsWithQueueFilter(context.Background(), f, "test-org", opts) + if err != nil { + t.Fatalf("fetchJobsWithQueueFilter() error = %v", err) + } + + if len(calls) != 1 { + t.Fatalf("job queries = %d, want a single page", len(calls)) + } + got, ok := calls[0]["state"] + if !ok { + t.Fatalf("state was not sent to the server; variables = %v", calls[0]) + } + if fmt.Sprint(got) != "[RUNNING]" { + t.Fatalf("state = %v, want [RUNNING]", got) + } + if len(jobs) != 1 || jobs[0].State != "running" { + t.Fatalf("jobs = %#v, want the single running job", jobs) + } +} + +func TestQueueJobListStopsPagingWhenServerFiltersState(t *testing.T) { + // The reported hang, against a server that honours the state variable. A + // busy queue with few running jobs used to page forever chasing --limit. + var calls int + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + var request struct { + OperationName string `json:"operationName"` + Variables map[string]any `json:"variables"` + } + if err := json.NewDecoder(r.Body).Decode(&request); err != nil { + t.Fatalf("decode GraphQL request: %v", err) + } + w.Header().Set("Content-Type", "application/json") + switch request.OperationName { + case "FindClusters": + _, _ = w.Write([]byte(`{"data":{"organization":{"clusters":{"edges":[{"node":{"id":"cluster-id","name":"Test"}}],"pageInfo":{"hasNextPage":false}}}}}`)) + case "FindQueuesForCluster": + _, _ = w.Write([]byte(`{"data":{"node":{"__typename":"Cluster","id":"cluster-id","name":"Test","queues":{"edges":[{"node":{"id":"test-queue-id","key":"packages-on-origin"}}],"pageInfo":{"hasNextPage":false}}}}}`)) + case "ListJobsByQueue": + calls++ + if calls > 50 { + t.Fatalf("pager walked the queue's history; %d job queries and counting", calls) + } + if state, ok := request.Variables["state"]; ok && state != nil { + // Filtered: two running jobs, no more. + _, _ = w.Write([]byte(`{"data":{"organization":{"jobs":{"edges":[` + + `{"node":{"__typename":"JobTypeCommand","id":"job-1","uuid":"uuid-1","state":"RUNNING"}},` + + `{"node":{"__typename":"JobTypeCommand","id":"job-2","uuid":"uuid-2","state":"RUNNING"}}` + + `],"pageInfo":{"hasNextPage":false}}}}}`)) + return + } + // Unfiltered: endless history, nothing running. + _, _ = w.Write([]byte(`{"data":{"organization":{"jobs":{"edges":[{"node":{"__typename":"JobTypeCommand","id":"old","uuid":"uuid-old","state":"FINISHED","exitStatus":"0"}}],"pageInfo":{"hasNextPage":true,"endCursor":"next"}}}}}`)) + default: + t.Fatalf("unexpected GraphQL operation %q", request.OperationName) + } + })) + t.Cleanup(server.Close) + + f := newJobListTestFactory(t, server.URL, nil) + f.GraphQLClient = graphql.NewClient(server.URL, server.Client()) + + opts := jobListOptions{queue: "packages-on-origin", state: []string{"running"}, limit: 100} + jobs, err := fetchJobsWithQueueFilter(context.Background(), f, "test-org", opts) + if err != nil { + t.Fatalf("fetchJobsWithQueueFilter() error = %v", err) + } + + if calls != 1 { + t.Fatalf("job queries = %d, want a single filtered page", calls) + } + if len(jobs) != 2 { + t.Fatalf("jobs = %d, want the 2 running jobs", len(jobs)) + } +} + +func TestQueueJobListKeepsClientFilterForPassed(t *testing.T) { + // passed and failed both narrow to FINISHED, so the client pass still has + // to split them by exit status. + var calls []map[string]any + page := `[` + + `{"node":{"__typename":"JobTypeCommand","id":"ok","uuid":"uuid-ok","state":"FINISHED","exitStatus":"0"}},` + + `{"node":{"__typename":"JobTypeCommand","id":"bad","uuid":"uuid-bad","state":"FINISHED","exitStatus":"1"}}` + + `]` + server := jobListGraphQLServer(t, page, &calls) + + f := newJobListTestFactory(t, server.URL, nil) + f.GraphQLClient = graphql.NewClient(server.URL, server.Client()) + + opts := jobListOptions{queue: "packages-on-origin", state: []string{"passed"}, limit: 100} + jobs, err := fetchJobsWithQueueFilter(context.Background(), f, "test-org", opts) + if err != nil { + t.Fatalf("fetchJobsWithQueueFilter() error = %v", err) + } + + if fmt.Sprint(calls[0]["state"]) != "[FINISHED]" { + t.Fatalf("state = %v, want [FINISHED]", calls[0]["state"]) + } + if len(jobs) != 1 || jobs[0].ID != "ok" { + t.Fatalf("jobs = %#v, want only the passed job", jobs) + } +} + +func TestQueueJobListBoundsPagingForClientSideFilters(t *testing.T) { + // --duration has no server-side equivalent, so the pager has to give up + // rather than walk the whole queue. + var calls int + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + var request struct { + OperationName string `json:"operationName"` + } + if err := json.NewDecoder(r.Body).Decode(&request); err != nil { + t.Fatalf("decode GraphQL request: %v", err) + } + w.Header().Set("Content-Type", "application/json") + switch request.OperationName { + case "FindClusters": + _, _ = w.Write([]byte(`{"data":{"organization":{"clusters":{"edges":[{"node":{"id":"cluster-id","name":"Test"}}],"pageInfo":{"hasNextPage":false}}}}}`)) + case "FindQueuesForCluster": + _, _ = w.Write([]byte(`{"data":{"node":{"__typename":"Cluster","id":"cluster-id","name":"Test","queues":{"edges":[{"node":{"id":"test-queue-id","key":"busy"}}],"pageInfo":{"hasNextPage":false}}}}}`)) + case "ListJobsByQueue": + calls++ + if calls > maxClientFilterPages*2 { + t.Fatalf("pager did not stop; %d job queries and counting", calls) + } + // A job that never satisfies --duration, on an endless cursor. + _, _ = w.Write([]byte(`{"data":{"organization":{"jobs":{"edges":[{"node":{"__typename":"JobTypeCommand","id":"job","uuid":"uuid","state":"FINISHED","exitStatus":"0"}}],"pageInfo":{"hasNextPage":true,"endCursor":"next"}}}}}`)) + default: + t.Fatalf("unexpected GraphQL operation %q", request.OperationName) + } + })) + t.Cleanup(server.Close) + + f := newJobListTestFactory(t, server.URL, nil) + f.GraphQLClient = graphql.NewClient(server.URL, server.Client()) + + opts := jobListOptions{queue: "busy", duration: ">10m", limit: 100} + jobs, err := fetchJobsWithQueueFilter(context.Background(), f, "test-org", opts) + if err != nil { + t.Fatalf("fetchJobsWithQueueFilter() error = %v", err) + } + + if calls != maxClientFilterPages { + t.Fatalf("job queries = %d, want to stop at %d", calls, maxClientFilterPages) + } + if len(jobs) != 0 { + t.Fatalf("jobs = %d, want none matching", len(jobs)) + } +} + +func TestQueueJobListDoesNotBoundPagingWhenServerFiltersEverything(t *testing.T) { + // No client-side filter left, so the pager runs until it has --limit jobs. + var calls int + server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + var request struct { + OperationName string `json:"operationName"` + } + if err := json.NewDecoder(r.Body).Decode(&request); err != nil { + t.Fatalf("decode GraphQL request: %v", err) + } + w.Header().Set("Content-Type", "application/json") + switch request.OperationName { + case "FindClusters": + _, _ = w.Write([]byte(`{"data":{"organization":{"clusters":{"edges":[{"node":{"id":"cluster-id","name":"Test"}}],"pageInfo":{"hasNextPage":false}}}}}`)) + case "FindQueuesForCluster": + _, _ = w.Write([]byte(`{"data":{"node":{"__typename":"Cluster","id":"cluster-id","name":"Test","queues":{"edges":[{"node":{"id":"test-queue-id","key":"busy"}}],"pageInfo":{"hasNextPage":false}}}}}`)) + case "ListJobsByQueue": + calls++ + _, _ = w.Write([]byte(`{"data":{"organization":{"jobs":{"edges":[{"node":{"__typename":"JobTypeCommand","id":"job","uuid":"uuid","state":"RUNNING"}}],"pageInfo":{"hasNextPage":true,"endCursor":"next"}}}}}`)) + default: + t.Fatalf("unexpected GraphQL operation %q", request.OperationName) + } + })) + t.Cleanup(server.Close) + + f := newJobListTestFactory(t, server.URL, nil) + f.GraphQLClient = graphql.NewClient(server.URL, server.Client()) + + opts := jobListOptions{queue: "busy", state: []string{"running"}, limit: 25} + jobs, err := fetchJobsWithQueueFilter(context.Background(), f, "test-org", opts) + if err != nil { + t.Fatalf("fetchJobsWithQueueFilter() error = %v", err) + } + + if len(jobs) != 25 { + t.Fatalf("jobs = %d, want the full --limit", len(jobs)) + } + if calls != 25 { + t.Fatalf("job queries = %d, want one per job until the limit", calls) + } +} diff --git a/internal/graphql/generated.go b/internal/graphql/generated.go index c5717462..7ead62d9 100644 --- a/internal/graphql/generated.go +++ b/internal/graphql/generated.go @@ -3913,10 +3913,11 @@ func (v *__InviteUserInput) GetEmails() []string { return v.Emails } // __ListJobsByAgentQueryRulesInput is used internally by genqlient type __ListJobsByAgentQueryRulesInput struct { - Org string `json:"org"` - AgentQueryRules []string `json:"agentQueryRules"` - First *int `json:"first"` - After *string `json:"after"` + Org string `json:"org"` + AgentQueryRules []string `json:"agentQueryRules"` + State []JobStates `json:"state"` + First *int `json:"first"` + After *string `json:"after"` } // GetOrg returns __ListJobsByAgentQueryRulesInput.Org, and is useful for accessing the field via an interface. @@ -3925,6 +3926,9 @@ func (v *__ListJobsByAgentQueryRulesInput) GetOrg() string { return v.Org } // GetAgentQueryRules returns __ListJobsByAgentQueryRulesInput.AgentQueryRules, and is useful for accessing the field via an interface. func (v *__ListJobsByAgentQueryRulesInput) GetAgentQueryRules() []string { return v.AgentQueryRules } +// GetState returns __ListJobsByAgentQueryRulesInput.State, and is useful for accessing the field via an interface. +func (v *__ListJobsByAgentQueryRulesInput) GetState() []JobStates { return v.State } + // GetFirst returns __ListJobsByAgentQueryRulesInput.First, and is useful for accessing the field via an interface. func (v *__ListJobsByAgentQueryRulesInput) GetFirst() *int { return v.First } @@ -3933,10 +3937,11 @@ func (v *__ListJobsByAgentQueryRulesInput) GetAfter() *string { return v.After } // __ListJobsByQueueInput is used internally by genqlient type __ListJobsByQueueInput struct { - Org string `json:"org"` - ClusterQueue []string `json:"clusterQueue"` - First *int `json:"first"` - After *string `json:"after"` + Org string `json:"org"` + ClusterQueue []string `json:"clusterQueue"` + State []JobStates `json:"state"` + First *int `json:"first"` + After *string `json:"after"` } // GetOrg returns __ListJobsByQueueInput.Org, and is useful for accessing the field via an interface. @@ -3945,6 +3950,9 @@ func (v *__ListJobsByQueueInput) GetOrg() string { return v.Org } // GetClusterQueue returns __ListJobsByQueueInput.ClusterQueue, and is useful for accessing the field via an interface. func (v *__ListJobsByQueueInput) GetClusterQueue() []string { return v.ClusterQueue } +// GetState returns __ListJobsByQueueInput.State, and is useful for accessing the field via an interface. +func (v *__ListJobsByQueueInput) GetState() []JobStates { return v.State } + // GetFirst returns __ListJobsByQueueInput.First, and is useful for accessing the field via an interface. func (v *__ListJobsByQueueInput) GetFirst() *int { return v.First } @@ -4344,9 +4352,9 @@ func InviteUser( // The query executed by ListJobsByAgentQueryRules. const ListJobsByAgentQueryRules_Operation = ` -query ListJobsByAgentQueryRules ($org: ID!, $agentQueryRules: [String!], $first: Int, $after: String) { +query ListJobsByAgentQueryRules ($org: ID!, $agentQueryRules: [String!], $state: [JobStates!], $first: Int, $after: String) { organization(slug: $org) { - jobs(first: $first, after: $after, agentQueryRules: $agentQueryRules) { + jobs(first: $first, after: $after, agentQueryRules: $agentQueryRules, state: $state) { edges { node { __typename @@ -4383,6 +4391,7 @@ func ListJobsByAgentQueryRules( client_ graphql.Client, org string, agentQueryRules []string, + state []JobStates, first *int, after *string, ) (data_ *ListJobsByAgentQueryRulesResponse, err_ error) { @@ -4392,6 +4401,7 @@ func ListJobsByAgentQueryRules( Variables: &__ListJobsByAgentQueryRulesInput{ Org: org, AgentQueryRules: agentQueryRules, + State: state, First: first, After: after, }, @@ -4411,9 +4421,9 @@ func ListJobsByAgentQueryRules( // The query executed by ListJobsByQueue. const ListJobsByQueue_Operation = ` -query ListJobsByQueue ($org: ID!, $clusterQueue: [ID!], $first: Int, $after: String) { +query ListJobsByQueue ($org: ID!, $clusterQueue: [ID!], $state: [JobStates!], $first: Int, $after: String) { organization(slug: $org) { - jobs(clusterQueue: $clusterQueue, first: $first, after: $after) { + jobs(clusterQueue: $clusterQueue, state: $state, first: $first, after: $after) { edges { node { __typename @@ -4458,6 +4468,7 @@ func ListJobsByQueue( client_ graphql.Client, org string, clusterQueue []string, + state []JobStates, first *int, after *string, ) (data_ *ListJobsByQueueResponse, err_ error) { @@ -4467,6 +4478,7 @@ func ListJobsByQueue( Variables: &__ListJobsByQueueInput{ Org: org, ClusterQueue: clusterQueue, + State: state, First: first, After: after, },