"""
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 {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  id: ID!
}

"""
Autogenerated return type of APIAccessTokenCodeAuthorizeMutation.
"""
type APIAccessTokenCodeAuthorizeMutationPayload {
  apiAccessTokenCode: APIAccessTokenCode!

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
All possible scopes on a user's API Access Token
"""
enum APIAccessTokenScopes {
  GRAPHQL
  READ_AGENTS
  READ_ARTIFACTS
  READ_BUILDS
  READ_BUILD_LOGS
  READ_CLUSTERS
  READ_JOB_ENV
  READ_NOTIFICATION_SERVICES
  READ_ORGANIZATIONS
  READ_PIPELINES
  READ_PIPELINE_TEMPLATES
  READ_SUITES
  READ_TEAMS
  READ_USER
  WRITE_AGENTS
  WRITE_ARTIFACTS
  WRITE_BUILDS
  WRITE_BUILD_LOGS
  WRITE_CLUSTERS
  WRITE_NOTIFICATION_SERVICES
  WRITE_PIPELINES
  WRITE_PIPELINE_TEMPLATES
  WRITE_SUITES
}

"""
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 elements in the list that come after the specified cursor.
    """
    after: String
    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
  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!
}

type AgentConnection implements Connection {
  count: Int!
  edges: [AgentEdge]
  pageInfo: PageInfo
}

type AgentEdge {
  cursor: String!
  node: Agent
}

"""
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
}

"""
Autogenerated input type of AgentStop
"""
input AgentStopInput {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  If this agent should finish the current job before stopping
  """
  graceful: Boolean = true
  id: ID!
}

"""
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! @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 AgentTokenConnection implements Connection {
  count: Int!
  edges: [AgentTokenEdge]
  pageInfo: PageInfo
}

"""
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
}

"""
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 agent. Please ensure to securely copy
  this value immediately upon generation as it will not be displayed again.
  """
  tokenValue: String!
}

type AgentTokenEdge {
  cursor: String!
  node: AgentToken
}

"""
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 input type of AgentTokenRevoke
"""
input AgentTokenRevokeInput {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  id: ID!

  """
  The reason why this agent token should be revoked
  """
  reason: 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 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!
}

type AnnotationConnection implements Connection {
  count: Int!
  edges: [AnnotationEdge]
  pageInfo: PageInfo
}

type AnnotationEdge {
  cursor: String!
  node: Annotation
}

"""
The visual style of the annotation
"""
enum AnnotationStyle {
  """
  The default styling of an annotation
  """
  DEFAULT

  """
   The annotation has a red border with a cross next to it
  """
  ERROR

  """
  The annotation has a blue border with an information icon next to it
  """
  INFO

  """
  The annotation has a green border with a tick next to it
  """
  SUCCESS

  """
  The annotation has an orange border with a warning icon next to it
  """
  WARNING
}

"""
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!

  """
  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
}

type ArtifactEdge {
  cursor: String!
  node: Artifact
}

"""
Context for an audit event created during an REST/GraphQL API request
"""
type AuditAPIContext {
  """
  The remote IP which made the request
  """
  requestIpAddress: String

  """
  The client supplied user agent which made the request
  """
  requestUserAgent: 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 = User

"""
All the possible types of actors in an Audit Event
"""
enum AuditActorType {
  USER
}

"""
Kinds of contexts in which an audit event can be performed
"""
union AuditContext = AuditAPIContext | 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 {
  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
  AUTHORIZATION_CREATED
  AUTHORIZATION_DELETED
  CLUSTER_CREATED
  CLUSTER_DELETED
  CLUSTER_PERMISSION_CREATED
  CLUSTER_PERMISSION_DELETED
  CLUSTER_QUEUE_CREATED
  CLUSTER_QUEUE_DELETED
  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
  SUBSCRIPTION_PLAN_CHANGED
  SUBSCRIPTION_PLAN_CHANGE_SCHEDULED
  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 | ClusterToken | Email | NotificationServiceSlack | NotificationServiceWebhook | Organization | OrganizationBanner | OrganizationInvitation | OrganizationMember | Pipeline | PipelineSchedule | PipelineTemplate | SCMPipelineSettings | SCMRepositoryHost | SCMService | SSOProviderGitHubApp | SSOProviderGoogleGSuite | SSOProviderSAML | Subscription | Suite | TOTP | Team | TeamMember | TeamPipeline | TeamSuite | User

"""
All the possible types of subjects in an Audit Event
"""
enum AuditSubjectType {
  AGENT_TOKEN
  API_ACCESS_TOKEN
  AUTHORIZATION
  CLUSTER
  CLUSTER_PERMISSION
  CLUSTER_QUEUE
  CLUSTER_TOKEN
  NOTIFICATION_SERVICE
  ORGANIZATION
  ORGANIZATION_BANNER
  ORGANIZATION_INVITATION
  ORGANIZATION_MEMBER
  PIPELINE
  PIPELINE_SCHEDULE
  PIPELINE_TEMPLATE
  SCM_PIPELINE_SETTINGS
  SCM_REPOSITORY_HOST
  SCM_SERVICE
  SSO_PROVIDER
  SUBSCRIPTION
  SUITE
  SUITE_MONITOR
  TEAM
  TEAM_MEMBER
  TEAM_PIPELINE
  TEAM_SUITE
  USER
  USER_EMAIL
  USER_TOTP
}

"""
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
}

interface Authorization {
  """
  ID of the object.
  """
  id: ID!
}

"""
A Bitbucket account authorized with a Buildkite account
"""
type AuthorizationBitbucket implements Authorization & Node {
  """
  ID of the object.
  """
  id: ID!
}

type AuthorizationConnection implements Connection {
  count: Int!
  edges: [AuthorizationEdge]
  pageInfo: PageInfo
}

type AuthorizationEdge {
  cursor: String!
  node: Authorization
}

"""
A GitHub account authorized with a Buildkite account
"""
type AuthorizationGitHub implements Authorization & Node {
  """
  ID of the object.
  """
  id: ID!
}

"""
A GitHub app authorized with a Buildkite account
"""
type AuthorizationGitHubApp implements Authorization & Node {
  """
  ID of the object.
  """
  id: ID!
}

"""
A GitHub Enterprise account authorized with a Buildkite account
"""
type AuthorizationGitHubEnterprise implements Authorization & Node {
  """
  ID of the object.
  """
  id: ID!
}

"""
A Google account authorized with a Buildkite account
"""
type AuthorizationGoogle implements Authorization & Node {
  """
  ID of the object.
  """
  id: ID!
}

"""
A SAML account authorized with a Buildkite account
"""
type AuthorizationSAML implements Authorization & Node {
  """
  ID of the object.
  """
  id: ID!
}

"""
The type of the authorization
"""
enum AuthorizationType {
  """
  Bitbucket Authorization
  """
  BITBUCKET

  """
  GitHub Authorization
  """
  GITHUB

  """
  GitHub Enterprise Authorization
  """
  GITHUB_ENTERPRISE
}

"""
An avatar belonging to a user
"""
type Avatar {
  """
  The URL of the avatar
  """
  url: String!
}

"""
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
    style: [AnnotationStyle!]
  ): 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 elements in the list that come after the specified cursor.
    """
    after: String
    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 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"

  """
  The style of the annotation. The default is `DEFAULT`
  """
  style: AnnotationStyle = DEFAULT
}

"""
Autogenerated return type of BuildAnnotate.
"""
type BuildAnnotatePayload {
  annotation: Annotation
  annotationEdge: AnnotationEdge
  build: Build

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Author for a build
"""
input BuildAuthorInput {
  """
  The email for the build author
  """
  email: String!

  """
  The name for the build author
  """
  name: String!
}

"""
All the possible blocked states a build can be in
"""
enum BuildBlockedStates {
  """
  The blocked build is failed
  """
  FAILED

  """
  The blocked build is passed
  """
  PASSED

  """
  The blocked build is running
  """
  RUNNING
}

"""
Autogenerated input type of BuildCancel
"""
input BuildCancelInput {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  id: ID!
}

"""
Autogenerated return type of BuildCancel.
"""
type BuildCancelPayload {
  build: Build!

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

type BuildConnection implements Connection {
  count: Int!
  edges: [BuildEdge]
  pageInfo: PageInfo
}

"""
Autogenerated input type of BuildCreate
"""
input BuildCreateInput {
  author: BuildAuthorInput

  """
  The branch for the build
  """
  branch: String

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  The commit for the build
  """
  commit: String

  """
  Environment variables used for the build
  """
  env: [String!]

  """
  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!
}

"""
Autogenerated return type of BuildCreate.
"""
type BuildCreatePayload {
  build: Build

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
Either a `User` or an `UnregisteredUser` type
"""
union BuildCreator = UnregisteredUser | User

type BuildEdge {
  cursor: String!
  node: Build
}

"""
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!
}

type BuildMetaDataConnection implements Connection {
  count: Int!
  edges: [BuildMetaDataEdge]
  pageInfo: PageInfo
}

type BuildMetaDataEdge {
  cursor: String!
  node: BuildMetaData
}

"""
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!
}

"""
Autogenerated input type of BuildRebuild
"""
input BuildRebuildInput {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  id: ID!
}

"""
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 build retention periods, depending on your billing plan
"""
enum BuildRetentionPeriods {
  """
  30 days
  """
  DAYS_30

  """
  60 days
  """
  DAYS_60

  """
  90 days
  """
  DAYS_90

  """
  12 months
  """
  MONTHS_12

  """
  18 months
  """
  MONTHS_18

  """
  6 months
  """
  MONTHS_6

  """
  2 years
  """
  YEARS_2
}

interface BuildSource {
  name: String!
}

"""
A build was triggered via an API
"""
type BuildSourceAPI implements BuildSource {
  name: String!
}

"""
A build was triggered manually via the frontend
"""
type BuildSourceFrontend implements BuildSource {
  name: String!
}

"""
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 build was triggered via a trigger job
"""
type BuildSourceTriggerJob implements BuildSource {
  name: String!
}

"""
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
}

"""
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
}

"""
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 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 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
}

"""
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!

  """
  Agents registered with this token will use a unique token for each job. Please
  note that this feature is not yet available to all organizations
  """
  jobTokensEnabled: Boolean
  organizationId: ID!
}

"""
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 to this tokens cluster. Please
  ensure to securely copy this value immediately upon generation as it will not
  be displayed again.
  """
  tokenValue: String!
}

type ClusterAgentTokenEdge {
  cursor: String!
  node: ClusterToken
}

"""
Autogenerated input type of ClusterAgentTokenRevoke
"""
input ClusterAgentTokenRevokeInput {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  id: ID!
  organizationId: ID!
}

"""
Autogenerated return type of ClusterAgentTokenRevoke.
"""
type ClusterAgentTokenRevokePayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  deletedClusterAgentTokenId: ID!
}

"""
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!

  """
  Agents registered with this token will use a unique token for each job. Please
  note that this feature is not yet available to all organizations
  """
  jobTokensEnabled: Boolean
  organizationId: ID!
}

"""
Autogenerated return type of ClusterAgentTokenUpdate.
"""
type ClusterAgentTokenUpdatePayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  clusterAgentToken: ClusterToken!
}

type ClusterConnection implements Connection {
  count: Int!
  edges: [ClusterEdge]
  pageInfo: PageInfo
}

"""
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!
}

type ClusterEdge {
  cursor: String!
  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
  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 {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  clusterId: ID!

  """
  Description for the queue
  """
  description: String

  """
  The queue tag used to connect an agent to the queue, this can't be updated later
  """
  key: String!
  organizationId: ID!
}

"""
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!
}

type ClusterQueueEdge {
  cursor: String!
  node: ClusterQueue
}

"""
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!
}

"""
Autogenerated input type of ClusterQueueUpdate
"""
input ClusterQueueUpdateInput {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String

  """
  Description for the queue
  """
  description: String
  id: ID!
  organizationId: ID!
}

"""
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!

  """
  Agents registered with this token will use a unique token for each job. Please
  note that this feature is not yet available to all organizations
  """
  jobTokensEnabled: Boolean

  """
  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!
}

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!
}

type DependencyConnection implements Connection {
  count: Int!
  edges: [DependencyEdge]
  pageInfo: PageInfo
}

type DependencyEdge {
  cursor: String!
  node: Dependency
}

"""
A job dispatch for a particular Organization
"""
type Dispatch {
  id: ID!

  """
  The public UUID for this organization dispatch
  """
  uuid: String!
}

"""
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]

  """
  A list of nodes.
  """
  nodes: [Email]
  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!
}

"""
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!
}

"""
An ISO 8601-encoded date
"""
scalar ISO8601Date

"""
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

"""
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 | Dispatch | 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 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!
}

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!
}

"""
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 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
}

"""
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 sent a notification
  """
  NOTIFICATION

  """
  The Job was retried either automatically or by a user
  """
  RETRIED

  """
  The Job was scheduled
  """
  SCHEDULED

  """
  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!
}

"""
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 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 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. 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 {
  """
  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!]

  """
  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 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!

  """
  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 {
  """
  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 {
  """
  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 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 {
  """
  Instruct an agent to stop accepting new build jobs and shut itself down.
  """
  agentStop(
    """
    Parameters for AgentStop
    """
    input: AgentStopInput!
  ): AgentStopPayload

  """
  Create a new agent registration token.
  """
  agentTokenCreate(
    """
    Parameters for AgentTokenCreate
    """
    input: AgentTokenCreateInput!
  ): AgentTokenCreatePayload

  """
  Revoke an agent registration 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 a new cluster agent token
  """
  clusterAgentTokenCreate(
    """
    Parameters for ClusterAgentTokenCreate
    """
    input: ClusterAgentTokenCreateInput!
  ): ClusterAgentTokenCreatePayload

  """
  Revokes a cluster agent token
  """
  clusterAgentTokenRevoke(
    """
    Parameters for ClusterAgentTokenRevoke
    """
    input: ClusterAgentTokenRevokeInput!
  ): ClusterAgentTokenRevokePayload

  """
  Updates a cluster agent token
  """
  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 {
  """
  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 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!]

    """
    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
    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

    """
    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
    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!

  """
  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 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

  """
  Returns the resource usage data for this organization.
  """
  usage(
    """
    Returns the elements in the list that come after the specified cursor.
    """
    after: String

    """
    Filter aggregations performed from this date
    """
    aggregatedOnFrom: ISO8601Date

    """
    Filter aggregations performed until this date
    """
    aggregatedOnTo: ISO8601Date

    """
    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 results by the associated Pipeline ID
    """
    pipelineIds: [ID!] = []

    """
    Filter results by resource type
    """
    resource: [ResourceUsageType!] = [JOB_MINUTES, TEST_EXECUTIONS]

    """
    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!
}

"""
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 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 {
  """
  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
}

type OrganizationInvitationEdge {
  cursor: String!
  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!
}

type OrganizationInvitationTeamAssignmentConnection implements Connection {
  count: Int!
  edges: [OrganizationInvitationTeamAssignmentEdge]
  pageInfo: PageInfo
}

type OrganizationInvitationTeamAssignmentEdge {
  cursor: String!
  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!
  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!
}

type OrganizationMemberConnection implements Connection {
  count: Int!
  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
}

type OrganizationMemberEdge {
  cursor: String!
  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!
}

type OrganizationMemberPipelineConnection implements Connection {
  count: Int!
  edges: [OrganizationMemberPipelineEdge]
  pageInfo: PageInfo
}

type OrganizationMemberPipelineEdge {
  cursor: String!
  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
}

"""
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

  """
  A branch filter pattern to limit which pushed branches trigger builds on this pipeline.
  """
  branchConfiguration: String

  """
  Choose to keep builds or remove them after a set time period. Pipelines are
  scanned once a day for builds that can be removed according to these settings.
  """
  buildRetentionEnabled: Boolean @deprecated(reason: "Build retention is now determined by your billing plan. This field is no longer used and always returns null.")

  """
  The minimum number of builds to keep in the pipeline regardless of how old the builds are.
  """
  buildRetentionNumber: Int @deprecated(reason: "Build retention is now determined by your billing plan. This field is no longer used and always returns null.")

  """
  How long is a build kept before it is automatically removed.
  """
  buildRetentionPeriod: BuildRetentionPeriods @deprecated(reason: "Build retention is now determined by your billing plan. This field is no longer used and always returns null.")

  """
  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
  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
    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 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! @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 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 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!
}

type PipelineConnection implements Connection {
  count: Int!
  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

  """
  Choose to keep builds or remove them after a set time period. Pipelines are
  scanned once a day for builds that can be removed according to these settings.
  Some billing plans require this setting to be enabled.
  """
  buildRetentionEnabled: Boolean @deprecated(reason: "Build retention is now determined by your billing plan. This field is no longer used and always returns null.")

  """
  The minimum number of builds to keep in the pipeline regardless of how old the builds are.
  """
  buildRetentionNumber: Int @deprecated(reason: "Build retention is now determined by your billing plan. This field is no longer used and always returns null.")

  """
  How long is a build kept before it is automatically removed.
  """
  buildRetentionPeriod: BuildRetentionPeriods @deprecated(reason: "Build retention is now determined by your billing plan. This field is no longer used and always returns null.")

  """
  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

  """
  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 in the sequence
  """
  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
  id: ID!
}

"""
Autogenerated return type of PipelineCreateWebhook.
"""
type PipelineCreateWebhookPayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  pipelineID: ID!
}

"""
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!
}

type PipelineEdge {
  cursor: String!
  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
}

type PipelineMetricConnection implements Connection {
  count: Int!
  edges: [PipelineMetricEdge]
  pageInfo: PageInfo
}

type PipelineMetricEdge {
  cursor: String!
  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!
}

type PipelineScheduleConnection implements Connection {
  count: Int!
  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
}

type PipelineScheduleEdge {
  cursor: String!
  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!
}

type PipelineTemplateConnection implements Connection {
  count: Int!
  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!
}

type PipelineTemplateEdge {
  cursor: String!
  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

  """
  Choose to keep builds or remove them after a set time period. Pipelines are
  scanned once a day for builds that can be removed according to these settings.
  Some billing plans require this setting to be enabled.
  """
  buildRetentionEnabled: Boolean @deprecated(reason: "Build retention is now determined by your billing plan. This field is no longer used and always returns null.")

  """
  The minimum number of builds to keep in the pipeline regardless of how old the builds are.
  """
  buildRetentionNumber: Int @deprecated(reason: "Build retention is now determined by your billing plan. This field is no longer used and always returns null.")

  """
  How long is a build kept before it is automatically removed.
  """
  buildRetentionPeriod: BuildRetentionPeriods @deprecated(reason: "Build retention is now determined by your billing plan. This field is no longer used and always returns null.")

  """
  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

  """
  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 in the sequence
  """
  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 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 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!

  """
  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 {
  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 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 SCMPipelineSettings {
  id: ID!
}

type SCMRepositoryHost {
  id: ID!
}

type SCMService {
  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
}

type SSOAuthorizationEdge {
  cursor: String!
  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
}

"""
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 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 {
  """
  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 {
  """
  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!
}

"""
Autogenerated input type of SSOProviderDelete
"""
input SSOProviderDeleteInput {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  id: ID!
}

"""
Autogenerated return type of SSOProviderDelete.
"""
type SSOProviderDeletePayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  deletedSSOProviderId: ID!
  organization: Organization!
}

"""
Autogenerated input type of SSOProviderDisable
"""
input SSOProviderDisableInput {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  disabledReason: String
  id: ID!
}

"""
Autogenerated return type of SSOProviderDisable.
"""
type SSOProviderDisablePayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  ssoProvider: SSOProvider!
}

type SSOProviderEdge {
  cursor: String!
  node: SSOProvider
}

"""
Autogenerated input type of SSOProviderEnable
"""
input SSOProviderEnableInput {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  id: ID!
}

"""
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!
}

input SSOProviderSAMLIdP {
  certificate: String
  issuer: String
  metadata: SSOProviderSAMLIdPMetadata
  ssoURL: String
}

input SSOProviderSAMLIdPMetadata {
  url: String
  xml: XML
}

"""
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
"""
type SSOProviderSAMLMetadataType {
  """
  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
"""
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
}

"""
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
}

"""
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
}

"""
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 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
"""
enum SSOProviderTypes {
  """
  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
"""
input SSOProviderUpdateInput {
  """
  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!
}

interface 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 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 time when the suite was created
  """
  createdAt: DateTime

  """
  The default branch for this suite
  """
  defaultBranch: 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
}

type SuiteConnection implements Connection {
  count: Int!
  edges: [SuiteEdge]
  pageInfo: PageInfo
}

type SuiteEdge {
  cursor: String!
  node: Suite
}

"""
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
}

"""
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!
}

"""
Autogenerated input type of TOTPActivate
"""
input TOTPActivateInput {
  """
  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.
"""
type TOTPActivatePayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  totp: TOTP!
  viewer: Viewer!
}

"""
Autogenerated input type of TOTPCreate
"""
input TOTPCreateInput {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
}

"""
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!
}

"""
Autogenerated input type of TOTPDelete
"""
input TOTPDeleteInput {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  id: ID!
}

"""
Autogenerated return type of TOTPDelete.
"""
type TOTPDeletePayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  viewer: Viewer!
}

"""
Autogenerated input type of TOTPRecoveryCodesRegenerate
"""
input TOTPRecoveryCodesRegenerateInput {
  """
  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.
"""
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(
    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 delete pipelines in this team
  """
  membersCanDeletePipelines: Boolean! @deprecated(reason: "This property has been removed without replacement")

  """
  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!

  """
  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!
}

type TeamConnection implements Connection {
  count: Int!
  edges: [TeamEdge]
  pageInfo: PageInfo
}

"""
Autogenerated input type of TeamCreate
"""
input TeamCreateInput {
  """
  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

  """
  Deprecated: If members in this team can delete pipelines assigned to it
  """
  membersCanDeletePipelines: Boolean = true
  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!
}

"""
Autogenerated input type of TeamDelete
"""
input TeamDeleteInput {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  id: ID!
}

"""
Autogenerated return type of TeamDelete.
"""
type TeamDeletePayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  deletedTeamID: ID!
  organization: Organization!
}

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
"""
input TeamMemberCreateInput {
  """
  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.
"""
type TeamMemberCreatePayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  team: Team
  teamMemberEdge: TeamMemberEdge
}

"""
Autogenerated input type of TeamMemberDelete
"""
input TeamMemberDeleteInput {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  id: ID!
}

"""
Autogenerated return type of TeamMemberDelete.
"""
type TeamMemberDeletePayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  deletedTeamMemberID: ID!
  team: Team
}

type TeamMemberEdge {
  cursor: String!
  node: TeamMember
}

"""
The different orders you can sort team members by
"""
enum TeamMemberOrder {
  """
  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
"""
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
}

"""
The roles a user can be within a team
"""
enum TeamMemberRole {
  """
  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
"""
input TeamMemberUpdateInput {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  id: ID!
  role: TeamMemberRole!
}

"""
Autogenerated return type of TeamMemberUpdate.
"""
type TeamMemberUpdatePayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  teamMember: TeamMember!
}

"""
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
}

"""
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
"""
input TeamPipelineCreateInput {
  accessLevel: PipelineAccessLevels = READ_ONLY

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  pipelineID: ID!
  teamID: ID!
}

"""
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
}

"""
Autogenerated input type of TeamPipelineDelete
"""
input TeamPipelineDeleteInput {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  force: Boolean
  id: ID!
}

"""
Autogenerated return type of TeamPipelineDelete.
"""
type TeamPipelineDeletePayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  deletedTeamPipelineID: ID!
  team: Team
}

type TeamPipelineEdge {
  cursor: String!
  node: TeamPipeline
}

"""
The different orders you can sort pipelines by
"""
enum TeamPipelineOrder {
  """
  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
"""
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
}

"""
Autogenerated input type of TeamPipelineUpdate
"""
input TeamPipelineUpdateInput {
  accessLevel: PipelineAccessLevels!

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  id: ID!
}

"""
Autogenerated return type of TeamPipelineUpdate.
"""
type TeamPipelineUpdatePayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  teamPipeline: TeamPipeline!
}

"""
Whether a team is visible or secret within an organization
"""
enum TeamPrivacy {
  """
  Visible to organization administrators and members
  """
  SECRET

  """
  Visible to all members of the organization
  """
  VISIBLE
}

"""
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
"""
input TeamSuiteCreateInput {
  accessLevel: SuiteAccessLevels = READ_ONLY

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  suiteID: ID!
  teamID: ID!
}

"""
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
}

"""
Autogenerated input type of TeamSuiteDelete
"""
input TeamSuiteDeleteInput {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  force: Boolean
  id: ID!
}

"""
Autogenerated return type of TeamSuiteDelete.
"""
type TeamSuiteDeletePayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  deletedTeamSuiteID: ID!
  team: Team
}

type TeamSuiteEdge {
  cursor: String!
  node: TeamSuite
}

"""
The different orders you can sort suites by
"""
enum TeamSuiteOrder {
  """
  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
"""
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
}

"""
Autogenerated input type of TeamSuiteUpdate
"""
input TeamSuiteUpdateInput {
  accessLevel: SuiteAccessLevels!

  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  id: ID!
}

"""
Autogenerated return type of TeamSuiteUpdate.
"""
type TeamSuiteUpdatePayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  teamSuite: TeamSuite!
}

"""
Autogenerated input type of TeamUpdate
"""
input TeamUpdateInput {
  """
  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

  """
  Deprecated: If members in this team can delete pipelines assigned to it
  """
  membersCanDeletePipelines: Boolean = true
  name: String!

  """
  The privacy setting for this team
  """
  privacy: TeamPrivacy
}

"""
Autogenerated return type of TeamUpdate.
"""
type TeamUpdatePayload {
  """
  A unique identifier for the client performing the mutation.
  """
  clientMutationId: String
  team: Team!
}

"""
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!
}

"""
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(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 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
  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(
    after: String
    agentQueryRules: [String!]
    before: String
    first: Int
    last: Int

    """
    Order the jobs
    """
    order: JobOrder = RECENTLY_CREATED
    priority: JobPrioritySearch
    state: [JobStates!]
    type: [JobTypes!]
  ): 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
"""
type ViewerPermissions {
  """
  Whether the viewer can configure two-factor authentication
  """
  totpConfigure: Permission!
}

"""
A blob of XML represented as a pretty formatted string
"""
scalar XML

"""
A blob of YAML
"""
scalar YAML
