From fb15c59bb3d19cc64981c10353fce2ddf1ce6ae2 Mon Sep 17 00:00:00 2001 From: Matthias Rampke Date: Fri, 14 Apr 2023 08:59:29 +0000 Subject: [PATCH 001/118] API: document `rebuilt_from` field for get/list builds As per [this conversation](https://buildkite-community.slack.com/archives/C02T53V9H/p1681412288732759), this is supported. Update the examples to include it. In the list example, include the "not rebuilt" variant (`null`). In the get example, make the shown JSON build number 2, a rebuild from number 1. --- pages/apis/rest_api/builds.md | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/pages/apis/rest_api/builds.md b/pages/apis/rest_api/builds.md index 300b68d940..e6b6a03b05 100644 --- a/pages/apis/rest_api/builds.md +++ b/pages/apis/rest_api/builds.md @@ -120,6 +120,7 @@ curl "https://api.buildkite.com/v2/organizations/{org.slug}/pipelines/{pipeline. "finished_at": "2015-05-09T21:05:59.874Z", "meta_data": { }, "pull_request": { }, + "rebuilt_from": null, "pipeline": { "id": "849411f9-9e6d-4739-a0d8-e247088e9b52", "graphql_id": "UGlwZWxpbmUtLS1lOTM4ZGQxYy03MDgwLTQ4ZmQtOGQyMC0yNmQ4M2E0ZjNkNDg=", @@ -182,9 +183,9 @@ curl "https://api.buildkite.com/v2/organizations/{org.slug}/pipelines/{pipeline. { "id": "f62a1b4d-10f9-4790-bc1c-e2c3a0c80983", "graphql_id": "QnVpbGQtLS1mYmQ2Zjk3OS0yOTRhLTQ3ZjItOTU0Ni1lNTk0M2VlMTAwNzE=", - "url": "https://api.buildkite.com/v2/organizations/my-great-org/pipelines/my-pipeline/builds/1", - "web_url": "https://buildkite.com/my-great-org/my-pipeline/builds/1", - "number": 1, + "url": "https://api.buildkite.com/v2/organizations/my-great-org/pipelines/my-pipeline/builds/2", + "web_url": "https://buildkite.com/my-great-org/my-pipeline/builds/2", + "number": 2, "state": "passed", "blocked": false, "message": "Bumping to version 0.2-beta.6", @@ -208,9 +209,9 @@ curl "https://api.buildkite.com/v2/organizations/{org.slug}/pipelines/{pipeline. "step_key": "package", "agent_query_rules": ["*"], "state": "scheduled", - "web_url": "https://buildkite.com/my-great-org/my-pipeline/builds/1#b63254c0-3271-4a98-8270-7cfbd6c2f14e", - "log_url": "https://api.buildkite.com/v2/organizations/my-great-org/pipelines/my-pipeline/builds/1/jobs/b63254c0-3271-4a98-8270-7cfbd6c2f14e/log", - "raw_log_url": "https://api.buildkite.com/v2/organizations/my-great-org/pipelines/my-pipeline/builds/1/jobs/b63254c0-3271-4a98-8270-7cfbd6c2f14e/log.txt", + "web_url": "https://buildkite.com/my-great-org/my-pipeline/builds/2#b63254c0-3271-4a98-8270-7cfbd6c2f14e", + "log_url": "https://api.buildkite.com/v2/organizations/my-great-org/pipelines/my-pipeline/builds/2/jobs/b63254c0-3271-4a98-8270-7cfbd6c2f14e/log", + "raw_log_url": "https://api.buildkite.com/v2/organizations/my-great-org/pipelines/my-pipeline/builds/2/jobs/b63254c0-3271-4a98-8270-7cfbd6c2f14e/log.txt", "command": "scripts/build.sh", "soft_failed": false, "exit_status": 0, @@ -251,6 +252,11 @@ curl "https://api.buildkite.com/v2/organizations/{org.slug}/pipelines/{pipeline. "finished_at": "2015-05-09T21:05:59.874Z", "meta_data": { }, "pull_request": { }, + "rebuilt_from": { + "id": "812135b3-eee7-408c-9f63-760538b96bd5", + "number": 1, + "url": "https://api.buildkite.com/v2/organizations/my-great-org/pipelines/my-pipeline/builds/1" + }, "pipeline": { "id": "849411f9-9e6d-4739-a0d8-e247088e9b52", "graphql_id": "UGlwZWxpbmUtLS1lOTM4ZGQxYy03MDgwLTQ4ZmQtOGQyMC0yNmQ4M2E0ZjNkNDg=", From 91d5445e03ccfa75eb1f6c157f3fc7715f960705 Mon Sep 17 00:00:00 2001 From: Sachit Shroff <67282553+sachit-shroff@users.noreply.github.com> Date: Thu, 8 Jun 2023 01:22:06 -0700 Subject: [PATCH 002/118] Correct documentation on mentioning users The specifics of how to tag a user on Slack were wrong. Also added some info on how to tag user groups, with links to the appropriate Slack docs. --- pages/pipelines/notifications.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pages/pipelines/notifications.md b/pages/pipelines/notifications.md index fcfdbd42a3..c05c07b86d 100644 --- a/pages/pipelines/notifications.md +++ b/pages/pipelines/notifications.md @@ -272,7 +272,7 @@ steps: ### Custom messages with user mentions -To mention a specific user in a custom message within a notification, use the `<@user>` annotation, substituting `user` with the username of the person to mention. +To mention a specific user in a custom message within a notification, use the `<@user-id>` annotation, substituting `userid` with the Slack user ID of the person to mention. See the [Slack documentation on mentioning users](https://api.slack.com/reference/surfaces/formatting#mentioning-users) for more details, including how to find a particular user's user ID. You can even mention user groups using the `` annotation (where the first `subteam` is literal text)! See the [Slack documentation on mentioning user groups](https://api.slack.com/reference/surfaces/formatting#mentioning-groups) for more information. Build-level notifications: @@ -281,7 +281,7 @@ notify: - slack: channels: - "#general" - message: "This message will ping <@user>!" + message: "This message will ping the user with ID U024BE7LH <@U024BE7LH>!" ``` {: codeblock-file="pipeline.yml"} @@ -295,7 +295,7 @@ steps: - slack: channels: - "#general" - message: "This message will ping <@user>!" + message: "This message will ping the group with ID SAZ94GDB8 !" ``` {: codeblock-file="pipeline.yml"} From e6632de0ef84d6f1d1dbedd3485addd584b4531a Mon Sep 17 00:00:00 2001 From: "Michelle (butterkitty)" Date: Wed, 21 Jun 2023 12:02:50 -0400 Subject: [PATCH 003/118] Pipeline's UUID and info added to graphql cookbook --- pages/apis/graphql/graphql_cookbook.md | 42 ++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/pages/apis/graphql/graphql_cookbook.md b/pages/apis/graphql/graphql_cookbook.md index cbb4ad49b6..803bced0a8 100644 --- a/pages/apis/graphql/graphql_cookbook.md +++ b/pages/apis/graphql/graphql_cookbook.md @@ -82,6 +82,48 @@ query RecentPipelineSlugs { } ``` +### Get a pipeline's UUID + +Get a pipeline's UUID by searching for it in the API. Search term can match a pipeline slug. + +_Note: Pipeline slugs are modifiable and can change_ + +```graphql +query GetPipelineUUID { + organization(slug: "organization-slug") { + pipelines(first: 50, search: "part of slug") { + edges { + node { + slug + uuid + } + } + } + } +} +``` + +### Get a pipeline's information + +You can get specific pipeline information for each of your pipeline. You can retrieve information for each build, jobs, and any other information listed on [this](https://buildkite.com/docs/apis/graphql/schemas/object/pipeline) page. + +```graphql +query GetPipelineInfo { + pipeline(uuid: "pipeline-uuid") { + slug + uuid + builds(first:50){ + edges { + node { + state + message + } + } + } + } +} +``` + ### Get pipeline metrics The _Pipelines_ page in Buildkite shows speed, reliability, and builds per week, for each pipeline. You can also access this information through the API. From a8563d19852a057aed10e6c407168916907661a5 Mon Sep 17 00:00:00 2001 From: Josh Deprez Date: Mon, 26 Jun 2023 09:54:08 +1000 Subject: [PATCH 004/118] Update docs for Agent v3.48.0 (#2196) * Update docs for Agent v3.48.0 * Pattern for promoted experiments (#2240) --------- Co-authored-by: Ben Moskovitz Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- data/content/agent_attributes.yaml | 23 ++++--- data/content/environment_variables.yaml | 2 +- pages/agent/v3.md | 85 +++++++++++++++---------- pages/agent/v3/help/_start.md | 3 +- 4 files changed, 66 insertions(+), 47 deletions(-) diff --git a/data/content/agent_attributes.yaml b/data/content/agent_attributes.yaml index b893925bd2..a0b9fdc53f 100644 --- a/data/content/agent_attributes.yaml +++ b/data/content/agent_attributes.yaml @@ -88,11 +88,10 @@ attributes: - name: git-clone-mirror-flags env_var: BUILDKITE_GIT_CLONE_MIRROR_FLAGS default_value: "none" - experimental: true + experimental: false required: false desc: | - Flags to pass to the `git clone` command when used for mirroring. Refer to [Git mirrors](https://buildkite.com/docs/agent/v3#experimental-features-git-mirrors) for more information on this feature. - This is an experimental feature. To use it, set `experiment="git-mirrors"` in your agent configuration. Learn more about [Experimental features](https://buildkite.com/docs/agent/v3#experimental-features). + Flags to pass to the `git clone` command when used for mirroring. Refer to [Git mirrors](/docs/agent/v3#promoted-experiments-git-mirrors) for more information on this feature. Introduced in [v3.47.0](https://github.com/buildkite/agent/releases/tag/v3.47.0). _Example:_ `-v --mirror`. - name: git-fetch-flags env_var: BUILDKITE_GIT_FETCH_FLAGS @@ -105,18 +104,16 @@ attributes: env_var: BUILDKITE_GIT_MIRRORS_LOCK_TIMEOUT default_value: "300" required: false - experimental: true + experimental: false desc: | - Seconds to lock a git mirror during clone. Should exceed your longest checkout. Refer to [Git mirrors](https://buildkite.com/docs/agent/v3#experimental-features-git-mirrors) for more information on this feature. - This is an experimental feature. To use it, set `experiment="git-mirrors"` in your agent configuration. Learn more about [Experimental features](https://buildkite.com/docs/agent/v3#experimental-features). + Seconds to lock a git mirror during clone. Should exceed your longest checkout. Refer to [Git mirrors](/docs/agent/v3#promoted-experiments-git-mirrors) for more information on this feature. Introduced in [v3.47.0](https://github.com/buildkite/agent/releases/tag/v3.47.0). - name: git-mirrors-path env_var: BUILDKITE_GIT_MIRRORS_PATH default_value: "none" required: false - experimental: true + experimental: false desc: | - Path to where mirrors of git repositories are stored. Refer to [Git mirrors](https://buildkite.com/docs/agent/v3#experimental-features-git-mirrors) for more information on this feature. - This is an experimental feature. To use it, set `experiment="git-mirrors"` in your agent configuration. Learn more about [Experimental features](https://buildkite.com/docs/agent/v3#experimental-features). + Path to where mirrors of git repositories are stored. Refer to [Git mirrors](/docs/agent/v3#promoted-experiments-git-mirrors) for more information on this feature. Introduced in [v3.47.0](https://github.com/buildkite/agent/releases/tag/v3.47.0). _Example:_ `/tmp/buildkite-git-mirrors` - name: health-check-addr env_var: BUILDKITE_AGENT_HEALTH_CHECK_ADDR @@ -181,6 +178,12 @@ attributes: required: false desc: | Do not show colors in logging. +- name: no-ansi-timestamps + env_var: BUILDKITE_NO_ANSI_TIMESTAMPS + default_value: "false" + required: false + desc: | + Do not insert ANSI timestamp codes at the start of each line of job output. - name: no-command-eval env_var: BUILDKITE_NO_COMMAND_EVAL default_value: "false" @@ -307,7 +310,7 @@ attributes: default_value: "false" required: false desc: | - Prepend timestamps on each line of output. + Prepend timestamps on each line of output. Has no effect unless --no-ansi-timestamps is also used. - name: tracing-backend env_var: BUILDKITE_TRACING_BACKEND default_value: "none" diff --git a/data/content/environment_variables.yaml b/data/content/environment_variables.yaml index 6b653ba7dc..dfe1d319fe 100644 --- a/data/content/environment_variables.yaml +++ b/data/content/environment_variables.yaml @@ -379,7 +379,7 @@ variables: example: "git@github.com:acme-inc/my-project.git" - name: BUILDKITE_REPO_MIRROR desc: | - Only available if the experimental feature [git-mirrors](/docs/agent/v3#experimental-features-git-mirrors) is enabled. The path to the shared git mirror. + The path to the shared git mirror. Introduced in [v3.47.0](https://github.com/buildkite/agent/releases/tag/v3.47.0). modifiable: false example: "/tmp/buildkite-git-mirrors" - name: BUILDKITE_RETRY_COUNT diff --git a/pages/agent/v3.md b/pages/agent/v3.md index 4b00a5343d..c3d985952e 100644 --- a/pages/agent/v3.md +++ b/pages/agent/v3.md @@ -83,32 +83,6 @@ If an experiment doesn't exist, no error will be raised. >šŸš§ > Please note that there is every chance we will remove or change these experiments, so using them should be at your own risk and without the expectation that they will work in future! -### Redacted variables - -The Buildkite agent can redact strings that match the value of environment variables whose names match common patterns for passwords and other secure information before the build log is uploaded to Buildkite. - -See [redacted-vars](/docs/pipelines/managing-log-output#redacted-environment-variables) for more information. - -### Git mirrors - -Maintain a single bare git mirror for each repository on a host that is shared amongst multiple agents and pipelines. Checkouts reference the git mirror using `git clone --reference`, as do submodules. - ->šŸ›  Experimental feature -> To use it, set experiment="git-mirrors" in your agent configuration. - -See the following agent configuration options for more information: - -- [git-clone-mirror-flags](/docs/agent/v3/configuration#git-clone-mirror-flags) -- [git-mirrors-lock-timeout](/docs/agent/v3/configuration#git-mirrors-lock-timeout) -- [git-mirrors-path](/docs/agent/v3/configuration#git-mirrors-path) - -### ANSI timestamps - -Outputs inline ANSI timestamps for each line of log output which enables toggle-able timestamps in the Buildkite UI. - ->šŸ›  Experimental feature -> To use it, set experiment="ansi-timestamps" in your agent configuration. - ### Normalised upload paths Artifacts uploaded by `buildkite-agent artifact upload` will be uploaded using URI/Unix-style paths, even on Windows. This makes sure that artifacts uploaded from Windows agents are stored in a URI-compatible URL. @@ -127,15 +101,6 @@ After repository checkout, resolve `BUILDKITE_COMMIT` to a commit hash. This mak >šŸ›  Experimental feature > To use it, set experiment="resolve-commit-after-checkout" in your agent configuration. -### Flock file locks - -Changes the file lock implementation from `github.com/nightlyone/lockfile` to `github.com/gofrs/flock` to address an issue where file locks are never released by agents that don't shut down cleanly. The new file locks are implemented at the kernel level, and are aware of when their parent process dies. - -When the experiment is enabled, the agent will use different lock files from agents where the experiment is disabled, so the agents with this experiment enabled should not be run on the same host as the agents where the experiment is disabled. - ->šŸ›  Experimental feature -> To use flock file locks, set experiment="flock-file-locks" in your agent configuration. - ### Kubernetes exec Modifies `start` and `bootstrap` to execute in separate Kubernetes containers in the same pod. @@ -165,6 +130,56 @@ The job API is unavailable on agents running versions of Windows before build 17 >šŸ›  Experimental feature > To use the job API, set experiment="job-api" in your agent configuration. +### Agent API + +Like the Job API experiment, this exposes a (separate) local API for interacting with the agent process. +The Agent API offers these endpoints: + +- `GET /api/leader/v0/ping` - Returns a JSON object with the current time (useful for testing the agent is alive). +- `GET /api/leader/v0/lock?key=` - Returns a JSON object containing the current state of a lock. +- `PATCH /api/leader/v0/lock?key=` - Accepts a JSON object with old and new states for a lock. The lock is then updated atomically, and a JSON object describing whether the operation proceeded is returned. + +The API is exposed using a Unix Domain Socket. Unlike the `job-api`, the path to the socket is not available through a environment variableā€”rather, there is a single (configurable) path on the system. + +>šŸ›  Experimental feature +> To use the agent API, set experiment="agent-api" in your agent configuration. + +## Promoted experiments + +The following features started as experiments before being promoted to fully supported features. + +### Flock file locks + +Changes the file lock implementation from `github.com/nightlyone/lockfile` to `github.com/gofrs/flock` to address an issue where file locks are never released by agents that don't shut down cleanly. The new file locks are implemented at the kernel level, and are aware of when their parent process dies. + +Promoted in [v3.48.0](https://github.com/buildkite/agent/releases/tag/v3.48.0). It's the default behavior, so there's no configuration required to use it. Because the old and new lock systems do not interact, we *strongly* recommend not running different versions of the agent on the same host. + +### ANSI timestamps + +Outputs inline ANSI timestamps for each line of log output, enabling timestamps you can toggle in the Buildkite dashboard. + +Promoted in [v3.48.0](https://github.com/buildkite/agent/releases/tag/v3.48.0). It's the default behavior, so there's no configuration required to use it. If you want to turn it off, pass the `--no-ansi-timestamps` flag. + +### Git mirrors + +Maintain a single bare git mirror for each repository on a host that is shared amongst multiple agents and pipelines. Checkouts reference the git mirror using `git clone --reference`, as do submodules. + +Promoted in [v3.47.0](https://github.com/buildkite/agent/releases/tag/v3.47.0). You can use it by setting the `--git-mirrors-path` flag. + +See the following agent configuration options for more information: + +- [git-clone-mirror-flags](/docs/agent/v3/configuration#git-clone-mirror-flags) +- [git-mirrors-lock-timeout](/docs/agent/v3/configuration#git-mirrors-lock-timeout) +- [git-mirrors-path](/docs/agent/v3/configuration#git-mirrors-path) + +### Redacted variables + +The Buildkite agent can redact strings that match the value of environment variables whose names match common patterns for passwords and other secure information before the build log is uploaded to Buildkite. + +Promoted in [v3.31.0](https://github.com/buildkite/agent/releases/tag/v3.31.0). + +See [redacted-vars](/docs/pipelines/managing-log-output#redacted-environment-variables) for more information. + ## Customizing with hooks The agent's behavior can be customized using hooks, which are shell scripts that exist on your build machines or in each pipeline's code repository. Hooks can be used to set up [secrets](/docs/pipelines/secrets) as well as overriding default behavior. See the [hooks](/docs/agent/v3/hooks) documentation for full details. diff --git a/pages/agent/v3/help/_start.md b/pages/agent/v3/help/_start.md index 792b1c5d4c..dd4ce04bb2 100644 --- a/pages/agent/v3/help/_start.md +++ b/pages/agent/v3/help/_start.md @@ -70,7 +70,8 @@ The agent will run any jobs within a PTY (pseudo terminal) if available. --hooks-path value #

Directory where the hook scripts are found
Environment variable: $BUILDKITE_HOOKS_PATH

--sockets-path value #

Directory where the agent will place sockets (default: "$HOME/.buildkite-agent/sockets")
Environment variable: $BUILDKITE_SOCKETS_PATH

--plugins-path value #

Directory where the plugins are saved to
Environment variable: $BUILDKITE_PLUGINS_PATH

---timestamp-lines #

Prepend timestamps on each line of output.
Environment variable: $BUILDKITE_TIMESTAMP_LINES

+--no-ansi-timestamps #

Do not insert ANSI timestamp codes at the start of each line of job output
Environment variable: $BUILDKITE_NO_ANSI_TIMESTAMPS

+--timestamp-lines #

Prepend timestamps on each line of job output. Has no effect unless --no-ansi-timestamps is also used
Environment variable: $BUILDKITE_TIMESTAMP_LINES

--health-check-addr value #

Start an HTTP server on this addr:port that returns whether the agent is healthy, disabled by default
Environment variable: $BUILDKITE_AGENT_HEALTH_CHECK_ADDR

--no-pty #

Do not run jobs within a pseudo terminal
Environment variable: $BUILDKITE_NO_PTY

--no-ssh-keyscan #

Don't automatically run ssh-keyscan before checkout
Environment variable: $BUILDKITE_NO_SSH_KEYSCAN

From f8e7208e8df62a1b02052e9c36bfdd81f9428d88 Mon Sep 17 00:00:00 2001 From: Josh Deprez Date: Mon, 26 Jun 2023 11:00:45 +1000 Subject: [PATCH 005/118] Add 'coordinating multiple agents' (#2210) * Add 'coordinating multiple agents' A new section of the parallel builds guide. Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/tutorials/parallel_builds.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/pages/tutorials/parallel_builds.md b/pages/tutorials/parallel_builds.md index 42b2e2da98..fe8daf626e 100644 --- a/pages/tutorials/parallel_builds.md +++ b/pages/tutorials/parallel_builds.md @@ -35,6 +35,30 @@ buildkite-agent start --tags queue=test buildkite-agent start --tags queue=deploy ``` +#### Coordinating multiple agents + +>šŸ› ļø Experimental feature +> To use it, set experiment="agent-api" in your agent configuration. +> This requires Agent v3.47.0 or later. + +Multiple agents on a single host can sometimes interfere with one another. For example, a pipeline might contain commands like `docker prune` or `apt upgrade`, but these commands fail if another job runs the same command at the same time. + +To coordinate access to shared resources on the same host, you can use agent locks. Locking is advisory (nothing prevents a buggy command from ignoring a lock), but it can help avoid multiple agents interfering with each other. + +Here's how you could use locks in a script to make sure a command is run by only one agent at a time: + +```bash +# Acquire the lock called "docker prune", and store the token. +buildkite-agent lock acquire "docker prune" + +# Once the lock is acquired, proceed to run the command - in this example, docker prune +docker prune + +# Release the lock afterwards. +# To make this example more robust, consider using an EXIT trap, so that the lock is released whether the command succeeded or not. +buildkite-agent lock release "docker prune" +``` + ### Multiple agents on many machines The secret to fast builds is running as many build agents as you can. The best way to do that is to have many machines running build agents. These machines can be anything ranging from your laptop, a few spare computers in your office, to a fleet of thousands of cloud compute instances. From f8c4a4913dbd1fbbb302ea5e6d8754b9900e5432 Mon Sep 17 00:00:00 2001 From: Josh Deprez Date: Mon, 26 Jun 2023 11:04:49 +1000 Subject: [PATCH 006/118] Store and use the token To reflect a fix that went into the latest agent release. --- pages/tutorials/parallel_builds.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pages/tutorials/parallel_builds.md b/pages/tutorials/parallel_builds.md index fe8daf626e..a390c6ed19 100644 --- a/pages/tutorials/parallel_builds.md +++ b/pages/tutorials/parallel_builds.md @@ -49,14 +49,14 @@ Here's how you could use locks in a script to make sure a command is run by only ```bash # Acquire the lock called "docker prune", and store the token. -buildkite-agent lock acquire "docker prune" +token=$(buildkite-agent lock acquire "docker prune") # Once the lock is acquired, proceed to run the command - in this example, docker prune docker prune # Release the lock afterwards. # To make this example more robust, consider using an EXIT trap, so that the lock is released whether the command succeeded or not. -buildkite-agent lock release "docker prune" +buildkite-agent lock release "docker prune" "${token}" ``` ### Multiple agents on many machines From 9069bd2f90e0dacadf6f5649dd477b1c16eb4e4f Mon Sep 17 00:00:00 2001 From: Josh Deprez Date: Mon, 26 Jun 2023 11:34:31 +1000 Subject: [PATCH 007/118] Update commands for v3.49.0 --- pages/agent/v3/help/_lock_acquire.md | 13 ++++++++----- pages/agent/v3/help/_lock_do.md | 4 ++-- pages/agent/v3/help/_lock_done.md | 2 +- pages/agent/v3/help/_lock_get.md | 8 ++++---- pages/agent/v3/help/_lock_release.md | 12 +++++++----- 5 files changed, 22 insertions(+), 17 deletions(-) diff --git a/pages/agent/v3/help/_lock_acquire.md b/pages/agent/v3/help/_lock_acquire.md index ace5055504..d755c29a8e 100644 --- a/pages/agent/v3/help/_lock_acquire.md +++ b/pages/agent/v3/help/_lock_acquire.md @@ -17,20 +17,23 @@ script. `buildkite-agent lock acquire [key]` ### Description -Acquires the lock for the given key. ā€²lock acquireā€² will wait (potentially +Acquires the lock for the given key. `lock acquire` will wait (potentially forever) until it can acquire the lock, if the lock is already held by another process. If multiple processes are waiting for the same lock, there is no ordering guarantee of which one will be given the lock next. -Note that this subcommand is only available when an agent has been started with -the ā€²agent-apiā€² experiment enabled. +To prevent separate processes unlocking each other, the output from `lock +acquire` should be stored, and passed to `lock release`. + +Note that this subcommand is only available when an agent has been started +with the `agent-api` experiment enabled. ### Examples ```shell -$ buildkite-agent lock acquire llama +$ token=$(buildkite-agent lock acquire llama) $ critical_section() -$ buildkite-agent lock release llama +$ buildkite-agent lock release llama "${token}" ``` diff --git a/pages/agent/v3/help/_lock_do.md b/pages/agent/v3/help/_lock_do.md index 148c7cf1ac..e5676ddf3e 100644 --- a/pages/agent/v3/help/_lock_do.md +++ b/pages/agent/v3/help/_lock_do.md @@ -24,13 +24,13 @@ the work. Note that this subcommand is only available when an agent has been started with the ā€²agent-apiā€² experiment enabled. -ā€²lock doā€² will do one of two things: +`lock do` will do one of two things: - Print `do`. The calling process should proceed to do the work and then call ā€²lock doneā€². - Wait until the work is marked as done (with ā€²lock doneā€²) and print `done`. -If ā€²lock doā€² prints `done` immediately, the work was already done. +If `lock do` prints `done` immediately, the work was already done. ### Examples diff --git a/pages/agent/v3/help/_lock_done.md b/pages/agent/v3/help/_lock_done.md index 8f5e55af0e..d9b70d5739 100644 --- a/pages/agent/v3/help/_lock_done.md +++ b/pages/agent/v3/help/_lock_done.md @@ -21,7 +21,7 @@ Completes a do-once lock. This should only be used by the process performing the work. Note that this subcommand is only available when an agent has been started with -the ā€²agent-apiā€² experiment enabled. +the `agent-api` experiment enabled. ### Examples diff --git a/pages/agent/v3/help/_lock_get.md b/pages/agent/v3/help/_lock_get.md index dac062fbb7..d777075252 100644 --- a/pages/agent/v3/help/_lock_get.md +++ b/pages/agent/v3/help/_lock_get.md @@ -21,11 +21,11 @@ Retrieves the value of a lock key. Any key not in use returns an empty string. Note that this subcommand is only available when an agent has been started with -the ā€²agent-apiā€² experiment enabled. +the `agent-api` experiment enabled. -ā€²lock getā€² is generally only useful for inspecting lock state, as the value -can change concurrently. To acquire or release a lock, use ā€²lock acquireā€² and -ā€²lock releaseā€². +`lock get` is generally only useful for inspecting lock state, as the value +can change concurrently. To acquire or release a lock, use `lock acquire` and +`lock release`. ### Examples diff --git a/pages/agent/v3/help/_lock_release.md b/pages/agent/v3/help/_lock_release.md index d2fbb1247b..5351751bdb 100644 --- a/pages/agent/v3/help/_lock_release.md +++ b/pages/agent/v3/help/_lock_release.md @@ -18,17 +18,19 @@ script. ### Description Releases the lock for the given key. This should only be called by the -process that acquired the lock. +process that acquired the lock. To help prevent different processes unlocking +each other unintentionally, the output from `lock acquire` is required as the +second argument. -Note that this subcommand is only available when an agent has been started with -the ā€²agent-apiā€² experiment enabled. +Note that this subcommand is only available when an agent has been started +with the `agent-api` experiment enabled. ### Examples ```shell -$ buildkite-agent lock acquire llama +$ token=$(buildkite-agent lock acquire llama) $ critical_section() -$ buildkite-agent lock release llama +$ buildkite-agent lock release llama "${token}" ``` From 9d32c5593dd49394082f213dd2684221351fe7f9 Mon Sep 17 00:00:00 2001 From: Angus Fretwell Date: Mon, 26 Jun 2023 10:27:28 +1000 Subject: [PATCH 008/118] add outline for cluster queue metrics doc --- pages/clusters/queue_metrics.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 pages/clusters/queue_metrics.md diff --git a/pages/clusters/queue_metrics.md b/pages/clusters/queue_metrics.md new file mode 100644 index 0000000000..f1e6f50e2f --- /dev/null +++ b/pages/clusters/queue_metrics.md @@ -0,0 +1,26 @@ +# Queue metrics + +- What is it? +- Why is this useful? (to inform optimizing agent setup to reduce wait time) +- Updates every 10 seconds + +## Agents + +Screenshot with popover open and agents section highlighted + +- Connected agent count +- Chart & percentages in popover (what is busy, what is idle?) + +## Jobs + +Screenshot with jobs section highlighted + +- Running count (what is a running job?) +- Waiting count (what is a waiting job?) + +## Wait time + +Screenshot with wait times section highlighted + +- Explain percentiles (p50, p95, p99) +- How are they calculated? What is a waiting job? From 48b4308d2daa0e02d0c0e5758cd77f1fe3df8aa3 Mon Sep 17 00:00:00 2001 From: Jordan Carter Date: Mon, 26 Jun 2023 15:22:35 +1200 Subject: [PATCH 009/118] Add queue metrics page --- data/nav.yml | 2 ++ pages/clusters/queue_metrics.md | 47 +++++++++++++++------------------ 2 files changed, 24 insertions(+), 25 deletions(-) diff --git a/data/nav.yml b/data/nav.yml index 9f8844ee99..b24490b511 100644 --- a/data/nav.yml +++ b/data/nav.yml @@ -290,6 +290,8 @@ path: "clusters/overview" - name: "Manage clusters" path: "clusters/manage-clusters" + - name: "Queue metrics" + path: "clusters/queue-metrics" - name: "Security" children: - name: "Overview" diff --git a/pages/clusters/queue_metrics.md b/pages/clusters/queue_metrics.md index f1e6f50e2f..339bee541b 100644 --- a/pages/clusters/queue_metrics.md +++ b/pages/clusters/queue_metrics.md @@ -1,26 +1,23 @@ # Queue metrics - -- What is it? -- Why is this useful? (to inform optimizing agent setup to reduce wait time) -- Updates every 10 seconds - -## Agents - -Screenshot with popover open and agents section highlighted - -- Connected agent count -- Chart & percentages in popover (what is busy, what is idle?) - -## Jobs - -Screenshot with jobs section highlighted - -- Running count (what is a running job?) -- Waiting count (what is a waiting job?) - -## Wait time - -Screenshot with wait times section highlighted - -- Explain percentiles (p50, p95, p99) -- How are they calculated? What is a waiting job? +Queue metrics show you the most important statistics to help you optimize your agent setup and +monitor your cluster's performance. These statistics are updated on the page every 10 seconds. + +## Agents panel +Agents Connected is the number of agents connected to this cluster queue. The circular chart +represents the fraction of agents that are busy working on jobs compared to those that are idle and +ready for a job. Hovering over the Agents Connected chart pops up the Agent Utilization panel which +shows the same information as the circular chart but with the numerical percentages of agents in +use vs idle. + +For the purposes of agent utilization agents are considered busy if they have a job id assigned +to them. + +## Jobs panel +Jobs Running and Jobs Waiting shows the number of jobs assigned to an agent, and the number of jobs +not yet assigned to an agent respectively. Jobs Running are any jobs for this cluster queue which +are in a state of RUNNING, CANCELING, TIMING_OUT, ACCEPTED, or ASSIGNED. Jobs Waiting are any jobs +for this cluster queue which are in a state of SCHEDULED. + +## Wait panel +Wait shows the various job wait time percentiles for this cluster queue. They represent how long +jobs wait after they are created to be assigned to an agent. From bee80d4dfddfa3eaaba44cf13bf795c9ef2abad3 Mon Sep 17 00:00:00 2001 From: Jordan Carter Date: Mon, 26 Jun 2023 17:59:03 +1200 Subject: [PATCH 010/118] Update Wait panels description to mention that the wait time is only calculated on waiting jobs --- pages/clusters/queue_metrics.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pages/clusters/queue_metrics.md b/pages/clusters/queue_metrics.md index 339bee541b..0179369d5a 100644 --- a/pages/clusters/queue_metrics.md +++ b/pages/clusters/queue_metrics.md @@ -19,5 +19,6 @@ are in a state of RUNNING, CANCELING, TIMING_OUT, ACCEPTED, or ASSIGNED. Jobs Wa for this cluster queue which are in a state of SCHEDULED. ## Wait panel -Wait shows the various job wait time percentiles for this cluster queue. They represent how long -jobs wait after they are created to be assigned to an agent. +Wait shows the various job wait time percentiles for this cluster queue's waiting jobs. The +percentiles represent how long it takes jobs to be assigned an agent. If there are no waiting jobs +then dashes '-' are shown instead. From 7d13d8a71453c5dcd006daf2a1bec799f85a1e58 Mon Sep 17 00:00:00 2001 From: David Barrell Date: Mon, 26 Jun 2023 15:30:23 +1000 Subject: [PATCH 011/118] Update graphql docs --- data/graphql_data_schema.json | 2870 +++++------------ .../graphql/schemas/enum/auditsubjecttype.md | 2 +- .../clusteragenttokencreateinput.md | 2 +- .../clusteragenttokenupdateinput.md | 2 +- .../graphql/schemas/object/clustertoken.md | 2 +- pages/apis/rest_api/clusters.md | 9 +- 6 files changed, 767 insertions(+), 2120 deletions(-) diff --git a/data/graphql_data_schema.json b/data/graphql_data_schema.json index 77c2f76007..4873335f1e 100644 --- a/data/graphql_data_schema.json +++ b/data/graphql_data_schema.json @@ -207,9 +207,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -223,9 +221,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -692,9 +688,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -704,9 +698,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -716,9 +708,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -728,9 +718,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "type", @@ -748,9 +736,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "state", @@ -768,9 +754,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "priority", @@ -780,9 +764,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "agentQueryRules", @@ -800,9 +782,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "concurrency", @@ -812,9 +792,7 @@ "name": "JobConcurrencySearch", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "passed", @@ -824,9 +802,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "step", @@ -836,9 +812,7 @@ "name": "JobStepSearch", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "order", @@ -848,9 +822,7 @@ "name": "JobOrder", "ofType": null }, - "defaultValue": "RECENTLY_ASSIGNED", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "RECENTLY_ASSIGNED" } ], "type": { @@ -1334,9 +1306,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -1350,9 +1320,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "graceful", @@ -1362,9 +1330,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "true", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "true" } ], "interfaces": null, @@ -1702,9 +1668,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "organizationID", @@ -1718,9 +1682,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "description", @@ -1730,9 +1692,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "public", @@ -1742,9 +1702,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "false", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "false" } ], "interfaces": null, @@ -1918,9 +1876,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -1934,9 +1890,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "reason", @@ -1950,9 +1904,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -3812,115 +3764,115 @@ "interfaces": null, "enumValues": [ { - "name": "PIPELINE", + "name": "SCM_SERVICE", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "CLUSTER_PERMISSION", + "name": "SCM_PIPELINE_SETTINGS", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "AGENT_TOKEN", + "name": "SCM_REPOSITORY_HOST", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "API_ACCESS_TOKEN", + "name": "SUITE_MONITOR", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "CLUSTER_QUEUE", + "name": "SUITE", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "CLUSTER_TOKEN", + "name": "USER", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "NOTIFICATION_SERVICE", + "name": "USER_EMAIL", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "ORGANIZATION", + "name": "USER_TOTP", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "ORGANIZATION_INVITATION", + "name": "AUTHORIZATION", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "PIPELINE_SCHEDULE", + "name": "CLUSTER", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "TEAM", + "name": "SUBSCRIPTION", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "TEAM_MEMBER", + "name": "AGENT_TOKEN", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "TEAM_PIPELINE", + "name": "API_ACCESS_TOKEN", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "TEAM_SUITE", + "name": "CLUSTER_QUEUE", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "SCM_SERVICE", + "name": "CLUSTER_TOKEN", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "SCM_PIPELINE_SETTINGS", + "name": "CLUSTER_PERMISSION", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "SCM_REPOSITORY_HOST", + "name": "NOTIFICATION_SERVICE", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "SUITE_MONITOR", + "name": "ORGANIZATION", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "SSO_PROVIDER", + "name": "ORGANIZATION_INVITATION", "description": null, "isDeprecated": false, "deprecationReason": null @@ -3932,43 +3884,43 @@ "deprecationReason": null }, { - "name": "USER_EMAIL", + "name": "PIPELINE", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "SUITE", + "name": "PIPELINE_SCHEDULE", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "USER", + "name": "TEAM", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "USER_TOTP", + "name": "TEAM_MEMBER", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "CLUSTER", + "name": "TEAM_PIPELINE", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "AUTHORIZATION", + "name": "TEAM_SUITE", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "SUBSCRIPTION", + "name": "SSO_PROVIDER", "description": null, "isDeprecated": false, "deprecationReason": null @@ -4574,9 +4526,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -4586,9 +4536,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -4598,9 +4546,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -4610,9 +4556,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "style", @@ -4630,9 +4574,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -4815,9 +4757,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -4827,9 +4767,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -4839,9 +4777,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -4851,9 +4787,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "type", @@ -4871,9 +4805,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "state", @@ -4891,9 +4823,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "priority", @@ -4903,9 +4833,7 @@ "name": "JobPrioritySearch", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "agentQueryRules", @@ -4923,9 +4851,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "concurrency", @@ -4935,9 +4861,7 @@ "name": "JobConcurrencySearch", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "passed", @@ -4947,9 +4871,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "step", @@ -4959,9 +4881,7 @@ "name": "JobStepSearch", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "order", @@ -4971,9 +4891,7 @@ "name": "JobOrder", "ofType": null }, - "defaultValue": "RECENTLY_CREATED", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "RECENTLY_CREATED" } ], "type": { @@ -5010,9 +4928,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -5022,9 +4938,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -5257,9 +5171,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "buildID", @@ -5273,9 +5185,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "body", @@ -5285,9 +5195,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "style", @@ -5297,9 +5205,7 @@ "name": "AnnotationStyle", "ofType": null }, - "defaultValue": "DEFAULT", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "DEFAULT" }, { "name": "context", @@ -5309,9 +5215,7 @@ "name": "String", "ofType": null }, - "defaultValue": "\"default\"", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "\"default\"" }, { "name": "append", @@ -5321,9 +5225,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "false", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "false" } ], "interfaces": null, @@ -5417,9 +5319,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "email", @@ -5433,9 +5333,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -5485,9 +5383,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -5501,9 +5397,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -5636,9 +5530,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "pipelineID", @@ -5652,9 +5544,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "message", @@ -5664,9 +5554,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "commit", @@ -5676,9 +5564,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "branch", @@ -5688,9 +5574,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "env", @@ -5708,9 +5592,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "metaData", @@ -5728,9 +5610,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "author", @@ -5740,9 +5620,7 @@ "name": "BuildAuthorInput", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -6035,9 +5913,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "value", @@ -6051,9 +5927,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -6074,9 +5948,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -6090,9 +5962,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -7013,9 +6883,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -7025,9 +6893,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -7170,9 +7036,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -7182,9 +7046,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -7194,9 +7056,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -7206,9 +7066,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "order", @@ -7218,9 +7076,7 @@ "name": "ClusterQueueOrder", "ofType": null }, - "defaultValue": "KEY", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "KEY" } ], "type": { @@ -7338,9 +7194,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "organizationId", @@ -7354,9 +7208,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "description", @@ -7370,9 +7222,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "clusterId", @@ -7386,9 +7236,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "jobTokensEnabled", @@ -7398,9 +7246,17 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null + }, + { + "name": "allowedIpAddresses", + "description": "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", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null } ], "interfaces": null, @@ -7529,9 +7385,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -7545,9 +7399,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "organizationId", @@ -7561,9 +7413,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -7629,9 +7479,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -7645,9 +7493,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "organizationId", @@ -7661,9 +7507,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "description", @@ -7677,9 +7521,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "jobTokensEnabled", @@ -7689,9 +7531,17 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null + }, + { + "name": "allowedIpAddresses", + "description": "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", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null } ], "interfaces": null, @@ -7824,9 +7674,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "organizationId", @@ -7840,9 +7688,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "name", @@ -7856,9 +7702,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "description", @@ -7868,9 +7712,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "emoji", @@ -7880,9 +7722,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "color", @@ -7892,9 +7732,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -7960,9 +7798,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "organizationId", @@ -7976,9 +7812,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -7992,9 +7826,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -8516,9 +8348,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "organizationId", @@ -8532,9 +8362,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "clusterId", @@ -8548,9 +8376,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "key", @@ -8564,9 +8390,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "description", @@ -8576,9 +8400,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -8644,9 +8466,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "organizationId", @@ -8660,9 +8480,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -8676,9 +8494,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -8812,9 +8628,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -8828,9 +8642,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "note", @@ -8840,9 +8652,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -8908,9 +8718,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -8924,9 +8732,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -8992,9 +8798,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "organizationId", @@ -9008,9 +8812,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -9024,9 +8826,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "description", @@ -9036,9 +8836,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -9095,6 +8893,20 @@ "name": "ClusterToken", "description": "A token used to connect an agent in cluster to Buildkite", "fields": [ + { + "name": "allowedIpAddresses", + "description": "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", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "cluster", "description": null, @@ -9231,9 +9043,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "organizationId", @@ -9247,9 +9057,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -9263,9 +9071,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "name", @@ -9275,9 +9081,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "description", @@ -9287,9 +9091,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "emoji", @@ -9299,9 +9101,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "color", @@ -9311,9 +9111,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "defaultQueueId", @@ -9323,9 +9121,7 @@ "name": "ID", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -10018,9 +9814,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "address", @@ -10034,9 +9828,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -10165,9 +9957,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -10181,9 +9971,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -10366,9 +10154,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "query", @@ -10382,9 +10168,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "operationName", @@ -10394,9 +10178,7 @@ "name": "ID", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -10600,9 +10382,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -12675,9 +12455,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -12980,9 +12758,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -13237,9 +13013,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -13253,9 +13027,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "fields", @@ -13265,9 +13037,7 @@ "name": "JSON", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -13372,9 +13142,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -13384,9 +13152,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -13543,9 +13309,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -13555,9 +13319,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -13567,9 +13329,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -13579,9 +13339,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -14037,9 +13795,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -14053,9 +13809,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -14121,9 +13875,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -14137,9 +13889,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -14663,9 +14413,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -14692,9 +14440,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -14721,9 +14467,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -14750,9 +14494,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -14779,9 +14521,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -14808,9 +14548,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -14837,9 +14575,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -14866,9 +14602,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -14895,9 +14629,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -14924,9 +14656,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -14953,9 +14683,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -14982,9 +14710,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15011,9 +14737,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15040,9 +14764,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15069,9 +14791,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15098,9 +14818,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15127,9 +14845,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15156,9 +14872,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15185,9 +14899,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15214,9 +14926,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15243,9 +14953,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15272,9 +14980,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15301,9 +15007,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15330,9 +15034,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15359,9 +15061,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15388,9 +15088,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15417,9 +15115,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15446,9 +15142,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15475,9 +15169,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15504,9 +15196,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15533,9 +15223,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15562,9 +15250,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15591,9 +15277,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15620,9 +15304,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15649,9 +15331,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15678,9 +15358,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15707,9 +15385,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15736,9 +15412,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15765,9 +15439,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15794,9 +15466,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15823,9 +15493,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15852,9 +15520,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15881,9 +15547,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15910,9 +15574,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15939,9 +15601,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15968,9 +15628,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -15997,9 +15655,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -16026,9 +15682,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -16055,9 +15709,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -16084,9 +15736,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -16113,9 +15763,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -16142,9 +15790,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -16171,9 +15817,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -16200,9 +15844,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -16229,9 +15871,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -16258,9 +15898,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -16287,9 +15925,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -16316,9 +15952,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -16345,9 +15979,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -16374,9 +16006,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -16403,9 +16033,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -16432,9 +16060,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -16461,9 +16087,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -16490,9 +16114,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -16519,9 +16141,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -16897,9 +16517,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -16913,9 +16531,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -17271,9 +16887,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -17283,9 +16897,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "revoked", @@ -17295,9 +16907,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -17320,9 +16930,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -17332,9 +16940,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -17344,9 +16950,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -17356,9 +16960,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "search", @@ -17368,9 +16970,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "metaData", @@ -17388,9 +16988,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "cluster", @@ -17400,9 +16998,7 @@ "name": "ID", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "clusterQueue", @@ -17420,9 +17016,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "clustered", @@ -17432,9 +17026,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "true", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "true" }, { "name": "isRunningJob", @@ -17444,9 +17036,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -17483,9 +17073,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -17495,9 +17083,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "first", @@ -17507,9 +17093,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -17519,9 +17103,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -17548,9 +17130,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -17560,9 +17140,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -17572,9 +17150,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -17584,9 +17160,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "occurredAtFrom", @@ -17596,9 +17170,7 @@ "name": "DateTime", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "occurredAtTo", @@ -17608,9 +17180,7 @@ "name": "DateTime", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "type", @@ -17628,9 +17198,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "actorType", @@ -17648,9 +17216,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "actor", @@ -17668,9 +17234,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "subjectType", @@ -17688,9 +17252,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "subject", @@ -17708,9 +17270,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "order", @@ -17720,9 +17280,7 @@ "name": "OrganizationAuditEventOrders", "ofType": null }, - "defaultValue": "RECENTLY_OCCURRED", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "RECENTLY_OCCURRED" }, { "name": "subjectUUID", @@ -17740,9 +17298,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -17769,9 +17325,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -17794,9 +17348,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -17806,9 +17358,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -17818,9 +17368,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -17830,9 +17378,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "order", @@ -17842,9 +17388,7 @@ "name": "ClusterOrder", "ofType": null }, - "defaultValue": "NAME", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "NAME" } ], "type": { @@ -17899,9 +17443,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -17911,9 +17453,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -17923,9 +17463,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -17935,9 +17473,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "state", @@ -17955,9 +17491,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "order", @@ -17967,9 +17501,7 @@ "name": "OrganizationInvitationOrders", "ofType": null }, - "defaultValue": "RECENTLY_CREATED", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "RECENTLY_CREATED" } ], "type": { @@ -18010,9 +17542,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -18022,9 +17552,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -18034,9 +17562,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -18046,9 +17572,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "type", @@ -18066,9 +17590,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "state", @@ -18086,9 +17608,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "priority", @@ -18098,9 +17618,7 @@ "name": "JobPrioritySearch", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "agentQueryRules", @@ -18118,9 +17636,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "concurrency", @@ -18130,9 +17646,7 @@ "name": "JobConcurrencySearch", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "passed", @@ -18142,9 +17656,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "step", @@ -18154,9 +17666,7 @@ "name": "JobStepSearch", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "order", @@ -18166,9 +17676,7 @@ "name": "JobOrder", "ofType": null }, - "defaultValue": "RECENTLY_CREATED", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "RECENTLY_CREATED" }, { "name": "cluster", @@ -18178,9 +17686,7 @@ "name": "ID", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "clusterQueue", @@ -18198,9 +17704,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "clustered", @@ -18210,9 +17714,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "true", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "true" } ], "type": { @@ -18235,9 +17737,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -18247,9 +17747,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -18259,9 +17757,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -18271,9 +17767,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "search", @@ -18283,9 +17777,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "email", @@ -18295,9 +17787,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "team", @@ -18307,9 +17797,7 @@ "name": "TeamSelector", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "role", @@ -18327,9 +17815,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "security", @@ -18339,9 +17825,7 @@ "name": "OrganizationMemberSecurityInput", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "sso", @@ -18351,9 +17835,7 @@ "name": "OrganizationMemberSSOInput", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "order", @@ -18363,9 +17845,7 @@ "name": "OrganizationMemberOrder", "ofType": null }, - "defaultValue": "RECENTLY_CREATED", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "RECENTLY_CREATED" } ], "type": { @@ -18424,9 +17904,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -18436,9 +17914,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -18448,9 +17924,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -18460,9 +17934,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "search", @@ -18472,9 +17944,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "repository", @@ -18484,9 +17954,7 @@ "name": "PipelineRepositoryInput", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "cluster", @@ -18496,9 +17964,7 @@ "name": "ID", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "clustered", @@ -18508,9 +17974,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "true", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "true" }, { "name": "archived", @@ -18520,9 +17984,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "team", @@ -18532,9 +17994,7 @@ "name": "TeamSelector", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "favorite", @@ -18544,9 +18004,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "order", @@ -18556,9 +18014,7 @@ "name": "PipelineOrders", "ofType": null }, - "defaultValue": "RECENTLY_CREATED", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "RECENTLY_CREATED" }, { "name": "tags", @@ -18576,9 +18032,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "createdAtFrom", @@ -18588,9 +18042,7 @@ "name": "DateTime", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "createdAtTo", @@ -18600,9 +18052,7 @@ "name": "DateTime", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -18675,9 +18125,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -18687,9 +18135,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -18699,9 +18145,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -18711,9 +18155,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -18736,9 +18178,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -18748,9 +18188,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -18760,9 +18198,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -18772,9 +18208,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "search", @@ -18784,9 +18218,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "team", @@ -18796,9 +18228,7 @@ "name": "TeamSelector", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "order", @@ -18808,9 +18238,7 @@ "name": "SuiteOrders", "ofType": null }, - "defaultValue": "RECENTLY_CREATED", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "RECENTLY_CREATED" }, { "name": "createdAtFrom", @@ -18820,9 +18248,7 @@ "name": "DateTime", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "createdAtTo", @@ -18832,9 +18258,7 @@ "name": "DateTime", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -18857,9 +18281,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -18869,9 +18291,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -18881,9 +18301,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -18893,9 +18311,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "search", @@ -18905,9 +18321,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "pipeline", @@ -18917,9 +18331,7 @@ "name": "PipelineSelector", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "user", @@ -18929,9 +18341,7 @@ "name": "UserSelector", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "privacy", @@ -18949,9 +18359,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "order", @@ -18961,9 +18369,7 @@ "name": "TeamOrder", "ofType": null }, - "defaultValue": "NAME", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "NAME" } ], "type": { @@ -18986,9 +18392,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -18998,9 +18402,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "first", @@ -19010,9 +18412,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -19022,9 +18422,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "aggregatedOnFrom", @@ -19034,9 +18432,7 @@ "name": "ISO8601Date", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "aggregatedOnTo", @@ -19046,9 +18442,7 @@ "name": "ISO8601Date", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "resource", @@ -19066,9 +18460,7 @@ } } }, - "defaultValue": "[JOB_MINUTES, TEST_EXECUTIONS]", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "[JOB_MINUTES, TEST_EXECUTIONS]" }, { "name": "pipelineIds", @@ -19086,9 +18478,7 @@ } } }, - "defaultValue": "[]", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "[]" }, { "name": "suiteIds", @@ -19106,9 +18496,7 @@ } } }, - "defaultValue": "[]", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "[]" } ], "type": { @@ -19428,9 +18816,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "organizationId", @@ -19444,9 +18830,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "apiAccessTokenId", @@ -19460,9 +18844,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -19528,9 +18910,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "organizationID", @@ -19544,9 +18924,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "ipAddresses", @@ -19560,9 +18938,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -20106,9 +19482,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -20230,9 +19604,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "organizationID", @@ -20246,9 +19618,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "emails", @@ -20270,9 +19640,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "role", @@ -20282,9 +19650,7 @@ "name": "OrganizationMemberRole", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "sso", @@ -20294,9 +19660,7 @@ "name": "OrganizationInvitationSSOInput", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "teams", @@ -20314,9 +19678,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -20505,9 +19867,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -20521,9 +19881,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -20589,9 +19947,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -20605,9 +19961,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -20713,9 +20067,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -20981,9 +20333,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "role", @@ -20997,9 +20347,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -21127,9 +20475,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -21139,9 +20485,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -21151,9 +20495,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -21163,9 +20505,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "search", @@ -21175,9 +20515,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "order", @@ -21187,9 +20525,7 @@ "name": "PipelineOrders", "ofType": null }, - "defaultValue": "RECENTLY_CREATED", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "RECENTLY_CREATED" } ], "type": { @@ -21270,9 +20606,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -21282,9 +20616,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -21294,9 +20626,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -21306,9 +20636,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "order", @@ -21318,9 +20646,7 @@ "name": "TeamMemberOrder", "ofType": null }, - "defaultValue": "RECENTLY_CREATED", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "RECENTLY_CREATED" } ], "type": { @@ -21464,9 +20790,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -21480,9 +20804,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -21860,9 +21182,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -21872,9 +21192,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -21884,9 +21202,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -21896,9 +21212,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "state", @@ -21916,9 +21230,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -21969,9 +21281,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -22064,9 +21374,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "passwordProtected", @@ -22076,9 +21384,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -22099,9 +21405,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -22115,9 +21419,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "role", @@ -22127,9 +21429,7 @@ "name": "OrganizationMemberRole", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "sso", @@ -22139,9 +21439,7 @@ "name": "OrganizationMemberSSOInput", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -22841,9 +22139,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -22853,9 +22149,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -22865,9 +22159,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -22877,9 +22169,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "state", @@ -22897,9 +22187,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "branch", @@ -22917,9 +22205,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "commit", @@ -22937,9 +22223,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "metaData", @@ -22957,9 +22241,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "createdAtFrom", @@ -22969,9 +22251,7 @@ "name": "DateTime", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "createdAtTo", @@ -22981,9 +22261,7 @@ "name": "DateTime", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -23204,9 +22482,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -23216,9 +22492,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -23228,9 +22502,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -23240,9 +22512,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "type", @@ -23260,9 +22530,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "state", @@ -23280,9 +22548,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "priority", @@ -23292,9 +22558,7 @@ "name": "JobPrioritySearch", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "agentQueryRules", @@ -23312,9 +22576,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "concurrency", @@ -23324,9 +22586,7 @@ "name": "JobConcurrencySearch", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "passed", @@ -23336,9 +22596,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "step", @@ -23348,9 +22606,7 @@ "name": "JobStepSearch", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "order", @@ -23360,9 +22616,7 @@ "name": "JobOrder", "ofType": null }, - "defaultValue": "RECENTLY_CREATED", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "RECENTLY_CREATED" } ], "type": { @@ -23399,9 +22653,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -23411,9 +22663,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -23540,9 +22790,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -23655,9 +22903,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -23667,9 +22913,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -23679,9 +22923,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -23691,9 +22933,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "search", @@ -23703,9 +22943,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "order", @@ -23715,9 +22953,7 @@ "name": "TeamPipelineOrder", "ofType": null }, - "defaultValue": "RECENTLY_CREATED", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "RECENTLY_CREATED" } ], "type": { @@ -23855,9 +23091,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -23871,9 +23105,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -24006,9 +23238,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "organizationId", @@ -24022,9 +23252,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "name", @@ -24038,9 +23266,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "description", @@ -24050,9 +23276,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "emoji", @@ -24062,9 +23286,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "color", @@ -24074,9 +23296,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "visibility", @@ -24086,9 +23306,7 @@ "name": "PipelineVisibility", "ofType": null }, - "defaultValue": "PRIVATE", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "PRIVATE" }, { "name": "repository", @@ -24102,9 +23320,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "steps", @@ -24118,9 +23334,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "skipIntermediateBuilds", @@ -24130,9 +23344,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "skipIntermediateBuildsBranchFilter", @@ -24142,9 +23354,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "cancelIntermediateBuilds", @@ -24154,9 +23364,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "cancelIntermediateBuildsBranchFilter", @@ -24166,9 +23374,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "allowRebuilds", @@ -24178,9 +23384,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "true", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "true" }, { "name": "defaultTimeoutInMinutes", @@ -24190,9 +23394,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "maximumTimeoutInMinutes", @@ -24202,9 +23404,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "buildRetentionEnabled", @@ -24214,9 +23414,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "buildRetentionPeriod", @@ -24226,9 +23424,7 @@ "name": "BuildRetentionPeriods", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "buildRetentionNumber", @@ -24238,9 +23434,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "teams", @@ -24258,9 +23452,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "defaultBranch", @@ -24270,9 +23462,7 @@ "name": "String", "ofType": null }, - "defaultValue": "\"main\"", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "\"main\"" }, { "name": "nextBuildNumber", @@ -24282,9 +23472,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "clusterId", @@ -24294,9 +23482,7 @@ "name": "ID", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "tags", @@ -24314,9 +23500,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "branchConfiguration", @@ -24326,9 +23510,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -24444,9 +23626,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -24460,9 +23640,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -24528,9 +23706,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -24544,9 +23720,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -24675,9 +23849,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -24691,9 +23863,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "favorite", @@ -24707,9 +23877,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -25106,9 +24274,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -25129,9 +24295,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -25145,9 +24309,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -25230,9 +24392,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -25242,9 +24402,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -25254,9 +24412,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -25266,9 +24422,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -25610,9 +24764,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "pipelineID", @@ -25626,9 +24778,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "label", @@ -25638,9 +24788,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "cronline", @@ -25650,9 +24798,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "message", @@ -25662,9 +24808,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "commit", @@ -25674,9 +24818,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "branch", @@ -25686,9 +24828,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "env", @@ -25698,9 +24838,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "enabled", @@ -25710,9 +24848,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -25796,9 +24932,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -25812,9 +24946,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -25980,9 +25112,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -25996,9 +25126,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "label", @@ -26008,9 +25136,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "cronline", @@ -26020,9 +25146,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "message", @@ -26032,9 +25156,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "commit", @@ -26044,9 +25166,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "branch", @@ -26056,9 +25176,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "env", @@ -26068,9 +25186,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "enabled", @@ -26080,9 +25196,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -26189,9 +25303,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -26247,9 +25359,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -26274,9 +25384,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "accessLevel", @@ -26286,9 +25394,7 @@ "name": "PipelineAccessLevels", "ofType": null }, - "defaultValue": "MANAGE_BUILD_AND_READ", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "MANAGE_BUILD_AND_READ" } ], "interfaces": null, @@ -26309,9 +25415,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -26325,9 +25429,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -26393,9 +25495,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -26409,9 +25509,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "name", @@ -26421,9 +25519,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "description", @@ -26433,9 +25529,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "emoji", @@ -26445,9 +25539,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "color", @@ -26457,9 +25549,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "visibility", @@ -26469,9 +25559,7 @@ "name": "PipelineVisibility", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "repository", @@ -26481,9 +25569,7 @@ "name": "PipelineRepositoryInput", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "steps", @@ -26493,9 +25579,7 @@ "name": "PipelineStepsInput", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "defaultBranch", @@ -26505,9 +25589,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "nextBuildNumber", @@ -26517,9 +25599,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "skipIntermediateBuilds", @@ -26529,9 +25609,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "skipIntermediateBuildsBranchFilter", @@ -26541,9 +25619,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "cancelIntermediateBuilds", @@ -26553,9 +25629,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "cancelIntermediateBuildsBranchFilter", @@ -26565,9 +25639,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "allowRebuilds", @@ -26577,9 +25649,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "true", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "true" }, { "name": "defaultTimeoutInMinutes", @@ -26589,9 +25659,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "maximumTimeoutInMinutes", @@ -26601,9 +25669,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "buildRetentionEnabled", @@ -26613,9 +25679,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "buildRetentionPeriod", @@ -26625,9 +25689,7 @@ "name": "BuildRetentionPeriods", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "buildRetentionNumber", @@ -26637,9 +25699,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "clusterId", @@ -26649,9 +25709,7 @@ "name": "ID", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "archived", @@ -26661,9 +25719,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "tags", @@ -26681,9 +25737,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "branchConfiguration", @@ -26693,9 +25747,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -26822,9 +25874,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -26851,9 +25901,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -26880,9 +25928,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -26909,9 +25955,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -26938,9 +25982,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -26963,9 +26005,7 @@ "name": "ID", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "uuid", @@ -26975,9 +26015,7 @@ "name": "ID", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -27004,9 +26042,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -27033,9 +26069,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -27062,9 +26096,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -27091,9 +26123,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -27116,9 +26146,7 @@ "name": "ID", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "uuid", @@ -27128,9 +26156,7 @@ "name": "ID", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -27157,9 +26183,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -27186,9 +26210,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -27211,9 +26233,7 @@ "name": "ID", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "uuid", @@ -27223,9 +26243,7 @@ "name": "ID", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -27252,9 +26270,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -27277,9 +26293,7 @@ "name": "ID", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "uuid", @@ -27289,9 +26303,7 @@ "name": "ID", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -27318,9 +26330,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -29241,9 +28251,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "organizationId", @@ -29257,9 +28265,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "type", @@ -29273,9 +28279,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "note", @@ -29285,9 +28289,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "sessionDurationInHours", @@ -29297,9 +28299,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "pinSessionToIpAddress", @@ -29309,9 +28309,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "emailDomain", @@ -29321,9 +28319,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "emailDomainVerificationAddress", @@ -29333,9 +28329,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "identityProvider", @@ -29345,9 +28339,7 @@ "name": "SSOProviderSAMLIdP", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "digestMethod", @@ -29357,9 +28349,7 @@ "name": "SSOProviderSAMLXMLSecurity", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "signatureMethod", @@ -29369,9 +28359,7 @@ "name": "SSOProviderSAMLRSAXMLSecurity", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "githubOrganizationName", @@ -29381,9 +28369,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "googleHostedDomain", @@ -29393,9 +28379,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "discloseGoogleHostedDomain", @@ -29405,9 +28389,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -29509,9 +28491,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -29525,9 +28505,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -29611,9 +28589,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -29627,9 +28603,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "disabledReason", @@ -29639,9 +28613,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -29752,9 +28724,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -29768,9 +28738,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -30948,9 +29916,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "ssoURL", @@ -30960,9 +29926,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "certificate", @@ -30972,9 +29936,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "metadata", @@ -30984,9 +29946,7 @@ "name": "SSOProviderSAMLIdPMetadata", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -31007,9 +29967,7 @@ "name": "XML", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "url", @@ -31019,9 +29977,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -31349,9 +30305,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -31365,9 +30319,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "note", @@ -31377,9 +30329,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "sessionDurationInHours", @@ -31389,9 +30339,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "pinSessionToIpAddress", @@ -31401,9 +30349,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "emailDomain", @@ -31413,9 +30359,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "emailDomainVerificationAddress", @@ -31425,9 +30369,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "identityProvider", @@ -31437,9 +30379,7 @@ "name": "SSOProviderSAMLIdP", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "digestMethod", @@ -31449,9 +30389,7 @@ "name": "SSOProviderSAMLXMLSecurity", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "signatureMethod", @@ -31461,9 +30399,7 @@ "name": "SSOProviderSAMLRSAXMLSecurity", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "githubOrganizationName", @@ -31473,9 +30409,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "googleHostedDomain", @@ -31485,9 +30419,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "discloseGoogleHostedDomain", @@ -31497,9 +30429,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -31582,9 +30512,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -31594,9 +30522,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -31606,9 +30532,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -31618,9 +30542,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -31723,9 +30645,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -31735,9 +30655,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -31747,9 +30665,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -31759,9 +30675,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -31847,9 +30761,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -31859,9 +30771,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -31871,9 +30781,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -31883,9 +30791,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -31971,9 +30877,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -31983,9 +30887,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -31995,9 +30897,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -32007,9 +30907,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -32095,9 +30993,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -32107,9 +31003,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -32119,9 +31013,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -32131,9 +31023,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -32346,9 +31236,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -32358,9 +31246,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -32370,9 +31256,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -32382,9 +31266,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "search", @@ -32394,9 +31276,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "order", @@ -32406,9 +31286,7 @@ "name": "TeamSuiteOrder", "ofType": null }, - "defaultValue": "RECENTLY_CREATED", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "RECENTLY_CREATED" } ], "type": { @@ -32712,9 +31590,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -32728,9 +31604,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "token", @@ -32744,9 +31618,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -32830,9 +31702,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -32916,9 +31786,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -32932,9 +31800,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -33000,9 +31866,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "totpId", @@ -33016,9 +31880,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -33205,9 +32067,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -33217,9 +32077,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -33229,9 +32087,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -33241,9 +32097,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "search", @@ -33253,9 +32107,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "role", @@ -33273,9 +32125,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "order", @@ -33285,9 +32135,7 @@ "name": "TeamMemberOrder", "ofType": null }, - "defaultValue": "RECENTLY_CREATED", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "RECENTLY_CREATED" } ], "type": { @@ -33396,9 +32244,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -33408,9 +32254,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -33420,9 +32264,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -33432,9 +32274,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "search", @@ -33444,9 +32284,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "order", @@ -33456,9 +32294,7 @@ "name": "TeamPipelineOrder", "ofType": null }, - "defaultValue": "RECENTLY_CREATED", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "RECENTLY_CREATED" } ], "type": { @@ -33517,9 +32353,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -33529,9 +32363,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -33541,9 +32373,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -33553,9 +32383,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "order", @@ -33565,9 +32393,7 @@ "name": "TeamSuiteOrder", "ofType": null }, - "defaultValue": "RECENTLY_CREATED", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "RECENTLY_CREATED" } ], "type": { @@ -33689,9 +32515,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "organizationID", @@ -33705,9 +32529,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "name", @@ -33721,9 +32543,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "description", @@ -33733,9 +32553,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "privacy", @@ -33749,9 +32567,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "isDefaultTeam", @@ -33765,9 +32581,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "defaultMemberRole", @@ -33781,9 +32595,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "membersCanCreatePipelines", @@ -33793,9 +32605,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "true", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "true" }, { "name": "membersCanDeletePipelines", @@ -33805,9 +32615,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "true", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "true" } ], "interfaces": null, @@ -33891,9 +32699,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -33907,9 +32713,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -34268,9 +33072,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "teamID", @@ -34284,9 +33086,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "userID", @@ -34300,9 +33100,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "role", @@ -34312,9 +33110,7 @@ "name": "TeamMemberRole", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -34390,9 +33186,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -34406,9 +33200,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -34626,9 +33418,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -34642,9 +33432,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "role", @@ -34658,9 +33446,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -35068,9 +33854,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "teamID", @@ -35084,9 +33868,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "pipelineID", @@ -35100,9 +33882,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "accessLevel", @@ -35112,9 +33892,7 @@ "name": "PipelineAccessLevels", "ofType": null }, - "defaultValue": "READ_ONLY", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "READ_ONLY" } ], "interfaces": null, @@ -35218,9 +33996,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -35234,9 +34010,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "force", @@ -35246,9 +34020,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -35443,9 +34215,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -35459,9 +34229,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "accessLevel", @@ -35475,9 +34243,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -35792,9 +34558,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "teamID", @@ -35808,9 +34572,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "suiteID", @@ -35824,9 +34586,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "accessLevel", @@ -35836,9 +34596,7 @@ "name": "SuiteAccessLevels", "ofType": null }, - "defaultValue": "READ_ONLY", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "READ_ONLY" } ], "interfaces": null, @@ -35942,9 +34700,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -35958,9 +34714,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "force", @@ -35970,9 +34724,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -36167,9 +34919,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -36183,9 +34933,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "accessLevel", @@ -36199,9 +34947,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "interfaces": null, @@ -36267,9 +35013,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "id", @@ -36283,9 +35027,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "name", @@ -36299,9 +35041,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "description", @@ -36311,9 +35051,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "privacy", @@ -36323,9 +35061,7 @@ "name": "TeamPrivacy", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "isDefaultTeam", @@ -36339,9 +35075,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "defaultMemberRole", @@ -36355,9 +35089,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "membersCanCreatePipelines", @@ -36367,9 +35099,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "membersCanDeletePipelines", @@ -36379,9 +35109,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "true", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "true" } ], "interfaces": null, @@ -36763,9 +35491,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -36775,9 +35501,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "state", @@ -36795,9 +35519,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "branch", @@ -36815,9 +35537,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "metaData", @@ -36835,9 +35555,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -36977,9 +35695,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -36989,9 +35705,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -37001,9 +35715,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -37013,9 +35725,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "type", @@ -37033,9 +35743,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -37058,9 +35766,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -37070,9 +35776,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "state", @@ -37090,9 +35794,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "branch", @@ -37102,9 +35804,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "metaData", @@ -37122,9 +35822,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -37147,9 +35845,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -37159,9 +35855,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "read", @@ -37171,9 +35865,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -37196,9 +35888,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -37208,9 +35898,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "verified", @@ -37220,9 +35908,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -37263,9 +35949,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "after", @@ -37275,9 +35959,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -37287,9 +35969,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "before", @@ -37299,9 +35979,7 @@ "name": "String", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "type", @@ -37319,9 +35997,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "state", @@ -37339,9 +36015,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "priority", @@ -37351,9 +36025,7 @@ "name": "JobPrioritySearch", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "agentQueryRules", @@ -37371,9 +36043,7 @@ } } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "order", @@ -37383,9 +36053,7 @@ "name": "JobOrder", "ofType": null }, - "defaultValue": "RECENTLY_CREATED", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "RECENTLY_CREATED" } ], "type": { @@ -37412,9 +36080,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "scope", @@ -37428,9 +36094,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -37453,9 +36117,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null }, { "name": "last", @@ -37465,9 +36127,7 @@ "name": "Int", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -37508,9 +36168,7 @@ "name": "ID", "ofType": null }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ], "type": { @@ -37615,9 +36273,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "false", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "false" } ], "type": { @@ -37993,9 +36649,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "false", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "false" } ], "type": { @@ -38373,9 +37027,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "false", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "false" } ], "type": { @@ -38406,9 +37058,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "false", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "false" } ], "type": { @@ -38439,9 +37089,7 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "false", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "false" } ], "type": { @@ -38672,9 +37320,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ] }, @@ -38699,9 +37345,7 @@ "ofType": null } }, - "defaultValue": null, - "isDeprecated": false, - "deprecationReason": null + "defaultValue": null } ] }, @@ -38723,9 +37367,7 @@ "name": "String", "ofType": null }, - "defaultValue": "\"No longer supported\"", - "isDeprecated": false, - "deprecationReason": null + "defaultValue": "\"No longer supported\"" } ] }, diff --git a/pages/apis/graphql/schemas/enum/auditsubjecttype.md b/pages/apis/graphql/schemas/enum/auditsubjecttype.md index 9ea2338dd3..85b742d4e7 100644 --- a/pages/apis/graphql/schemas/enum/auditsubjecttype.md +++ b/pages/apis/graphql/schemas/enum/auditsubjecttype.md @@ -40,6 +40,6 @@ toc: false -

PIPELINE

CLUSTER_PERMISSION

AGENT_TOKEN

API_ACCESS_TOKEN

CLUSTER_QUEUE

CLUSTER_TOKEN

NOTIFICATION_SERVICE

ORGANIZATION

ORGANIZATION_INVITATION

PIPELINE_SCHEDULE

TEAM

TEAM_MEMBER

TEAM_PIPELINE

TEAM_SUITE

SCM_SERVICE

SCM_PIPELINE_SETTINGS

SCM_REPOSITORY_HOST

SUITE_MONITOR

SSO_PROVIDER

ORGANIZATION_MEMBER

USER_EMAIL

SUITE

USER

USER_TOTP

CLUSTER

AUTHORIZATION

SUBSCRIPTION

+

SCM_SERVICE

SCM_PIPELINE_SETTINGS

SCM_REPOSITORY_HOST

SUITE_MONITOR

SUITE

USER

USER_EMAIL

USER_TOTP

AUTHORIZATION

CLUSTER

SUBSCRIPTION

AGENT_TOKEN

API_ACCESS_TOKEN

CLUSTER_QUEUE

CLUSTER_TOKEN

CLUSTER_PERMISSION

NOTIFICATION_SERVICE

ORGANIZATION

ORGANIZATION_INVITATION

ORGANIZATION_MEMBER

PIPELINE

PIPELINE_SCHEDULE

TEAM

TEAM_MEMBER

TEAM_PIPELINE

TEAM_SUITE

SSO_PROVIDER

diff --git a/pages/apis/graphql/schemas/input_object/clusteragenttokencreateinput.md b/pages/apis/graphql/schemas/input_object/clusteragenttokencreateinput.md index cfaa28d4ff..8441003c4c 100644 --- a/pages/apis/graphql/schemas/input_object/clusteragenttokencreateinput.md +++ b/pages/apis/graphql/schemas/input_object/clusteragenttokencreateinput.md @@ -34,6 +34,6 @@ toc: false -

clientMutationIdString!

A unique identifier for the client performing the mutation.

organizationIdID

descriptionString

clusterIdID

jobTokensEnabledBoolean!

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

+

clientMutationIdString!

A unique identifier for the client performing the mutation.

organizationIdID

descriptionString

clusterIdID

jobTokensEnabledBoolean!

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

allowedIpAddressesString!

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

diff --git a/pages/apis/graphql/schemas/input_object/clusteragenttokenupdateinput.md b/pages/apis/graphql/schemas/input_object/clusteragenttokenupdateinput.md index 91338a86d9..bb00119461 100644 --- a/pages/apis/graphql/schemas/input_object/clusteragenttokenupdateinput.md +++ b/pages/apis/graphql/schemas/input_object/clusteragenttokenupdateinput.md @@ -34,6 +34,6 @@ toc: false -

clientMutationIdString!

A unique identifier for the client performing the mutation.

idID

organizationIdID

descriptionString

jobTokensEnabledBoolean!

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

+

clientMutationIdString!

A unique identifier for the client performing the mutation.

idID

organizationIdID

descriptionString

jobTokensEnabledBoolean!

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

allowedIpAddressesString!

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

diff --git a/pages/apis/graphql/schemas/object/clustertoken.md b/pages/apis/graphql/schemas/object/clustertoken.md index 350d739584..180c1042f4 100644 --- a/pages/apis/graphql/schemas/object/clustertoken.md +++ b/pages/apis/graphql/schemas/object/clustertoken.md @@ -32,7 +32,7 @@ toc: false -

clusterCluster!

createdByUser!

descriptionString!

A description about what this cluster agent token is used for

idID

jobTokensEnabledBoolean!

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

tokenStringdeprecated

Deprecated: Hiding these after creation to improve security. Use the `token_value` field on ClusterAgentTokenCreate instead.

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.

uuidID

The public UUID for this cluster token

+

allowedIpAddressesString!

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

clusterCluster!

createdByUser!

descriptionString!

A description about what this cluster agent token is used for

idID

jobTokensEnabledBoolean!

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

tokenStringdeprecated

Deprecated: Hiding these after creation to improve security. Use the `token_value` field on ClusterAgentTokenCreate instead.

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.

uuidID

The public UUID for this cluster token

diff --git a/pages/apis/rest_api/clusters.md b/pages/apis/rest_api/clusters.md index 680f686122..44489637bf 100644 --- a/pages/apis/rest_api/clusters.md +++ b/pages/apis/rest_api/clusters.md @@ -601,6 +601,7 @@ A [cluster token](/docs/clusters/manage-clusters#set-up-clusters-connect-agents- idID of the token graphql_idGraphQL ID of the token descriptionDescription of the token + allowed_ip_addressesA list of CIDR-notation IPv4 addresses from which agents can use this token urlCanonical API URL of the token cluster_urlAPI URL of the cluster the token belongs to created_atWhen the token was created @@ -622,6 +623,7 @@ curl "https://api.buildkite.com/v2/organizations/{org.slug}/clusters/{cluster.id "id": "b6001416-0e1e-41c6-9dbe-3d96766f451a", "graphql_id": "Q2x1c3RlclRva2VuLS0tYjYwMDE0MTYtMGUxZS00MWM2LTlkYmUtM2Q5Njc2NmY0NTFh", "description": "Windows agents", + "allowed_ip_addresses": "202.144.0.0/24", "url": "http://api.buildkite.com/v2/organizations/test/clusters/e4f44564-d3ea-45eb-87c2-6506643b852a/tokens/b6001416-0e1e-41c6-9dbe-3d96766f451a", "cluster_url": "http://api.buildkite.com/v2/organizations/test/clusters/e4f44564-d3ea-45eb-87c2-6506643b852a", "created_at": "2023-05-26T04:21:41.350Z", @@ -652,6 +654,7 @@ curl "https://api.buildkite.com/v2/organizations/{org.slug}/clusters/{cluster.id "id": "b6001416-0e1e-41c6-9dbe-3d96766f451a", "graphql_id": "Q2x1c3RlclRva2VuLS0tYjYwMDE0MTYtMGUxZS00MWM2LTlkYmUtM2Q5Njc2NmY0NTFh", "description": "Windows agents", + "allowed_ip_addresses": "202.144.0.0/24", "url": "http://api.buildkite.com/v2/organizations/test/clusters/e4f44564-d3ea-45eb-87c2-6506643b852a/tokens/b6001416-0e1e-41c6-9dbe-3d96766f451a", "cluster_url": "http://api.buildkite.com/v2/organizations/test/clusters/e4f44564-d3ea-45eb-87c2-6506643b852a", "created_at": "2023-05-26T04:21:41.350Z", @@ -678,7 +681,7 @@ Success response: `200 OK` ```bash curl -X POST "https://api.buildkite.com/v2/organizations/{org.slug}/clusters/{cluster.id}/tokens" \ -H "Content-Type: application/json" \ - -d '{ "description": "Windows agents" }' + -d '{ "description": "Windows agents", "allowed_ip_addresses": "202.144.0.0/24" }' ``` ```json @@ -686,6 +689,7 @@ curl -X POST "https://api.buildkite.com/v2/organizations/{org.slug}/clusters/{cl "id": "b6001416-0e1e-41c6-9dbe-3d96766f451a", "graphql_id": "Q2x1c3RlclRva2VuLS0tYjYwMDE0MTYtMGUxZS00MWM2LTlkYmUtM2Q5Njc2NmY0NTFh", "description": "Windows agents", + "allowed_ip_addresses": "202.144.0.0/24", "url": "http://api.buildkite.com/v2/organizations/test/clusters/e4f44564-d3ea-45eb-87c2-6506643b852a/tokens/b6001416-0e1e-41c6-9dbe-3d96766f451a", "cluster_url": "http://api.buildkite.com/v2/organizations/test/clusters/e4f44564-d3ea-45eb-87c2-6506643b852a", "created_at": "2023-05-26T04:21:41.350Z", @@ -726,7 +730,7 @@ Error responses: ```bash curl -X PUT "https://api.buildkite.com/v2/organizations/{org.slug}/clusters/{cluster.id}/tokens/{id}" \ -H "Content-Type: application/json" \ - -d '{ "description": "Windows agents" }' + -d '{ "description": "Windows agents", "allowed_ip_addresses": "202.144.0.0/24" }' ``` ```json @@ -734,6 +738,7 @@ curl -X PUT "https://api.buildkite.com/v2/organizations/{org.slug}/clusters/{clu "id": "b6001416-0e1e-41c6-9dbe-3d96766f451a", "graphql_id": "Q2x1c3RlclRva2VuLS0tYjYwMDE0MTYtMGUxZS00MWM2LTlkYmUtM2Q5Njc2NmY0NTFh", "description": "Windows agents", + "allowed_ip_addresses": "202.144.0.0/24", "url": "http://api.buildkite.com/v2/organizations/test/clusters/e4f44564-d3ea-45eb-87c2-6506643b852a/tokens/b6001416-0e1e-41c6-9dbe-3d96766f451a", "cluster_url": "http://api.buildkite.com/v2/organizations/test/clusters/e4f44564-d3ea-45eb-87c2-6506643b852a", "created_at": "2023-05-26T04:21:41.350Z", From 701e326d936547690c6373ec5f70697c8989e518 Mon Sep 17 00:00:00 2001 From: David Barrell Date: Mon, 26 Jun 2023 15:30:43 +1000 Subject: [PATCH 012/118] Document the Allowed IP Address field on cluster tokens --- pages/agent/v3/securing.md | 6 +++++- pages/clusters/manage_clusters.md | 16 ++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/pages/agent/v3/securing.md b/pages/agent/v3/securing.md index 9336cee8df..42a430b16e 100644 --- a/pages/agent/v3/securing.md +++ b/pages/agent/v3/securing.md @@ -106,7 +106,7 @@ done ## Signing pipelines -If using plugins is crucial to your workflow and you would still like to preserve strong security guarantees, take a look at the [buildkite-signed-pipeline](https://github.com/seek-oss/buildkite-signed-pipeline) tool. This tool allows uploaded steps to be signed with a secret shared by all agents, so that plugins can run without concerns of tampering by third parties. +If using plugins is crucial to your workflow and you would still like to preserve strong security guarantees, take a look at the [buildkite-signed-pipeline](https://github.com/seek-oss/buildkite-signed-pipeline) tool. This tool allows uploaded steps to be signed with a secret shared by all agents, so that plugins can run without concerns of tampering by third parties. ## Allowing a list of plugins @@ -185,3 +185,7 @@ To safeguard your organization's infrastructure in case of Buildkite infrastruct As a result, your Buildkite agent will refuse to run anything that's not a single argumentless invocation of a script that exists locally (after the `git clone` step of the setup) unless it's explicitly allowed by you. Since the [agent](https://github.com/buildkite/agent) is open-source, if necessary you can verify that assertion to whatever degree of certainty is required. + +## Restrict agent connection by IP address + +Clusters provide a mechanism protect against the misuse of agent tokens and the hijacking of agent sessions, by restricting which IP addresses are allowed to connect using a given agent token. Setting the [_Allowed IP Addresses_ attribute](/docs/clusters/manage-clusters#set-up-clusters-restrict-access-for-a-cluster-token-by-ip-address) on a token will lock down agent registration, and forcefully disconnect any existing agents that fall outside the allowed IP ranges. diff --git a/pages/clusters/manage_clusters.md b/pages/clusters/manage_clusters.md index 51316d2b23..06158aedb2 100644 --- a/pages/clusters/manage_clusters.md +++ b/pages/clusters/manage_clusters.md @@ -63,6 +63,22 @@ To add a maintainer to a cluster: 1. Select a user or team. 1. Click _Add Maintainer_. +### Restrict access for a cluster token by IP address + +Each cluster token can be locked down so that only agents with an allowed IP address can use them to register. + +You can set the _Allowed IP Addresses_ when creating a token, or you can modify existing tokens: + +1. Navigate to the cluster's _Agent Tokens_. +1. Select the token to which you wish to restrict access. +1. Select _Edit_. +1. Update the _Allowed IP Addresses_ setting, using CIDR notation. +1. Click _Save Token_. + +Note that modifying the _Allowed IP Addresses_ will forcefully disconnect any existing agents with IP addresses that fall outside the updated value. This will prevent the completion of any jobs in progress on those agents. + +There is a maximum of 24 addresses per agent token, and IPv6 is currently not supported. + ### Migrate to clusters If you migrate all your existing agents over to clusters, make sure to add all your pipelines to the relevant clusters. Otherwise, any builds for those pipelines will never find agents to run them. From 92450a55cc8041f15fb1c12bf01edc273e711546 Mon Sep 17 00:00:00 2001 From: "Pol (Paula)" Date: Mon, 26 Jun 2023 16:37:30 -0300 Subject: [PATCH 013/118] Add data retention The TA page needs a lot of updates, but something quick we can add, and customers asked, is about the details of the data retention, which is currently of 6 months --- pages/test_analytics.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pages/test_analytics.md b/pages/test_analytics.md index a2539ae879..1f9560349a 100644 --- a/pages/test_analytics.md +++ b/pages/test_analytics.md @@ -38,6 +38,9 @@ Test Analytics helps you track and analyze the steps in that pipeline that invol You can also upload test results by importing [JSON](/docs/test-analytics/importing-json) or [JUnit XML](/docs/test-analytics/importing-junit-xml). +>šŸ“˜ Data Retention +> The upload data sent to Test Analytics is stored in S3 and deleted after six months. + ---- <%= tiles "test_analytics_features" %> From a72e2430612db1b79e221e01890d5ebdcf0c2834 Mon Sep 17 00:00:00 2001 From: James Hill Date: Tue, 20 Jun 2023 00:24:04 +1000 Subject: [PATCH 014/118] Add the Usage API to the GraphQL cookbook Cross link to the cookbook from the job_minutes and test_exectutions pages. --- pages/apis/graphql/graphql_cookbook.md | 46 +++++++++++++++++++++++++ pages/pipelines/job_minutes.md | 2 ++ pages/test_analytics/test_executions.md | 2 ++ 3 files changed, 50 insertions(+) diff --git a/pages/apis/graphql/graphql_cookbook.md b/pages/apis/graphql/graphql_cookbook.md index cbb4ad49b6..8089061385 100644 --- a/pages/apis/graphql/graphql_cookbook.md +++ b/pages/apis/graphql/graphql_cookbook.md @@ -650,6 +650,52 @@ mutation UpdateSessionIPAddressPinning { } ``` +### Query the usage API + +Use the usage API to query your organization's usage by pipeline or test suite at daily granularity. + +```graphql +query Usage { + organization(slug: "organization-slug") { + id + name + usage( + aggregatedOnFrom: "2023-04-01" + aggregatedOnTo: "2023-05-01" + resource:[JOB_MINUTES, TEST_EXECUTIONS] + ) { + edges { + node { + __typename ... on JobMinutesUsage { + aggregatedOn + seconds + pipeline { + name + id + } + } + } + + node { + __typename ... on TestExecutionsUsage { + Time:aggregatedOn + executions + suite { + name + id + } + } + } + } + pageInfo { + endCursor + hasNextPage + } + } + } +} +``` + ### Create a user, add them to a team, and set user permissions Invite a new user to the organization, add them to a team, and set their role. diff --git a/pages/pipelines/job_minutes.md b/pages/pipelines/job_minutes.md index 2c7c38d231..cd26f8ff28 100644 --- a/pages/pipelines/job_minutes.md +++ b/pages/pipelines/job_minutes.md @@ -21,6 +21,8 @@ The [Usage page](https://buildkite.com/organizations/~/usage) is available on ev The [Job minutes usage page](https://buildkite.com/organizations/~/usage/job_minutes) graphs the total job minute usage over the organization's billing periods. It includes a breakdown of usage by pipeline and a CSV download of usage over the period. +Your organization's usage is also accessible via the [GraphQL API](/docs/apis/graphql/graphql-cookbook#organizations-query-the-usage-api). + >šŸ“˜ Calculating job minutes usage > We store job usage data in seconds but charge by summing all the usage and rounding down to the nearest minute. Please keep in mind that when displaying usage data per pipeline in the chart and CSV download, there may be minor discrepancies due to the rounding of each individual pipeline's usage. diff --git a/pages/test_analytics/test_executions.md b/pages/test_analytics/test_executions.md index 85e27563d5..6f2f5862e8 100644 --- a/pages/test_analytics/test_executions.md +++ b/pages/test_analytics/test_executions.md @@ -10,3 +10,5 @@ You can find the test execution details for a run at the bottom of the run page, The [Usage page](https://buildkite.com/organizations/~/usage) is available on every Buildkite plan and shows a breakdown of job minutes and test executions for your organization. The [test executions usage page](https://buildkite.com/organizations/~/usage/test_executions) graphs the total executions over the organization's billing periods. It includes a breakdown of usage by suite and a CSV download of usage over the period. + +Your organization's usage is also accessible via the [GraphQL API](/docs/apis/graphql/graphql-cookbook#organizations-query-the-usage-api). From 266a40ff8947df27681c5cf9eca1bda8ac8d8d5a Mon Sep 17 00:00:00 2001 From: Jordan Carter Date: Tue, 27 Jun 2023 12:09:21 +1200 Subject: [PATCH 015/118] Apply review comments to cluster queue metrics page, add two screenshots --- ...luster-queue-metrics-agent-utilization.png | Bin 0 -> 30518 bytes .../queue_metrics/cluster-queue-metrics.png | Bin 0 -> 45573 bytes pages/clusters/queue_metrics.md | 26 +++++++++--------- 3 files changed, 13 insertions(+), 13 deletions(-) create mode 100644 images/docs/clusters/queue_metrics/cluster-queue-metrics-agent-utilization.png create mode 100644 images/docs/clusters/queue_metrics/cluster-queue-metrics.png diff --git a/images/docs/clusters/queue_metrics/cluster-queue-metrics-agent-utilization.png b/images/docs/clusters/queue_metrics/cluster-queue-metrics-agent-utilization.png new file mode 100644 index 0000000000000000000000000000000000000000..ee05816afd1e4447e77ec3b5981a0ba2a1356cf5 GIT binary patch literal 30518 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 literal 0 HcmV?d00001 diff --git a/images/docs/clusters/queue_metrics/cluster-queue-metrics.png b/images/docs/clusters/queue_metrics/cluster-queue-metrics.png new file mode 100644 index 0000000000000000000000000000000000000000..b1710f7105c71fd7ee77129e5990275b0fc32606 GIT binary patch literal 45573 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 literal 0 HcmV?d00001 diff --git a/pages/clusters/queue_metrics.md b/pages/clusters/queue_metrics.md index 0179369d5a..46ebdc51bf 100644 --- a/pages/clusters/queue_metrics.md +++ b/pages/clusters/queue_metrics.md @@ -1,24 +1,24 @@ -# Queue metrics -Queue metrics show you the most important statistics to help you optimize your agent setup and -monitor your cluster's performance. These statistics are updated on the page every 10 seconds. +# Queue metrics in clusters + +Queue metrics show the most important statistics to help you optimize your agent setup and monitor a cluster's performance. These statistics are updated on the page every 10 seconds. + +<%= image "cluster-queue-metrics.png", alt: "Screenshot of the queue metrics panel" %> ## Agents panel -Agents Connected is the number of agents connected to this cluster queue. The circular chart -represents the fraction of agents that are busy working on jobs compared to those that are idle and -ready for a job. Hovering over the Agents Connected chart pops up the Agent Utilization panel which -shows the same information as the circular chart but with the numerical percentages of agents in -use vs idle. -For the purposes of agent utilization agents are considered busy if they have a job id assigned -to them. +_Agents Connected_ is the number of agents connected to the cluster queue. The circular chart represents the fraction of agents that are busy working on jobs compared to those that are idle and ready for a job. Hovering over the chart shows the _Agent Utilization_ panel, which displays the percentage values for each chart component. + +For agent utilization, agents are considered busy if they have a job ID assigned. + +<%= image "cluster-queue-metrics-agent-utilization.png", width: 530/2, height: 434/2, alt: "Screenshot of the agent utilization panel" %> ## Jobs panel + Jobs Running and Jobs Waiting shows the number of jobs assigned to an agent, and the number of jobs not yet assigned to an agent respectively. Jobs Running are any jobs for this cluster queue which are in a state of RUNNING, CANCELING, TIMING_OUT, ACCEPTED, or ASSIGNED. Jobs Waiting are any jobs for this cluster queue which are in a state of SCHEDULED. ## Wait panel -Wait shows the various job wait time percentiles for this cluster queue's waiting jobs. The -percentiles represent how long it takes jobs to be assigned an agent. If there are no waiting jobs -then dashes '-' are shown instead. + +_Wait_ shows the various job wait time percentiles for this cluster queue's waiting jobs. The percentiles represent how long it takes jobs to be assigned an agent. If there are no waiting jobs, dashes (`-`) are shown instead. From a89eb83ca90d01a3ad54409af0fc4b74255433d2 Mon Sep 17 00:00:00 2001 From: David Barrell Date: Tue, 27 Jun 2023 10:45:29 +1000 Subject: [PATCH 016/118] Apply suggestions from code review Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/agent/v3/securing.md | 4 +++- pages/apis/rest_api/clusters.md | 2 +- pages/clusters/manage_clusters.md | 6 +++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/pages/agent/v3/securing.md b/pages/agent/v3/securing.md index 42a430b16e..6e13734ddf 100644 --- a/pages/agent/v3/securing.md +++ b/pages/agent/v3/securing.md @@ -188,4 +188,6 @@ Since the [agent](https://github.com/buildkite/agent) is open-source, if necessa ## Restrict agent connection by IP address -Clusters provide a mechanism protect against the misuse of agent tokens and the hijacking of agent sessions, by restricting which IP addresses are allowed to connect using a given agent token. Setting the [_Allowed IP Addresses_ attribute](/docs/clusters/manage-clusters#set-up-clusters-restrict-access-for-a-cluster-token-by-ip-address) on a token will lock down agent registration, and forcefully disconnect any existing agents that fall outside the allowed IP ranges. +Clusters provide a mechanism to restrict which IP addresses can connect using a given agent token. This protects against the misuse of agent tokens and the hijacking of agent sessions. + +To restrict agent connection by IP address, set the [_Allowed IP Addresses_ attribute](/docs/clusters/manage-clusters#set-up-clusters-restrict-access-for-a-cluster-token-by-ip-address) with a list of the allowed IP addresses. Once set, agent registration is locked down, and any existing agents outside the allowed IP ranges are forcefully disconnected. diff --git a/pages/apis/rest_api/clusters.md b/pages/apis/rest_api/clusters.md index 44489637bf..bce9a19458 100644 --- a/pages/apis/rest_api/clusters.md +++ b/pages/apis/rest_api/clusters.md @@ -601,7 +601,7 @@ A [cluster token](/docs/clusters/manage-clusters#set-up-clusters-connect-agents- idID of the token graphql_idGraphQL ID of the token descriptionDescription of the token - allowed_ip_addressesA list of CIDR-notation IPv4 addresses from which agents can use this token + allowed_ip_addressesA list of CIDR-notation IPv4 addresses from which agents can use this token urlCanonical API URL of the token cluster_urlAPI URL of the cluster the token belongs to created_atWhen the token was created diff --git a/pages/clusters/manage_clusters.md b/pages/clusters/manage_clusters.md index 06158aedb2..58ff724bb2 100644 --- a/pages/clusters/manage_clusters.md +++ b/pages/clusters/manage_clusters.md @@ -72,10 +72,10 @@ You can set the _Allowed IP Addresses_ when creating a token, or you can modify 1. Navigate to the cluster's _Agent Tokens_. 1. Select the token to which you wish to restrict access. 1. Select _Edit_. -1. Update the _Allowed IP Addresses_ setting, using CIDR notation. -1. Click _Save Token_. +1. Update the _Allowed IP Addresses_ setting, using [CIDR notation](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing). +1. Select _Save Token_. -Note that modifying the _Allowed IP Addresses_ will forcefully disconnect any existing agents with IP addresses that fall outside the updated value. This will prevent the completion of any jobs in progress on those agents. +Modifying the _Allowed IP Addresses_ forcefully disconnects any existing agents with IP addresses outside the updated value. This prevents the completion of any jobs in progress on those agents. There is a maximum of 24 addresses per agent token, and IPv6 is currently not supported. From adfbfe0f12a52c42414d6b46f955c0bc2459525c Mon Sep 17 00:00:00 2001 From: David Barrell Date: Tue, 27 Jun 2023 10:46:18 +1000 Subject: [PATCH 017/118] Drive-by fix of b-s-p repo link --- pages/agent/v3/securing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/agent/v3/securing.md b/pages/agent/v3/securing.md index 6e13734ddf..eca076f455 100644 --- a/pages/agent/v3/securing.md +++ b/pages/agent/v3/securing.md @@ -106,7 +106,7 @@ done ## Signing pipelines -If using plugins is crucial to your workflow and you would still like to preserve strong security guarantees, take a look at the [buildkite-signed-pipeline](https://github.com/seek-oss/buildkite-signed-pipeline) tool. This tool allows uploaded steps to be signed with a secret shared by all agents, so that plugins can run without concerns of tampering by third parties. +If using plugins is crucial to your workflow and you would still like to preserve strong security guarantees, take a look at the [buildkite-signed-pipeline](https://github.com/buildkite/buildkite-signed-pipeline) tool. This tool allows uploaded steps to be signed with a secret shared by all agents, so that plugins can run without concerns of tampering by third parties. ## Allowing a list of plugins From bcd63a95d1cf9c41f66ffa210cb7e23e17773598 Mon Sep 17 00:00:00 2001 From: David Barrell Date: Tue, 27 Jun 2023 10:46:35 +1000 Subject: [PATCH 018/118] Replace addresses with CIDR blocks --- pages/clusters/manage_clusters.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/clusters/manage_clusters.md b/pages/clusters/manage_clusters.md index 58ff724bb2..cc61a402f6 100644 --- a/pages/clusters/manage_clusters.md +++ b/pages/clusters/manage_clusters.md @@ -77,7 +77,7 @@ You can set the _Allowed IP Addresses_ when creating a token, or you can modify Modifying the _Allowed IP Addresses_ forcefully disconnects any existing agents with IP addresses outside the updated value. This prevents the completion of any jobs in progress on those agents. -There is a maximum of 24 addresses per agent token, and IPv6 is currently not supported. +There is a maximum of 24 CIDR blocks per agent token, and IPv6 is currently not supported. ### Migrate to clusters From b1c33c84b13b1d3f01acc0060e15b057e114289d Mon Sep 17 00:00:00 2001 From: James Hill Date: Tue, 27 Jun 2023 11:03:17 +1000 Subject: [PATCH 019/118] Update pages/apis/graphql/graphql_cookbook.md Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/apis/graphql/graphql_cookbook.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/apis/graphql/graphql_cookbook.md b/pages/apis/graphql/graphql_cookbook.md index 8089061385..7bd851b597 100644 --- a/pages/apis/graphql/graphql_cookbook.md +++ b/pages/apis/graphql/graphql_cookbook.md @@ -662,7 +662,7 @@ query Usage { usage( aggregatedOnFrom: "2023-04-01" aggregatedOnTo: "2023-05-01" - resource:[JOB_MINUTES, TEST_EXECUTIONS] + resource: [JOB_MINUTES, TEST_EXECUTIONS] ) { edges { node { From 8e74a34f5fc297821c183f191d3dca96f651bd09 Mon Sep 17 00:00:00 2001 From: James Hill Date: Tue, 27 Jun 2023 11:03:24 +1000 Subject: [PATCH 020/118] Update pages/apis/graphql/graphql_cookbook.md Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/apis/graphql/graphql_cookbook.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/apis/graphql/graphql_cookbook.md b/pages/apis/graphql/graphql_cookbook.md index 7bd851b597..040892fa52 100644 --- a/pages/apis/graphql/graphql_cookbook.md +++ b/pages/apis/graphql/graphql_cookbook.md @@ -678,7 +678,7 @@ query Usage { node { __typename ... on TestExecutionsUsage { - Time:aggregatedOn + Time: aggregatedOn executions suite { name From 487b9191c677c5161beb2dc9f151ca1830c5b32f Mon Sep 17 00:00:00 2001 From: James Hill Date: Tue, 27 Jun 2023 11:03:31 +1000 Subject: [PATCH 021/118] Update pages/apis/graphql/graphql_cookbook.md Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/apis/graphql/graphql_cookbook.md | 1 - 1 file changed, 1 deletion(-) diff --git a/pages/apis/graphql/graphql_cookbook.md b/pages/apis/graphql/graphql_cookbook.md index 040892fa52..4c47a0b59a 100644 --- a/pages/apis/graphql/graphql_cookbook.md +++ b/pages/apis/graphql/graphql_cookbook.md @@ -675,7 +675,6 @@ query Usage { } } } - node { __typename ... on TestExecutionsUsage { Time: aggregatedOn From 1f56815c136f08a7f0bce6d20d4bb99c8f5b5a7b Mon Sep 17 00:00:00 2001 From: James Hill Date: Tue, 27 Jun 2023 11:03:42 +1000 Subject: [PATCH 022/118] Update pages/pipelines/job_minutes.md Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/pipelines/job_minutes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/pipelines/job_minutes.md b/pages/pipelines/job_minutes.md index cd26f8ff28..cad8a68fff 100644 --- a/pages/pipelines/job_minutes.md +++ b/pages/pipelines/job_minutes.md @@ -21,7 +21,7 @@ The [Usage page](https://buildkite.com/organizations/~/usage) is available on ev The [Job minutes usage page](https://buildkite.com/organizations/~/usage/job_minutes) graphs the total job minute usage over the organization's billing periods. It includes a breakdown of usage by pipeline and a CSV download of usage over the period. -Your organization's usage is also accessible via the [GraphQL API](/docs/apis/graphql/graphql-cookbook#organizations-query-the-usage-api). +Your organization's usage is also accessible in the [GraphQL API](/docs/apis/graphql/graphql-cookbook#organizations-query-the-usage-api). >šŸ“˜ Calculating job minutes usage > We store job usage data in seconds but charge by summing all the usage and rounding down to the nearest minute. Please keep in mind that when displaying usage data per pipeline in the chart and CSV download, there may be minor discrepancies due to the rounding of each individual pipeline's usage. From ef6df57b344d0c0946d22a87b146866a00c8b5cc Mon Sep 17 00:00:00 2001 From: James Hill Date: Tue, 27 Jun 2023 11:03:47 +1000 Subject: [PATCH 023/118] Update pages/test_analytics/test_executions.md Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/test_analytics/test_executions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/test_analytics/test_executions.md b/pages/test_analytics/test_executions.md index 6f2f5862e8..35a08ab81a 100644 --- a/pages/test_analytics/test_executions.md +++ b/pages/test_analytics/test_executions.md @@ -11,4 +11,4 @@ The [Usage page](https://buildkite.com/organizations/~/usage) is available on ev The [test executions usage page](https://buildkite.com/organizations/~/usage/test_executions) graphs the total executions over the organization's billing periods. It includes a breakdown of usage by suite and a CSV download of usage over the period. -Your organization's usage is also accessible via the [GraphQL API](/docs/apis/graphql/graphql-cookbook#organizations-query-the-usage-api). +Your organization's usage is also accessible in the [GraphQL API](/docs/apis/graphql/graphql-cookbook#organizations-query-the-usage-api). From 33b2e1c18d21b06fb93b8f325f8cbfcbff1f278a Mon Sep 17 00:00:00 2001 From: Himal Date: Tue, 20 Jun 2023 16:42:54 +1000 Subject: [PATCH 024/118] Initial commit --- data/nav_graphql.yml | 2 + pages/apis/graphql/graphql_resource_limits.md | 174 ++++++++++++++++++ 2 files changed, 176 insertions(+) create mode 100644 pages/apis/graphql/graphql_resource_limits.md diff --git a/data/nav_graphql.yml b/data/nav_graphql.yml index 5fa0e211ba..4e23e92c02 100644 --- a/data/nav_graphql.yml +++ b/data/nav_graphql.yml @@ -5,6 +5,8 @@ path: apis/graphql/graphql-tutorial - name: Cookbook path: apis/graphql/graphql-cookbook +- name: Limits + path: apis/graphql/graphql-resource-limits - name: Queries children: - name: agent diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md new file mode 100644 index 0000000000..ba7c106d9c --- /dev/null +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -0,0 +1,174 @@ +# GraphQL resource limits + +To make sure that Buildkite stays stable for everyone, we have set some limits on our GraphQL API. These limits prevent excessive or abusive calls to our servers while still allowing API users to use GraphQL endpoints in a wide range of ways. + +Our limits are based on the complexity of the query. We calculate complexity based requested resources of the query and encourage developers to responsibly use techniques for limiting calls, pagination, caching and retrying requests to lower the complexity of the queries. + + +## Query complexity +Every field type in the schema has an integer cost assigned to it. The cost of the query is the sum of the cost of each field. Usually, running the query is the best way to know the true cost of the query. + +A cost is based on what the field returns. + + + + + + + + + + + + + + + + + + + + + + +
Scalar0 complexity point
Enum0 complexity point
Object1 complexity point
Interface1 complexity point
Union1 complexity point
+ +Although these default costs are in place, Buildkite also reserves the right to set manual costs to individual fields. + + +## Complexity calculation + +Buildkite calculates the cost of the query before and after the query execution. + +### Requested complexity +The requested complexity is based on the number of fields and objects requested. Usually, requesting a deeply nested query or excluding pagination details from connections results in high requested complexity. + +A simple query like the following would incur more than 500 requested complexity points as the query asks for 503 possible resources. + +```graphql +query RecentPipelineSlugs { + organization(slug: "organization-slug") { # 1 point + pipelines(first: 500) { # 1 point + edges { # 1 point + node { # 500 points + slug # 0 point + } + } + } + } +} +``` + +### Actual complexity +The actual complexity is based on the results returned after the query execution, since the connection fields can return fewer nodes than requested. Lowering requested complexity usually lowers the actual complexity of queries. + +Taking the same query as above, if the organization has only 10 pipelines, the actual complexity will be around 13. + +```graphql +query RecentPipelineSlugs { + organization(slug: "organization-slug") { # 1 point + pipelines(first: 500) { # 1 point + edges { # 1 point + node { # 10 points + slug # 0 point + } + } + } + } +} +``` + + + + + +## Rate limits +Buildkite has implemented two distinct limits to our graphql endpoints. These limits play a critical role in ensuring that our platform operates smoothly and efficiently, while also minimising the risk of unnecessary downtime or system failures. + +By enforcing these limits, we can effectively manage and allocate the necessary resources for our graphql endpoints. + +### Single query limit + +Buildkite's API has a requested complexity limit of 50,000 for each individual query. This limit is enforced prior to query execution. The intention of this limit is to prevent users from requesting an excessive number of resources in a single query. + +As a best practice, we recommend breaking up queries into smaller, more manageable chunks and utilizing pagination to navigate through the resulting list, rather than relying on a single large query. + +If the query exceeds the limit, the response will return HTTP 200 status code with the following error. + +```json +{ + "errors": [ + { + "message": "Query has complexity of 251503, which exceeds max complexity of 50000" + } + ] +} +``` + + +### Time based rate limit + +To ensure optimal performance, an organization can use up to 20,000 actual complexity points within a 5 minute period. By allowing a set number of actual complexity points, we provide organizations flexibility to run query of different sizes within a 5 minute window. + +As a best practice, we recommend utilising client size strategies like caching to lower the number of API calls, queues to schedule API calls or proper use of pagination to only request necessary data to manage time based rate limits. + +If an organisation exceeds the 20,000 points limit, the response will return HTTP 429 status code with the following error. + +```json +{ + "errors": [ + { + "message": "Your organization has exceeded the limit of 20000 complexity points. Please try again in 187 seconds." + } + ] +} +``` + + +## Accessing limits details + +### HTTP headers + +We provide rate limit status on response headers of each GraphQL call. We have 3 rate limit related headers + +```js +RateLimit-Remaining: 20 +RateLimit-Limit: 10000 +RateLimit-Reset: 120 +``` + +`RateLimit-Remaining` provides the remaining complexity left within the current time window. +`RateLimit-Limit` is the complexity limit for the time window. +`RateLimit-Limit` is the number of seconds remaining until a new time window is started and the limits are reset. + + +### Response body + +You can include the header `Buildkite-Include-Query-Stats` to the graphql request, which will return the complexity data along with the graphql response. + +```json +{ + "data" : { + "organization": { + "name": "Buildkite" + } + }, + "stats" : { + "requestedComplexity": 1910, + "actualComplexity": 550 + } +} +``` + +## Best practices to avoid rate limit errors + +Designing your client application with best practices in mind is the best way to avoid throttling errors. For example, you can stagger API requests in a queue and do other processing tasks while waiting for the next queued job to run. + +Consider the following best practices when designing the app: + +* Optimize the request by only requesting data your app requires. We recommend using specific queries rather than a single all-purpose queries. +* Always use appropriate `first` or `last` values when requesting connections. Not providing those may default to up to 500 which can increase the requested complexity exponentially. +* Use strategies like caching for data that you use often and are unlikely to be updated instead of calling APIs constantly. +* Regulate the rate of your requests for smoother distribution. These can be done by using queues or scheduling API calls in appropriate intervals. +* Use metadata about your appā€™s API usage, including rate limit status to manage appā€™s behaviour dynamically. +* Think of rate limiting while designing your client application. Be mindful of retries, errors, loops and the frequency of API calls. From e31159a48432b44e64db2bac53df726f99f37dfe Mon Sep 17 00:00:00 2001 From: Himal Date: Tue, 20 Jun 2023 16:49:28 +1000 Subject: [PATCH 025/118] Update graphql to GraphQL --- pages/apis/graphql/graphql_resource_limits.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index ba7c106d9c..0cb37bf206 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -83,9 +83,9 @@ query RecentPipelineSlugs { ## Rate limits -Buildkite has implemented two distinct limits to our graphql endpoints. These limits play a critical role in ensuring that our platform operates smoothly and efficiently, while also minimising the risk of unnecessary downtime or system failures. +Buildkite has implemented two distinct limits to our GraphQL endpoints. These limits play a critical role in ensuring that our platform operates smoothly and efficiently, while also minimising the risk of unnecessary downtime or system failures. -By enforcing these limits, we can effectively manage and allocate the necessary resources for our graphql endpoints. +By enforcing these limits, we can effectively manage and allocate the necessary resources for our GraphQL endpoints. ### Single query limit @@ -144,7 +144,7 @@ RateLimit-Reset: 120 ### Response body -You can include the header `Buildkite-Include-Query-Stats` to the graphql request, which will return the complexity data along with the graphql response. +You can include the header `Buildkite-Include-Query-Stats` to the GraphQL request, which will return the complexity data along with the GraphQL response. ```json { @@ -162,13 +162,13 @@ You can include the header `Buildkite-Include-Query-Stats` to the graphql reque ## Best practices to avoid rate limit errors -Designing your client application with best practices in mind is the best way to avoid throttling errors. For example, you can stagger API requests in a queue and do other processing tasks while waiting for the next queued job to run. +Designing your client application with best practices in mind is the best way to avoid throttling errors. For example, you can stagger API requests in a queue and do other processing tasks while waiting for the next queued job to run. Consider the following best practices when designing the app: * Optimize the request by only requesting data your app requires. We recommend using specific queries rather than a single all-purpose queries. * Always use appropriate `first` or `last` values when requesting connections. Not providing those may default to up to 500 which can increase the requested complexity exponentially. -* Use strategies like caching for data that you use often and are unlikely to be updated instead of calling APIs constantly. +* Use strategies like caching for data that you use often and are unlikely to be updated instead of calling APIs constantly. * Regulate the rate of your requests for smoother distribution. These can be done by using queues or scheduling API calls in appropriate intervals. * Use metadata about your appā€™s API usage, including rate limit status to manage appā€™s behaviour dynamically. * Think of rate limiting while designing your client application. Be mindful of retries, errors, loops and the frequency of API calls. From a1bde89309bef55cc90ac28d5ced40f97b118626 Mon Sep 17 00:00:00 2001 From: Himal Date: Wed, 21 Jun 2023 11:52:04 +1000 Subject: [PATCH 026/118] Update pages/apis/graphql/graphql_resource_limits.md Co-authored-by: James Healy --- pages/apis/graphql/graphql_resource_limits.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index 0cb37bf206..9dbd227fd0 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -133,7 +133,7 @@ We provide rate limit status on response headers of each GraphQL call. We have 3 ```js RateLimit-Remaining: 20 -RateLimit-Limit: 10000 +RateLimit-Limit: 20000 RateLimit-Reset: 120 ``` From c23b1eefa5b6a73b77a59b7aa6464173c5b71c57 Mon Sep 17 00:00:00 2001 From: Himal Date: Thu, 22 Jun 2023 16:53:19 +1000 Subject: [PATCH 027/118] Update pages/apis/graphql/graphql_resource_limits.md Co-authored-by: Juanito Fatas --- pages/apis/graphql/graphql_resource_limits.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index 9dbd227fd0..af68747313 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -112,7 +112,7 @@ To ensure optimal performance, an organization can use up to 20,000 actual compl As a best practice, we recommend utilising client size strategies like caching to lower the number of API calls, queues to schedule API calls or proper use of pagination to only request necessary data to manage time based rate limits. -If an organisation exceeds the 20,000 points limit, the response will return HTTP 429 status code with the following error. +If an organization exceeds the 20,000 points limit, the response will return HTTP 429 status code with the following error. ```json { From 4d559bc00edcfd27529de35087b2685f85e48c42 Mon Sep 17 00:00:00 2001 From: Himal Date: Thu, 22 Jun 2023 16:53:28 +1000 Subject: [PATCH 028/118] Update pages/apis/graphql/graphql_resource_limits.md Co-authored-by: Shevaun Coker --- pages/apis/graphql/graphql_resource_limits.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index af68747313..4cdfed32f3 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -108,7 +108,7 @@ If the query exceeds the limit, the response will return HTTP 200 status code wi ### Time based rate limit -To ensure optimal performance, an organization can use up to 20,000 actual complexity points within a 5 minute period. By allowing a set number of actual complexity points, we provide organizations flexibility to run query of different sizes within a 5 minute window. +To ensure optimal performance, an organization can use up to 20,000 actual complexity points within a 5 minute period. By allowing a set number of actual complexity points, we provide organizations flexibility to run queries of different sizes within a 5 minute window. As a best practice, we recommend utilising client size strategies like caching to lower the number of API calls, queues to schedule API calls or proper use of pagination to only request necessary data to manage time based rate limits. From b16ff9efd7e9e12cf46f72c759a1b61a58eb5669 Mon Sep 17 00:00:00 2001 From: Himal Date: Thu, 22 Jun 2023 16:53:34 +1000 Subject: [PATCH 029/118] Update pages/apis/graphql/graphql_resource_limits.md Co-authored-by: Shevaun Coker --- pages/apis/graphql/graphql_resource_limits.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index 4cdfed32f3..99422225e7 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -110,7 +110,7 @@ If the query exceeds the limit, the response will return HTTP 200 status code wi To ensure optimal performance, an organization can use up to 20,000 actual complexity points within a 5 minute period. By allowing a set number of actual complexity points, we provide organizations flexibility to run queries of different sizes within a 5 minute window. -As a best practice, we recommend utilising client size strategies like caching to lower the number of API calls, queues to schedule API calls or proper use of pagination to only request necessary data to manage time based rate limits. +As a best practice, we recommend utilizing client size strategies like caching to lower the number of API calls, queues to schedule API calls or proper use of pagination to only request necessary data to manage time based rate limits. If an organization exceeds the 20,000 points limit, the response will return HTTP 429 status code with the following error. From 9b39b21b0619cbdfb9822f1054cac77d4d6e641c Mon Sep 17 00:00:00 2001 From: Himal Date: Thu, 22 Jun 2023 16:53:44 +1000 Subject: [PATCH 030/118] Update pages/apis/graphql/graphql_resource_limits.md Co-authored-by: Shevaun Coker --- pages/apis/graphql/graphql_resource_limits.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index 99422225e7..88b3db7195 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -166,7 +166,7 @@ Designing your client application with best practices in mind is the best way to Consider the following best practices when designing the app: -* Optimize the request by only requesting data your app requires. We recommend using specific queries rather than a single all-purpose queries. +* Optimize the request by only requesting data your app requires. We recommend using specific queries rather than a single all-purpose query. * Always use appropriate `first` or `last` values when requesting connections. Not providing those may default to up to 500 which can increase the requested complexity exponentially. * Use strategies like caching for data that you use often and are unlikely to be updated instead of calling APIs constantly. * Regulate the rate of your requests for smoother distribution. These can be done by using queues or scheduling API calls in appropriate intervals. From c7d403d27e462f23449768b93f5ad4133923332a Mon Sep 17 00:00:00 2001 From: Himal Date: Thu, 22 Jun 2023 16:53:57 +1000 Subject: [PATCH 031/118] Update pages/apis/graphql/graphql_resource_limits.md Co-authored-by: Shevaun Coker --- pages/apis/graphql/graphql_resource_limits.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index 88b3db7195..50d985511b 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -167,7 +167,7 @@ Designing your client application with best practices in mind is the best way to Consider the following best practices when designing the app: * Optimize the request by only requesting data your app requires. We recommend using specific queries rather than a single all-purpose query. -* Always use appropriate `first` or `last` values when requesting connections. Not providing those may default to up to 500 which can increase the requested complexity exponentially. +* Always use appropriate `first` or `last` values when requesting connections. Not providing those may default to 500 which can increase the requested complexity exponentially. * Use strategies like caching for data that you use often and are unlikely to be updated instead of calling APIs constantly. * Regulate the rate of your requests for smoother distribution. These can be done by using queues or scheduling API calls in appropriate intervals. * Use metadata about your appā€™s API usage, including rate limit status to manage appā€™s behaviour dynamically. From 64e662e984d513e24e6ff2cb21e0208dddbfdd24 Mon Sep 17 00:00:00 2001 From: Himal Date: Fri, 23 Jun 2023 09:53:14 +1000 Subject: [PATCH 032/118] Update pages/apis/graphql/graphql_resource_limits.md Co-authored-by: James Hill --- pages/apis/graphql/graphql_resource_limits.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index 50d985511b..96f806f96e 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -2,7 +2,7 @@ To make sure that Buildkite stays stable for everyone, we have set some limits on our GraphQL API. These limits prevent excessive or abusive calls to our servers while still allowing API users to use GraphQL endpoints in a wide range of ways. -Our limits are based on the complexity of the query. We calculate complexity based requested resources of the query and encourage developers to responsibly use techniques for limiting calls, pagination, caching and retrying requests to lower the complexity of the queries. +Our limits are based on the complexity of the query. We calculate complexity based on requested resources of the query and encourage developers to responsibly use techniques for limiting calls, pagination, caching and retrying requests to lower the complexity of the queries. ## Query complexity From 45e7c6307dd698e29cc803083838be8f2a20d9e1 Mon Sep 17 00:00:00 2001 From: Himal Date: Fri, 23 Jun 2023 09:53:36 +1000 Subject: [PATCH 033/118] Update pages/apis/graphql/graphql_resource_limits.md Co-authored-by: James Hill --- pages/apis/graphql/graphql_resource_limits.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index 96f806f96e..1c6280fc67 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -1,6 +1,6 @@ # GraphQL resource limits -To make sure that Buildkite stays stable for everyone, we have set some limits on our GraphQL API. These limits prevent excessive or abusive calls to our servers while still allowing API users to use GraphQL endpoints in a wide range of ways. +To ensure that Buildkite stays stable for everyone, we have set some limits on our GraphQL API. These limits prevent excessive or abusive calls to our servers while still allowing API users to use GraphQL endpoints in a wide range of ways. Our limits are based on the complexity of the query. We calculate complexity based on requested resources of the query and encourage developers to responsibly use techniques for limiting calls, pagination, caching and retrying requests to lower the complexity of the queries. From 97766b79e4619a61f6813a82fcc304a47b150cb9 Mon Sep 17 00:00:00 2001 From: Himal Date: Fri, 23 Jun 2023 09:53:48 +1000 Subject: [PATCH 034/118] Update pages/apis/graphql/graphql_resource_limits.md Co-authored-by: James Hill --- pages/apis/graphql/graphql_resource_limits.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index 1c6280fc67..5cd4fc3a8f 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -33,7 +33,7 @@ A cost is based on what the field returns. -Although these default costs are in place, Buildkite also reserves the right to set manual costs to individual fields. +Although these default costs are in place, Buildkite reserves the right to set manual costs to individual fields. ## Complexity calculation From b678c31e1a653ed05c83b3dcce217957c7c16e01 Mon Sep 17 00:00:00 2001 From: Himal Date: Fri, 23 Jun 2023 09:54:21 +1000 Subject: [PATCH 035/118] Update pages/apis/graphql/graphql_resource_limits.md Co-authored-by: James Hill --- pages/apis/graphql/graphql_resource_limits.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index 5cd4fc3a8f..c171e1e400 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -41,7 +41,7 @@ Although these default costs are in place, Buildkite reserves the right to set m Buildkite calculates the cost of the query before and after the query execution. ### Requested complexity -The requested complexity is based on the number of fields and objects requested. Usually, requesting a deeply nested query or excluding pagination details from connections results in high requested complexity. +The requested complexity is calculated based on the number of fields and objects requested. Usually, requesting a deeply nested query or excluding pagination details from connections results in high requested complexity. A simple query like the following would incur more than 500 requested complexity points as the query asks for 503 possible resources. From c256581a309a8220bf6980484b5e73ef64b47f46 Mon Sep 17 00:00:00 2001 From: Himal Date: Fri, 23 Jun 2023 09:54:29 +1000 Subject: [PATCH 036/118] Update pages/apis/graphql/graphql_resource_limits.md Co-authored-by: James Hill --- pages/apis/graphql/graphql_resource_limits.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index c171e1e400..11397c9797 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -60,7 +60,7 @@ query RecentPipelineSlugs { ``` ### Actual complexity -The actual complexity is based on the results returned after the query execution, since the connection fields can return fewer nodes than requested. Lowering requested complexity usually lowers the actual complexity of queries. +The actual complexity is based on the results returned after the query execution, since the connection fields can return fewer nodes than requested. Lowering the requested complexity usually lowers the actual complexity of queries. Taking the same query as above, if the organization has only 10 pipelines, the actual complexity will be around 13. From 6c64184aeab7b77be92de85370fac1e186707505 Mon Sep 17 00:00:00 2001 From: Himal Date: Fri, 23 Jun 2023 09:54:36 +1000 Subject: [PATCH 037/118] Update pages/apis/graphql/graphql_resource_limits.md Co-authored-by: James Hill --- pages/apis/graphql/graphql_resource_limits.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index 11397c9797..a8f4bcacaf 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -83,7 +83,7 @@ query RecentPipelineSlugs { ## Rate limits -Buildkite has implemented two distinct limits to our GraphQL endpoints. These limits play a critical role in ensuring that our platform operates smoothly and efficiently, while also minimising the risk of unnecessary downtime or system failures. +Buildkite has implemented two distinct limits to our GraphQL endpoints. These limits play a critical role in ensuring that our platform operates smoothly and efficiently, while minimising the risk of unnecessary downtime or system failures. By enforcing these limits, we can effectively manage and allocate the necessary resources for our GraphQL endpoints. From d2d7c80316c0e0fa0cd7494cd3e957bdc801b13f Mon Sep 17 00:00:00 2001 From: Himal Date: Fri, 23 Jun 2023 09:55:51 +1000 Subject: [PATCH 038/118] Update pages/apis/graphql/graphql_resource_limits.md Co-authored-by: James Healy --- pages/apis/graphql/graphql_resource_limits.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index a8f4bcacaf..c81b3113f9 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -139,7 +139,7 @@ RateLimit-Reset: 120 `RateLimit-Remaining` provides the remaining complexity left within the current time window. `RateLimit-Limit` is the complexity limit for the time window. -`RateLimit-Limit` is the number of seconds remaining until a new time window is started and the limits are reset. +`RateLimit-Reset` is the number of seconds remaining until a new time window is started and the limits are reset. ### Response body From aef7430c39ce6636cdf9c993fddfccfeded0e9ab Mon Sep 17 00:00:00 2001 From: Himal Date: Fri, 23 Jun 2023 16:08:09 +1000 Subject: [PATCH 039/118] Update pages/apis/graphql/graphql_resource_limits.md Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/apis/graphql/graphql_resource_limits.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index c81b3113f9..cb76541640 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -4,8 +4,8 @@ To ensure that Buildkite stays stable for everyone, we have set some limits on o Our limits are based on the complexity of the query. We calculate complexity based on requested resources of the query and encourage developers to responsibly use techniques for limiting calls, pagination, caching and retrying requests to lower the complexity of the queries. - ## Query complexity + Every field type in the schema has an integer cost assigned to it. The cost of the query is the sum of the cost of each field. Usually, running the query is the best way to know the true cost of the query. A cost is based on what the field returns. From 8461e1174da127a5bf56a8440de794a7c0fe07e1 Mon Sep 17 00:00:00 2001 From: Himal Date: Fri, 23 Jun 2023 16:08:56 +1000 Subject: [PATCH 040/118] Update pages/apis/graphql/graphql_resource_limits.md Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/apis/graphql/graphql_resource_limits.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index cb76541640..2ccbc82c22 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -1,6 +1,6 @@ # GraphQL resource limits -To ensure that Buildkite stays stable for everyone, we have set some limits on our GraphQL API. These limits prevent excessive or abusive calls to our servers while still allowing API users to use GraphQL endpoints in a wide range of ways. +To ensure that Buildkite stays stable for everyone, there are limits on how you can use the GraphQL API. These limits prevent excessive or abusive calls to the servers while still allowing you to use GraphQL endpoints in a wide range of ways. Our limits are based on the complexity of the query. We calculate complexity based on requested resources of the query and encourage developers to responsibly use techniques for limiting calls, pagination, caching and retrying requests to lower the complexity of the queries. From ef41feef5d5044d711f937d3f1e77da90425a327 Mon Sep 17 00:00:00 2001 From: Himal Date: Fri, 23 Jun 2023 16:11:29 +1000 Subject: [PATCH 041/118] Update pages/apis/graphql/graphql_resource_limits.md Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/apis/graphql/graphql_resource_limits.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index 2ccbc82c22..182e7ee01a 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -2,7 +2,7 @@ To ensure that Buildkite stays stable for everyone, there are limits on how you can use the GraphQL API. These limits prevent excessive or abusive calls to the servers while still allowing you to use GraphQL endpoints in a wide range of ways. -Our limits are based on the complexity of the query. We calculate complexity based on requested resources of the query and encourage developers to responsibly use techniques for limiting calls, pagination, caching and retrying requests to lower the complexity of the queries. +The limits are based on query complexity, which is calculated from the requested resources. We recommend using techniques for limiting calls, pagination, caching, and retrying requests to lower the complexity of queries. ## Query complexity From ae7684083df9661afa2c72131b160d83c17a631e Mon Sep 17 00:00:00 2001 From: Himal Date: Fri, 23 Jun 2023 16:11:55 +1000 Subject: [PATCH 042/118] Update pages/apis/graphql/graphql_resource_limits.md Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/apis/graphql/graphql_resource_limits.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index 182e7ee01a..b0fd49b8f1 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -8,7 +8,7 @@ The limits are based on query complexity, which is calculated from the requested Every field type in the schema has an integer cost assigned to it. The cost of the query is the sum of the cost of each field. Usually, running the query is the best way to know the true cost of the query. -A cost is based on what the field returns. +A cost is based on what the field returns using the following values. From 466132fecfd59f4d941f90019330d525b3b1215c Mon Sep 17 00:00:00 2001 From: Himal Date: Fri, 23 Jun 2023 16:15:41 +1000 Subject: [PATCH 043/118] Update pages/apis/graphql/graphql_resource_limits.md Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/apis/graphql/graphql_resource_limits.md | 1 - 1 file changed, 1 deletion(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index b0fd49b8f1..1557d1e632 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -35,7 +35,6 @@ A cost is based on what the field returns using the following values. Although these default costs are in place, Buildkite reserves the right to set manual costs to individual fields. - ## Complexity calculation Buildkite calculates the cost of the query before and after the query execution. From 3270484a782742f736cb5e2d5e0a6afb12dd782b Mon Sep 17 00:00:00 2001 From: Himal Date: Fri, 23 Jun 2023 16:16:03 +1000 Subject: [PATCH 044/118] Update pages/apis/graphql/graphql_resource_limits.md Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/apis/graphql/graphql_resource_limits.md | 1 + 1 file changed, 1 insertion(+) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index 1557d1e632..135b6ca2fd 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -40,6 +40,7 @@ Although these default costs are in place, Buildkite reserves the right to set m Buildkite calculates the cost of the query before and after the query execution. ### Requested complexity + The requested complexity is calculated based on the number of fields and objects requested. Usually, requesting a deeply nested query or excluding pagination details from connections results in high requested complexity. A simple query like the following would incur more than 500 requested complexity points as the query asks for 503 possible resources. From 9ec2ddf621ca007ad947f25de9021704dfa772e6 Mon Sep 17 00:00:00 2001 From: Himal Date: Fri, 23 Jun 2023 16:16:13 +1000 Subject: [PATCH 045/118] Update pages/apis/graphql/graphql_resource_limits.md Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/apis/graphql/graphql_resource_limits.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index 135b6ca2fd..15ce40ba7c 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -171,4 +171,4 @@ Consider the following best practices when designing the app: * Use strategies like caching for data that you use often and are unlikely to be updated instead of calling APIs constantly. * Regulate the rate of your requests for smoother distribution. These can be done by using queues or scheduling API calls in appropriate intervals. * Use metadata about your appā€™s API usage, including rate limit status to manage appā€™s behaviour dynamically. -* Think of rate limiting while designing your client application. Be mindful of retries, errors, loops and the frequency of API calls. +* Think of rate limiting while designing your client application. Be mindful of retries, errors, loops, and the frequency of API calls. From 0a5900de7ae3e192c4f8c7b45bff209da069031a Mon Sep 17 00:00:00 2001 From: Himal Date: Fri, 23 Jun 2023 16:24:06 +1000 Subject: [PATCH 046/118] Apply suggestions from code review Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/apis/graphql/graphql_resource_limits.md | 91 +++++++++++-------- 1 file changed, 52 insertions(+), 39 deletions(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index 15ce40ba7c..4163fa7135 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -11,26 +11,34 @@ Every field type in the schema has an integer cost assigned to it. The cost of t A cost is based on what the field returns using the following values.
- - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Scalar0 complexity point
Enum0 complexity point
Object1 complexity point
Interface1 complexity point
Union1 complexity point
Field typeComplexity value
Scalar0
Enum0
Object1
Interface1
Union1
Although these default costs are in place, Buildkite reserves the right to set manual costs to individual fields. @@ -51,7 +59,7 @@ query RecentPipelineSlugs { pipelines(first: 500) { # 1 point edges { # 1 point node { # 500 points - slug # 0 point + slug # 0 points } } } @@ -60,9 +68,10 @@ query RecentPipelineSlugs { ``` ### Actual complexity + The actual complexity is based on the results returned after the query execution, since the connection fields can return fewer nodes than requested. Lowering the requested complexity usually lowers the actual complexity of queries. -Taking the same query as above, if the organization has only 10 pipelines, the actual complexity will be around 13. +Taking the same query used earlier, if the organization has only 10 pipelines, the actual complexity will be around 13. ```graphql query RecentPipelineSlugs { @@ -70,7 +79,7 @@ query RecentPipelineSlugs { pipelines(first: 500) { # 1 point edges { # 1 point node { # 10 points - slug # 0 point + slug # 0 points } } } @@ -82,8 +91,9 @@ query RecentPipelineSlugs { + ## Rate limits -Buildkite has implemented two distinct limits to our GraphQL endpoints. These limits play a critical role in ensuring that our platform operates smoothly and efficiently, while minimising the risk of unnecessary downtime or system failures. +Buildkite has implemented two distinct limits to the GraphQL endpoints. These limits play a critical role in ensuring the platform operates smoothly and efficiently, while minimizing the risk of unnecessary downtime or system failures. By enforcing these limits, we can effectively manage and allocate the necessary resources for our GraphQL endpoints. @@ -91,7 +101,7 @@ By enforcing these limits, we can effectively manage and allocate the necessary Buildkite's API has a requested complexity limit of 50,000 for each individual query. This limit is enforced prior to query execution. The intention of this limit is to prevent users from requesting an excessive number of resources in a single query. -As a best practice, we recommend breaking up queries into smaller, more manageable chunks and utilizing pagination to navigate through the resulting list, rather than relying on a single large query. +As a best practice, we recommend breaking up queries into smaller, more manageable chunks and utilizing pagination to navigate through the resulting list rather than relying on a single large query. If the query exceeds the limit, the response will return HTTP 200 status code with the following error. @@ -105,14 +115,17 @@ If the query exceeds the limit, the response will return HTTP 200 status code wi } ``` +### Time-based rate limit -### Time based rate limit +To ensure optimal performance, an organization can use up to 20,000 actual complexity points within a 5-minute period. By allowing a set number of actual complexity points, you have the flexibility to run queries of different sizes within a 5-minute window. -To ensure optimal performance, an organization can use up to 20,000 actual complexity points within a 5 minute period. By allowing a set number of actual complexity points, we provide organizations flexibility to run queries of different sizes within a 5 minute window. +As a best practice, we recommend utilizing client-side strategies like the following to manage time-based rate limits: -As a best practice, we recommend utilizing client size strategies like caching to lower the number of API calls, queues to schedule API calls or proper use of pagination to only request necessary data to manage time based rate limits. +- Caching to lower the number of API calls. +- Queues to schedule API calls. +- Pagination to only request the necessary data. -If an organization exceeds the 20,000 points limit, the response will return HTTP 429 status code with the following error. +If an organization exceeds the 20,000 point limit, the response will return HTTP 429 status code with the following error. ```json { @@ -125,11 +138,11 @@ If an organization exceeds the 20,000 points limit, the response will return HTT ``` -## Accessing limits details +## Accessing limit details ### HTTP headers -We provide rate limit status on response headers of each GraphQL call. We have 3 rate limit related headers +The rate limit status is available in the following response headers of each GraphQL call: ```js RateLimit-Remaining: 20 @@ -144,7 +157,7 @@ RateLimit-Reset: 120 ### Response body -You can include the header `Buildkite-Include-Query-Stats` to the GraphQL request, which will return the complexity data along with the GraphQL response. +To include the complexity data in responses, use the `Buildkite-Include-Query-Stats` header in GraphQL requests. This returns the complexity data in the response like the following: ```json { @@ -162,13 +175,13 @@ You can include the header `Buildkite-Include-Query-Stats` to the GraphQL reque ## Best practices to avoid rate limit errors -Designing your client application with best practices in mind is the best way to avoid throttling errors. For example, you can stagger API requests in a queue and do other processing tasks while waiting for the next queued job to run. +Designing your client application with best practices in mind is the simplest way to avoid throttling errors. For example, you can stagger API requests in a queue and do other processing tasks while waiting for the next queued job to run. -Consider the following best practices when designing the app: +Consider the following best practices when designing you API usage: -* Optimize the request by only requesting data your app requires. We recommend using specific queries rather than a single all-purpose query. -* Always use appropriate `first` or `last` values when requesting connections. Not providing those may default to 500 which can increase the requested complexity exponentially. -* Use strategies like caching for data that you use often and are unlikely to be updated instead of calling APIs constantly. -* Regulate the rate of your requests for smoother distribution. These can be done by using queues or scheduling API calls in appropriate intervals. -* Use metadata about your appā€™s API usage, including rate limit status to manage appā€™s behaviour dynamically. +* Optimize the request by only requesting data you require. We recommend using specific queries rather than a single all-purpose query. +* Always use appropriate `first` or `last` values when requesting connections. Not providing those may default to 500, which can increase the requested complexity exponentially. +* Use strategies like caching for data you use often that is unlikely to be updated instead of constantly calling APIs. +* Regulate the rate of your requests for smoother distribution. You can do this using queues or scheduling API calls in appropriate intervals. +* Use metadata about your API usage, including rate limit status to manage the behavior dynamically. * Think of rate limiting while designing your client application. Be mindful of retries, errors, loops, and the frequency of API calls. From 046b599d7ee7277494569f8811e054813a4f01db Mon Sep 17 00:00:00 2001 From: Himal Date: Fri, 23 Jun 2023 16:31:11 +1000 Subject: [PATCH 047/118] PR review --- pages/apis/graphql/graphql_resource_limits.md | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index 4163fa7135..d7b1acd2d1 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -41,7 +41,7 @@ A cost is based on what the field returns using the following values. -Although these default costs are in place, Buildkite reserves the right to set manual costs to individual fields. +Although these default costs are in place, Buildkite reserves the right to set different costs for specific fields. ## Complexity calculation @@ -87,11 +87,6 @@ query RecentPipelineSlugs { } ``` - - - - - ## Rate limits Buildkite has implemented two distinct limits to the GraphQL endpoints. These limits play a critical role in ensuring the platform operates smoothly and efficiently, while minimizing the risk of unnecessary downtime or system failures. @@ -144,17 +139,16 @@ If an organization exceeds the 20,000 point limit, the response will return HTTP The rate limit status is available in the following response headers of each GraphQL call: +`RateLimit-Remaining` ā€” The remaining complexity left within the current time window. +`RateLimit-Limit` ā€” The complexity limit for the time window. +`RateLimit-Reset` ā€” The number of seconds remaining until a new time window is started and the limits are reset. + ```js RateLimit-Remaining: 20 RateLimit-Limit: 20000 RateLimit-Reset: 120 ``` -`RateLimit-Remaining` provides the remaining complexity left within the current time window. -`RateLimit-Limit` is the complexity limit for the time window. -`RateLimit-Reset` is the number of seconds remaining until a new time window is started and the limits are reset. - - ### Response body To include the complexity data in responses, use the `Buildkite-Include-Query-Stats` header in GraphQL requests. This returns the complexity data in the response like the following: From 52a4b526daf3637ca820898f958f87a3a1fafeb5 Mon Sep 17 00:00:00 2001 From: Himal Date: Fri, 23 Jun 2023 16:38:21 +1000 Subject: [PATCH 048/118] Update headings --- pages/apis/graphql/graphql_resource_limits.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index d7b1acd2d1..65da61dc91 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -135,7 +135,7 @@ If an organization exceeds the 20,000 point limit, the response will return HTTP ## Accessing limit details -### HTTP headers +### Check time based limits The rate limit status is available in the following response headers of each GraphQL call: @@ -149,7 +149,7 @@ RateLimit-Limit: 20000 RateLimit-Reset: 120 ``` -### Response body +### View query complexity To include the complexity data in responses, use the `Buildkite-Include-Query-Stats` header in GraphQL requests. This returns the complexity data in the response like the following: From 9e540e42086d09c95d3f99cfe138eb81a1c52ded Mon Sep 17 00:00:00 2001 From: Himal Date: Fri, 23 Jun 2023 16:41:41 +1000 Subject: [PATCH 049/118] Fix some lint issues --- pages/apis/graphql/graphql_resource_limits.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index 65da61dc91..3508fbd264 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -141,7 +141,7 @@ The rate limit status is available in the following response headers of each Gra `RateLimit-Remaining` ā€” The remaining complexity left within the current time window. `RateLimit-Limit` ā€” The complexity limit for the time window. -`RateLimit-Reset` ā€” The number of seconds remaining until a new time window is started and the limits are reset. +`RateLimit-Reset` ā€” The number of seconds remaining until a new time window is started and the limits are reset. ```js RateLimit-Remaining: 20 @@ -173,9 +173,9 @@ Designing your client application with best practices in mind is the simplest wa Consider the following best practices when designing you API usage: -* Optimize the request by only requesting data you require. We recommend using specific queries rather than a single all-purpose query. -* Always use appropriate `first` or `last` values when requesting connections. Not providing those may default to 500, which can increase the requested complexity exponentially. -* Use strategies like caching for data you use often that is unlikely to be updated instead of constantly calling APIs. -* Regulate the rate of your requests for smoother distribution. You can do this using queues or scheduling API calls in appropriate intervals. -* Use metadata about your API usage, including rate limit status to manage the behavior dynamically. -* Think of rate limiting while designing your client application. Be mindful of retries, errors, loops, and the frequency of API calls. +- Optimize the request by only requesting data you require. We recommend using specific queries rather than a single all-purpose query. +- Always use appropriate `first` or `last` values when requesting connections. Not providing those may default to 500, which can increase the requested complexity exponentially. +- Use strategies like caching for data you use often that is unlikely to be updated instead of constantly calling APIs. +- Regulate the rate of your requests for smoother distribution. You can do this using queues or scheduling API calls in appropriate intervals. +- Use metadata about your API usage, including rate limit status to manage the behavior dynamically. +- Think of rate limiting while designing your client application. Be mindful of retries, errors, loops, and the frequency of API calls. From a57101c769f4cd60b9546f8c8ea473c2543cb4b3 Mon Sep 17 00:00:00 2001 From: Himal Date: Tue, 27 Jun 2023 09:58:24 +1000 Subject: [PATCH 050/118] Update pages/apis/graphql/graphql_resource_limits.md Co-authored-by: Juanito Fatas --- pages/apis/graphql/graphql_resource_limits.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index 3508fbd264..2ad5a47bb6 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -135,7 +135,7 @@ If an organization exceeds the 20,000 point limit, the response will return HTTP ## Accessing limit details -### Check time based limits +### Check time-based limits The rate limit status is available in the following response headers of each GraphQL call: From 3dc80d5e5059fe061fc3b05adaa5630425b7dcc1 Mon Sep 17 00:00:00 2001 From: Himal Date: Tue, 27 Jun 2023 09:58:34 +1000 Subject: [PATCH 051/118] Update pages/apis/graphql/graphql_resource_limits.md Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/apis/graphql/graphql_resource_limits.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index 2ad5a47bb6..d0b0e7851f 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -171,7 +171,7 @@ To include the complexity data in responses, use the `Buildkite-Include-Query-St Designing your client application with best practices in mind is the simplest way to avoid throttling errors. For example, you can stagger API requests in a queue and do other processing tasks while waiting for the next queued job to run. -Consider the following best practices when designing you API usage: +Consider the following best practices when designing your API usage: - Optimize the request by only requesting data you require. We recommend using specific queries rather than a single all-purpose query. - Always use appropriate `first` or `last` values when requesting connections. Not providing those may default to 500, which can increase the requested complexity exponentially. From 5318eab8381ac0a98c03bf6a8bd26b6562a04668 Mon Sep 17 00:00:00 2001 From: Himal Date: Tue, 27 Jun 2023 10:01:23 +1000 Subject: [PATCH 052/118] Apply suggestions from code review Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/apis/graphql/graphql_resource_limits.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index d0b0e7851f..c8f695a3d8 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -132,16 +132,17 @@ If an organization exceeds the 20,000 point limit, the response will return HTTP } ``` - ## Accessing limit details ### Check time-based limits The rate limit status is available in the following response headers of each GraphQL call: -`RateLimit-Remaining` ā€” The remaining complexity left within the current time window. -`RateLimit-Limit` ā€” The complexity limit for the time window. -`RateLimit-Reset` ā€” The number of seconds remaining until a new time window is started and the limits are reset. +- `RateLimit-Remaining` ā€” The remaining complexity left within the current time window. +- `RateLimit-Limit` ā€” The complexity limit for the time window. +- `RateLimit-Reset` ā€” The number of seconds remaining until a new time window is started and the limits are reset. + +For example: ```js RateLimit-Remaining: 20 @@ -173,7 +174,7 @@ Designing your client application with best practices in mind is the simplest wa Consider the following best practices when designing your API usage: -- Optimize the request by only requesting data you require. We recommend using specific queries rather than a single all-purpose query. +- Optimize the request by only requesting the data you require. We recommend using specific queries rather than a single all-purpose query. - Always use appropriate `first` or `last` values when requesting connections. Not providing those may default to 500, which can increase the requested complexity exponentially. - Use strategies like caching for data you use often that is unlikely to be updated instead of constantly calling APIs. - Regulate the rate of your requests for smoother distribution. You can do this using queues or scheduling API calls in appropriate intervals. From b1cfd785e31ac2c0bd242c9e7d6dfef9ae085a58 Mon Sep 17 00:00:00 2001 From: Himal Date: Tue, 27 Jun 2023 11:26:07 +1000 Subject: [PATCH 053/118] Add additional info about accessing limit details --- pages/apis/graphql/graphql_resource_limits.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index c8f695a3d8..1521a90087 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -134,6 +134,8 @@ If an organization exceeds the 20,000 point limit, the response will return HTTP ## Accessing limit details +You can access both time-based limits and query complexity information through the API. Accessing limit details will not incur any additional complexity points. + ### Check time-based limits The rate limit status is available in the following response headers of each GraphQL call: From c1d10690160bd32e2ab8281588abb06071cde5d5 Mon Sep 17 00:00:00 2001 From: Jordan Carter Date: Tue, 27 Jun 2023 13:47:20 +1200 Subject: [PATCH 054/118] A couple more minor changes to cluster queue metrics page --- pages/clusters/queue_metrics.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/pages/clusters/queue_metrics.md b/pages/clusters/queue_metrics.md index 46ebdc51bf..a6a38fd464 100644 --- a/pages/clusters/queue_metrics.md +++ b/pages/clusters/queue_metrics.md @@ -8,16 +8,21 @@ Queue metrics show the most important statistics to help you optimize your agent _Agents Connected_ is the number of agents connected to the cluster queue. The circular chart represents the fraction of agents that are busy working on jobs compared to those that are idle and ready for a job. Hovering over the chart shows the _Agent Utilization_ panel, which displays the percentage values for each chart component. -For agent utilization, agents are considered busy if they have a job ID assigned. - <%= image "cluster-queue-metrics-agent-utilization.png", width: 530/2, height: 434/2, alt: "Screenshot of the agent utilization panel" %> +For agent utilization, agents are considered busy if they have a job ID assigned. + ## Jobs panel -Jobs Running and Jobs Waiting shows the number of jobs assigned to an agent, and the number of jobs -not yet assigned to an agent respectively. Jobs Running are any jobs for this cluster queue which -are in a state of RUNNING, CANCELING, TIMING_OUT, ACCEPTED, or ASSIGNED. Jobs Waiting are any jobs -for this cluster queue which are in a state of SCHEDULED. +_Jobs Running_ shows the number of jobs assigned to agents. These are any jobs in the cluster queue in the following states: + +- `ASSIGNED` +- `ACCEPTED` +- `RUNNING` +- `CANCELING` +- `TIMING_OUT` + +_Jobs Waiting_ shows the number of jobs not yet assigned to an agent. These are any jobs for the cluster queue in the `SCHEDULED` state. ## Wait panel From cace5fe8c1507862b4521306f5cae5f2fac749f2 Mon Sep 17 00:00:00 2001 From: David Barrell Date: Tue, 27 Jun 2023 12:48:56 +1000 Subject: [PATCH 055/118] Paul's suggestions --- pages/agent/v3/securing.md | 4 ++-- pages/clusters/manage_clusters.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pages/agent/v3/securing.md b/pages/agent/v3/securing.md index eca076f455..ad7eae46d1 100644 --- a/pages/agent/v3/securing.md +++ b/pages/agent/v3/securing.md @@ -188,6 +188,6 @@ Since the [agent](https://github.com/buildkite/agent) is open-source, if necessa ## Restrict agent connection by IP address -Clusters provide a mechanism to restrict which IP addresses can connect using a given agent token. This protects against the misuse of agent tokens and the hijacking of agent sessions. +[Clusters](/docs/clusters/overview) provide a mechanism to restrict which IP addresses can connect using a given agent token. This protects against the misuse of agent tokens and the hijacking of agent sessions. -To restrict agent connection by IP address, set the [_Allowed IP Addresses_ attribute](/docs/clusters/manage-clusters#set-up-clusters-restrict-access-for-a-cluster-token-by-ip-address) with a list of the allowed IP addresses. Once set, agent registration is locked down, and any existing agents outside the allowed IP ranges are forcefully disconnected. +To restrict agent connection by IP address, set the [_Allowed IP Addresses_ attribute](/docs/clusters/manage-clusters#set-up-clusters-restrict-access-for-a-cluster-token-by-ip-address). This restricts agent registration to those IPs, and any existing agents outside the allowed IP ranges will be forcefully disconnected. diff --git a/pages/clusters/manage_clusters.md b/pages/clusters/manage_clusters.md index cc61a402f6..4b35c8fab6 100644 --- a/pages/clusters/manage_clusters.md +++ b/pages/clusters/manage_clusters.md @@ -72,7 +72,7 @@ You can set the _Allowed IP Addresses_ when creating a token, or you can modify 1. Navigate to the cluster's _Agent Tokens_. 1. Select the token to which you wish to restrict access. 1. Select _Edit_. -1. Update the _Allowed IP Addresses_ setting, using [CIDR notation](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing). +1. Update the _Allowed IP Addresses_ setting, using space-separated [CIDR notation](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing). 1. Select _Save Token_. Modifying the _Allowed IP Addresses_ forcefully disconnects any existing agents with IP addresses outside the updated value. This prevents the completion of any jobs in progress on those agents. From eb3be732ab921c82fbae643ec331ec55a1209b48 Mon Sep 17 00:00:00 2001 From: Mark Haylock Date: Tue, 27 Jun 2023 15:46:29 +1200 Subject: [PATCH 056/118] Add pipeline templates documentation This is under a new "Governance" section which comes with its own overview. --- config/routes.rb | 1 + data/nav.yml | 6 +++ pages/governance/overview.md | 3 ++ pages/governance/pipeline_templates.md | 60 ++++++++++++++++++++++++++ 4 files changed, 70 insertions(+) create mode 100644 pages/governance/overview.md create mode 100644 pages/governance/pipeline_templates.md diff --git a/config/routes.rb b/config/routes.rb index e017df2a0f..33c8479576 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -85,6 +85,7 @@ # Doc sections that don't have overview/index pages, so need redirecting get "/docs/tutorials", to: redirect("/docs/tutorials/getting-started"), status: 302 + get "/docs/governance", to: redirect("/docs/governance/overview"), status: 302 # The old un-versioned URLs have a lot of Google juice, so we redirect them to # the current version. But these are also linked from within the v2 agent diff --git a/data/nav.yml b/data/nav.yml index 9f8844ee99..b05253fd3c 100644 --- a/data/nav.yml +++ b/data/nav.yml @@ -302,6 +302,12 @@ path: "pipelines/incoming-webhooks" - name: "Audit log" path: "pipelines/audit-log" + - name: "Governance" + children: + - name: "Overview" + path: "governance/overview" + - name: "Pipeline templates" + path: "governance/pipeline-templates" - name: "Deployments" children: - name: "Overview" diff --git a/pages/governance/overview.md b/pages/governance/overview.md new file mode 100644 index 0000000000..7021ad3227 --- /dev/null +++ b/pages/governance/overview.md @@ -0,0 +1,3 @@ +# Governance overview + +Buildkite cares deeply about making sure enterprise customers have their compliance needs met. These features are aimed to help with the auditing processes in your company be it specific for your industry or wide spread compliance standards like SOC. diff --git a/pages/governance/pipeline_templates.md b/pages/governance/pipeline_templates.md new file mode 100644 index 0000000000..88aeb0cec3 --- /dev/null +++ b/pages/governance/pipeline_templates.md @@ -0,0 +1,60 @@ +# Pipeline templates + +> šŸ“˜ Enterprise feature +> Pipeline templates is only available on an [Enterprise](https://buildkite.com/pricing) plan. + +## Overview + +Pipeline templates allow you to define standard pipeline step configurations to be used by all the pipelines in your organization. + +When a pipeline has a pipeline template assigned to it, the step configuration for that pipeline is inherited from the template and it is no longer possible to configure a custom step configuration for that pipeline via the UI. + +## Creating a pipeline template + +Only administrators can create or update pipeline templates. + +1. Open your Buildkite _Organization Settings_ and choose [Templates](https://buildkite.com/organizations/-/pipeline-templates) +1. If this is your first template, click _Create a Template_. Otherwise choose _New Template_. A pipeline template is created automatically for you. +1. Update the name and description of your new template and click _Apply_ to save your changes. +1. You can also click _Edit_ to change the step configuration for the template. + +An administrator can add multiple templates to be used across the organization. Making changes and saving a template will apply those changes to all pipelines using that template. + +## Testing a pipeline template + +At any time an administrator may test a pipeline template against a pipeline via the _New Build_ button on the pipeline page. + +If a template exists for the organization then it can be selected from the _Pipeline template_ dropdown to create a new build using the step configuration from that template. + +## Assigning a pipeline template to a pipeline + +To permanently override a pipeline's step configuration with a pipeline template, administrators must first require pipeline templates via settings (see next section). + +Once pipeline templates are required, there are three options for assigning a template to individual pipelines: + +1. Selecting the template on the step settings for that pipeline (_Pipeline_ > _Settings_ > _Steps_). +1. Using the REST API to [update the pipeline](https://buildkite.com/docs/apis/rest-api/pipelines#update-a-pipeline) with the appropriate `pipeline_template_uuid`. +1. Using the GraphQL API [pipelineUpdate mutation](https://buildkite.com/docs/apis/graphql/schemas/mutation/pipelineupdate) with the appropriate `pipelineTemplateId`. + +The correct IDs to use with the APIs for a template can be found on the template page in the UI. + +> Note that pipelines that have not been setup using YAML steps cannot be assigned a pipeline template via the UI. +> These pipelines must be either [migrated to YAML steps first](https://buildkite.com/docs/tutorials/pipeline-upgrade), updated via the APIs, or bulk-assigned a template when selecting the _Require a pipeline template for everything_ setting. + +## Requiring pipeline templates + +To change your organizations pipeline template settings, first make sure you have created at least one pipeline template. + +Navigate to your Buildkite _Organization Settings_ and choose _Templates_ > [Settings](https://buildkite.com/organizations/-/pipeline-templates/settings). + +Three options are available: + +- **Do not require pipeline templates**
+ Pipeline steps remain editable for any user that has permission to create or update a pipeline. Templates can be tested against pipelines but cannot be assigned to them. + +- **Require a pipeline template on new pipelines**
+ A template must be selected when creating a new pipeline. The step configuration of existing pipelines will become read only. Pipelines can be assigned a template individually, making a gradual migration to pipeline templates possible. +- **Requiring a pipeline template for everything**
+ Templates are mandatory on all new and existing pipelines. When choosing this setting you will select a pipeline template that will be applied to any pipeline that does not already have a template assigned. + +> Note that once a setting has applied you cannot revert to a more permissive setting. Take care to test your pipeline templates before enforcing them on all pipelines. From d8a555ffd70f09532216a3f31b857b2d1e5c7744 Mon Sep 17 00:00:00 2001 From: David Barrell Date: Tue, 27 Jun 2023 14:12:27 +1000 Subject: [PATCH 057/118] Add IPs to vocab --- vale/styles/vocab.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/vale/styles/vocab.txt b/vale/styles/vocab.txt index 9a41aa7258..ae79ef18f1 100644 --- a/vale/styles/vocab.txt +++ b/vale/styles/vocab.txt @@ -119,6 +119,7 @@ hostname http https inlining +IPs jpegs json junit From 83c3c5423936df1102be0816710cad10d6263d8c Mon Sep 17 00:00:00 2001 From: Mark Haylock Date: Tue, 27 Jun 2023 16:18:30 +1200 Subject: [PATCH 058/118] Use backticks on pipelineUpdate This avoids a spelling linting failure, and is a bit clearer that it is a reference to the name of the mutation. --- pages/governance/pipeline_templates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/governance/pipeline_templates.md b/pages/governance/pipeline_templates.md index 88aeb0cec3..1ea024fa9d 100644 --- a/pages/governance/pipeline_templates.md +++ b/pages/governance/pipeline_templates.md @@ -34,7 +34,7 @@ Once pipeline templates are required, there are three options for assigning a te 1. Selecting the template on the step settings for that pipeline (_Pipeline_ > _Settings_ > _Steps_). 1. Using the REST API to [update the pipeline](https://buildkite.com/docs/apis/rest-api/pipelines#update-a-pipeline) with the appropriate `pipeline_template_uuid`. -1. Using the GraphQL API [pipelineUpdate mutation](https://buildkite.com/docs/apis/graphql/schemas/mutation/pipelineupdate) with the appropriate `pipelineTemplateId`. +1. Using the GraphQL API [`pipelineUpdate` mutation](https://buildkite.com/docs/apis/graphql/schemas/mutation/pipelineupdate) with the appropriate `pipelineTemplateId`. The correct IDs to use with the APIs for a template can be found on the template page in the UI. From b11f05ea5bc9e7b59debd3c6d3bddb6a7e110011 Mon Sep 17 00:00:00 2001 From: Josh Deprez Date: Tue, 27 Jun 2023 16:17:57 +1000 Subject: [PATCH 059/118] Add agent monitoring and observing doc --- data/nav.yml | 2 + .../docs/agent/v3/monitoring/status-page.png | Bin 0 -> 102465 bytes pages/agent/v3/monitoring.md | 49 ++++++++++++++++++ 3 files changed, 51 insertions(+) create mode 100644 images/docs/agent/v3/monitoring/status-page.png create mode 100644 pages/agent/v3/monitoring.md diff --git a/data/nav.yml b/data/nav.yml index b24490b511..d4fa27aedc 100644 --- a/data/nav.yml +++ b/data/nav.yml @@ -72,6 +72,8 @@ path: "agent/v3/github-ssh-keys" - name: "Hooks" path: "agent/v3/hooks" + - name: "Monitoring & observing" + path: "agent/v3/monitoring" - name: "Queues" path: "agent/v3/queues" - name: "Prioritization" diff --git a/images/docs/agent/v3/monitoring/status-page.png b/images/docs/agent/v3/monitoring/status-page.png new file mode 100644 index 0000000000000000000000000000000000000000..a759bc3f15912bf7e0f59b1687a832a4f5c4894e GIT binary patch literal 102465 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 + +## Tracing + +For Datadog APM or OpenTelemetry tracing, see our +[tracing](/docs/agent/v3/tracing) docs. From ff929090979b1fdeb648c7198a608c7d77254cfc Mon Sep 17 00:00:00 2001 From: Mark Haylock Date: Wed, 28 Jun 2023 10:43:23 +1200 Subject: [PATCH 060/118] Apply suggestions from code review Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/governance/pipeline_templates.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/pages/governance/pipeline_templates.md b/pages/governance/pipeline_templates.md index 1ea024fa9d..843dade0d3 100644 --- a/pages/governance/pipeline_templates.md +++ b/pages/governance/pipeline_templates.md @@ -5,26 +5,28 @@ ## Overview -Pipeline templates allow you to define standard pipeline step configurations to be used by all the pipelines in your organization. +Pipeline templates allow you to define standard pipeline step configurations to use across all the pipelines in your organization. -When a pipeline has a pipeline template assigned to it, the step configuration for that pipeline is inherited from the template and it is no longer possible to configure a custom step configuration for that pipeline via the UI. +When a pipeline has a template assigned, the pipeline inherits its step configuration from the template. Configuring a custom step configuration for that pipeline in the Buildkite dashboard is no longer possible. ## Creating a pipeline template Only administrators can create or update pipeline templates. -1. Open your Buildkite _Organization Settings_ and choose [Templates](https://buildkite.com/organizations/-/pipeline-templates) -1. If this is your first template, click _Create a Template_. Otherwise choose _New Template_. A pipeline template is created automatically for you. -1. Update the name and description of your new template and click _Apply_ to save your changes. -1. You can also click _Edit_ to change the step configuration for the template. +To create a template: -An administrator can add multiple templates to be used across the organization. Making changes and saving a template will apply those changes to all pipelines using that template. +1. Navigate to your [organizationā€™s pipeline template settings](https://buildkite.com/organizations/-/pipeline-templates). +1. If this is your first template, select _Create a Template_. Otherwise, select _New Template_. A pipeline template is created automatically for you. +1. Update the name and description of your new template and select _Apply_ to save your changes. +1. You can also select _Edit_ to change the step configuration for the template. + +An administrator can add multiple templates to use across the organization. Making changes and saving a template will apply those changes to all pipelines using that template. ## Testing a pipeline template -At any time an administrator may test a pipeline template against a pipeline via the _New Build_ button on the pipeline page. +An administrator can test a pipeline template against a pipeline using the _New Build_ button on the pipeline page. -If a template exists for the organization then it can be selected from the _Pipeline template_ dropdown to create a new build using the step configuration from that template. +If a template exists for the organization, it can be selected from the _Pipeline template_ dropdown to create a new build using the step configuration from that template. ## Assigning a pipeline template to a pipeline From 5d23328de9a0c891740079621ef12e6958c4132e Mon Sep 17 00:00:00 2001 From: Michael Belton Date: Wed, 28 Jun 2023 09:14:42 +1000 Subject: [PATCH 061/118] Rework require and assign sections --- pages/governance/pipeline_templates.md | 42 +++++++++++++------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/pages/governance/pipeline_templates.md b/pages/governance/pipeline_templates.md index 843dade0d3..a746dd7174 100644 --- a/pages/governance/pipeline_templates.md +++ b/pages/governance/pipeline_templates.md @@ -28,35 +28,35 @@ An administrator can test a pipeline template against a pipeline using the _New If a template exists for the organization, it can be selected from the _Pipeline template_ dropdown to create a new build using the step configuration from that template. -## Assigning a pipeline template to a pipeline +## Requiring pipeline templates -To permanently override a pipeline's step configuration with a pipeline template, administrators must first require pipeline templates via settings (see next section). +The power of pipeline templates comes from how much you require their use. Administrators can select from the following options, listed in increasing strictness: -Once pipeline templates are required, there are three options for assigning a template to individual pipelines: +1. **Do not require pipeline templates:** Pipeline steps remain editable for any user with permission to create or update a pipeline. Templates can be tested against pipelines but cannot be assigned to them. +1. **Require a pipeline template on new pipelines:** A template must be selected when creating a new pipeline. The step configuration of existing pipelines will become read-only. Pipelines can be assigned a template individually, making a gradual migration to pipeline templates possible. +1. **Requiring a pipeline template for everything:** Templates are mandatory on all new and existing pipelines. When choosing this setting, you will select a pipeline template to apply to any pipeline that does not already have a template assigned. -1. Selecting the template on the step settings for that pipeline (_Pipeline_ > _Settings_ > _Steps_). -1. Using the REST API to [update the pipeline](https://buildkite.com/docs/apis/rest-api/pipelines#update-a-pipeline) with the appropriate `pipeline_template_uuid`. -1. Using the GraphQL API [`pipelineUpdate` mutation](https://buildkite.com/docs/apis/graphql/schemas/mutation/pipelineupdate) with the appropriate `pipelineTemplateId`. +>šŸš§ Changing requirements +> When updating the requirements, you can only update the setting to an option that is more strict. Take care to test your pipeline templates before enforcing them on all pipelines. -The correct IDs to use with the APIs for a template can be found on the template page in the UI. +To change your organization's requirements for pipeline templates: -> Note that pipelines that have not been setup using YAML steps cannot be assigned a pipeline template via the UI. -> These pipelines must be either [migrated to YAML steps first](https://buildkite.com/docs/tutorials/pipeline-upgrade), updated via the APIs, or bulk-assigned a template when selecting the _Require a pipeline template for everything_ setting. +1. Navigate to your [organization's pipeline template settings](https://buildkite.com/organizations/-/pipeline-templates). +1. Check you have at least one template. If you don't have a template, create one. +1. Select _Settings_. +1. Select the requirement you want to set. -## Requiring pipeline templates - -To change your organizations pipeline template settings, first make sure you have created at least one pipeline template. +## Assigning a pipeline template to a pipeline -Navigate to your Buildkite _Organization Settings_ and choose _Templates_ > [Settings](https://buildkite.com/organizations/-/pipeline-templates/settings). +After an administrator requires pipelines to use a template, anyone with permission to create or change a pipeline can assign a template. Assigning a template overrides the pipeline's step configuration with the template. -Three options are available: +Once pipeline templates are required, you can use the following methods to assign a template to individual pipelines: -- **Do not require pipeline templates**
- Pipeline steps remain editable for any user that has permission to create or update a pipeline. Templates can be tested against pipelines but cannot be assigned to them. +- On the step settings for the pipeline (_Pipeline_ > _Settings_ > _Steps_), select the template to assign. +- Using the REST API, [update the pipeline](https://buildkite.com/docs/apis/rest-api/pipelines#update-a-pipeline) with the appropriate `pipeline_template_uuid`. +- Using the GraphQL API, run the [`pipelineUpdate` mutation](https://buildkite.com/docs/apis/graphql/schemas/mutation/pipelineupdate) with the appropriate `pipelineTemplateId`. -- **Require a pipeline template on new pipelines**
- A template must be selected when creating a new pipeline. The step configuration of existing pipelines will become read only. Pipelines can be assigned a template individually, making a gradual migration to pipeline templates possible. -- **Requiring a pipeline template for everything**
- Templates are mandatory on all new and existing pipelines. When choosing this setting you will select a pipeline template that will be applied to any pipeline that does not already have a template assigned. +You can find the IDs to use for a template with the APIs on the template page in the Buildkite dashboard. -> Note that once a setting has applied you cannot revert to a more permissive setting. Take care to test your pipeline templates before enforcing them on all pipelines. +>šŸ“˜ Web steps editor compatibility +> Pipelines defined using the web steps editor cannot be assigned templated through the Buildkite dashboard. These pipelines must be either [migrated to YAML steps first](https://buildkite.com/docs/tutorials/pipeline-upgrade), updated using the APIs, or bulk-assigned a template when selecting the _Require a pipeline template for everything_ setting. From a0b88bb835865f2bc5432bdfe7ec63713e1c49d6 Mon Sep 17 00:00:00 2001 From: Michael Belton Date: Wed, 28 Jun 2023 09:16:56 +1000 Subject: [PATCH 062/118] Remove space to fix linting --- pages/governance/pipeline_templates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/governance/pipeline_templates.md b/pages/governance/pipeline_templates.md index a746dd7174..b3c0cae820 100644 --- a/pages/governance/pipeline_templates.md +++ b/pages/governance/pipeline_templates.md @@ -37,7 +37,7 @@ The power of pipeline templates comes from how much you require their use. Admin 1. **Requiring a pipeline template for everything:** Templates are mandatory on all new and existing pipelines. When choosing this setting, you will select a pipeline template to apply to any pipeline that does not already have a template assigned. >šŸš§ Changing requirements -> When updating the requirements, you can only update the setting to an option that is more strict. Take care to test your pipeline templates before enforcing them on all pipelines. +> When updating the requirements, you can only update the setting to an option that is more strict. Take care to test your pipeline templates before enforcing them on all pipelines. To change your organization's requirements for pipeline templates: From 1c909b0a5d60322cca9cf0a080d0951673a2341f Mon Sep 17 00:00:00 2001 From: Mark Haylock Date: Wed, 28 Jun 2023 12:39:48 +1200 Subject: [PATCH 063/118] Relocate governance pages Based on feedback that using pipelines based URLs creates freedom to restructure things around the "Governance" section without impacting the URLs. --- config/routes.rb | 1 - data/nav.yml | 4 ++-- pages/{governance/overview.md => pipelines/governance.md} | 0 .../pipeline_templates.md => pipelines/templates.md} | 0 4 files changed, 2 insertions(+), 3 deletions(-) rename pages/{governance/overview.md => pipelines/governance.md} (100%) rename pages/{governance/pipeline_templates.md => pipelines/templates.md} (100%) diff --git a/config/routes.rb b/config/routes.rb index 33c8479576..e017df2a0f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -85,7 +85,6 @@ # Doc sections that don't have overview/index pages, so need redirecting get "/docs/tutorials", to: redirect("/docs/tutorials/getting-started"), status: 302 - get "/docs/governance", to: redirect("/docs/governance/overview"), status: 302 # The old un-versioned URLs have a lot of Google juice, so we redirect them to # the current version. But these are also linked from within the v2 agent diff --git a/data/nav.yml b/data/nav.yml index b05253fd3c..8ac0db3b59 100644 --- a/data/nav.yml +++ b/data/nav.yml @@ -305,9 +305,9 @@ - name: "Governance" children: - name: "Overview" - path: "governance/overview" + path: "pipelines/governance" - name: "Pipeline templates" - path: "governance/pipeline-templates" + path: "pipelines/templates" - name: "Deployments" children: - name: "Overview" diff --git a/pages/governance/overview.md b/pages/pipelines/governance.md similarity index 100% rename from pages/governance/overview.md rename to pages/pipelines/governance.md diff --git a/pages/governance/pipeline_templates.md b/pages/pipelines/templates.md similarity index 100% rename from pages/governance/pipeline_templates.md rename to pages/pipelines/templates.md From da32027e01cbf8b1f32fe400817e0461a41f2692 Mon Sep 17 00:00:00 2001 From: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> Date: Wed, 28 Jun 2023 10:59:37 +1000 Subject: [PATCH 064/118] Update pages/governance/pipeline_templates.md Co-authored-by: Mark Haylock --- pages/governance/pipeline_templates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/governance/pipeline_templates.md b/pages/governance/pipeline_templates.md index b3c0cae820..c307424feb 100644 --- a/pages/governance/pipeline_templates.md +++ b/pages/governance/pipeline_templates.md @@ -41,7 +41,7 @@ The power of pipeline templates comes from how much you require their use. Admin To change your organization's requirements for pipeline templates: -1. Navigate to your [organization's pipeline template settings](https://buildkite.com/organizations/-/pipeline-templates). +1. Navigate to your [organization's pipeline templates](https://buildkite.com/organizations/-/pipeline-templates). 1. Check you have at least one template. If you don't have a template, create one. 1. Select _Settings_. 1. Select the requirement you want to set. From a164991fa61d82be42822c6afd1a8d28f14f76f5 Mon Sep 17 00:00:00 2001 From: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> Date: Wed, 28 Jun 2023 10:59:44 +1000 Subject: [PATCH 065/118] Update pages/governance/pipeline_templates.md Co-authored-by: Mark Haylock --- pages/governance/pipeline_templates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/governance/pipeline_templates.md b/pages/governance/pipeline_templates.md index c307424feb..fac0a9b070 100644 --- a/pages/governance/pipeline_templates.md +++ b/pages/governance/pipeline_templates.md @@ -59,4 +59,4 @@ Once pipeline templates are required, you can use the following methods to assig You can find the IDs to use for a template with the APIs on the template page in the Buildkite dashboard. >šŸ“˜ Web steps editor compatibility -> Pipelines defined using the web steps editor cannot be assigned templated through the Buildkite dashboard. These pipelines must be either [migrated to YAML steps first](https://buildkite.com/docs/tutorials/pipeline-upgrade), updated using the APIs, or bulk-assigned a template when selecting the _Require a pipeline template for everything_ setting. +> Pipelines defined using the web steps editor cannot be assigned templates through the Buildkite dashboard. These pipelines must be either [migrated to YAML steps first](https://buildkite.com/docs/tutorials/pipeline-upgrade), updated using the APIs, or bulk-assigned a template when selecting the _Require a pipeline template for everything_ setting. From 14d7e735516c1d6b36837581c0d62daed5453b6a Mon Sep 17 00:00:00 2001 From: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> Date: Wed, 28 Jun 2023 11:00:03 +1000 Subject: [PATCH 066/118] Update pages/governance/pipeline_templates.md Co-authored-by: Mark Haylock --- pages/governance/pipeline_templates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/governance/pipeline_templates.md b/pages/governance/pipeline_templates.md index fac0a9b070..c0d87a11cb 100644 --- a/pages/governance/pipeline_templates.md +++ b/pages/governance/pipeline_templates.md @@ -32,7 +32,7 @@ If a template exists for the organization, it can be selected from the _Pipeline The power of pipeline templates comes from how much you require their use. Administrators can select from the following options, listed in increasing strictness: -1. **Do not require pipeline templates:** Pipeline steps remain editable for any user with permission to create or update a pipeline. Templates can be tested against pipelines but cannot be assigned to them. +1. **Do not require pipeline templates:** Pipeline steps remain editable for any user with permission to create or update a pipeline. Templates can be tested (by administrators) against pipelines but cannot be assigned to them. 1. **Require a pipeline template on new pipelines:** A template must be selected when creating a new pipeline. The step configuration of existing pipelines will become read-only. Pipelines can be assigned a template individually, making a gradual migration to pipeline templates possible. 1. **Requiring a pipeline template for everything:** Templates are mandatory on all new and existing pipelines. When choosing this setting, you will select a pipeline template to apply to any pipeline that does not already have a template assigned. From a8aec4706f183a981e8bc744b5a1118c4f2e08b9 Mon Sep 17 00:00:00 2001 From: Amy <47379003+amybiyuliu@users.noreply.github.com> Date: Wed, 28 Jun 2023 10:56:44 +0930 Subject: [PATCH 067/118] [PIE-1819] Documentation for Analytics REST API Suites#update and Suite#destroy (#2251) * docs for update a suite * docs for destroy a suite * address feedback --------- Co-authored-by: Amy Liu --- pages/apis/rest_api/analytics/suites.md | 47 +++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/pages/apis/rest_api/analytics/suites.md b/pages/apis/rest_api/analytics/suites.md index 010393bacd..1aa104df8e 100644 --- a/pages/apis/rest_api/analytics/suites.md +++ b/pages/apis/rest_api/analytics/suites.md @@ -97,3 +97,50 @@ Optional [request body properties](/docs/api#request-body-properties): Required scope: `write_suites` Success response: `201 Created` + +## Update a suite + +```bash +curl -X PATCH \ + https://api.buildkite.com/v2/analytics/organizations/{org.slug}/suites/{suite.slug} \ + -d '{ + "name": "Jasmine", + "default_branch": "main" + }' +``` + +```json +{ + "id": "3e979a94-a479-4a6e-ab8d-8b6607ffb62c", + "slug": "jasmine", + "name": "Jasmine", + "url": "https://api.buildkite.com/v2/analytics/organizations/my_great_org/suites/jasmine", + "web_url": "https://buildkite.com/organizations/my_great_org/analytics/suites/jasmine", + "default_branch": "main" +} +``` + +Optional [request body properties](/docs/api#request-body-properties): + + + + + + +
nameName of the suite.
Example: "Jasmine".
default_branchYour test suite will default to showing trends for this default branch, but collect data for all test runs.
Example: "main" or "master".
+ + +Required scope: `write_suites` + +Success response: `200 OK` + +## Delete a suite + +```bash +curl -X DELETE \ + https://api.buildkite.com/v2/analytics/organizations/{org.slug}/suites/{suite.slug} +``` + +Required scope: `write_suites` + +Success response: `204 No Content` From a2bd37ca0cae7d14525c3e1ca1fea4244f42c567 Mon Sep 17 00:00:00 2001 From: Mark Haylock Date: Wed, 28 Jun 2023 13:52:35 +1200 Subject: [PATCH 068/118] Update pages/pipelines/governance.md Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/pipelines/governance.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pages/pipelines/governance.md b/pages/pipelines/governance.md index 7021ad3227..41dd24b5da 100644 --- a/pages/pipelines/governance.md +++ b/pages/pipelines/governance.md @@ -1,3 +1,12 @@ # Governance overview -Buildkite cares deeply about making sure enterprise customers have their compliance needs met. These features are aimed to help with the auditing processes in your company be it specific for your industry or wide spread compliance standards like SOC. +Governance plays a crucial role in CI/CD tools, particularly for anyone operating in regulated industries or handling sensitive data. It encompasses policies, processes, and controls to ensure practices align with the following: + +- Industry-specific regulations. +- Internal policies. +- Widely recognized compliance standards. + +These standards assess the security, availability, processing integrity, confidentiality, and privacy of information systems. + +Buildkite understands the importance of meeting compliance and auditing requirements. [Pipeline templates](/docs/pipelines/templates) help you control the step configurations used across pipelines in your organization. + From c6bed7e885a43bcd96ea651cfb404d1012c50d9e Mon Sep 17 00:00:00 2001 From: Michael Belton Date: Wed, 28 Jun 2023 11:53:19 +1000 Subject: [PATCH 069/118] Move Build exports page and update Governance overview --- data/nav.yml | 4 ++-- pages/pipelines/governance.md | 15 ++++++++++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/data/nav.yml b/data/nav.yml index 8ac0db3b59..0a4308406b 100644 --- a/data/nav.yml +++ b/data/nav.yml @@ -251,8 +251,6 @@ path: "pipelines/tags" - name: "Build retention" path: "pipelines/build-retention" - - name: "Build exports" - path: "pipelines/build-exports" - name: "Public pipelines" path: "pipelines/public-pipelines" - name: "Using build meta-data" @@ -308,6 +306,8 @@ path: "pipelines/governance" - name: "Pipeline templates" path: "pipelines/templates" + - name: "Build exports" + path: "pipelines/build-exports" - name: "Deployments" children: - name: "Overview" diff --git a/pages/pipelines/governance.md b/pages/pipelines/governance.md index 7021ad3227..311f839706 100644 --- a/pages/pipelines/governance.md +++ b/pages/pipelines/governance.md @@ -1,3 +1,16 @@ # Governance overview -Buildkite cares deeply about making sure enterprise customers have their compliance needs met. These features are aimed to help with the auditing processes in your company be it specific for your industry or wide spread compliance standards like SOC. +Governance plays a crucial role in CI/CD tools, particularly for anyone operating in regulated industries or handling sensitive data. It encompasses policies, processes, and controls to ensure practices align with the following: + +- Industry-specific regulations. +- Internal policies. +- Widely recognized compliance standards. + +These standards assess the security, availability, processing integrity, confidentiality, and privacy of information systems. + +Buildkite understands the importance of meeting compliance and auditing requirements. The following features are tailored to meet your governance needs: + +- [Pipeline templates](/docs/pipelines/templates) +- [Build exports](/docs/pipelines/build-exports) + +With these features, you can maintain your compliance and build software with confidence. From eceee23dbf6e1712a855ba5c57aad5089134719a Mon Sep 17 00:00:00 2001 From: Mark Haylock Date: Wed, 28 Jun 2023 13:53:46 +1200 Subject: [PATCH 070/118] Remove confusing naming of "pipline template settings" --- pages/pipelines/templates.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/pipelines/templates.md b/pages/pipelines/templates.md index c0d87a11cb..2877b32df5 100644 --- a/pages/pipelines/templates.md +++ b/pages/pipelines/templates.md @@ -15,7 +15,7 @@ Only administrators can create or update pipeline templates. To create a template: -1. Navigate to your [organizationā€™s pipeline template settings](https://buildkite.com/organizations/-/pipeline-templates). +1. Navigate to your [organizationā€™s pipeline templates](https://buildkite.com/organizations/-/pipeline-templates). 1. If this is your first template, select _Create a Template_. Otherwise, select _New Template_. A pipeline template is created automatically for you. 1. Update the name and description of your new template and select _Apply_ to save your changes. 1. You can also select _Edit_ to change the step configuration for the template. From 3863b75b2b9cda52ab3c655fcdbdd2a266477076 Mon Sep 17 00:00:00 2001 From: Mark Haylock Date: Wed, 28 Jun 2023 15:45:41 +1200 Subject: [PATCH 071/118] Apply suggestions from code review Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/pipelines/templates.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pages/pipelines/templates.md b/pages/pipelines/templates.md index 2877b32df5..95b68e8b3c 100644 --- a/pages/pipelines/templates.md +++ b/pages/pipelines/templates.md @@ -1,7 +1,7 @@ # Pipeline templates > šŸ“˜ Enterprise feature -> Pipeline templates is only available on an [Enterprise](https://buildkite.com/pricing) plan. +> Pipeline templates are only available on an [Enterprise](https://buildkite.com/pricing) plan. ## Overview @@ -18,7 +18,7 @@ To create a template: 1. Navigate to your [organizationā€™s pipeline templates](https://buildkite.com/organizations/-/pipeline-templates). 1. If this is your first template, select _Create a Template_. Otherwise, select _New Template_. A pipeline template is created automatically for you. 1. Update the name and description of your new template and select _Apply_ to save your changes. -1. You can also select _Edit_ to change the step configuration for the template. +1. Select _Edit_ if you want to change the step configuration for the template. An administrator can add multiple templates to use across the organization. Making changes and saving a template will apply those changes to all pipelines using that template. From 7cba732413ec516e4d80adfabc5b505417c08348 Mon Sep 17 00:00:00 2001 From: Josh Deprez Date: Wed, 28 Jun 2023 14:19:03 +1000 Subject: [PATCH 072/118] Apply suggestions from code review Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/agent/v3/monitoring.md | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/pages/agent/v3/monitoring.md b/pages/agent/v3/monitoring.md index 377922abdf..4fb21348e6 100644 --- a/pages/agent/v3/monitoring.md +++ b/pages/agent/v3/monitoring.md @@ -1,6 +1,6 @@ # Monitoring and observing the Buildkite Agent -By default, the Buildkite Agent is only observable either through Buildkite or +By default, the agent is only observable either through Buildkite or through log output on the host: - Job logs, which relate to the jobs the agent runs, are uploaded to Buildkite, @@ -11,9 +11,7 @@ By default, the Buildkite Agent is only observable either through Buildkite or ## Health checking and status page -The agent can optionally run a HTTP service that describes the state of the -agent. The service is suitable for both automated health-checking and human -inspection. +The agent can optionally run an HTTP service that describes the agent's state. The service is suitable for both automated health checks and human inspection. You can enable the service with the `--health-check-addr` flag or `$BUILDKITE_AGENT_HEALTH_CHECK_ADDR` environment variable: @@ -22,11 +20,11 @@ You can enable the service with the `--health-check-addr` flag or buildkite-agent start --health-check-addr=:3901 ``` -For security reasons, we recommend that you do **not** expose the service +For security reasons, we recommend that you do _not_ expose the service directly to the internet. While there should be no ability to manipulate the agent state using this service, it may expose information, or provide a vector for a denial-of-service attack. We may also add new features to the service in -future. +the future. ### Health checking service routes @@ -36,14 +34,15 @@ future. succeeded at sending a heartbeat. Workers are numbered starting from 1, and the number of workers is set with the `--spawn` flag. If the previous heartbeat for this worker failed, it returns HTTP status 500 and a description - of the failure, otherwise it returns HTTP status 200. + of the failure. Otherwise, it returns HTTP status 200. - **`/status`**: A human-friendly page detailing various systems inside the - agent. To aid debugging, this page does *not* automatically refresh - it shows + agent. To aid debugging, this page does *not* automatically refreshā€”it shows the status of each agent internal at a particular moment in time. +The following shows the `/status` page for an agent: + <%= image 'status-page.png', size: '600x437', alt: 'Agent internal status page' %> ## Tracing -For Datadog APM or OpenTelemetry tracing, see our -[tracing](/docs/agent/v3/tracing) docs. +For Datadog APM or OpenTelemetry tracing, see [Tracing in the Buildkite Agent](/docs/agent/v3/tracing). From 4c580e10224ce145ff34a70647b50235d7cc02f9 Mon Sep 17 00:00:00 2001 From: "Pol (Paula)" Date: Wed, 28 Jun 2023 01:38:09 -0300 Subject: [PATCH 073/118] Update pages/test_analytics.md Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/test_analytics.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pages/test_analytics.md b/pages/test_analytics.md index 1f9560349a..6dfc246abf 100644 --- a/pages/test_analytics.md +++ b/pages/test_analytics.md @@ -38,8 +38,8 @@ Test Analytics helps you track and analyze the steps in that pipeline that invol You can also upload test results by importing [JSON](/docs/test-analytics/importing-json) or [JUnit XML](/docs/test-analytics/importing-junit-xml). ->šŸ“˜ Data Retention -> The upload data sent to Test Analytics is stored in S3 and deleted after six months. +>šŸ“˜ Data retention +> The data uploaded to Test Analytics is stored in S3 and deleted after six months. ---- From 1d9fcb17e6e2ea47fc099419e813c31f49814860 Mon Sep 17 00:00:00 2001 From: Josh Deprez Date: Wed, 28 Jun 2023 14:59:25 +1000 Subject: [PATCH 074/118] Add words, links --- pages/agent/v3/monitoring.md | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/pages/agent/v3/monitoring.md b/pages/agent/v3/monitoring.md index 4fb21348e6..e9d0359a36 100644 --- a/pages/agent/v3/monitoring.md +++ b/pages/agent/v3/monitoring.md @@ -6,20 +6,25 @@ By default, the agent is only observable either through Buildkite or - Job logs, which relate to the jobs the agent runs, are uploaded to Buildkite, and are shown for each step in a build. - Agent logs, which relate to how the agent itself is running, are not uploaded - or saved (except where this is done by another process such as systemd or - launchd). + or saved (except where the output from the agent is read or redirected by + another process, such as [systemd] or [launchd]). ## Health checking and status page -The agent can optionally run an HTTP service that describes the agent's state. The service is suitable for both automated health checks and human inspection. +The agent can optionally run an HTTP service that describes the agent's state. +The service is suitable for both automated health checks and human inspection. You can enable the service with the `--health-check-addr` flag or -`$BUILDKITE_AGENT_HEALTH_CHECK_ADDR` environment variable: +`$BUILDKITE_AGENT_HEALTH_CHECK_ADDR` environment variable. For example, to +enable the service listening on local port 3901, you can use: ```shell buildkite-agent start --health-check-addr=:3901 ``` +The flag expects [a "host:port" address](https://pkg.go.dev/net#Dial). +Passing `:0` allows the agent to choose a port which will be logged at startup. + For security reasons, we recommend that you do _not_ expose the service directly to the internet. While there should be no ability to manipulate the agent state using this service, it may expose information, or provide a vector @@ -28,6 +33,8 @@ the future. ### Health checking service routes +The URL paths available from the health checking service are as follows: + - **`/`**: Returns HTTP status 200 with the text `OK: Buildkite agent is running`. - **`/agent/(worker number)`**: Reports the time since the agent worker @@ -36,7 +43,7 @@ the future. heartbeat for this worker failed, it returns HTTP status 500 and a description of the failure. Otherwise, it returns HTTP status 200. - **`/status`**: A human-friendly page detailing various systems inside the - agent. To aid debugging, this page does *not* automatically refreshā€”it shows + agent. To aid debugging, this page does _not_ automatically refreshā€”it shows the status of each agent internal at a particular moment in time. The following shows the `/status` page for an agent: @@ -46,3 +53,6 @@ The following shows the `/status` page for an agent: ## Tracing For Datadog APM or OpenTelemetry tracing, see [Tracing in the Buildkite Agent](/docs/agent/v3/tracing). + +[systemd]: https://www.freedesktop.org/software/systemd/man/systemd-journald.service.html +[launchd]: https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLaunchdJobs.html From d0a283b0c96f1292611a80a0b870adc5e93d1da9 Mon Sep 17 00:00:00 2001 From: Josh Deprez Date: Wed, 28 Jun 2023 15:27:22 +1000 Subject: [PATCH 075/118] More changes from review comments --- pages/agent/v3/monitoring.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/pages/agent/v3/monitoring.md b/pages/agent/v3/monitoring.md index e9d0359a36..f55dcee400 100644 --- a/pages/agent/v3/monitoring.md +++ b/pages/agent/v3/monitoring.md @@ -3,11 +3,11 @@ By default, the agent is only observable either through Buildkite or through log output on the host: -- Job logs, which relate to the jobs the agent runs, are uploaded to Buildkite, - and are shown for each step in a build. -- Agent logs, which relate to how the agent itself is running, are not uploaded - or saved (except where the output from the agent is read or redirected by - another process, such as [systemd] or [launchd]). +- **Job logs:** Relate to the jobs the agent runs. These are uploaded to + Buildkite and shown for each step in a build. +- **Agent logs:** Relate to how the agent itself is running. These are not + uploaded or saved (except where the output from the agent is read or + redirected by another process, such as [systemd] or [launchd]). ## Health checking and status page @@ -44,7 +44,8 @@ The URL paths available from the health checking service are as follows: of the failure. Otherwise, it returns HTTP status 200. - **`/status`**: A human-friendly page detailing various systems inside the agent. To aid debugging, this page does _not_ automatically refreshā€”it shows - the status of each agent internal at a particular moment in time. + the status of each internal component of the agent at a particular moment in + time. The following shows the `/status` page for an agent: From b8182ef754df54f1dada97302cf62a44ab8782d6 Mon Sep 17 00:00:00 2001 From: Josh Deprez Date: Wed, 28 Jun 2023 15:47:03 +1000 Subject: [PATCH 076/118] Missing comma Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/agent/v3/monitoring.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/agent/v3/monitoring.md b/pages/agent/v3/monitoring.md index f55dcee400..d8e5936ba8 100644 --- a/pages/agent/v3/monitoring.md +++ b/pages/agent/v3/monitoring.md @@ -23,7 +23,7 @@ buildkite-agent start --health-check-addr=:3901 ``` The flag expects [a "host:port" address](https://pkg.go.dev/net#Dial). -Passing `:0` allows the agent to choose a port which will be logged at startup. +Passing `:0` allows the agent to choose a port, which will be logged at startup. For security reasons, we recommend that you do _not_ expose the service directly to the internet. While there should be no ability to manipulate the From 8f2632b364d47995b1c7f23422b3f2974995b318 Mon Sep 17 00:00:00 2001 From: Juanito Fatas Date: Thu, 29 Jun 2023 08:44:18 +0900 Subject: [PATCH 077/118] Update screenshot that highlights audit log --- .../audit-log-in-organization-settings.png | Bin 106007 -> 194475 bytes pages/pipelines/audit_log.md | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/images/docs/pipelines/audit_log/audit-log-in-organization-settings.png b/images/docs/pipelines/audit_log/audit-log-in-organization-settings.png index 4689642245965f9782340c394c807569750b8b6d..4e70dab6972fd3633c94b8897496953a1b338d61 100644 GIT binary patch literal 194475 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

$^s;#oDP2{m`IB+45=CCy_oh$BGbf_=A);bh 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 z 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%0D<$SF?45p#Wrq5XjEn>Z1_Jop#>U2|sHn`$ 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 Z4<5z^tWD53?%Xs$MnXZnRMg1-{{Y;!m2?0A literal 106007 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 +<%= image "audit-log-in-organization-settings.png", width: 1732/2, height: 1431/2, alt: "Audit Log in Organization Settings" %> Audit Log contains two tabs: From a6d96d5798ed31b61bc8fa1ed51cf600cac85a96 Mon Sep 17 00:00:00 2001 From: Karen Sawrey Date: Fri, 30 Jun 2023 00:40:53 +0200 Subject: [PATCH 078/118] Added a section on input validation --- pages/pipelines/input_step.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/pages/pipelines/input_step.md b/pages/pipelines/input_step.md index cb92274ed5..d206b194d8 100644 --- a/pages/pipelines/input_step.md +++ b/pages/pipelines/input_step.md @@ -275,3 +275,22 @@ steps: value: "stable" ``` {: codeblock-file="pipeline.yml"} + +## Input validation + +To prevent the users from entering invalid values when using an input step with text inputs (for example, to gather some deployment information), you can use input validation. + +If you associate a RegEx to a field, the field outline will turn red when an invalid value is entered. + +To do it, use the following sample syntax: + +``` +steps: +- block: "Click me!" + fields: + - text: Must be hexadecimal + key: hex + format: "[0-9a-f]+" +``` + +The format must be a regular expression implicitly anchored to the beginning and end of the input and is functionally equivalent to the [HTML5 pattern attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern). From 9c4a3cc64b4addae6cb8aeeb7b33faf3200f1302 Mon Sep 17 00:00:00 2001 From: Karen Sawrey Date: Fri, 30 Jun 2023 01:02:25 +0200 Subject: [PATCH 079/118] Fixed syntax highlighting Also changed "block" to "input" in the example as we're talking about input step here. Must have been a mistake on the forum. --- pages/pipelines/input_step.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pages/pipelines/input_step.md b/pages/pipelines/input_step.md index d206b194d8..e67c2f41a6 100644 --- a/pages/pipelines/input_step.md +++ b/pages/pipelines/input_step.md @@ -284,13 +284,13 @@ If you associate a RegEx to a field, the field outline will turn red when an inv To do it, use the following sample syntax: -``` +```yml steps: -- block: "Click me!" - fields: - - text: Must be hexadecimal - key: hex - format: "[0-9a-f]+" + - input: "Click me!" + fields: + - text: Must be hexadecimal + key: hex + format: "[0-9a-f]+" ``` The format must be a regular expression implicitly anchored to the beginning and end of the input and is functionally equivalent to the [HTML5 pattern attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern). From 6cc6512117a00382ac063efc98427a34636f28d6 Mon Sep 17 00:00:00 2001 From: David Barrell Date: Fri, 30 Jun 2023 14:53:49 +1000 Subject: [PATCH 080/118] Update webhook docs --- pages/apis/webhooks.md | 19 +++++----- pages/apis/webhooks/_agent_events_table.md | 4 +++ pages/apis/webhooks/agent_events.md | 30 ++++++++++++++++ pages/apis/webhooks/cluster_token_events.md | 39 +++++++++++++++++++++ 4 files changed, 83 insertions(+), 9 deletions(-) create mode 100644 pages/apis/webhooks/cluster_token_events.md diff --git a/pages/apis/webhooks.md b/pages/apis/webhooks.md index 0d5f0bb164..23523700c7 100644 --- a/pages/apis/webhooks.md +++ b/pages/apis/webhooks.md @@ -14,16 +14,17 @@ You can subscribe to one or more of the following events: EventDescription - pingWebhook notification settings have changed - build.scheduledA build has been scheduled - build.runningA build has started running - build.failingA build is failing - build.finishedA build has finished - job.scheduledA job has been scheduled - job.startedA command step job has started running on an agent - job.finishedA job has finished - job.activatedA block step job has been unblocked using the web or API + pingWebhook notification settings have changed + build.scheduledA build has been scheduled + build.runningA build has started running + build.failingA build is failing + build.finishedA build has finished + job.scheduledA job has been scheduled + job.startedA command step job has started running on an agent + job.finishedA job has finished + job.activatedA block step job has been unblocked using the web or API <%= render_markdown partial: 'apis/webhooks/agent_events_table' %> + cluster_token.registration_blockedAn attempted agent registration has been blocked because the request IP address is not included in the cluster token's allowed IP addresses diff --git a/pages/apis/webhooks/_agent_events_table.md b/pages/apis/webhooks/_agent_events_table.md index 5cacda3777..99a96d6c15 100644 --- a/pages/apis/webhooks/_agent_events_table.md +++ b/pages/apis/webhooks/_agent_events_table.md @@ -18,3 +18,7 @@ agent.stopped An agent has stopped. This happens when an agent is instructed to stop from the API. It can be graceful or forceful + + agent.blocked + An agent has been blocked. This happens when an agent's IP address is no longer included in the cluster token's allowed IP addresses + diff --git a/pages/apis/webhooks/agent_events.md b/pages/apis/webhooks/agent_events.md index 516065704b..f340ddd3a0 100644 --- a/pages/apis/webhooks/agent_events.md +++ b/pages/apis/webhooks/agent_events.md @@ -32,3 +32,33 @@ Example request body: } } ``` + +### `agent.blocked` + + + + + + + + +
blocked_ipThe blocked request IP address
agentThe Agent this notification relates to
cluster_tokenThe cluster token used in the registration attempt
senderThe user who created the webhook
+ +Example request body: + +```json +{ + "event": "agent.blocked", + "blocked_ip": "202.188.43.20", + "agent": { + "...": "..." + }, + "cluster_token": { + "...": "..." + }, + "sender": { + "id": "8a7693f8-dbae-4783-9137-84090fce9045", + "name": "Some Person" + } +} +``` diff --git a/pages/apis/webhooks/cluster_token_events.md b/pages/apis/webhooks/cluster_token_events.md new file mode 100644 index 0000000000..fc9b3dc2fa --- /dev/null +++ b/pages/apis/webhooks/cluster_token_events.md @@ -0,0 +1,39 @@ +# Cluster token events + + +## Events + + + + + + + + +
cluster_token.registration_blockedAn attempted agent registration has been blocked because the request IP address is not included in the cluster token's allowed IP addresses
+ +## Request body data + + + + + + + +
blocked_ipThe IP address of the blocked registration request
cluster_tokenThe cluster token used in the registration attempt
senderThe user who created the webhook
+ +Example request body: + +```json +{ + "event": "cluster_token.registration_blocked", + "blocked_ip": "202.188.43.20", + "cluster_token": { + "...": "..." + }, + "sender": { + "id": "8a7693f8-dbae-4783-9137-84090fce9045", + "name": "Some Person" + } +} +``` From 914dc538eb896201ab93f66c68f86d5cfd840a77 Mon Sep 17 00:00:00 2001 From: David Barrell Date: Fri, 30 Jun 2023 14:57:57 +1000 Subject: [PATCH 081/118] Update eventbridge docs --- pages/integrations/amazon_eventbridge.md | 68 ++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/pages/integrations/amazon_eventbridge.md b/pages/integrations/amazon_eventbridge.md index ae08020c9b..203277a38c 100644 --- a/pages/integrations/amazon_eventbridge.md +++ b/pages/integrations/amazon_eventbridge.md @@ -24,6 +24,14 @@ Once you've configured an Amazon EventBridge notification service in Buildkite, Agent DisconnectedAn agent has disconnected. This happens when the agent shuts down and disconnects from the API Agent StoppingAn agent is stopping. This happens when an agent is instructed to stop from the API. It first transitions to stopping and finishes any current jobs Agent StoppedAn agent has stopped. This happens when an agent is instructed to stop from the API. It can be graceful or forceful + + Agent Blocked + An agent has been blocked. This happens when an agent's IP address is no longer included in the cluster token's allowed IP addresses + + + Cluster Token Registration Blocked + An attempted agent registration is blocked because the request IP address is not included in the cluster token's allowed IP addresses + Audit Event Logged An audit event has been logged for the organization @@ -697,6 +705,66 @@ AWS EventBridge has strict limits on the size of the payload as documented in [A } ``` +

Agent Blocked

+ +```json +{ + "detail-type": "Agent Blocked", + "detail": { + "version": 1, + "blocked_ip": "204.124.80.36", + "cluster_token": { + "uuid": "c1164b28-bace-436-ac44-4133e1d18ca5", + "description": "Default agent token", + "allowed_ip_addresses": "202.144.160.0/24", + }, + "agent": { + "uuid": "0188f51c-7bc8-4b14-a702-002c485ae2dc", + "graphql_id": "QWdlbnQtLSOMTg4ZjUxYy03YmM4LTRiMTQtYTcwMi@ MDJjNDg1YWUyZGM=", + "connection_state": "disconnected", + "name": "rogue-agent-1", + "version": "3.40.0", + "token": null, + "ip_address": "127.0.0.1", + "hostname": "rogue-agent", + "pid": "26089", + "priority": 0, + "meta_data": ["queues=default"], + "connected_at": "2023-06-26 00:31:04 UTC", + "disconnected_at": "2023-06-26 00:31:18 UTC", + "Lost_at": null, + }, + "organization": { + "uuid": "a98961b7-adc1-41aa-8726-cfb2c46e42e0", + "graphql_id": "T3JnYW5pemF0aW9uLS0tYTk4OTYxYjctYWRjMS00MWFhLTg3MjYtY2ZiMmM0NmU0MmUw", + "slug": "my-org" + } + } +} +``` + +

Cluster Token Registration Blocked

+ +```json +{ + "detail-type": "Cluster Token Registration Blocked", + "detail": { + "version": 1, + "blocked_ip": "204.124.80.36", + "cluster_token": { + "uuid": "c1164b28-bace-436-ac44-4133e1d18ca5", + "description": "Default agent token", + "allowed_ip_addresses": "202.144.160.0/24", + }, + "organization": { + "uuid": "a98961b7-adc1-41aa-8726-cfb2c46e42e0", + "graphql_id": "T3JnYW5pemF0aW9uLS0tYTk4OTYxYjctYWRjMS00MWFhLTg3MjYtY2ZiMmM0NmU0MmUw", + "slug": "my-org" + } + } +} +``` +

Audit Event Logged

[Audit log](/docs/pipelines/audit-log) is only available to Buildkite customers on the [Enterprise](https://buildkite.com/pricing) plan From ae982ddd8c89ef252036bbdbfe742355ac11d136 Mon Sep 17 00:00:00 2001 From: David Barrell Date: Fri, 30 Jun 2023 15:01:01 +1000 Subject: [PATCH 082/118] Add note about the metrics API --- pages/clusters/manage_clusters.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pages/clusters/manage_clusters.md b/pages/clusters/manage_clusters.md index 4b35c8fab6..081b38218a 100644 --- a/pages/clusters/manage_clusters.md +++ b/pages/clusters/manage_clusters.md @@ -77,6 +77,8 @@ You can set the _Allowed IP Addresses_ when creating a token, or you can modify Modifying the _Allowed IP Addresses_ forcefully disconnects any existing agents with IP addresses outside the updated value. This prevents the completion of any jobs in progress on those agents. +This setting currently does not restrict access to the [Metrics API](/docs/apis/agent-api/metrics) for the given cluster token. + There is a maximum of 24 CIDR blocks per agent token, and IPv6 is currently not supported. ### Migrate to clusters From e7c0300f3e39047afbe0187e09ac83dfb524a8af Mon Sep 17 00:00:00 2001 From: David Barrell Date: Fri, 30 Jun 2023 15:09:00 +1000 Subject: [PATCH 083/118] Ignore non-sentence case in event bridge notification name --- pages/integrations/amazon_eventbridge.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pages/integrations/amazon_eventbridge.md b/pages/integrations/amazon_eventbridge.md index 203277a38c..bba28a49c1 100644 --- a/pages/integrations/amazon_eventbridge.md +++ b/pages/integrations/amazon_eventbridge.md @@ -742,9 +742,12 @@ AWS EventBridge has strict limits on the size of the payload as documented in [A } } ``` +

Cluster Token Registration Blocked

+ + ```json { "detail-type": "Cluster Token Registration Blocked", From 998d8c4ceeadc180eff3a88e53dbcb5250b4c710 Mon Sep 17 00:00:00 2001 From: David Barrell Date: Fri, 30 Jun 2023 15:22:02 +1000 Subject: [PATCH 084/118] Add cluster token events to nav --- data/nav.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/data/nav.yml b/data/nav.yml index d1ff1fc96d..fa7c8d094b 100644 --- a/data/nav.yml +++ b/data/nav.yml @@ -446,6 +446,8 @@ path: "apis/webhooks/agent-events" - name: "Build events" path: "apis/webhooks/build-events" + - name: "Cluster token events" + path: "apis/webhooks/cluster-token-events" - name: "Job events" path: "apis/webhooks/job-events" - name: "Ping events" From fcae462506f7ee79451e6ad986d1bd61df10d270 Mon Sep 17 00:00:00 2001 From: David Barrell Date: Fri, 30 Jun 2023 17:20:00 +1000 Subject: [PATCH 085/118] Apply suggestions from code review Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/apis/webhooks/cluster_token_events.md | 1 - pages/clusters/manage_clusters.md | 6 ++++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/pages/apis/webhooks/cluster_token_events.md b/pages/apis/webhooks/cluster_token_events.md index fc9b3dc2fa..a54fd32a11 100644 --- a/pages/apis/webhooks/cluster_token_events.md +++ b/pages/apis/webhooks/cluster_token_events.md @@ -1,6 +1,5 @@ # Cluster token events - ## Events diff --git a/pages/clusters/manage_clusters.md b/pages/clusters/manage_clusters.md index 081b38218a..21aa080c61 100644 --- a/pages/clusters/manage_clusters.md +++ b/pages/clusters/manage_clusters.md @@ -77,9 +77,11 @@ You can set the _Allowed IP Addresses_ when creating a token, or you can modify Modifying the _Allowed IP Addresses_ forcefully disconnects any existing agents with IP addresses outside the updated value. This prevents the completion of any jobs in progress on those agents. -This setting currently does not restrict access to the [Metrics API](/docs/apis/agent-api/metrics) for the given cluster token. +Note the following limitations: -There is a maximum of 24 CIDR blocks per agent token, and IPv6 is currently not supported. +- This setting does not restrict access to the [Metrics API](/docs/apis/agent-api/metrics) for the given cluster token. +- There is a maximum of 24 CIDR blocks per agent token. +- IPv6 is currently not supported. ### Migrate to clusters From bb4c1e444cf301a0f9666ccac47ffc90b27dfd83 Mon Sep 17 00:00:00 2001 From: Jeremy Bumsted Date: Fri, 30 Jun 2023 16:51:51 -0600 Subject: [PATCH 086/118] add GraphQL query for audit events --- pages/apis/graphql/graphql_cookbook.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/pages/apis/graphql/graphql_cookbook.md b/pages/apis/graphql/graphql_cookbook.md index d6ea9fe684..6aa2067c21 100644 --- a/pages/apis/graphql/graphql_cookbook.md +++ b/pages/apis/graphql/graphql_cookbook.md @@ -825,6 +825,31 @@ mutation deleteOrgMember { } ``` +### Get organization audit events +Query your organization's audit events. Audit events are only available to Enterprise customers. + +```graphql + query getOrganizationAuditEvents{ + organization(slug:""){ + auditEvents(first: 500){ + edges{ + node{ + type + occurredAt + actor{ + name + } + subject{ + name + type + } + } + } + } + } + } +``` + ## Teams A collection of common tasks with teams using the GraphQL API. From f269a06b2553b5aab1f54e019c612594da5e8ec7 Mon Sep 17 00:00:00 2001 From: Michael Belton Date: Mon, 3 Jul 2023 10:53:59 +1000 Subject: [PATCH 087/118] Restructure common and specific data for agent events --- pages/apis/webhooks/agent_events.md | 59 +++++++++++++++++++++++------ 1 file changed, 47 insertions(+), 12 deletions(-) diff --git a/pages/apis/webhooks/agent_events.md b/pages/apis/webhooks/agent_events.md index f340ddd3a0..a439e88548 100644 --- a/pages/apis/webhooks/agent_events.md +++ b/pages/apis/webhooks/agent_events.md @@ -4,18 +4,33 @@ ## Events
+ + + <%= render_markdown partial: 'apis/webhooks/agent_events_table' %>
EventDescription
-## Request body data +## Common event data + +The following properties are sent by all events. - - - - + + + + + + + + + + + + + +
agentThe Agent this notification relates to
senderThe user who created the webhook
PropertyTypeDescription
agentAgentThe agent this notification relates to
senderStringThe user who created the webhook
Example request body: @@ -33,15 +48,35 @@ Example request body: } ``` -### `agent.blocked` +## Agent blocked event data + +The following properties are sent by the `agent.blocked` event. - - - - - - + + + + + + + + + + + + + + + + + + + + + + + +
blocked_ipThe blocked request IP address
agentThe Agent this notification relates to
cluster_tokenThe cluster token used in the registration attempt
senderThe user who created the webhook
PropertyTypeDescription
blocked_ipStringThe blocked request IP address
agentAgentThe agent this notification relates to
cluster_tokenCluster tokenThe cluster token used in the registration attempt
senderStringThe user who created the webhook
Example request body: From 59f2b11b46e5160528e02cc961ae4c68aa000011 Mon Sep 17 00:00:00 2001 From: Jordan Carter Date: Mon, 3 Jul 2023 14:11:13 +1200 Subject: [PATCH 088/118] Update cluster-queue-metrics.png with new panel title Current Wait --- .../queue_metrics/cluster-queue-metrics.png | Bin 45573 -> 45455 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/images/docs/clusters/queue_metrics/cluster-queue-metrics.png b/images/docs/clusters/queue_metrics/cluster-queue-metrics.png index b1710f7105c71fd7ee77129e5990275b0fc32606..c2635789f37e2078635ecfbaf6ede67b6e3b72a2 100644 GIT binary patch literal 45455 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 From cb2a56c5becff577983124ae648ce8c0b0136db2 Mon Sep 17 00:00:00 2001 From: Jordan Carter Date: Mon, 3 Jul 2023 14:16:49 +1200 Subject: [PATCH 089/118] Update panel title from Wait to Current Wait --- pages/clusters/queue_metrics.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pages/clusters/queue_metrics.md b/pages/clusters/queue_metrics.md index a6a38fd464..e75b8dcbf4 100644 --- a/pages/clusters/queue_metrics.md +++ b/pages/clusters/queue_metrics.md @@ -24,6 +24,6 @@ _Jobs Running_ shows the number of jobs assigned to agents. These are any jobs i _Jobs Waiting_ shows the number of jobs not yet assigned to an agent. These are any jobs for the cluster queue in the `SCHEDULED` state. -## Wait panel +## Current wait panel -_Wait_ shows the various job wait time percentiles for this cluster queue's waiting jobs. The percentiles represent how long it takes jobs to be assigned an agent. If there are no waiting jobs, dashes (`-`) are shown instead. +_Current Wait_ shows the various job wait time percentiles for this cluster queue's waiting jobs. The percentiles represent how long it takes jobs to be assigned an agent. If there are no waiting jobs, dashes (`-`) are shown instead. From a3c5dafcfda5e8509eaa0f22f17d8360abf41855 Mon Sep 17 00:00:00 2001 From: Michael Belton Date: Mon, 3 Jul 2023 13:36:57 +1000 Subject: [PATCH 090/118] Use headings in data tables for new event pages --- pages/apis/webhooks/agent_events.md | 6 ++--- pages/apis/webhooks/cluster_token_events.md | 28 +++++++++++++++++---- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/pages/apis/webhooks/agent_events.md b/pages/apis/webhooks/agent_events.md index a439e88548..6226f2650f 100644 --- a/pages/apis/webhooks/agent_events.md +++ b/pages/apis/webhooks/agent_events.md @@ -7,9 +7,9 @@ EventDescription - -<%= render_markdown partial: 'apis/webhooks/agent_events_table' %> - + + <%= render_markdown partial: 'apis/webhooks/agent_events_table' %> + ## Common event data diff --git a/pages/apis/webhooks/cluster_token_events.md b/pages/apis/webhooks/cluster_token_events.md index a54fd32a11..9f9bf109fe 100644 --- a/pages/apis/webhooks/cluster_token_events.md +++ b/pages/apis/webhooks/cluster_token_events.md @@ -3,6 +3,9 @@ ## Events + + + @@ -14,11 +17,26 @@ ## Request body data
EventDescription
cluster_token.registration_blocked
- - - - - + + + + + + + + + + + + + + + + + + + +
blocked_ipThe IP address of the blocked registration request
cluster_tokenThe cluster token used in the registration attempt
senderThe user who created the webhook
PropertyTypeDescription
blocked_ipStringThe IP address of the blocked registration request
cluster_tokenCluster tokenThe cluster token used in the registration attempt
senderStringThe user who created the webhook
Example request body: From f89a04efba16a12c730c2281b763e7eaa0b1432c Mon Sep 17 00:00:00 2001 From: Michael Belton Date: Mon, 3 Jul 2023 13:37:46 +1000 Subject: [PATCH 091/118] Use asterisk for unordered list to fix linting --- pages/clusters/manage_clusters.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pages/clusters/manage_clusters.md b/pages/clusters/manage_clusters.md index 21aa080c61..90115f8044 100644 --- a/pages/clusters/manage_clusters.md +++ b/pages/clusters/manage_clusters.md @@ -79,9 +79,9 @@ Modifying the _Allowed IP Addresses_ forcefully disconnects any existing agents Note the following limitations: -- This setting does not restrict access to the [Metrics API](/docs/apis/agent-api/metrics) for the given cluster token. -- There is a maximum of 24 CIDR blocks per agent token. -- IPv6 is currently not supported. +* This setting does not restrict access to the [Metrics API](/docs/apis/agent-api/metrics) for the given cluster token. +* There is a maximum of 24 CIDR blocks per agent token. +* IPv6 is currently not supported. ### Migrate to clusters From b09d09a3f1cb06a5f968456d0593db98dd16b0ed Mon Sep 17 00:00:00 2001 From: Juanito Fatas Date: Mon, 3 Jul 2023 12:46:14 +0900 Subject: [PATCH 092/118] Update GraphQL docs --- data/graphql_data_schema.json | 3119 +++++++++++++---- data/nav_graphql.yml | 4 +- .../graphql/schemas/enum/auditeventtype.md | 2 +- .../graphql/schemas/enum/auditsubjecttype.md | 2 +- .../input_object/pipelinecreateinput.md | 2 +- .../input_object/pipelineupdateinput.md | 2 +- pages/apis/graphql/schemas/interface/node.md | 1 + .../graphql/schemas/object/organization.md | 2 +- pages/apis/graphql/schemas/object/pipeline.md | 2 +- .../schemas/object/pipelinecreatepayload.md | 2 +- .../schemas/object/pipelinetemplate.md | 43 + .../graphql/schemas/union/auditsubjectnode.md | 1 + 12 files changed, 2440 insertions(+), 742 deletions(-) create mode 100644 pages/apis/graphql/schemas/object/pipelinetemplate.md diff --git a/data/graphql_data_schema.json b/data/graphql_data_schema.json index 4873335f1e..d30e077368 100644 --- a/data/graphql_data_schema.json +++ b/data/graphql_data_schema.json @@ -207,7 +207,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -221,7 +223,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -688,7 +692,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -698,7 +704,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -708,7 +716,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -718,7 +728,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "type", @@ -736,7 +748,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "state", @@ -754,7 +768,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "priority", @@ -764,7 +780,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "agentQueryRules", @@ -782,7 +800,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "concurrency", @@ -792,7 +812,9 @@ "name": "JobConcurrencySearch", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "passed", @@ -802,7 +824,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "step", @@ -812,7 +836,9 @@ "name": "JobStepSearch", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "order", @@ -822,7 +848,9 @@ "name": "JobOrder", "ofType": null }, - "defaultValue": "RECENTLY_ASSIGNED" + "defaultValue": "RECENTLY_ASSIGNED", + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -1306,7 +1334,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -1320,7 +1350,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "graceful", @@ -1330,7 +1362,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "true" + "defaultValue": "true", + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -1668,7 +1702,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "organizationID", @@ -1682,7 +1718,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "description", @@ -1692,7 +1730,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "public", @@ -1702,7 +1742,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "false" + "defaultValue": "false", + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -1876,7 +1918,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -1890,7 +1934,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "reason", @@ -1904,7 +1950,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -3189,6 +3237,24 @@ "isDeprecated": false, "deprecationReason": null }, + { + "name": "PIPELINE_TEMPLATE_CREATED", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PIPELINE_TEMPLATE_DELETED", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "PIPELINE_TEMPLATE_UPDATED", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "PIPELINE_UPDATED", "description": null, @@ -3683,6 +3749,11 @@ "name": "PipelineSchedule", "ofType": null }, + { + "kind": "OBJECT", + "name": "PipelineTemplate", + "ofType": null + }, { "kind": "OBJECT", "name": "SCMPipelineSettings", @@ -3764,163 +3835,169 @@ "interfaces": null, "enumValues": [ { - "name": "SCM_SERVICE", + "name": "CLUSTER_PERMISSION", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "SCM_PIPELINE_SETTINGS", + "name": "PIPELINE", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "SCM_REPOSITORY_HOST", + "name": "AGENT_TOKEN", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "SUITE_MONITOR", + "name": "API_ACCESS_TOKEN", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "SUITE", + "name": "CLUSTER_QUEUE", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "USER", + "name": "CLUSTER_TOKEN", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "USER_EMAIL", + "name": "NOTIFICATION_SERVICE", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "USER_TOTP", + "name": "ORGANIZATION", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "AUTHORIZATION", + "name": "ORGANIZATION_INVITATION", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "CLUSTER", + "name": "PIPELINE_SCHEDULE", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "SUBSCRIPTION", + "name": "PIPELINE_TEMPLATE", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "AGENT_TOKEN", + "name": "TEAM", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "API_ACCESS_TOKEN", + "name": "TEAM_MEMBER", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "CLUSTER_QUEUE", + "name": "TEAM_PIPELINE", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "CLUSTER_TOKEN", + "name": "TEAM_SUITE", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "CLUSTER_PERMISSION", + "name": "SCM_SERVICE", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "NOTIFICATION_SERVICE", + "name": "SCM_PIPELINE_SETTINGS", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "ORGANIZATION", + "name": "SSO_PROVIDER", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "ORGANIZATION_INVITATION", + "name": "ORGANIZATION_MEMBER", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "ORGANIZATION_MEMBER", + "name": "SUITE_MONITOR", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "PIPELINE", + "name": "SCM_REPOSITORY_HOST", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "PIPELINE_SCHEDULE", + "name": "USER_EMAIL", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "TEAM", + "name": "SUITE", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "TEAM_MEMBER", + "name": "USER_TOTP", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "TEAM_PIPELINE", + "name": "USER", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "TEAM_SUITE", + "name": "CLUSTER", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "SSO_PROVIDER", + "name": "AUTHORIZATION", + "description": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "SUBSCRIPTION", "description": null, "isDeprecated": false, "deprecationReason": null @@ -4526,7 +4603,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -4536,7 +4615,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -4546,7 +4627,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -4556,7 +4639,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "style", @@ -4574,7 +4659,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -4757,7 +4844,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -4767,7 +4856,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -4777,7 +4868,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -4787,7 +4880,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "type", @@ -4805,7 +4900,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "state", @@ -4823,7 +4920,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "priority", @@ -4833,7 +4932,9 @@ "name": "JobPrioritySearch", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "agentQueryRules", @@ -4851,7 +4952,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "concurrency", @@ -4861,7 +4964,9 @@ "name": "JobConcurrencySearch", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "passed", @@ -4871,7 +4976,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "step", @@ -4881,7 +4988,9 @@ "name": "JobStepSearch", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "order", @@ -4891,7 +5000,9 @@ "name": "JobOrder", "ofType": null }, - "defaultValue": "RECENTLY_CREATED" + "defaultValue": "RECENTLY_CREATED", + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -4928,7 +5039,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -4938,7 +5051,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -5171,7 +5286,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "buildID", @@ -5185,7 +5302,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "body", @@ -5195,7 +5314,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "style", @@ -5205,7 +5326,9 @@ "name": "AnnotationStyle", "ofType": null }, - "defaultValue": "DEFAULT" + "defaultValue": "DEFAULT", + "isDeprecated": false, + "deprecationReason": null }, { "name": "context", @@ -5215,7 +5338,9 @@ "name": "String", "ofType": null }, - "defaultValue": "\"default\"" + "defaultValue": "\"default\"", + "isDeprecated": false, + "deprecationReason": null }, { "name": "append", @@ -5225,7 +5350,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "false" + "defaultValue": "false", + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -5319,7 +5446,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "email", @@ -5333,7 +5462,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -5383,7 +5514,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -5397,7 +5530,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -5530,7 +5665,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "pipelineID", @@ -5544,7 +5681,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "message", @@ -5554,7 +5693,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "commit", @@ -5564,7 +5705,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "branch", @@ -5574,7 +5717,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "env", @@ -5592,7 +5737,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "metaData", @@ -5610,7 +5757,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "author", @@ -5620,7 +5769,9 @@ "name": "BuildAuthorInput", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -5913,7 +6064,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "value", @@ -5927,7 +6080,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -5948,7 +6103,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -5962,7 +6119,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -6883,7 +7042,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -6893,7 +7054,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -7036,7 +7199,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -7046,7 +7211,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -7056,7 +7223,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -7066,7 +7235,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "order", @@ -7076,7 +7247,9 @@ "name": "ClusterQueueOrder", "ofType": null }, - "defaultValue": "KEY" + "defaultValue": "KEY", + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -7194,7 +7367,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "organizationId", @@ -7208,7 +7383,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "description", @@ -7222,7 +7399,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "clusterId", @@ -7236,7 +7415,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "jobTokensEnabled", @@ -7246,7 +7427,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "allowedIpAddresses", @@ -7256,7 +7439,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -7385,7 +7570,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -7399,7 +7586,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "organizationId", @@ -7413,7 +7602,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -7479,7 +7670,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -7493,7 +7686,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "organizationId", @@ -7507,7 +7702,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "description", @@ -7521,7 +7718,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "jobTokensEnabled", @@ -7531,7 +7730,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "allowedIpAddresses", @@ -7541,7 +7742,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -7674,7 +7877,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "organizationId", @@ -7688,7 +7893,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "name", @@ -7702,7 +7909,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "description", @@ -7712,7 +7921,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "emoji", @@ -7722,7 +7933,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "color", @@ -7732,7 +7945,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -7798,7 +8013,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "organizationId", @@ -7812,7 +8029,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -7826,7 +8045,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -8348,7 +8569,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "organizationId", @@ -8362,7 +8585,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "clusterId", @@ -8376,7 +8601,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "key", @@ -8390,7 +8617,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "description", @@ -8400,7 +8629,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -8466,7 +8697,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "organizationId", @@ -8480,7 +8713,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -8494,7 +8729,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -8628,7 +8865,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -8642,7 +8881,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "note", @@ -8652,7 +8893,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -8718,7 +8961,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -8732,7 +8977,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -8798,7 +9045,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "organizationId", @@ -8812,7 +9061,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -8826,7 +9077,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "description", @@ -8836,7 +9089,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -9043,7 +9298,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "organizationId", @@ -9057,7 +9314,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -9071,7 +9330,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "name", @@ -9081,7 +9342,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "description", @@ -9091,7 +9354,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "emoji", @@ -9101,7 +9366,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "color", @@ -9111,7 +9378,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "defaultQueueId", @@ -9121,7 +9390,9 @@ "name": "ID", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -9814,7 +10085,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "address", @@ -9828,7 +10101,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -9957,7 +10232,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -9971,7 +10248,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -10154,7 +10433,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "query", @@ -10168,7 +10449,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "operationName", @@ -10178,7 +10461,9 @@ "name": "ID", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -10382,7 +10667,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -12455,7 +12742,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -12758,7 +13047,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -13013,7 +13304,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -13027,7 +13320,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "fields", @@ -13037,7 +13332,9 @@ "name": "JSON", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -13142,7 +13439,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -13152,7 +13451,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -13309,7 +13610,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -13319,7 +13622,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -13329,7 +13634,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -13339,7 +13646,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -13795,7 +14104,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -13809,7 +14120,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -13875,7 +14188,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -13889,7 +14204,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -14413,7 +14730,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -14440,7 +14759,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -14467,7 +14788,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -14494,7 +14817,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -14521,7 +14846,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -14548,7 +14875,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -14575,7 +14904,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -14602,7 +14933,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -14629,7 +14962,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -14656,7 +14991,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -14683,7 +15020,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -14710,7 +15049,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -14737,7 +15078,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -14764,7 +15107,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -14791,7 +15136,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -14818,7 +15165,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -14845,7 +15194,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -14872,7 +15223,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -14899,7 +15252,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -14926,7 +15281,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -14953,7 +15310,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -14980,7 +15339,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15007,7 +15368,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15034,7 +15397,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15061,7 +15426,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15088,7 +15455,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15115,7 +15484,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15142,7 +15513,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15169,7 +15542,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15196,7 +15571,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15223,7 +15600,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15250,7 +15629,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15277,7 +15658,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15304,7 +15687,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15331,7 +15716,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15358,7 +15745,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15385,7 +15774,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15412,7 +15803,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15439,7 +15832,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15466,7 +15861,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15493,7 +15890,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15520,7 +15919,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15547,7 +15948,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15574,7 +15977,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15601,7 +16006,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15628,7 +16035,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15655,7 +16064,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15682,7 +16093,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15709,7 +16122,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15736,7 +16151,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15763,7 +16180,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15790,7 +16209,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15817,7 +16238,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15844,7 +16267,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15871,7 +16296,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15898,7 +16325,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15925,7 +16354,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15952,7 +16383,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -15979,7 +16412,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -16006,7 +16441,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -16033,7 +16470,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -16060,7 +16499,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -16087,7 +16528,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -16114,7 +16557,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -16141,7 +16586,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -16370,6 +16817,11 @@ "name": "PipelineSchedule", "ofType": null }, + { + "kind": "OBJECT", + "name": "PipelineTemplate", + "ofType": null + }, { "kind": "OBJECT", "name": "SSOProviderGitHubApp", @@ -16517,7 +16969,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -16531,7 +16985,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -16887,7 +17343,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -16897,7 +17355,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "revoked", @@ -16907,7 +17367,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -16930,7 +17392,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -16940,7 +17404,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -16950,7 +17416,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -16960,7 +17428,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "search", @@ -16970,7 +17440,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "metaData", @@ -16988,7 +17460,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "cluster", @@ -16998,7 +17472,9 @@ "name": "ID", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "clusterQueue", @@ -17016,7 +17492,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "clustered", @@ -17026,7 +17504,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "true" + "defaultValue": "true", + "isDeprecated": false, + "deprecationReason": null }, { "name": "isRunningJob", @@ -17036,7 +17516,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -17073,7 +17555,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -17083,7 +17567,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "first", @@ -17093,7 +17579,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -17103,7 +17591,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -17130,7 +17620,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -17140,7 +17632,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -17150,7 +17644,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -17160,7 +17656,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "occurredAtFrom", @@ -17170,7 +17668,9 @@ "name": "DateTime", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "occurredAtTo", @@ -17180,7 +17680,9 @@ "name": "DateTime", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "type", @@ -17198,7 +17700,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "actorType", @@ -17216,7 +17720,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "actor", @@ -17234,7 +17740,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "subjectType", @@ -17252,7 +17760,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "subject", @@ -17270,7 +17780,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "order", @@ -17280,7 +17792,9 @@ "name": "OrganizationAuditEventOrders", "ofType": null }, - "defaultValue": "RECENTLY_OCCURRED" + "defaultValue": "RECENTLY_OCCURRED", + "isDeprecated": false, + "deprecationReason": null }, { "name": "subjectUUID", @@ -17298,7 +17812,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -17325,7 +17841,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -17348,7 +17866,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -17358,7 +17878,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -17368,7 +17890,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -17378,7 +17902,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "order", @@ -17388,7 +17914,9 @@ "name": "ClusterOrder", "ofType": null }, - "defaultValue": "NAME" + "defaultValue": "NAME", + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -17443,7 +17971,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -17453,7 +17983,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -17463,7 +17995,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -17473,7 +18007,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "state", @@ -17491,7 +18027,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "order", @@ -17501,7 +18039,9 @@ "name": "OrganizationInvitationOrders", "ofType": null }, - "defaultValue": "RECENTLY_CREATED" + "defaultValue": "RECENTLY_CREATED", + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -17542,7 +18082,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -17552,7 +18094,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -17562,7 +18106,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -17572,7 +18118,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "type", @@ -17590,7 +18138,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "state", @@ -17608,7 +18158,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "priority", @@ -17618,7 +18170,9 @@ "name": "JobPrioritySearch", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "agentQueryRules", @@ -17636,7 +18190,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "concurrency", @@ -17646,7 +18202,9 @@ "name": "JobConcurrencySearch", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "passed", @@ -17656,7 +18214,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "step", @@ -17666,7 +18226,9 @@ "name": "JobStepSearch", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "order", @@ -17676,7 +18238,9 @@ "name": "JobOrder", "ofType": null }, - "defaultValue": "RECENTLY_CREATED" + "defaultValue": "RECENTLY_CREATED", + "isDeprecated": false, + "deprecationReason": null }, { "name": "cluster", @@ -17686,7 +18250,9 @@ "name": "ID", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "clusterQueue", @@ -17704,7 +18270,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "clustered", @@ -17714,7 +18282,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "true" + "defaultValue": "true", + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -17737,7 +18307,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -17747,7 +18319,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -17757,7 +18331,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -17767,7 +18343,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "search", @@ -17777,7 +18355,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "email", @@ -17787,7 +18367,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "team", @@ -17797,7 +18379,9 @@ "name": "TeamSelector", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "role", @@ -17815,7 +18399,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "security", @@ -17825,7 +18411,9 @@ "name": "OrganizationMemberSecurityInput", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "sso", @@ -17835,7 +18423,9 @@ "name": "OrganizationMemberSSOInput", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "order", @@ -17845,7 +18435,9 @@ "name": "OrganizationMemberOrder", "ofType": null }, - "defaultValue": "RECENTLY_CREATED" + "defaultValue": "RECENTLY_CREATED", + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -17904,7 +18496,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -17914,7 +18508,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -17924,7 +18520,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -17934,7 +18532,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "search", @@ -17944,7 +18544,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "repository", @@ -17954,7 +18556,9 @@ "name": "PipelineRepositoryInput", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "cluster", @@ -17964,7 +18568,9 @@ "name": "ID", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "clustered", @@ -17974,7 +18580,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "true" + "defaultValue": "true", + "isDeprecated": false, + "deprecationReason": null }, { "name": "archived", @@ -17984,7 +18592,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "team", @@ -17994,7 +18604,9 @@ "name": "TeamSelector", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "favorite", @@ -18004,7 +18616,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "order", @@ -18014,7 +18628,9 @@ "name": "PipelineOrders", "ofType": null }, - "defaultValue": "RECENTLY_CREATED" + "defaultValue": "RECENTLY_CREATED", + "isDeprecated": false, + "deprecationReason": null }, { "name": "tags", @@ -18032,7 +18648,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "createdAtFrom", @@ -18042,7 +18660,9 @@ "name": "DateTime", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "createdAtTo", @@ -18052,7 +18672,9 @@ "name": "DateTime", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -18125,7 +18747,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -18135,7 +18759,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -18145,7 +18771,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -18155,7 +18783,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -18178,7 +18808,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -18188,7 +18820,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -18198,7 +18832,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -18208,7 +18844,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "search", @@ -18218,7 +18856,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "team", @@ -18228,7 +18868,9 @@ "name": "TeamSelector", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "order", @@ -18238,7 +18880,9 @@ "name": "SuiteOrders", "ofType": null }, - "defaultValue": "RECENTLY_CREATED" + "defaultValue": "RECENTLY_CREATED", + "isDeprecated": false, + "deprecationReason": null }, { "name": "createdAtFrom", @@ -18248,7 +18892,9 @@ "name": "DateTime", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "createdAtTo", @@ -18258,7 +18904,9 @@ "name": "DateTime", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -18281,7 +18929,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -18291,7 +18941,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -18301,7 +18953,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -18311,7 +18965,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "search", @@ -18321,7 +18977,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "pipeline", @@ -18331,7 +18989,9 @@ "name": "PipelineSelector", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "user", @@ -18341,7 +19001,9 @@ "name": "UserSelector", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "privacy", @@ -18359,7 +19021,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "order", @@ -18369,7 +19033,9 @@ "name": "TeamOrder", "ofType": null }, - "defaultValue": "NAME" + "defaultValue": "NAME", + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -18382,7 +19048,7 @@ }, { "name": "usage", - "description": "Returns the resource usage data for this organization. Please note that this feature is not yet available to all organizations", + "description": "Returns the resource usage data for this organization.", "args": [ { "name": "after", @@ -18392,7 +19058,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -18402,7 +19070,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "first", @@ -18412,7 +19082,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -18422,7 +19094,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "aggregatedOnFrom", @@ -18432,7 +19106,9 @@ "name": "ISO8601Date", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "aggregatedOnTo", @@ -18442,7 +19118,9 @@ "name": "ISO8601Date", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "resource", @@ -18460,7 +19138,9 @@ } } }, - "defaultValue": "[JOB_MINUTES, TEST_EXECUTIONS]" + "defaultValue": "[JOB_MINUTES, TEST_EXECUTIONS]", + "isDeprecated": false, + "deprecationReason": null }, { "name": "pipelineIds", @@ -18478,7 +19158,9 @@ } } }, - "defaultValue": "[]" + "defaultValue": "[]", + "isDeprecated": false, + "deprecationReason": null }, { "name": "suiteIds", @@ -18496,7 +19178,9 @@ } } }, - "defaultValue": "[]" + "defaultValue": "[]", + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -18816,7 +19500,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "organizationId", @@ -18830,7 +19516,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "apiAccessTokenId", @@ -18844,7 +19532,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -18910,7 +19600,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "organizationID", @@ -18924,7 +19616,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "ipAddresses", @@ -18938,7 +19632,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -19482,7 +20178,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -19604,7 +20302,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "organizationID", @@ -19618,7 +20318,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "emails", @@ -19640,7 +20342,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "role", @@ -19650,7 +20354,9 @@ "name": "OrganizationMemberRole", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "sso", @@ -19660,7 +20366,9 @@ "name": "OrganizationInvitationSSOInput", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "teams", @@ -19678,7 +20386,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -19867,7 +20577,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -19881,7 +20593,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -19947,7 +20661,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -19961,7 +20677,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -20067,7 +20785,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -20333,7 +21053,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "role", @@ -20347,7 +21069,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -20475,7 +21199,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -20485,7 +21211,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -20495,7 +21223,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -20505,7 +21235,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "search", @@ -20515,7 +21247,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "order", @@ -20525,7 +21259,9 @@ "name": "PipelineOrders", "ofType": null }, - "defaultValue": "RECENTLY_CREATED" + "defaultValue": "RECENTLY_CREATED", + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -20606,7 +21342,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -20616,7 +21354,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -20626,7 +21366,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -20636,7 +21378,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "order", @@ -20646,7 +21390,9 @@ "name": "TeamMemberOrder", "ofType": null }, - "defaultValue": "RECENTLY_CREATED" + "defaultValue": "RECENTLY_CREATED", + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -20790,7 +21536,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -20804,7 +21552,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -21182,7 +21932,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -21192,7 +21944,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -21202,7 +21956,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -21212,7 +21968,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "state", @@ -21230,7 +21988,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -21281,7 +22041,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -21374,7 +22136,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "passwordProtected", @@ -21384,7 +22148,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -21405,7 +22171,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -21419,7 +22187,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "role", @@ -21429,7 +22199,9 @@ "name": "OrganizationMemberRole", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "sso", @@ -21439,7 +22211,9 @@ "name": "OrganizationMemberSSOInput", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -22139,7 +22913,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -22149,7 +22925,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -22159,7 +22937,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -22169,7 +22949,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "state", @@ -22187,7 +22969,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "branch", @@ -22205,7 +22989,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "commit", @@ -22223,7 +23009,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "metaData", @@ -22241,7 +23029,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "createdAtFrom", @@ -22251,7 +23041,9 @@ "name": "DateTime", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "createdAtTo", @@ -22261,7 +23053,9 @@ "name": "DateTime", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -22482,7 +23276,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -22492,7 +23288,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -22502,7 +23300,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -22512,7 +23312,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "type", @@ -22530,7 +23332,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "state", @@ -22548,7 +23352,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "priority", @@ -22558,7 +23364,9 @@ "name": "JobPrioritySearch", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "agentQueryRules", @@ -22576,7 +23384,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "concurrency", @@ -22586,7 +23396,9 @@ "name": "JobConcurrencySearch", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "passed", @@ -22596,7 +23408,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "step", @@ -22606,7 +23420,9 @@ "name": "JobStepSearch", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "order", @@ -22616,7 +23432,9 @@ "name": "JobOrder", "ofType": null }, - "defaultValue": "RECENTLY_CREATED" + "defaultValue": "RECENTLY_CREATED", + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -22653,7 +23471,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -22663,7 +23483,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -22746,6 +23568,20 @@ "isDeprecated": false, "deprecationReason": null }, + { + "name": "pipelineTemplate", + "description": null, + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "PipelineTemplate", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "public", "description": "Whether this pipeline is visible to everyone, including people outside this organization", @@ -22790,7 +23626,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -22903,7 +23741,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -22913,7 +23753,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -22923,7 +23765,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -22933,7 +23777,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "search", @@ -22943,7 +23789,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "order", @@ -22953,7 +23801,9 @@ "name": "TeamPipelineOrder", "ofType": null }, - "defaultValue": "RECENTLY_CREATED" + "defaultValue": "RECENTLY_CREATED", + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -23091,7 +23941,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -23105,7 +23957,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -23238,7 +24092,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "organizationId", @@ -23252,7 +24108,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "name", @@ -23266,7 +24124,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "description", @@ -23276,7 +24136,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "emoji", @@ -23286,7 +24148,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "color", @@ -23296,7 +24160,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "visibility", @@ -23306,7 +24172,9 @@ "name": "PipelineVisibility", "ofType": null }, - "defaultValue": "PRIVATE" + "defaultValue": "PRIVATE", + "isDeprecated": false, + "deprecationReason": null }, { "name": "repository", @@ -23320,21 +24188,21 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "steps", "description": "Steps used by this pipeline defined as YAML", "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "PipelineStepsInput", - "ofType": null - } + "kind": "INPUT_OBJECT", + "name": "PipelineStepsInput", + "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "skipIntermediateBuilds", @@ -23344,7 +24212,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "skipIntermediateBuildsBranchFilter", @@ -23354,7 +24224,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "cancelIntermediateBuilds", @@ -23364,7 +24236,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "cancelIntermediateBuildsBranchFilter", @@ -23374,7 +24248,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "allowRebuilds", @@ -23384,7 +24260,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "true" + "defaultValue": "true", + "isDeprecated": false, + "deprecationReason": null }, { "name": "defaultTimeoutInMinutes", @@ -23394,7 +24272,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "maximumTimeoutInMinutes", @@ -23404,7 +24284,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "buildRetentionEnabled", @@ -23414,7 +24296,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "buildRetentionPeriod", @@ -23424,7 +24308,9 @@ "name": "BuildRetentionPeriods", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "buildRetentionNumber", @@ -23434,7 +24320,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "teams", @@ -23452,7 +24340,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "defaultBranch", @@ -23462,7 +24352,9 @@ "name": "String", "ofType": null }, - "defaultValue": "\"main\"" + "defaultValue": "\"main\"", + "isDeprecated": false, + "deprecationReason": null }, { "name": "nextBuildNumber", @@ -23472,7 +24364,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "clusterId", @@ -23482,7 +24376,21 @@ "name": "ID", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pipelineTemplateId", + "description": "The GraphQL ID of the pipeline template you want to use for the pipeline", + "type": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "tags", @@ -23500,7 +24408,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "branchConfiguration", @@ -23510,7 +24420,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -23603,6 +24515,20 @@ }, "isDeprecated": false, "deprecationReason": null + }, + { + "name": "pipelineTemplate", + "description": null, + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "PipelineTemplate", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null } ], "inputFields": null, @@ -23626,7 +24552,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -23640,7 +24568,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -23706,7 +24636,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -23720,7 +24652,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -23849,7 +24783,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -23863,7 +24799,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "favorite", @@ -23877,7 +24815,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -24274,7 +25214,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -24295,7 +25237,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -24309,7 +25253,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -24392,7 +25338,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -24402,7 +25350,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -24412,7 +25362,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -24422,7 +25374,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -24764,7 +25718,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "pipelineID", @@ -24778,7 +25734,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "label", @@ -24788,7 +25746,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "cronline", @@ -24798,7 +25758,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "message", @@ -24808,7 +25770,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "commit", @@ -24818,7 +25782,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "branch", @@ -24828,7 +25794,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "env", @@ -24838,7 +25806,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "enabled", @@ -24848,7 +25818,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -24932,7 +25904,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -24946,7 +25920,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -25112,7 +26088,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -25126,7 +26104,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "label", @@ -25136,7 +26116,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "cronline", @@ -25146,7 +26128,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "message", @@ -25156,7 +26140,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "commit", @@ -25166,7 +26152,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "branch", @@ -25176,7 +26164,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "env", @@ -25186,7 +26176,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "enabled", @@ -25196,7 +26188,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -25303,7 +26297,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -25359,7 +26355,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -25384,7 +26382,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "accessLevel", @@ -25394,13 +26394,190 @@ "name": "PipelineAccessLevels", "ofType": null }, - "defaultValue": "MANAGE_BUILD_AND_READ" + "defaultValue": "MANAGE_BUILD_AND_READ", + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, "enumValues": null, "possibleTypes": null }, + { + "kind": "OBJECT", + "name": "PipelineTemplate", + "description": "A template defining a fixed step configuration for a pipeline", + "fields": [ + { + "name": "configuration", + "description": "A YAML representation of the step configuration", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "YAML", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "createdAt", + "description": "The time when the template was created", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "DateTime", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "createdBy", + "description": "The user who created the template", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "User", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "description", + "description": "The short description of the template", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "id", + "description": null, + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "name", + "description": "The name of the template", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "String", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "updatedAt", + "description": "The last time the template was changed", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "DateTime", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "updatedBy", + "description": "The user who last updated the template", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "OBJECT", + "name": "User", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "uuid", + "description": "The UUID for the template", + "args": [ + + ], + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + { + "kind": "INTERFACE", + "name": "Node", + "ofType": null + } + ], + "enumValues": null, + "possibleTypes": null + }, { "kind": "INPUT_OBJECT", "name": "PipelineUnarchiveInput", @@ -25415,7 +26592,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -25429,7 +26608,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -25495,7 +26676,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -25509,7 +26692,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "name", @@ -25519,7 +26704,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "description", @@ -25529,7 +26716,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "emoji", @@ -25539,7 +26728,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "color", @@ -25549,7 +26740,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "visibility", @@ -25559,7 +26752,9 @@ "name": "PipelineVisibility", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "repository", @@ -25569,7 +26764,9 @@ "name": "PipelineRepositoryInput", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "steps", @@ -25579,7 +26776,9 @@ "name": "PipelineStepsInput", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "defaultBranch", @@ -25589,7 +26788,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "nextBuildNumber", @@ -25599,7 +26800,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "skipIntermediateBuilds", @@ -25609,7 +26812,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "skipIntermediateBuildsBranchFilter", @@ -25619,7 +26824,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "cancelIntermediateBuilds", @@ -25629,7 +26836,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "cancelIntermediateBuildsBranchFilter", @@ -25639,7 +26848,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "allowRebuilds", @@ -25649,7 +26860,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "true" + "defaultValue": "true", + "isDeprecated": false, + "deprecationReason": null }, { "name": "defaultTimeoutInMinutes", @@ -25659,7 +26872,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "maximumTimeoutInMinutes", @@ -25669,7 +26884,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "buildRetentionEnabled", @@ -25679,7 +26896,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "buildRetentionPeriod", @@ -25689,7 +26908,9 @@ "name": "BuildRetentionPeriods", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "buildRetentionNumber", @@ -25699,7 +26920,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "clusterId", @@ -25709,7 +26932,21 @@ "name": "ID", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "pipelineTemplateId", + "description": "The GraphQL ID of the pipeline template you want to apply to this pipeline", + "type": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "archived", @@ -25719,7 +26956,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "tags", @@ -25737,7 +26976,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "branchConfiguration", @@ -25747,7 +26988,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -25874,7 +27117,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -25901,7 +27146,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -25928,7 +27175,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -25955,7 +27204,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -25982,7 +27233,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -26005,7 +27258,9 @@ "name": "ID", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "uuid", @@ -26015,7 +27270,9 @@ "name": "ID", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -26042,7 +27299,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -26069,7 +27328,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -26096,7 +27357,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -26123,7 +27386,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -26146,7 +27411,9 @@ "name": "ID", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "uuid", @@ -26156,7 +27423,9 @@ "name": "ID", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -26183,7 +27452,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -26210,7 +27481,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -26233,7 +27506,9 @@ "name": "ID", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "uuid", @@ -26243,7 +27518,9 @@ "name": "ID", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -26270,7 +27547,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -26293,7 +27572,9 @@ "name": "ID", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "uuid", @@ -26303,7 +27584,9 @@ "name": "ID", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -26330,7 +27613,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -28251,7 +29536,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "organizationId", @@ -28265,7 +29552,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "type", @@ -28279,7 +29568,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "note", @@ -28289,7 +29580,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "sessionDurationInHours", @@ -28299,7 +29592,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "pinSessionToIpAddress", @@ -28309,7 +29604,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "emailDomain", @@ -28319,7 +29616,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "emailDomainVerificationAddress", @@ -28329,7 +29628,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "identityProvider", @@ -28339,7 +29640,9 @@ "name": "SSOProviderSAMLIdP", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "digestMethod", @@ -28349,7 +29652,9 @@ "name": "SSOProviderSAMLXMLSecurity", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "signatureMethod", @@ -28359,7 +29664,9 @@ "name": "SSOProviderSAMLRSAXMLSecurity", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "githubOrganizationName", @@ -28369,7 +29676,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "googleHostedDomain", @@ -28379,7 +29688,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "discloseGoogleHostedDomain", @@ -28389,7 +29700,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -28491,7 +29804,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -28505,7 +29820,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -28589,7 +29906,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -28603,7 +29922,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "disabledReason", @@ -28613,7 +29934,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -28724,7 +30047,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -28738,7 +30063,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -29916,7 +31243,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "ssoURL", @@ -29926,7 +31255,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "certificate", @@ -29936,7 +31267,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "metadata", @@ -29946,7 +31279,9 @@ "name": "SSOProviderSAMLIdPMetadata", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -29967,7 +31302,9 @@ "name": "XML", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "url", @@ -29977,7 +31314,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -30305,7 +31644,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -30319,7 +31660,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "note", @@ -30329,7 +31672,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "sessionDurationInHours", @@ -30339,7 +31684,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "pinSessionToIpAddress", @@ -30349,7 +31696,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "emailDomain", @@ -30359,7 +31708,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "emailDomainVerificationAddress", @@ -30369,7 +31720,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "identityProvider", @@ -30379,7 +31732,9 @@ "name": "SSOProviderSAMLIdP", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "digestMethod", @@ -30389,7 +31744,9 @@ "name": "SSOProviderSAMLXMLSecurity", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "signatureMethod", @@ -30399,7 +31756,9 @@ "name": "SSOProviderSAMLRSAXMLSecurity", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "githubOrganizationName", @@ -30409,7 +31768,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "googleHostedDomain", @@ -30419,7 +31780,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "discloseGoogleHostedDomain", @@ -30429,7 +31792,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -30512,7 +31877,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -30522,7 +31889,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -30532,7 +31901,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -30542,7 +31913,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -30645,7 +32018,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -30655,7 +32030,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -30665,7 +32042,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -30675,7 +32054,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -30761,7 +32142,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -30771,7 +32154,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -30781,7 +32166,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -30791,7 +32178,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -30877,7 +32266,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -30887,7 +32278,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -30897,7 +32290,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -30907,7 +32302,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -30993,7 +32390,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -31003,7 +32402,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -31013,7 +32414,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -31023,7 +32426,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -31236,7 +32641,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -31246,7 +32653,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -31256,7 +32665,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -31266,7 +32677,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "search", @@ -31276,7 +32689,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "order", @@ -31286,7 +32701,9 @@ "name": "TeamSuiteOrder", "ofType": null }, - "defaultValue": "RECENTLY_CREATED" + "defaultValue": "RECENTLY_CREATED", + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -31590,7 +33007,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -31604,7 +33023,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "token", @@ -31618,7 +33039,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -31702,7 +33125,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -31786,7 +33211,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -31800,7 +33227,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -31866,7 +33295,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "totpId", @@ -31880,7 +33311,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -32067,7 +33500,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -32077,7 +33512,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -32087,7 +33524,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -32097,7 +33536,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "search", @@ -32107,7 +33548,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "role", @@ -32125,7 +33568,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "order", @@ -32135,7 +33580,9 @@ "name": "TeamMemberOrder", "ofType": null }, - "defaultValue": "RECENTLY_CREATED" + "defaultValue": "RECENTLY_CREATED", + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -32244,7 +33691,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -32254,7 +33703,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -32264,7 +33715,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -32274,7 +33727,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "search", @@ -32284,7 +33739,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "order", @@ -32294,7 +33751,9 @@ "name": "TeamPipelineOrder", "ofType": null }, - "defaultValue": "RECENTLY_CREATED" + "defaultValue": "RECENTLY_CREATED", + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -32353,7 +33812,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -32363,7 +33824,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -32373,7 +33836,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -32383,7 +33848,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "order", @@ -32393,7 +33860,9 @@ "name": "TeamSuiteOrder", "ofType": null }, - "defaultValue": "RECENTLY_CREATED" + "defaultValue": "RECENTLY_CREATED", + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -32515,7 +33984,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "organizationID", @@ -32529,7 +34000,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "name", @@ -32543,7 +34016,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "description", @@ -32553,7 +34028,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "privacy", @@ -32567,7 +34044,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "isDefaultTeam", @@ -32581,7 +34060,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "defaultMemberRole", @@ -32595,7 +34076,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "membersCanCreatePipelines", @@ -32605,7 +34088,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "true" + "defaultValue": "true", + "isDeprecated": false, + "deprecationReason": null }, { "name": "membersCanDeletePipelines", @@ -32615,7 +34100,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "true" + "defaultValue": "true", + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -32699,7 +34186,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -32713,7 +34202,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -33072,7 +34563,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "teamID", @@ -33086,7 +34579,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "userID", @@ -33100,7 +34595,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "role", @@ -33110,7 +34607,9 @@ "name": "TeamMemberRole", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -33186,7 +34685,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -33200,7 +34701,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -33418,7 +34921,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -33432,7 +34937,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "role", @@ -33446,7 +34953,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -33854,7 +35363,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "teamID", @@ -33868,7 +35379,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "pipelineID", @@ -33882,7 +35395,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "accessLevel", @@ -33892,7 +35407,9 @@ "name": "PipelineAccessLevels", "ofType": null }, - "defaultValue": "READ_ONLY" + "defaultValue": "READ_ONLY", + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -33996,7 +35513,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -34010,7 +35529,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "force", @@ -34020,7 +35541,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -34215,7 +35738,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -34229,7 +35754,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "accessLevel", @@ -34243,7 +35770,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -34558,7 +36087,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "teamID", @@ -34572,7 +36103,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "suiteID", @@ -34586,7 +36119,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "accessLevel", @@ -34596,7 +36131,9 @@ "name": "SuiteAccessLevels", "ofType": null }, - "defaultValue": "READ_ONLY" + "defaultValue": "READ_ONLY", + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -34700,7 +36237,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -34714,7 +36253,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "force", @@ -34724,7 +36265,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -34919,7 +36462,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -34933,7 +36478,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "accessLevel", @@ -34947,7 +36494,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -35013,7 +36562,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "id", @@ -35027,7 +36578,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "name", @@ -35041,7 +36594,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "description", @@ -35051,7 +36606,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "privacy", @@ -35061,7 +36618,9 @@ "name": "TeamPrivacy", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "isDefaultTeam", @@ -35075,7 +36634,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "defaultMemberRole", @@ -35089,7 +36650,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "membersCanCreatePipelines", @@ -35099,7 +36662,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "membersCanDeletePipelines", @@ -35109,7 +36674,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "true" + "defaultValue": "true", + "isDeprecated": false, + "deprecationReason": null } ], "interfaces": null, @@ -35491,7 +37058,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -35501,7 +37070,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "state", @@ -35519,7 +37090,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "branch", @@ -35537,7 +37110,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "metaData", @@ -35555,7 +37130,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -35695,7 +37272,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -35705,7 +37284,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -35715,7 +37296,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -35725,7 +37308,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "type", @@ -35743,7 +37328,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -35766,7 +37353,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -35776,7 +37365,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "state", @@ -35794,7 +37385,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "branch", @@ -35804,7 +37397,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "metaData", @@ -35822,7 +37417,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -35845,7 +37442,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -35855,7 +37454,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "read", @@ -35865,7 +37466,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -35888,7 +37491,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -35898,7 +37503,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "verified", @@ -35908,7 +37515,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -35949,7 +37558,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "after", @@ -35959,7 +37570,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -35969,7 +37582,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "before", @@ -35979,7 +37594,9 @@ "name": "String", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "type", @@ -35997,7 +37614,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "state", @@ -36015,7 +37634,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "priority", @@ -36025,7 +37646,9 @@ "name": "JobPrioritySearch", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "agentQueryRules", @@ -36043,7 +37666,9 @@ } } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "order", @@ -36053,7 +37678,9 @@ "name": "JobOrder", "ofType": null }, - "defaultValue": "RECENTLY_CREATED" + "defaultValue": "RECENTLY_CREATED", + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -36080,7 +37707,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "scope", @@ -36094,7 +37723,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -36117,7 +37748,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null }, { "name": "last", @@ -36127,7 +37760,9 @@ "name": "Int", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -36168,7 +37803,9 @@ "name": "ID", "ofType": null }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -36273,7 +37910,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "false" + "defaultValue": "false", + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -36649,7 +38288,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "false" + "defaultValue": "false", + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -37027,7 +38668,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "false" + "defaultValue": "false", + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -37058,7 +38701,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "false" + "defaultValue": "false", + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -37089,7 +38734,9 @@ "name": "Boolean", "ofType": null }, - "defaultValue": "false" + "defaultValue": "false", + "isDeprecated": false, + "deprecationReason": null } ], "type": { @@ -37320,7 +38967,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ] }, @@ -37345,7 +38994,9 @@ "ofType": null } }, - "defaultValue": null + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null } ] }, @@ -37367,7 +39018,9 @@ "name": "String", "ofType": null }, - "defaultValue": "\"No longer supported\"" + "defaultValue": "\"No longer supported\"", + "isDeprecated": false, + "deprecationReason": null } ] }, diff --git a/data/nav_graphql.yml b/data/nav_graphql.yml index 4e23e92c02..920a0f8736 100644 --- a/data/nav_graphql.yml +++ b/data/nav_graphql.yml @@ -5,8 +5,6 @@ path: apis/graphql/graphql-tutorial - name: Cookbook path: apis/graphql/graphql-cookbook -- name: Limits - path: apis/graphql/graphql-resource-limits - name: Queries children: - name: agent @@ -535,6 +533,8 @@ path: apis/graphql/schemas/object/pipelinesteps - name: PipelineTag path: apis/graphql/schemas/object/pipelinetag + - name: PipelineTemplate + path: apis/graphql/schemas/object/pipelinetemplate - name: PipelineUnarchivePayload path: apis/graphql/schemas/object/pipelineunarchivepayload - name: PipelineUpdatePayload diff --git a/pages/apis/graphql/schemas/enum/auditeventtype.md b/pages/apis/graphql/schemas/enum/auditeventtype.md index b8ebab67e3..cca139b841 100644 --- a/pages/apis/graphql/schemas/enum/auditeventtype.md +++ b/pages/apis/graphql/schemas/enum/auditeventtype.md @@ -40,6 +40,6 @@ toc: false -

API_ACCESS_TOKEN_CREATED

API_ACCESS_TOKEN_DELETED

API_ACCESS_TOKEN_ORGANIZATION_ACCESS_REVOKED

API_ACCESS_TOKEN_UPDATED

AGENT_TOKEN_CREATED

AGENT_TOKEN_REVOKED

AGENT_TOKEN_UPDATED

AUTHORIZATION_CREATED

AUTHORIZATION_DELETED

CLUSTER_CREATED

CLUSTER_DELETED

CLUSTER_PERMISSION_CREATED

CLUSTER_PERMISSION_DELETED

CLUSTER_QUEUE_CREATED

CLUSTER_QUEUE_DELETED

CLUSTER_QUEUE_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_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_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_CHANGE_SCHEDULED

SUBSCRIPTION_PLAN_CHANGED

SUITE_API_TOKEN_REGENERATED

SUITE_CREATED

SUITE_DELETED

SUITE_MONITOR_CREATED

SUITE_MONITOR_DELETED

SUITE_MONITOR_UPDATED

SUITE_UPDATED

SUITE_VISIBILITY_CHANGED

TEAM_CREATED

TEAM_DELETED

TEAM_MEMBER_CREATED

TEAM_MEMBER_DELETED

TEAM_MEMBER_UPDATED

TEAM_PIPELINE_CREATED

TEAM_PIPELINE_DELETED

TEAM_PIPELINE_UPDATED

TEAM_SUITE_CREATED

TEAM_SUITE_DELETED

TEAM_SUITE_UPDATED

TEAM_UPDATED

USER_API_ACCESS_TOKEN_ORGANIZATION_ACCESS_ADDED

USER_API_ACCESS_TOKEN_ORGANIZATION_ACCESS_REMOVED

USER_EMAIL_CREATED

USER_EMAIL_DELETED

USER_EMAIL_MARKED_PRIMARY

USER_EMAIL_VERIFIED

USER_PASSWORD_RESET

USER_PASSWORD_RESET_REQUESTED

USER_TOTP_ACTIVATED

USER_TOTP_CREATED

USER_TOTP_DELETED

USER_UPDATED

+

API_ACCESS_TOKEN_CREATED

API_ACCESS_TOKEN_DELETED

API_ACCESS_TOKEN_ORGANIZATION_ACCESS_REVOKED

API_ACCESS_TOKEN_UPDATED

AGENT_TOKEN_CREATED

AGENT_TOKEN_REVOKED

AGENT_TOKEN_UPDATED

AUTHORIZATION_CREATED

AUTHORIZATION_DELETED

CLUSTER_CREATED

CLUSTER_DELETED

CLUSTER_PERMISSION_CREATED

CLUSTER_PERMISSION_DELETED

CLUSTER_QUEUE_CREATED

CLUSTER_QUEUE_DELETED

CLUSTER_QUEUE_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_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_CHANGE_SCHEDULED

SUBSCRIPTION_PLAN_CHANGED

SUITE_API_TOKEN_REGENERATED

SUITE_CREATED

SUITE_DELETED

SUITE_MONITOR_CREATED

SUITE_MONITOR_DELETED

SUITE_MONITOR_UPDATED

SUITE_UPDATED

SUITE_VISIBILITY_CHANGED

TEAM_CREATED

TEAM_DELETED

TEAM_MEMBER_CREATED

TEAM_MEMBER_DELETED

TEAM_MEMBER_UPDATED

TEAM_PIPELINE_CREATED

TEAM_PIPELINE_DELETED

TEAM_PIPELINE_UPDATED

TEAM_SUITE_CREATED

TEAM_SUITE_DELETED

TEAM_SUITE_UPDATED

TEAM_UPDATED

USER_API_ACCESS_TOKEN_ORGANIZATION_ACCESS_ADDED

USER_API_ACCESS_TOKEN_ORGANIZATION_ACCESS_REMOVED

USER_EMAIL_CREATED

USER_EMAIL_DELETED

USER_EMAIL_MARKED_PRIMARY

USER_EMAIL_VERIFIED

USER_PASSWORD_RESET

USER_PASSWORD_RESET_REQUESTED

USER_TOTP_ACTIVATED

USER_TOTP_CREATED

USER_TOTP_DELETED

USER_UPDATED

diff --git a/pages/apis/graphql/schemas/enum/auditsubjecttype.md b/pages/apis/graphql/schemas/enum/auditsubjecttype.md index 85b742d4e7..a26b964a95 100644 --- a/pages/apis/graphql/schemas/enum/auditsubjecttype.md +++ b/pages/apis/graphql/schemas/enum/auditsubjecttype.md @@ -40,6 +40,6 @@ toc: false -

SCM_SERVICE

SCM_PIPELINE_SETTINGS

SCM_REPOSITORY_HOST

SUITE_MONITOR

SUITE

USER

USER_EMAIL

USER_TOTP

AUTHORIZATION

CLUSTER

SUBSCRIPTION

AGENT_TOKEN

API_ACCESS_TOKEN

CLUSTER_QUEUE

CLUSTER_TOKEN

CLUSTER_PERMISSION

NOTIFICATION_SERVICE

ORGANIZATION

ORGANIZATION_INVITATION

ORGANIZATION_MEMBER

PIPELINE

PIPELINE_SCHEDULE

TEAM

TEAM_MEMBER

TEAM_PIPELINE

TEAM_SUITE

SSO_PROVIDER

+

CLUSTER_PERMISSION

PIPELINE

AGENT_TOKEN

API_ACCESS_TOKEN

CLUSTER_QUEUE

CLUSTER_TOKEN

NOTIFICATION_SERVICE

ORGANIZATION

ORGANIZATION_INVITATION

PIPELINE_SCHEDULE

PIPELINE_TEMPLATE

TEAM

TEAM_MEMBER

TEAM_PIPELINE

TEAM_SUITE

SCM_SERVICE

SCM_PIPELINE_SETTINGS

SSO_PROVIDER

ORGANIZATION_MEMBER

SUITE_MONITOR

SCM_REPOSITORY_HOST

USER_EMAIL

SUITE

USER_TOTP

USER

CLUSTER

AUTHORIZATION

SUBSCRIPTION

diff --git a/pages/apis/graphql/schemas/input_object/pipelinecreateinput.md b/pages/apis/graphql/schemas/input_object/pipelinecreateinput.md index 3a403b751e..85858d5628 100644 --- a/pages/apis/graphql/schemas/input_object/pipelinecreateinput.md +++ b/pages/apis/graphql/schemas/input_object/pipelinecreateinput.md @@ -34,6 +34,6 @@ toc: false -

clientMutationIdString!

A unique identifier for the client performing the mutation.

organizationIdID

nameString

The graphql_name of the pipeline.

descriptionString!

A description of this pipeline.

emojiString!

An emoji to represent this pipeline.

colorString!

A color hex code to represent this pipeline.

visibilityPipelineVisibility!

The visibility of the pipeline, either PUBLIC or PRIVATE.

Default value: PRIVATE

repositoryPipelineRepositoryInput

A source code repository that will back this pipeline

stepsPipelineStepsInput

Steps used by this pipeline defined as YAML

skipIntermediateBuildsBoolean!

If intermediate builds should be skipped as new builds are created

skipIntermediateBuildsBranchFilterString!

A branch filter to scope which builds this is applied to

cancelIntermediateBuildsBoolean!

If intermediate builds should be canceled as new builds are created

cancelIntermediateBuildsBranchFilterString!

A branch filter to scope which builds this is applied to

allowRebuildsBoolean!

If existing builds can be rebuilt as new builds.

Default value: true

defaultTimeoutInMinutesInt!

The default timeout in minutes for all command steps in this pipeline. This can still be overridden in any command step.

maximumTimeoutInMinutesInt!

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.

buildRetentionEnabledBoolean!

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.

buildRetentionPeriodBuildRetentionPeriods!

How long is a build kept before it is automatically removed.

buildRetentionNumberInt!

The minimum number of builds to keep in the pipeline regardless of how old the builds are.

teamsPipelineTeamAssignmentInput

Which teams this pipeline should be assigned to

defaultBranchString!

The default branch used to show statistics about the build

Default value: "main"

nextBuildNumberInt!

The initial build number to use in the sequence

clusterIdID!

The GraphQL ID of the cluster you want to use for the pipeline

tagsPipelineTagInput

Tags you want this pipeline to have

branchConfigurationString!

A branch filter pattern to limit which pushed branches trigger builds on this pipeline.

+

clientMutationIdString!

A unique identifier for the client performing the mutation.

organizationIdID

nameString

The graphql_name of the pipeline.

descriptionString!

A description of this pipeline.

emojiString!

An emoji to represent this pipeline.

colorString!

A color hex code to represent this pipeline.

visibilityPipelineVisibility!

The visibility of the pipeline, either PUBLIC or PRIVATE.

Default value: PRIVATE

repositoryPipelineRepositoryInput

A source code repository that will back this pipeline

stepsPipelineStepsInput!

Steps used by this pipeline defined as YAML

skipIntermediateBuildsBoolean!

If intermediate builds should be skipped as new builds are created

skipIntermediateBuildsBranchFilterString!

A branch filter to scope which builds this is applied to

cancelIntermediateBuildsBoolean!

If intermediate builds should be canceled as new builds are created

cancelIntermediateBuildsBranchFilterString!

A branch filter to scope which builds this is applied to

allowRebuildsBoolean!

If existing builds can be rebuilt as new builds.

Default value: true

defaultTimeoutInMinutesInt!

The default timeout in minutes for all command steps in this pipeline. This can still be overridden in any command step.

maximumTimeoutInMinutesInt!

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.

buildRetentionEnabledBoolean!

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.

buildRetentionPeriodBuildRetentionPeriods!

How long is a build kept before it is automatically removed.

buildRetentionNumberInt!

The minimum number of builds to keep in the pipeline regardless of how old the builds are.

teamsPipelineTeamAssignmentInput

Which teams this pipeline should be assigned to

defaultBranchString!

The default branch used to show statistics about the build

Default value: "main"

nextBuildNumberInt!

The initial build number to use in the sequence

clusterIdID!

The GraphQL ID of the cluster you want to use for the pipeline

pipelineTemplateIdID!

The GraphQL ID of the pipeline template you want to use for the pipeline

tagsPipelineTagInput

Tags you want this pipeline to have

branchConfigurationString!

A branch filter pattern to limit which pushed branches trigger builds on this pipeline.

diff --git a/pages/apis/graphql/schemas/input_object/pipelineupdateinput.md b/pages/apis/graphql/schemas/input_object/pipelineupdateinput.md index de6b15fd96..c96da5a4ae 100644 --- a/pages/apis/graphql/schemas/input_object/pipelineupdateinput.md +++ b/pages/apis/graphql/schemas/input_object/pipelineupdateinput.md @@ -34,6 +34,6 @@ toc: false -

clientMutationIdString!

A unique identifier for the client performing the mutation.

idID

nameString!

The graphql_name of the pipeline.

descriptionString!

A description of this pipeline.

emojiString!

An emoji to represent this pipeline.

colorString!

A color hex code to represent this pipeline.

visibilityPipelineVisibility!

The visibility of the pipeline, either PUBLIC or PRIVATE.

repositoryPipelineRepositoryInput!

A source code repository that will back this pipeline

stepsPipelineStepsInput!

Steps used by this pipeline defined as YAML

defaultBranchString!

The default branch used to show statistics about the build

nextBuildNumberInt!

The next build number to use in the sequence

skipIntermediateBuildsBoolean!

If intermediate builds should be skipped as new builds are created

skipIntermediateBuildsBranchFilterString!

A branch filter to scope which builds this is applied to

cancelIntermediateBuildsBoolean!

If intermediate builds should be canceled as new builds are created

cancelIntermediateBuildsBranchFilterString!

A branch filter to scope which builds this is applied to

allowRebuildsBoolean!

If existing builds can be rebuilt as new builds.

Default value: true

defaultTimeoutInMinutesInt!

The default timeout in minutes for all command steps in this pipeline. This can still be overridden in any command step.

maximumTimeoutInMinutesInt!

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.

buildRetentionEnabledBoolean!

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.

buildRetentionPeriodBuildRetentionPeriods!

How long is a build kept before it is automatically removed.

buildRetentionNumberInt!

The minimum number of builds to keep in the pipeline regardless of how old the builds are.

clusterIdID!

The GraphQL ID of the cluster you want to update for the pipeline

archivedBoolean!

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.

tagsPipelineTagInput

Tags you want this pipeline to have

branchConfigurationString!

A branch filter pattern to limit which pushed branches trigger builds on this pipeline.

+

clientMutationIdString!

A unique identifier for the client performing the mutation.

idID

nameString!

The graphql_name of the pipeline.

descriptionString!

A description of this pipeline.

emojiString!

An emoji to represent this pipeline.

colorString!

A color hex code to represent this pipeline.

visibilityPipelineVisibility!

The visibility of the pipeline, either PUBLIC or PRIVATE.

repositoryPipelineRepositoryInput!

A source code repository that will back this pipeline

stepsPipelineStepsInput!

Steps used by this pipeline defined as YAML

defaultBranchString!

The default branch used to show statistics about the build

nextBuildNumberInt!

The next build number to use in the sequence

skipIntermediateBuildsBoolean!

If intermediate builds should be skipped as new builds are created

skipIntermediateBuildsBranchFilterString!

A branch filter to scope which builds this is applied to

cancelIntermediateBuildsBoolean!

If intermediate builds should be canceled as new builds are created

cancelIntermediateBuildsBranchFilterString!

A branch filter to scope which builds this is applied to

allowRebuildsBoolean!

If existing builds can be rebuilt as new builds.

Default value: true

defaultTimeoutInMinutesInt!

The default timeout in minutes for all command steps in this pipeline. This can still be overridden in any command step.

maximumTimeoutInMinutesInt!

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.

buildRetentionEnabledBoolean!

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.

buildRetentionPeriodBuildRetentionPeriods!

How long is a build kept before it is automatically removed.

buildRetentionNumberInt!

The minimum number of builds to keep in the pipeline regardless of how old the builds are.

clusterIdID!

The GraphQL ID of the cluster you want to update for the pipeline

pipelineTemplateIdID!

The GraphQL ID of the pipeline template you want to apply to this pipeline

archivedBoolean!

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.

tagsPipelineTagInput

Tags you want this pipeline to have

branchConfigurationString!

A branch filter pattern to limit which pushed branches trigger builds on this pipeline.

diff --git a/pages/apis/graphql/schemas/interface/node.md b/pages/apis/graphql/schemas/interface/node.md index 78d610df5e..7de5ca38fd 100644 --- a/pages/apis/graphql/schemas/interface/node.md +++ b/pages/apis/graphql/schemas/interface/node.md @@ -78,6 +78,7 @@ toc: false Pipeline PipelineMetric PipelineSchedule +PipelineTemplate SSOProviderGitHubApp SSOProviderGoogleGSuite SSOProviderSAML diff --git a/pages/apis/graphql/schemas/object/organization.md b/pages/apis/graphql/schemas/object/organization.md index 16162dd929..5461aecf05 100644 --- a/pages/apis/graphql/schemas/object/organization.md +++ b/pages/apis/graphql/schemas/object/organization.md @@ -32,7 +32,7 @@ toc: false -

agentTokensAgentTokenConnection!

Returns agent access tokens for an Organization. By default returns all tokens, whether revoked or non-revoked.

Arguments

firstInt!

lastInt!

revokedBoolean!

Filter tokens by whether they are revoked or not

agentsAgentConnection!

Arguments

firstInt!

afterString!

lastInt!

beforeString!

searchString!

Search agents for the given query terms case insensitively across name and meta data

metaDataString

Filter agents to those only having the matching meta data

clusterID!

Filter agents by membership of a given cluster

clusterQueueID

Filter agents to those within a given cluster queue

clusteredBoolean!

Pass false to exclude agents that belong to a cluster queue

Default value: true

isRunningJobBoolean!

Filter agents by whether they are running a job or not

allowedApiIpAddressesString!

A space-separated allowlist of IP addresses that can access the organization via the GraphQL or REST API

apiAccessTokensOrganizationAPIAccessTokenConnection

Returns user API access tokens that can access this organization

Arguments

afterString!

Returns the elements in the list that come after the specified cursor.

beforeString!

Returns the elements in the list that come before the specified cursor.

firstInt!

Returns the first n elements from the list.

lastInt!

Returns the last n elements from the list.

auditEventsOrganizationAuditEventConnection!

Arguments

firstInt!

afterString!

lastInt!

beforeString!

occurredAtFromDateTime!

Filter events which occurred from the given date and time

occurredAtToDateTime!

Filter events which occurred until the given date and time

typeAuditEventType

Filter the events by type

actorTypeAuditActorType

Filter the events by the type of actor who initiated them

actorID

Filter the events by the IDs of the actors who initiated them

subjectTypeAuditSubjectType

Filter the events by the type of subject they relate to

subjectID

Filter the events by the IDs of the subject they relate to

orderOrganizationAuditEventOrders!

Order the events

Default value: RECENTLY_OCCURRED

subjectUUIDID

Filter the events by the UUIDs of the subject they relate to

clusterCluster!

Return cluster in the Organization by UUID

Arguments

idID

clustersClusterConnection!

Returns clusters for an Organization

Arguments

firstInt!

Returns the first n elements from the list.

afterString!

Returns the elements in the list that come after the specified cursor.

lastInt!

Returns the last n elements from the list.

beforeString!

Returns the elements in the list that come before the specified cursor.

orderClusterOrder!

Order the clusters

Default value: NAME

iconUrlString!

The URL to an icon representing this organization

idID

invitationsOrganizationInvitationConnection!

Arguments

firstInt!

afterString!

lastInt!

beforeString!

stateOrganizationInvitationStates

orderOrganizationInvitationOrders!

Order the invitations

Default value: RECENTLY_CREATED

isTeamsEnabledBoolean

Whether teams is enabled for this organization

jobsJobConnection!

Arguments

firstInt!

Returns the first n elements from the list.

afterString!

Returns the elements in the list that come after the specified cursor.

lastInt!

Returns the last n elements from the list.

beforeString!

Returns the elements in the list that come before the specified cursor.

typeJobTypes

stateJobStates

priorityJobPrioritySearch!

agentQueryRulesString

concurrencyJobConcurrencySearch!

passedBoolean!

Whether or not the command job passed. Passing false will return all failed jobs (including "soft failed" jobs)

stepJobStepSearch!

Filtering jobs based on related step information

orderJobOrder!

Order the jobs

Default value: RECENTLY_CREATED

clusterID!

Filter jobs by membership of a given cluster

clusterQueueID

Filter jobs to those within a given cluster queue

clusteredBoolean!

Pass false to exclude jobs that belong to a cluster queue

Default value: true

membersOrganizationMemberConnection!

Returns users within the organization

Arguments

firstInt!

afterString!

lastInt!

beforeString!

searchString!

Search members named like the given query case insensitively

emailString!

The primary email of the team member

teamTeamSelector!

Filter the members by team

roleOrganizationMemberRole

Search members by their role

securityOrganizationMemberSecurityInput!

ssoOrganizationMemberSSOInput!

orderOrganizationMemberOrder!

Order the members

Default value: RECENTLY_CREATED

nameString

The name of the organization

permissionsOrganizationPermissions

pipelinesPipelineConnection!

Return all the pipelines the current user has access to for this organization

Arguments

firstInt!

afterString!

lastInt!

beforeString!

searchString!

Search pipelines named like the given query case insensitively

repositoryPipelineRepositoryInput!

clusterID!

Filter pipelines by membership of a given cluster

clusteredBoolean!

Pass false to exclude pipelines that belong to a cluster

Default value: true

archivedBoolean!

Filter pipelines based on whether or not they've been archived. If not provided, all pipelines are returned regardless of archived state.

teamTeamSelector!

Filter the pipelines by team

favoriteBoolean!

Only return favorited pipelines

orderPipelineOrders!

Order the pipelines

Default value: RECENTLY_CREATED

tagsString

Filter pipelines with those that have particular tags

createdAtFromDateTime!

createdAtToDateTime!

publicBoolean

Whether this organization is visible to everyone, including people outside it

slugString

The slug used to represent the organization in URLs

ssoOrganizationSSO!

The single sign-on configuration of this organization

ssoProvidersSSOProviderConnection!

Single sign on providers created for an organization

Arguments

firstInt!

Returns the first n elements from the list.

afterString!

Returns the elements in the list that come after the specified cursor.

lastInt!

Returns the last n elements from the list.

beforeString!

Returns the elements in the list that come before the specified cursor.

suitesSuiteConnection!

Return all the suite the current user has access to for this organization

Arguments

firstInt!

afterString!

lastInt!

beforeString!

searchString!

Search suites named like the given query case insensitively

teamTeamSelector!

Filter the suites by team

orderSuiteOrders!

Order the suites

Default value: RECENTLY_CREATED

createdAtFromDateTime!

createdAtToDateTime!

teamsTeamConnection!

Returns teams within the organization that the viewer can see

Arguments

firstInt!

afterString!

lastInt!

beforeString!

searchString!

Search teams

pipelinePipelineSelector!

Filter teams by pipeline

userUserSelector!

Filter teams by user membership

privacyTeamPrivacy

Search teams by their privacy

orderTeamOrder!

Order the teams

Default value: NAME

usageUsageUnionConnection

Returns the resource usage data for this organization. Please note that this feature is not yet available to all organizations

Arguments

afterString!

Returns the elements in the list that come after the specified cursor.

beforeString!

Returns the elements in the list that come before the specified cursor.

firstInt!

Returns the first n elements from the list.

lastInt!

Returns the last n elements from the list.

aggregatedOnFromISO8601Date!

Filter aggregations performed from this date

aggregatedOnToISO8601Date!

Filter aggregations performed until this date

resourceResourceUsageType

Filter results by resource type

Default value: [JOB_MINUTES, TEST_EXECUTIONS]

pipelineIdsID

Filter results by the associated Pipeline ID

Default value: []

suiteIdsID

Filter results by the associated Suite ID

Default value: []

uuidString

The public UUID for this organization

+

agentTokensAgentTokenConnection!

Returns agent access tokens for an Organization. By default returns all tokens, whether revoked or non-revoked.

Arguments

firstInt!

lastInt!

revokedBoolean!

Filter tokens by whether they are revoked or not

agentsAgentConnection!

Arguments

firstInt!

afterString!

lastInt!

beforeString!

searchString!

Search agents for the given query terms case insensitively across name and meta data

metaDataString

Filter agents to those only having the matching meta data

clusterID!

Filter agents by membership of a given cluster

clusterQueueID

Filter agents to those within a given cluster queue

clusteredBoolean!

Pass false to exclude agents that belong to a cluster queue

Default value: true

isRunningJobBoolean!

Filter agents by whether they are running a job or not

allowedApiIpAddressesString!

A space-separated allowlist of IP addresses that can access the organization via the GraphQL or REST API

apiAccessTokensOrganizationAPIAccessTokenConnection

Returns user API access tokens that can access this organization

Arguments

afterString!

Returns the elements in the list that come after the specified cursor.

beforeString!

Returns the elements in the list that come before the specified cursor.

firstInt!

Returns the first n elements from the list.

lastInt!

Returns the last n elements from the list.

auditEventsOrganizationAuditEventConnection!

Arguments

firstInt!

afterString!

lastInt!

beforeString!

occurredAtFromDateTime!

Filter events which occurred from the given date and time

occurredAtToDateTime!

Filter events which occurred until the given date and time

typeAuditEventType

Filter the events by type

actorTypeAuditActorType

Filter the events by the type of actor who initiated them

actorID

Filter the events by the IDs of the actors who initiated them

subjectTypeAuditSubjectType

Filter the events by the type of subject they relate to

subjectID

Filter the events by the IDs of the subject they relate to

orderOrganizationAuditEventOrders!

Order the events

Default value: RECENTLY_OCCURRED

subjectUUIDID

Filter the events by the UUIDs of the subject they relate to

clusterCluster!

Return cluster in the Organization by UUID

Arguments

idID

clustersClusterConnection!

Returns clusters for an Organization

Arguments

firstInt!

Returns the first n elements from the list.

afterString!

Returns the elements in the list that come after the specified cursor.

lastInt!

Returns the last n elements from the list.

beforeString!

Returns the elements in the list that come before the specified cursor.

orderClusterOrder!

Order the clusters

Default value: NAME

iconUrlString!

The URL to an icon representing this organization

idID

invitationsOrganizationInvitationConnection!

Arguments

firstInt!

afterString!

lastInt!

beforeString!

stateOrganizationInvitationStates

orderOrganizationInvitationOrders!

Order the invitations

Default value: RECENTLY_CREATED

isTeamsEnabledBoolean

Whether teams is enabled for this organization

jobsJobConnection!

Arguments

firstInt!

Returns the first n elements from the list.

afterString!

Returns the elements in the list that come after the specified cursor.

lastInt!

Returns the last n elements from the list.

beforeString!

Returns the elements in the list that come before the specified cursor.

typeJobTypes

stateJobStates

priorityJobPrioritySearch!

agentQueryRulesString

concurrencyJobConcurrencySearch!

passedBoolean!

Whether or not the command job passed. Passing false will return all failed jobs (including "soft failed" jobs)

stepJobStepSearch!

Filtering jobs based on related step information

orderJobOrder!

Order the jobs

Default value: RECENTLY_CREATED

clusterID!

Filter jobs by membership of a given cluster

clusterQueueID

Filter jobs to those within a given cluster queue

clusteredBoolean!

Pass false to exclude jobs that belong to a cluster queue

Default value: true

membersOrganizationMemberConnection!

Returns users within the organization

Arguments

firstInt!

afterString!

lastInt!

beforeString!

searchString!

Search members named like the given query case insensitively

emailString!

The primary email of the team member

teamTeamSelector!

Filter the members by team

roleOrganizationMemberRole

Search members by their role

securityOrganizationMemberSecurityInput!

ssoOrganizationMemberSSOInput!

orderOrganizationMemberOrder!

Order the members

Default value: RECENTLY_CREATED

nameString

The name of the organization

permissionsOrganizationPermissions

pipelinesPipelineConnection!

Return all the pipelines the current user has access to for this organization

Arguments

firstInt!

afterString!

lastInt!

beforeString!

searchString!

Search pipelines named like the given query case insensitively

repositoryPipelineRepositoryInput!

clusterID!

Filter pipelines by membership of a given cluster

clusteredBoolean!

Pass false to exclude pipelines that belong to a cluster

Default value: true

archivedBoolean!

Filter pipelines based on whether or not they've been archived. If not provided, all pipelines are returned regardless of archived state.

teamTeamSelector!

Filter the pipelines by team

favoriteBoolean!

Only return favorited pipelines

orderPipelineOrders!

Order the pipelines

Default value: RECENTLY_CREATED

tagsString

Filter pipelines with those that have particular tags

createdAtFromDateTime!

createdAtToDateTime!

publicBoolean

Whether this organization is visible to everyone, including people outside it

slugString

The slug used to represent the organization in URLs

ssoOrganizationSSO!

The single sign-on configuration of this organization

ssoProvidersSSOProviderConnection!

Single sign on providers created for an organization

Arguments

firstInt!

Returns the first n elements from the list.

afterString!

Returns the elements in the list that come after the specified cursor.

lastInt!

Returns the last n elements from the list.

beforeString!

Returns the elements in the list that come before the specified cursor.

suitesSuiteConnection!

Return all the suite the current user has access to for this organization

Arguments

firstInt!

afterString!

lastInt!

beforeString!

searchString!

Search suites named like the given query case insensitively

teamTeamSelector!

Filter the suites by team

orderSuiteOrders!

Order the suites

Default value: RECENTLY_CREATED

createdAtFromDateTime!

createdAtToDateTime!

teamsTeamConnection!

Returns teams within the organization that the viewer can see

Arguments

firstInt!

afterString!

lastInt!

beforeString!

searchString!

Search teams

pipelinePipelineSelector!

Filter teams by pipeline

userUserSelector!

Filter teams by user membership

privacyTeamPrivacy

Search teams by their privacy

orderTeamOrder!

Order the teams

Default value: NAME

usageUsageUnionConnection

Returns the resource usage data for this organization.

Arguments

afterString!

Returns the elements in the list that come after the specified cursor.

beforeString!

Returns the elements in the list that come before the specified cursor.

firstInt!

Returns the first n elements from the list.

lastInt!

Returns the last n elements from the list.

aggregatedOnFromISO8601Date!

Filter aggregations performed from this date

aggregatedOnToISO8601Date!

Filter aggregations performed until this date

resourceResourceUsageType

Filter results by resource type

Default value: [JOB_MINUTES, TEST_EXECUTIONS]

pipelineIdsID

Filter results by the associated Pipeline ID

Default value: []

suiteIdsID

Filter results by the associated Suite ID

Default value: []

uuidString

The public UUID for this organization

diff --git a/pages/apis/graphql/schemas/object/pipeline.md b/pages/apis/graphql/schemas/object/pipeline.md index 5fde50ba32..02cf5486e0 100644 --- a/pages/apis/graphql/schemas/object/pipeline.md +++ b/pages/apis/graphql/schemas/object/pipeline.md @@ -32,7 +32,7 @@ toc: false -

allowRebuildsBoolean!

Whether existing builds can be rebuilt as new builds.

archivedBoolean

Whether this pipeline has been archived

archivedAtDateTime!

The time when the pipeline was archived

archivedByUser!

The user that archived this pipeline

branchConfigurationString!

A branch filter pattern to limit which pushed branches trigger builds on this pipeline.

buildRetentionEnabledBoolean!

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.

buildRetentionNumberInt!

The minimum number of builds to keep in the pipeline regardless of how old the builds are.

buildRetentionPeriodBuildRetentionPeriods!

How long is a build kept before it is automatically removed.

buildsBuildConnection!

Returns the builds for this pipeline

Arguments

firstInt!

Returns the first n elements from the list.

afterString!

Returns the elements in the list that come after the specified cursor.

lastInt!

Returns the last n elements from the list.

beforeString!

Returns the elements in the list that come before the specified cursor.

stateBuildStates

branchString

Use %default to search by the Pipelines default branch

commitString

metaDataString

createdAtFromDateTime!

createdAtToDateTime!

cancelIntermediateBuildsBoolean

When a new build is created on a branch, any previous builds that are running on the same branch will be automatically cancelled

cancelIntermediateBuildsBranchFilterString!

Limit which branches build cancelling applies to, for example !main will ensure that the main branch won't have it's builds automatically cancelled.

clusterCluster!

colorString!

The color of the pipeline

commitShortLengthInt

The shortest length to which any git commit ID may be truncated while guaranteeing referring to a unique commit

createdAtDateTime!

The time when the pipeline was created

createdByUser!

The user who created the pipeline

defaultBranchString!

The default branch for this pipeline

defaultTimeoutInMinutesInt!

The default timeout in minutes for all command steps in this pipeline. This can still be overridden in any command step

descriptionString!

The short description of the pipeline

emojiString!

The emoji of the pipeline

favoriteBoolean

Returns true if the viewer has favorited this pipeline

idID

jobsJobConnection!

Arguments

firstInt!

Returns the first n elements from the list.

afterString!

Returns the elements in the list that come after the specified cursor.

lastInt!

Returns the last n elements from the list.

beforeString!

Returns the elements in the list that come before the specified cursor.

typeJobTypes

stateJobStates

priorityJobPrioritySearch!

agentQueryRulesString

concurrencyJobConcurrencySearch!

passedBoolean!

Whether or not the command job passed. Passing false will return all failed jobs (including "soft failed" jobs)

stepJobStepSearch!

Filtering jobs based on related step information

orderJobOrder!

Order the jobs

Default value: RECENTLY_CREATED

maximumTimeoutInMinutesInt!

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.

metricsPipelineMetricConnection!

Arguments

firstInt!

lastInt!

nameString

The name of the pipeline

nextBuildNumberInt

The next build number in the sequence

organizationOrganization

permissionsPipelinePermissions

publicBooleandeprecated

Deprecated: Use `visibility`

Whether this pipeline is visible to everyone, including people outside this organization

repositoryRepository!

The repository for this pipeline

schedulesPipelineScheduleConnection!

Schedules for this pipeline

Arguments

firstInt!

skipIntermediateBuildsBoolean

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.

skipIntermediateBuildsBranchFilterString!

Limit which branches build skipping applies to, for example !main will ensure that the main branch won't have it's builds automatically skipped.

slugString

The slug of the pipeline

stepsPipelineSteps!

tagsPipelineTag

Tags that have been given to this pipeline

teamsTeamPipelineConnection!

Teams associated with this pipeline

Arguments

firstInt!

Returns the first n elements from the list.

afterString!

Returns the elements in the list that come after the specified cursor.

lastInt!

Returns the last n elements from the list.

beforeString!

Returns the elements in the list that come before the specified cursor.

searchString!

Search for teams associated that this pipeline is assigned to

orderTeamPipelineOrder!

Order the pipelines returned

Default value: RECENTLY_CREATED

urlString

The URL for the pipeline

uuidString

The UUID of the pipeline

visibilityPipelineVisibility

Whether this pipeline is visible to everyone, including people outside this organization

webhookURLString

The URL to use in your repository settings for commit webhooks

+

allowRebuildsBoolean!

Whether existing builds can be rebuilt as new builds.

archivedBoolean

Whether this pipeline has been archived

archivedAtDateTime!

The time when the pipeline was archived

archivedByUser!

The user that archived this pipeline

branchConfigurationString!

A branch filter pattern to limit which pushed branches trigger builds on this pipeline.

buildRetentionEnabledBoolean!

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.

buildRetentionNumberInt!

The minimum number of builds to keep in the pipeline regardless of how old the builds are.

buildRetentionPeriodBuildRetentionPeriods!

How long is a build kept before it is automatically removed.

buildsBuildConnection!

Returns the builds for this pipeline

Arguments

firstInt!

Returns the first n elements from the list.

afterString!

Returns the elements in the list that come after the specified cursor.

lastInt!

Returns the last n elements from the list.

beforeString!

Returns the elements in the list that come before the specified cursor.

stateBuildStates

branchString

Use %default to search by the Pipelines default branch

commitString

metaDataString

createdAtFromDateTime!

createdAtToDateTime!

cancelIntermediateBuildsBoolean

When a new build is created on a branch, any previous builds that are running on the same branch will be automatically cancelled

cancelIntermediateBuildsBranchFilterString!

Limit which branches build cancelling applies to, for example !main will ensure that the main branch won't have it's builds automatically cancelled.

clusterCluster!

colorString!

The color of the pipeline

commitShortLengthInt

The shortest length to which any git commit ID may be truncated while guaranteeing referring to a unique commit

createdAtDateTime!

The time when the pipeline was created

createdByUser!

The user who created the pipeline

defaultBranchString!

The default branch for this pipeline

defaultTimeoutInMinutesInt!

The default timeout in minutes for all command steps in this pipeline. This can still be overridden in any command step

descriptionString!

The short description of the pipeline

emojiString!

The emoji of the pipeline

favoriteBoolean

Returns true if the viewer has favorited this pipeline

idID

jobsJobConnection!

Arguments

firstInt!

Returns the first n elements from the list.

afterString!

Returns the elements in the list that come after the specified cursor.

lastInt!

Returns the last n elements from the list.

beforeString!

Returns the elements in the list that come before the specified cursor.

typeJobTypes

stateJobStates

priorityJobPrioritySearch!

agentQueryRulesString

concurrencyJobConcurrencySearch!

passedBoolean!

Whether or not the command job passed. Passing false will return all failed jobs (including "soft failed" jobs)

stepJobStepSearch!

Filtering jobs based on related step information

orderJobOrder!

Order the jobs

Default value: RECENTLY_CREATED

maximumTimeoutInMinutesInt!

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.

metricsPipelineMetricConnection!

Arguments

firstInt!

lastInt!

nameString

The name of the pipeline

nextBuildNumberInt

The next build number in the sequence

organizationOrganization

permissionsPipelinePermissions

pipelineTemplatePipelineTemplate!

publicBooleandeprecated

Deprecated: Use `visibility`

Whether this pipeline is visible to everyone, including people outside this organization

repositoryRepository!

The repository for this pipeline

schedulesPipelineScheduleConnection!

Schedules for this pipeline

Arguments

firstInt!

skipIntermediateBuildsBoolean

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.

skipIntermediateBuildsBranchFilterString!

Limit which branches build skipping applies to, for example !main will ensure that the main branch won't have it's builds automatically skipped.

slugString

The slug of the pipeline

stepsPipelineSteps!

tagsPipelineTag

Tags that have been given to this pipeline

teamsTeamPipelineConnection!

Teams associated with this pipeline

Arguments

firstInt!

Returns the first n elements from the list.

afterString!

Returns the elements in the list that come after the specified cursor.

lastInt!

Returns the last n elements from the list.

beforeString!

Returns the elements in the list that come before the specified cursor.

searchString!

Search for teams associated that this pipeline is assigned to

orderTeamPipelineOrder!

Order the pipelines returned

Default value: RECENTLY_CREATED

urlString

The URL for the pipeline

uuidString

The UUID of the pipeline

visibilityPipelineVisibility

Whether this pipeline is visible to everyone, including people outside this organization

webhookURLString

The URL to use in your repository settings for commit webhooks

diff --git a/pages/apis/graphql/schemas/object/pipelinecreatepayload.md b/pages/apis/graphql/schemas/object/pipelinecreatepayload.md index cb975561e3..00b0ab201e 100644 --- a/pages/apis/graphql/schemas/object/pipelinecreatepayload.md +++ b/pages/apis/graphql/schemas/object/pipelinecreatepayload.md @@ -32,6 +32,6 @@ toc: false -

clientMutationIdString!

A unique identifier for the client performing the mutation.

clusterCluster!

organizationOrganization

pipelinePipeline

pipelineEdgePipelineEdge

+

clientMutationIdString!

A unique identifier for the client performing the mutation.

clusterCluster!

organizationOrganization

pipelinePipeline

pipelineEdgePipelineEdge

pipelineTemplatePipelineTemplate!

diff --git a/pages/apis/graphql/schemas/object/pipelinetemplate.md b/pages/apis/graphql/schemas/object/pipelinetemplate.md new file mode 100644 index 0000000000..fcc8313f92 --- /dev/null +++ b/pages/apis/graphql/schemas/object/pipelinetemplate.md @@ -0,0 +1,43 @@ +--- +toc: false +--- + + +

+ PipelineTemplate + OBJECT +

+ + + +

A template defining a fixed step configuration for a pipeline

+ + + + + + + + + +
+

Fields

+

configurationYAML

A YAML representation of the step configuration

createdAtDateTime

The time when the template was created

createdByUser

The user who created the template

descriptionString!

The short description of the template

idID

nameString

The name of the template

updatedAtDateTime

The last time the template was changed

updatedByUser

The user who last updated the template

uuidID

The UUID for the template

+ + + + +

Interfaces

+Node diff --git a/pages/apis/graphql/schemas/union/auditsubjectnode.md b/pages/apis/graphql/schemas/union/auditsubjectnode.md index 3543b5d7a4..4f05650a11 100644 --- a/pages/apis/graphql/schemas/union/auditsubjectnode.md +++ b/pages/apis/graphql/schemas/union/auditsubjectnode.md @@ -49,6 +49,7 @@ toc: false OrganizationMember Pipeline PipelineSchedule +PipelineTemplate SCMPipelineSettings SCMRepositoryHost SCMService From 8bab21c9d66afdd32938d5b2124940a5fa8a3240 Mon Sep 17 00:00:00 2001 From: Juanito Fatas Date: Mon, 3 Jul 2023 12:58:38 +0900 Subject: [PATCH 093/118] Add back Limits navigations --- data/nav_graphql.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/data/nav_graphql.yml b/data/nav_graphql.yml index 920a0f8736..9a34db497b 100644 --- a/data/nav_graphql.yml +++ b/data/nav_graphql.yml @@ -5,6 +5,8 @@ path: apis/graphql/graphql-tutorial - name: Cookbook path: apis/graphql/graphql-cookbook +- name: Limits + path: apis/graphql/graphql-resource-limits - name: Queries children: - name: agent From cb55b4deab077f4e944407e0cec521e7ad3925d0 Mon Sep 17 00:00:00 2001 From: Michael Belton Date: Mon, 3 Jul 2023 13:59:19 +1000 Subject: [PATCH 094/118] Update event formatting of webhook data --- pages/apis/webhooks/build_events.md | 39 +++++++++++----- pages/apis/webhooks/job_events.md | 70 +++++++++++++++++++---------- 2 files changed, 74 insertions(+), 35 deletions(-) diff --git a/pages/apis/webhooks/build_events.md b/pages/apis/webhooks/build_events.md index a2ff2b4abd..8cd770796f 100644 --- a/pages/apis/webhooks/build_events.md +++ b/pages/apis/webhooks/build_events.md @@ -1,24 +1,41 @@ # Build webhook events - ## Events - - - - - + + + + + + + +
build.scheduledA build has been scheduled
build.runningA build has started running
build.finishedA build has finished
EventDescription
build.scheduledA build has been scheduled
build.runningA build has started running
build.finishedA build has finished
## Request body data - - - - - + + + + + + + + + + + + + + + + + + + +
buildThe Build this notification relates to
pipelineThe Pipeline this notification relates to
senderThe user who created the webhook
PropertyTypeDescription
buildBuildThe build this notification relates to
pipelinePipelineThe pipeline this notification relates to
senderStringThe user who created the webhook
Example request body: diff --git a/pages/apis/webhooks/job_events.md b/pages/apis/webhooks/job_events.md index 11fac8f10e..396f30c7ec 100644 --- a/pages/apis/webhooks/job_events.md +++ b/pages/apis/webhooks/job_events.md @@ -4,35 +4,57 @@ ## Events - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +
job.scheduledA command step job has been scheduled to run on an agent
job.startedA command step job has started running on an agent
job.finishedA job has finished
job.activatedA block step job has been unblocked using the web or API
EventDescription
job.scheduledA command step job has been scheduled to run on an agent
job.startedA command step job has started running on an agent
job.finishedA job has finished
job.activatedA block step job has been unblocked using the web or API
## Request body data - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + +
jobThe Job this notification relates to
buildThe Build this notification relates to
pipelineThe Pipeline this notification relates to
senderThe user who created the webhook
PropertyTypeDescription
jobJobThe job this notification relates to
buildBuildThe build this notification relates to
pipelinePipelineThe pipeline this notification relates to
senderStringThe user who created the webhook
Example request body: From 9d33c781ae83a2748c953f50ffc15e401908c991 Mon Sep 17 00:00:00 2001 From: Juanito Fatas Date: Mon, 3 Jul 2023 13:21:17 +0900 Subject: [PATCH 095/118] Add Limits to GraphQL nav data so it does not get deleted every time we run scripts/generate_graphql_api_content.rb --- scripts/graphql_api_content/nav_data.rb | 4 ++++ spec/scripts/graphql_api_content/nav_data_spec.rb | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/scripts/graphql_api_content/nav_data.rb b/scripts/graphql_api_content/nav_data.rb index fa601fe998..1a54a85a81 100644 --- a/scripts/graphql_api_content/nav_data.rb +++ b/scripts/graphql_api_content/nav_data.rb @@ -28,6 +28,10 @@ def generate_graphql_nav_data(type_sets) "name" => "Cookbook", "path" => "apis/graphql/graphql-cookbook" }, + { + "name" => "Limits", + "path" => "apis/graphql/graphql-resource-limits" + }, { "name" => "Queries", "children" => convert_to_nav_items(type_sets["query_types"], "query") diff --git a/spec/scripts/graphql_api_content/nav_data_spec.rb b/spec/scripts/graphql_api_content/nav_data_spec.rb index 4779c507f5..07fbd9e7e6 100644 --- a/spec/scripts/graphql_api_content/nav_data_spec.rb +++ b/spec/scripts/graphql_api_content/nav_data_spec.rb @@ -306,6 +306,10 @@ "name" => "Cookbook", "path" => "apis/graphql/graphql-cookbook" }, + { + "name" => "Limits", + "path" => "apis/graphql/graphql-resource-limits" + }, { "name" => "Queries", "children" => [ From ffc3be77b44a3b68b43bedc5b167dc90bd42ee7d Mon Sep 17 00:00:00 2001 From: niceking Date: Tue, 4 Jul 2023 13:07:38 +1200 Subject: [PATCH 096/118] add section for recommended environment variables --- pages/test_analytics/ci_environments.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/pages/test_analytics/ci_environments.md b/pages/test_analytics/ci_environments.md index ae21b3149a..f1d4441477 100644 --- a/pages/test_analytics/ci_environments.md +++ b/pages/test_analytics/ci_environments.md @@ -12,6 +12,17 @@ If you run test collectors inside containers or you're using another CI system, If you're not using a test collector, see [Importing JSON](/docs/test-analytics/importing-json) and [Importing JUnit XML](/docs/test-analytics/importing-junit-xml) to learn how to provide run environment data. +## Recommended environment variables +If you're manually providing Buildkite Test Analytics environment variables, we'd strongly recommend setting the following variables: + +| Field name | Description | Features unlocked | +|------------------------|-----------------------------------------------|---------------------------------------------------| +| `run_env[key]` | the UUID for the build | required field, group batches of data by this key | +| `run_env[branch]` | the branch or reference for this build | filter data by branch | +| `run_env[url]` | the URL for the build on your CI provider | handy link back to your CI build | +| `run_env[commit_sha]` | the commit hash for the head of the branch | enable automatic flaky test detection | +| `run_env[message]` | the commit message for the head of the branch | easily identify your runs | +{: class="responsive-table"} ## Containers and test collectors From 3472fe0b037773e02add10609742050835b7027d Mon Sep 17 00:00:00 2001 From: niceking Date: Tue, 4 Jul 2023 13:11:51 +1200 Subject: [PATCH 097/118] link to the CI specific info --- pages/test_analytics/ci_environments.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pages/test_analytics/ci_environments.md b/pages/test_analytics/ci_environments.md index f1d4441477..4b651a2eac 100644 --- a/pages/test_analytics/ci_environments.md +++ b/pages/test_analytics/ci_environments.md @@ -4,11 +4,11 @@ Buildkite Test Analytics collectors automatically detect common continuous integ If available, test collectors gather information about your test runs, such as branch names and build IDs. Test collectors gather information from the following CI environments: -- Buildkite -- CircleCI -- GitHub Actions +- [Buildkite](/docs/test-analytics/ci-environments#buildkite) +- [CircleCI](/docs/test-analytics/ci-environments#circleci) +- [GitHub Actions](/docs/test-analytics/ci-environments#github-actions) -If you run test collectors inside containers or you're using another CI system, then you must set variables to report your CI details to Buildkite. +If you run test collectors inside [containers](/docs/test-analytics/ci-environments#containers-and-test-collectors) or you're using another CI system, then you must set variables to report your CI details to Buildkite. If you're not using a test collector, see [Importing JSON](/docs/test-analytics/importing-json) and [Importing JUnit XML](/docs/test-analytics/importing-junit-xml) to learn how to provide run environment data. From adfb21a5d2ed32b1f97d77d3d5150a4e4b224f3b Mon Sep 17 00:00:00 2001 From: Jun Jung Date: Wed, 5 Jul 2023 06:43:29 +1200 Subject: [PATCH 098/118] [Update] Updating `agentTokenCreate` mutation to use new `tokenValue`. --- pages/agent/v3/tokens.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/agent/v3/tokens.md b/pages/agent/v3/tokens.md index b66d3b6367..0107a233e6 100644 --- a/pages/agent/v3/tokens.md +++ b/pages/agent/v3/tokens.md @@ -25,10 +25,10 @@ mutation { organizationID: "organization-id", description: "A description" }) { + tokenValue agentTokenEdge { node { id - token } } } From b5f655e389dc477a91a16c9fcb0c85a227fa19fc Mon Sep 17 00:00:00 2001 From: Jeremy Bumsted Date: Tue, 4 Jul 2023 13:55:41 -0600 Subject: [PATCH 099/118] Update pages/apis/graphql/graphql_cookbook.md Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/apis/graphql/graphql_cookbook.md | 1 + 1 file changed, 1 insertion(+) diff --git a/pages/apis/graphql/graphql_cookbook.md b/pages/apis/graphql/graphql_cookbook.md index 6aa2067c21..2ffd298f76 100644 --- a/pages/apis/graphql/graphql_cookbook.md +++ b/pages/apis/graphql/graphql_cookbook.md @@ -826,6 +826,7 @@ mutation deleteOrgMember { ``` ### Get organization audit events + Query your organization's audit events. Audit events are only available to Enterprise customers. ```graphql From a608d94d8abf0412168a9b939297a34276ba5d8f Mon Sep 17 00:00:00 2001 From: Jeremy Bumsted Date: Tue, 4 Jul 2023 13:55:54 -0600 Subject: [PATCH 100/118] Update pages/apis/graphql/graphql_cookbook.md Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/apis/graphql/graphql_cookbook.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/apis/graphql/graphql_cookbook.md b/pages/apis/graphql/graphql_cookbook.md index 2ffd298f76..b70ef79d9a 100644 --- a/pages/apis/graphql/graphql_cookbook.md +++ b/pages/apis/graphql/graphql_cookbook.md @@ -831,7 +831,7 @@ Query your organization's audit events. Audit events are only available to Enter ```graphql query getOrganizationAuditEvents{ - organization(slug:""){ + organization(slug:"organization-slug"){ auditEvents(first: 500){ edges{ node{ From 737cbd5767b16e52306ed4758f68ce2d0c1fa704 Mon Sep 17 00:00:00 2001 From: Kalo Pilato Date: Wed, 5 Jul 2023 15:42:28 +1200 Subject: [PATCH 101/118] add .nvmrc file --- .nvmrc | 1 + 1 file changed, 1 insertion(+) create mode 100644 .nvmrc diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000000..8b3ed1b235 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +16.19.1 From 75976f8f89d9d3e7c5dd479562192ee1b8bbe272 Mon Sep 17 00:00:00 2001 From: Kalo Pilato Date: Wed, 5 Jul 2023 15:42:44 +1200 Subject: [PATCH 102/118] update README to include Xcode Command Line Tools installation --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 55345ccd33..eaf61bf16e 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,12 @@ or use [`rbenv`](https://github.com/rbenv/rbenv) to automatically select the cor For non-containerized development, run: ```bash + # Check that you have Xcode Command Line Tools installed - required to build dependencies + xcode-select -p + + # If not, install them + xcode-select --install + # Install dependencies bin/setup From 8d70259f58f49d009f353ba8cddec025733a2192 Mon Sep 17 00:00:00 2001 From: Kalo Pilato Date: Wed, 5 Jul 2023 16:23:07 +1200 Subject: [PATCH 103/118] update docs for 'Creating a pipeline template' --- pages/pipelines/templates.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pages/pipelines/templates.md b/pages/pipelines/templates.md index 95b68e8b3c..1b8a2a66ad 100644 --- a/pages/pipelines/templates.md +++ b/pages/pipelines/templates.md @@ -16,9 +16,8 @@ Only administrators can create or update pipeline templates. To create a template: 1. Navigate to your [organizationā€™s pipeline templates](https://buildkite.com/organizations/-/pipeline-templates). -1. If this is your first template, select _Create a Template_. Otherwise, select _New Template_. A pipeline template is created automatically for you. -1. Update the name and description of your new template and select _Apply_ to save your changes. -1. Select _Edit_ if you want to change the step configuration for the template. +1. If this is your first template, select _Create a Template_. Otherwise, select _New Template_. +1. Enter the name and description for your new template, update the default step configuration and select _Create Template_ to create the template. An administrator can add multiple templates to use across the organization. Making changes and saving a template will apply those changes to all pipelines using that template. From c82fd48bbc6a2c7fbc1529ef9c1e3c37fb4acbd0 Mon Sep 17 00:00:00 2001 From: Kalo Pilato Date: Thu, 6 Jul 2023 13:39:32 +1200 Subject: [PATCH 104/118] review: break down instructions for 'Creating a pipeline template' --- pages/pipelines/templates.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pages/pipelines/templates.md b/pages/pipelines/templates.md index 1b8a2a66ad..561ee0247b 100644 --- a/pages/pipelines/templates.md +++ b/pages/pipelines/templates.md @@ -17,7 +17,9 @@ To create a template: 1. Navigate to your [organizationā€™s pipeline templates](https://buildkite.com/organizations/-/pipeline-templates). 1. If this is your first template, select _Create a Template_. Otherwise, select _New Template_. -1. Enter the name and description for your new template, update the default step configuration and select _Create Template_ to create the template. +1. Enter the name and description for your new template. +1. Update the default step configuration. +1. Select _Create Template_. An administrator can add multiple templates to use across the organization. Making changes and saving a template will apply those changes to all pipelines using that template. From a7e8e37d1f64f3a1caa8ab8532a03fb6260b2db6 Mon Sep 17 00:00:00 2001 From: Himal Date: Thu, 6 Jul 2023 12:02:08 +1000 Subject: [PATCH 105/118] Clarify how to view query complexity of a query --- pages/apis/graphql/graphql_resource_limits.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index 1521a90087..09c7e4d9f9 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -154,7 +154,7 @@ RateLimit-Reset: 120 ### View query complexity -To include the complexity data in responses, use the `Buildkite-Include-Query-Stats` header in GraphQL requests. This returns the complexity data in the response like the following: +To include the complexity data in responses, set `Buildkite-Include-Query-Stats` header to `true` in GraphQL requests. This returns the complexity data in the response like the following: ```json { From 3a274d48f72616d615f9f4c34761e396d25867d3 Mon Sep 17 00:00:00 2001 From: niceking Date: Fri, 7 Jul 2023 10:19:44 +1200 Subject: [PATCH 106/118] Apply suggestions from code review Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/test_analytics/ci_environments.md | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/pages/test_analytics/ci_environments.md b/pages/test_analytics/ci_environments.md index 4b651a2eac..27b98eac97 100644 --- a/pages/test_analytics/ci_environments.md +++ b/pages/test_analytics/ci_environments.md @@ -13,16 +13,14 @@ If you run test collectors inside [containers](/docs/test-analytics/ci-environme If you're not using a test collector, see [Importing JSON](/docs/test-analytics/importing-json) and [Importing JUnit XML](/docs/test-analytics/importing-junit-xml) to learn how to provide run environment data. ## Recommended environment variables -If you're manually providing Buildkite Test Analytics environment variables, we'd strongly recommend setting the following variables: - -| Field name | Description | Features unlocked | -|------------------------|-----------------------------------------------|---------------------------------------------------| -| `run_env[key]` | the UUID for the build | required field, group batches of data by this key | -| `run_env[branch]` | the branch or reference for this build | filter data by branch | -| `run_env[url]` | the URL for the build on your CI provider | handy link back to your CI build | -| `run_env[commit_sha]` | the commit hash for the head of the branch | enable automatic flaky test detection | -| `run_env[message]` | the commit message for the head of the branch | easily identify your runs | -{: class="responsive-table"} + +If you're manually providing environment variables, we strongly recommend setting the following variables: + +- `run_env[key]`: A required variable that sends the UUID for the build, letting you group batches of data by the key. +- `run_env[branch]`: Sends the branch or reference for this build, enabling you to filter data by branch. +- `run_env[url]`: Provides the URL for the build on your CI provider, giving you a handy link back to the CI build. +- `run_env[commit_sha]`: Sends the commit hash for the head of the branch, enabling automatic flaky test detection in your builds. +- `run_env[message]`: Forwards the commit message for the head of the branch, helping you identify different runs more easily. ## Containers and test collectors From 5c30a86e05db35954fa82275c6aa81ac6561f3a1 Mon Sep 17 00:00:00 2001 From: Karen Sawrey Date: Sat, 8 Jul 2023 00:23:52 +0300 Subject: [PATCH 107/118] Update pages/pipelines/input_step.md Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/pipelines/input_step.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/pipelines/input_step.md b/pages/pipelines/input_step.md index e67c2f41a6..a6240888b7 100644 --- a/pages/pipelines/input_step.md +++ b/pages/pipelines/input_step.md @@ -278,7 +278,7 @@ steps: ## Input validation -To prevent the users from entering invalid values when using an input step with text inputs (for example, to gather some deployment information), you can use input validation. +To prevent users from entering invalid text values in input steps (for example, to gather some deployment information), you can use input validation. If you associate a RegEx to a field, the field outline will turn red when an invalid value is entered. From 5881e0392ac897d5ca0c2b5a95723fbf94f46f85 Mon Sep 17 00:00:00 2001 From: Karen Sawrey Date: Sat, 8 Jul 2023 00:24:00 +0300 Subject: [PATCH 108/118] Update pages/pipelines/input_step.md Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/pipelines/input_step.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/pipelines/input_step.md b/pages/pipelines/input_step.md index a6240888b7..2e83b09d02 100644 --- a/pages/pipelines/input_step.md +++ b/pages/pipelines/input_step.md @@ -280,7 +280,7 @@ steps: To prevent users from entering invalid text values in input steps (for example, to gather some deployment information), you can use input validation. -If you associate a RegEx to a field, the field outline will turn red when an invalid value is entered. +If you associate a regular expression to a field, the field outline will turn red when an invalid value is entered. To do it, use the following sample syntax: From 2dde66ad5fff1a9c6379b0ec70f08046ac96213c Mon Sep 17 00:00:00 2001 From: Karen Sawrey Date: Sat, 8 Jul 2023 00:24:10 +0300 Subject: [PATCH 109/118] Update pages/pipelines/input_step.md Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/pipelines/input_step.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/pipelines/input_step.md b/pages/pipelines/input_step.md index 2e83b09d02..abaee11b45 100644 --- a/pages/pipelines/input_step.md +++ b/pages/pipelines/input_step.md @@ -293,4 +293,4 @@ steps: format: "[0-9a-f]+" ``` -The format must be a regular expression implicitly anchored to the beginning and end of the input and is functionally equivalent to the [HTML5 pattern attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern). +The `format` must be a regular expression implicitly anchored to the beginning and end of the input and is functionally equivalent to the [HTML5 pattern attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/pattern). From ee010203f33a9d81139566dc83cc58ebb25ea58d Mon Sep 17 00:00:00 2001 From: Himal Date: Mon, 10 Jul 2023 13:41:39 +1000 Subject: [PATCH 110/118] Update pages/apis/graphql/graphql_resource_limits.md Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/apis/graphql/graphql_resource_limits.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/apis/graphql/graphql_resource_limits.md b/pages/apis/graphql/graphql_resource_limits.md index 09c7e4d9f9..4a7f8435d0 100644 --- a/pages/apis/graphql/graphql_resource_limits.md +++ b/pages/apis/graphql/graphql_resource_limits.md @@ -154,7 +154,7 @@ RateLimit-Reset: 120 ### View query complexity -To include the complexity data in responses, set `Buildkite-Include-Query-Stats` header to `true` in GraphQL requests. This returns the complexity data in the response like the following: +To include the complexity data in responses, set the `Buildkite-Include-Query-Stats` header to `true` in GraphQL requests. This returns the complexity data in the response like the following: ```json { From 8e118b576ba493b49dd022856e9d05ffe0e0d742 Mon Sep 17 00:00:00 2001 From: "Michelle (butterkitty)" Date: Mon, 10 Jul 2023 13:19:48 -0400 Subject: [PATCH 111/118] Added info about rebuild permissions Added info around code level permission levels --- pages/pipelines/permissions.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pages/pipelines/permissions.md b/pages/pipelines/permissions.md index 56047ecad2..4992d194d3 100644 --- a/pages/pipelines/permissions.md +++ b/pages/pipelines/permissions.md @@ -34,15 +34,15 @@ All users in a team have the same level of access to the pipelines in their team You can grant teams the following permissions on a pipeline: -* Full Access: - - Can view and create builds. +* Full Access (`MANAGE_BUILD_AND_READ`): + - Can view and create builds or rebuilds. - Can edit pipeline settings. -* Build & Read: - - Can view and create builds. +* Build & Read (`BUILD_AND_READ`): + - Can view and create builds or rebuilds. - Can _not_ edit pipeline settings. -* Read Only: +* Read Only (`READ_ONLY`): - Can view builds. - - Can _not_ create builds. + - Can _not_ create builds or issue rebuilds. - Can _not_ edit pipeline settings. ### User-level permissions From f841107e2fdbb4ca4468721df26f77ed17c833ff Mon Sep 17 00:00:00 2001 From: Josh Deprez Date: Tue, 11 Jul 2023 16:33:33 +1000 Subject: [PATCH 112/118] Use `spawn` for multiple agents ... on Debian, Red Hat, and Ubuntu docs. --- pages/agent/v3/_linux_multiple_agents.md | 7 +++++++ pages/agent/v3/debian.md | 20 +------------------- pages/agent/v3/redhat.md | 20 +------------------- pages/agent/v3/ubuntu.md | 20 +------------------- 4 files changed, 10 insertions(+), 57 deletions(-) create mode 100644 pages/agent/v3/_linux_multiple_agents.md diff --git a/pages/agent/v3/_linux_multiple_agents.md b/pages/agent/v3/_linux_multiple_agents.md new file mode 100644 index 0000000000..188dd1b111 --- /dev/null +++ b/pages/agent/v3/_linux_multiple_agents.md @@ -0,0 +1,7 @@ +You can run as many parallel agent workers on the one machine as you wish with +the `spawn` configuration setting, or by passing the `--spawn` flag. + +```ini +# Start 5 workers. Each one will independently fetch and execute jobs. +spawn=5 +``` \ No newline at end of file diff --git a/pages/agent/v3/debian.md b/pages/agent/v3/debian.md index 5ac6d9958a..344d39613f 100644 --- a/pages/agent/v3/debian.md +++ b/pages/agent/v3/debian.md @@ -88,25 +88,7 @@ On Debian, the Buildkite agent runs as user `buildkite-agent`. ## Running multiple agents -You can run as many parallel agents on the one machine as you wish by duplicating the systemd/upstart service configuration file, for example: - -```shell -# Disable the default unit -sudo systemctl stop buildkite-agent && sudo systemctl disable buildkite-agent - -# Create a systemd template -sudo cp /lib/systemd/system/buildkite-agent.service /etc/systemd/system/buildkite-agent@.service - -# Now, as many times as you like -sudo systemctl enable buildkite-agent@1 && sudo systemctl start buildkite-agent@1 -sudo systemctl enable buildkite-agent@2 && sudo systemctl start buildkite-agent@2 - -# Follow them all -sudo journalctl -f -u "buildkite-agent@*" - -# Or one-by-one -sudo journalctl -f -u buildkite-agent@2 -``` +<%= render_markdown partial: 'agent/v3/linux_multiple_agents' %> ## Upgrading diff --git a/pages/agent/v3/redhat.md b/pages/agent/v3/redhat.md index 971707c5c1..e419b49c1d 100644 --- a/pages/agent/v3/redhat.md +++ b/pages/agent/v3/redhat.md @@ -72,25 +72,7 @@ On RedHat, the Buildkite agent runs as user `buildkite-agent`. ## Running multiple agents -You can run as many parallel agents on the one machine as you wish by duplicating the systemd service configuration file, for example: - -```shell -# Disable the default unit -sudo systemctl stop buildkite-agent && sudo systemctl disable buildkite-agent - -# Create a systemd template -sudo cp /usr/lib/systemd/system/buildkite-agent.service /etc/systemd/system/buildkite-agent@.service - -# Now, as many times as you like -sudo systemctl enable buildkite-agent@1 && sudo systemctl start buildkite-agent@1 -sudo systemctl enable buildkite-agent@2 && sudo systemctl start buildkite-agent@2 - -# Follow them all -sudo journalctl -f -u "buildkite-agent@*" - -# Or one-by-one -sudo journalctl -f -u buildkite-agent@2 -``` +<%= render_markdown partial: 'agent/v3/linux_multiple_agents' %> ## Upgrading diff --git a/pages/agent/v3/ubuntu.md b/pages/agent/v3/ubuntu.md index 6d2c094390..fe11c837c6 100644 --- a/pages/agent/v3/ubuntu.md +++ b/pages/agent/v3/ubuntu.md @@ -69,25 +69,7 @@ See the [Agent SSH keys](/docs/agent/v3/ssh-keys) documentation for more details ## Running multiple agents -You can run as many parallel agents on the one machine as you wish by duplicating the upstart service configuration file, for example: - -```shell -# Disable the default unit -sudo systemctl stop buildkite-agent && sudo systemctl disable buildkite-agent - -# Create a systemd template -sudo cp /lib/systemd/system/buildkite-agent.service /etc/systemd/system/buildkite-agent@.service - -# Now, as many times as you like -sudo systemctl enable --now buildkite-agent@1 -sudo systemctl enable --now buildkite-agent@2 - -# Follow them all -sudo journalctl -f -u "buildkite-agent@*" - -# Or one-by-one -sudo journalctl -f -u buildkite-agent@2 -``` +<%= render_markdown partial: 'agent/v3/linux_multiple_agents' %> ## Upgrading From 5cce32ce67629cd73eae4b4357a77b47839d2f78 Mon Sep 17 00:00:00 2001 From: acrewdson Date: Thu, 13 Jul 2023 16:23:25 -0700 Subject: [PATCH 113/118] Use fully-qualified name w/tap to avoid ambiguity --- pages/agent/v3/macos.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/agent/v3/macos.md b/pages/agent/v3/macos.md index 4e4ce05367..bb4cce9b2c 100644 --- a/pages/agent/v3/macos.md +++ b/pages/agent/v3/macos.md @@ -12,7 +12,7 @@ To install the agent using Homebrew: 1. On the command line, install the agent by running: ```shell - brew tap buildkite/buildkite && brew install buildkite-agent + brew tap buildkite/buildkite && brew install buildkite/buildkite/buildkite-agent ``` 1. Add your [agent token](/docs/agent/v3/tokens) to authenticate the agent by replacing `INSERT-YOUR-AGENT-TOKEN-HERE` with your agent token and running: From 86ac8c276b9050a0d64b4f74e449f5ebf1a76e98 Mon Sep 17 00:00:00 2001 From: Josh Deprez Date: Mon, 17 Jul 2023 15:00:33 +1000 Subject: [PATCH 114/118] Apply suggestions from code review Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/agent/v3/_linux_multiple_agents.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pages/agent/v3/_linux_multiple_agents.md b/pages/agent/v3/_linux_multiple_agents.md index 188dd1b111..f0bea8143c 100644 --- a/pages/agent/v3/_linux_multiple_agents.md +++ b/pages/agent/v3/_linux_multiple_agents.md @@ -2,6 +2,6 @@ You can run as many parallel agent workers on the one machine as you wish with the `spawn` configuration setting, or by passing the `--spawn` flag. ```ini -# Start 5 workers. Each one will independently fetch and execute jobs. +# Start 5 workers. Each one independently fetches and executes jobs. spawn=5 -``` \ No newline at end of file +``` From e26b98a5e75866570c05a2c0ae02f67dcd8cb318 Mon Sep 17 00:00:00 2001 From: Steven Webb Date: Tue, 18 Jul 2023 15:55:14 +0800 Subject: [PATCH 115/118] The read_flaky_tests scope has been removed Removed in https://github.com/buildkite/buildkite/pull/13089 --- pages/apis/managing_api_tokens.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/pages/apis/managing_api_tokens.md b/pages/apis/managing_api_tokens.md index eff2581f22..1f0f9dc8e6 100644 --- a/pages/apis/managing_api_tokens.md +++ b/pages/apis/managing_api_tokens.md @@ -31,8 +31,6 @@ REST API scopes are very granular, you can select some or all of the following: * Read Suites `read_suites` - Permission to list and retrieve details of test suites; including runs, tests, executions, etc. * Write Suites `write_suites` - Permission to create, update and delete test suites -* Read Flaky Tests `read_flaky_tests` - Deprecated. Use `read_suites` instead. Permission to list - flaky tests When creating API access tokens, you can also restrict which network address are allowed to use them, using [CIDR notation](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing). From baf614d6128e53c6bab3f43e28b9fd21036b7437 Mon Sep 17 00:00:00 2001 From: niceking Date: Wed, 19 Jul 2023 09:55:04 +1200 Subject: [PATCH 116/118] Update pages/test_analytics/ci_environments.md Co-authored-by: Michael Belton <119824349+mbelton-buildkite@users.noreply.github.com> --- pages/test_analytics/ci_environments.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/test_analytics/ci_environments.md b/pages/test_analytics/ci_environments.md index 27b98eac97..ecaef0617a 100644 --- a/pages/test_analytics/ci_environments.md +++ b/pages/test_analytics/ci_environments.md @@ -8,7 +8,7 @@ Test collectors gather information from the following CI environments: - [CircleCI](/docs/test-analytics/ci-environments#circleci) - [GitHub Actions](/docs/test-analytics/ci-environments#github-actions) -If you run test collectors inside [containers](/docs/test-analytics/ci-environments#containers-and-test-collectors) or you're using another CI system, then you must set variables to report your CI details to Buildkite. +If you run test collectors inside [containers](/docs/test-analytics/ci-environments#containers-and-test-collectors) or use another CI system, you must set variables to report your CI details to Buildkite. If you're not using a test collector, see [Importing JSON](/docs/test-analytics/importing-json) and [Importing JUnit XML](/docs/test-analytics/importing-junit-xml) to learn how to provide run environment data. From 54fc93f45e0852c82dd169c1405934751456c740 Mon Sep 17 00:00:00 2001 From: buildkite-docs-bot Date: Wed, 19 Jul 2023 00:12:52 +0000 Subject: [PATCH 117/118] Update GraphQL docs --- data/graphql_data_schema.json | 216 ++++++++++++++++-- data/nav_graphql.yml | 8 + .../schemas/enum/apiaccesstokenscopes.md | 2 +- .../graphql/schemas/enum/auditsubjecttype.md | 2 +- .../schemas/enum/revokeinactivetokenperiod.md | 45 ++++ ...einactivetokensafterupdatemutationinput.md | 39 ++++ ...nizationrevokeinactivetokensafterupdate.md | 38 +++ pages/apis/graphql/schemas/object/mutation.md | 2 +- .../graphql/schemas/object/organization.md | 2 +- ...nactivetokensafterupdatemutationpayload.md | 37 +++ 10 files changed, 369 insertions(+), 22 deletions(-) create mode 100644 pages/apis/graphql/schemas/enum/revokeinactivetokenperiod.md create mode 100644 pages/apis/graphql/schemas/input_object/organizationrevokeinactivetokensafterupdatemutationinput.md create mode 100644 pages/apis/graphql/schemas/mutation/organizationrevokeinactivetokensafterupdate.md create mode 100644 pages/apis/graphql/schemas/object/organizationrevokeinactivetokensafterupdatemutationpayload.md diff --git a/data/graphql_data_schema.json b/data/graphql_data_schema.json index d30e077368..c9dca70f49 100644 --- a/data/graphql_data_schema.json +++ b/data/graphql_data_schema.json @@ -321,12 +321,6 @@ "isDeprecated": false, "deprecationReason": null }, - { - "name": "READ_FLAKY_TESTS", - "description": null, - "isDeprecated": false, - "deprecationReason": null - }, { "name": "READ_JOB_ENV", "description": null, @@ -3835,13 +3829,13 @@ "interfaces": null, "enumValues": [ { - "name": "CLUSTER_PERMISSION", + "name": "SUBSCRIPTION", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "PIPELINE", + "name": "CLUSTER", "description": null, "isDeprecated": false, "deprecationReason": null @@ -3925,7 +3919,7 @@ "deprecationReason": null }, { - "name": "SCM_SERVICE", + "name": "SSO_PROVIDER", "description": null, "isDeprecated": false, "deprecationReason": null @@ -3937,7 +3931,7 @@ "deprecationReason": null }, { - "name": "SSO_PROVIDER", + "name": "SCM_REPOSITORY_HOST", "description": null, "isDeprecated": false, "deprecationReason": null @@ -3955,49 +3949,49 @@ "deprecationReason": null }, { - "name": "SCM_REPOSITORY_HOST", + "name": "SUITE", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "USER_EMAIL", + "name": "SCM_SERVICE", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "SUITE", + "name": "USER_TOTP", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "USER_TOTP", + "name": "USER_EMAIL", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "USER", + "name": "PIPELINE", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "CLUSTER", + "name": "USER", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "AUTHORIZATION", + "name": "CLUSTER_PERMISSION", "description": null, "isDeprecated": false, "deprecationReason": null }, { - "name": "SUBSCRIPTION", + "name": "AUTHORIZATION", "description": null, "isDeprecated": false, "deprecationReason": null @@ -15671,6 +15665,35 @@ "isDeprecated": false, "deprecationReason": null }, + { + "name": "organizationRevokeInactiveTokensAfterUpdate", + "description": "Specify the maximum timeframe to revoke organization access from inactive API tokens.", + "args": [ + { + "name": "input", + "description": "Parameters for OrganizationRevokeInactiveTokensAfterUpdateMutation", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "OrganizationRevokeInactiveTokensAfterUpdateMutationInput", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "type": { + "kind": "OBJECT", + "name": "OrganizationRevokeInactiveTokensAfterUpdateMutationPayload", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "pipelineArchive", "description": "Archive a pipeline.", @@ -18703,6 +18726,20 @@ "isDeprecated": false, "deprecationReason": null }, + { + "name": "revokeInactiveTokensAfter", + "description": "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.", + "args": [ + + ], + "type": { + "kind": "ENUM", + "name": "RevokeInactiveTokenPeriod", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "slug", "description": "The slug used to represent the organization in URLs", @@ -22568,6 +22605,102 @@ "enumValues": null, "possibleTypes": null }, + { + "kind": "INPUT_OBJECT", + "name": "OrganizationRevokeInactiveTokensAfterUpdateMutationInput", + "description": "Autogenerated input type of OrganizationRevokeInactiveTokensAfterUpdateMutation", + "fields": null, + "inputFields": [ + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "organizationId", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "SCALAR", + "name": "ID", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "revokeInactiveTokensAfter", + "description": null, + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "ENUM", + "name": "RevokeInactiveTokenPeriod", + "ofType": null + } + }, + "defaultValue": null, + "isDeprecated": false, + "deprecationReason": null + } + ], + "interfaces": null, + "enumValues": null, + "possibleTypes": null + }, + { + "kind": "OBJECT", + "name": "OrganizationRevokeInactiveTokensAfterUpdateMutationPayload", + "description": "Autogenerated return type of OrganizationRevokeInactiveTokensAfterUpdateMutation.", + "fields": [ + { + "name": "clientMutationId", + "description": "A unique identifier for the client performing the mutation.", + "args": [ + + ], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "organization", + "description": null, + "args": [ + + ], + "type": { + "kind": "OBJECT", + "name": "Organization", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + } + ], + "inputFields": null, + "interfaces": [ + + ], + "enumValues": null, + "possibleTypes": null + }, { "kind": "OBJECT", "name": "OrganizationSSO", @@ -28636,6 +28769,53 @@ ], "possibleTypes": null }, + { + "kind": "ENUM", + "name": "RevokeInactiveTokenPeriod", + "description": "API tokens with access to this organization will be automatically revoked after this many days of inactivity.", + "fields": null, + "inputFields": null, + "interfaces": null, + "enumValues": [ + { + "name": "DAYS_30", + "description": "Revoke organization access from API tokens after 30 days of inactivity", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DAYS_60", + "description": "Revoke organization access from API tokens after 60 days of inactivity", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DAYS_90", + "description": "Revoke organization access from API tokens after 90 days of inactivity", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DAYS_180", + "description": "Revoke organization access from API tokens after 180 days of inactivity", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "DAYS_365", + "description": "Revoke organization access from API tokens after 365 days of inactivity", + "isDeprecated": false, + "deprecationReason": null + }, + { + "name": "NEVER", + "description": "Never revoke organization access from inactive API tokens", + "isDeprecated": false, + "deprecationReason": null + } + ], + "possibleTypes": null + }, { "kind": "OBJECT", "name": "SCMPipelineSettings", diff --git a/data/nav_graphql.yml b/data/nav_graphql.yml index 9a34db497b..4bd64b6e5c 100644 --- a/data/nav_graphql.yml +++ b/data/nav_graphql.yml @@ -113,6 +113,8 @@ path: apis/graphql/schemas/mutation/organizationmemberdelete - name: organizationMemberUpdate path: apis/graphql/schemas/mutation/organizationmemberupdate + - name: organizationRevokeInactiveTokensAfterUpdate + path: apis/graphql/schemas/mutation/organizationrevokeinactivetokensafterupdate - name: pipelineArchive path: apis/graphql/schemas/mutation/pipelinearchive - name: pipelineCreate @@ -483,6 +485,8 @@ path: apis/graphql/schemas/object/organizationmemberupdatepayload - name: OrganizationPermissions path: apis/graphql/schemas/object/organizationpermissions + - name: OrganizationRevokeInactiveTokensAfterUpdateMutationPayload + path: apis/graphql/schemas/object/organizationrevokeinactivetokensafterupdatemutationpayload - name: OrganizationSSO path: apis/graphql/schemas/object/organizationsso - name: OrganizationSSOProvider @@ -831,6 +835,8 @@ path: apis/graphql/schemas/enum/pipelinevisibility - name: ResourceUsageType path: apis/graphql/schemas/enum/resourceusagetype + - name: RevokeInactiveTokenPeriod + path: apis/graphql/schemas/enum/revokeinactivetokenperiod - name: SSOAuthorizationState path: apis/graphql/schemas/enum/ssoauthorizationstate - name: SSOProviderSAMLRSAXMLSecurity @@ -947,6 +953,8 @@ path: apis/graphql/schemas/input-object/organizationmembersecurityinput - name: OrganizationMemberUpdateInput path: apis/graphql/schemas/input-object/organizationmemberupdateinput + - name: OrganizationRevokeInactiveTokensAfterUpdateMutationInput + path: apis/graphql/schemas/input-object/organizationrevokeinactivetokensafterupdatemutationinput - name: PipelineArchiveInput path: apis/graphql/schemas/input-object/pipelinearchiveinput - name: PipelineCreateInput diff --git a/pages/apis/graphql/schemas/enum/apiaccesstokenscopes.md b/pages/apis/graphql/schemas/enum/apiaccesstokenscopes.md index 0b3e7bf588..6ce83a4510 100644 --- a/pages/apis/graphql/schemas/enum/apiaccesstokenscopes.md +++ b/pages/apis/graphql/schemas/enum/apiaccesstokenscopes.md @@ -40,6 +40,6 @@ toc: false -

GRAPHQL

READ_AGENTS

READ_ARTIFACTS

READ_BUILD_LOGS

READ_BUILDS

READ_CLUSTERS

READ_FLAKY_TESTS

READ_JOB_ENV

READ_NOTIFICATION_SERVICES

READ_ORGANIZATIONS

READ_PIPELINES

READ_SUITES

READ_TEAMS

READ_USER

WRITE_AGENTS

WRITE_ARTIFACTS

WRITE_BUILD_LOGS

WRITE_BUILDS

WRITE_CLUSTERS

WRITE_NOTIFICATION_SERVICES

WRITE_PIPELINES

WRITE_SUITES

+

GRAPHQL

READ_AGENTS

READ_ARTIFACTS

READ_BUILD_LOGS

READ_BUILDS

READ_CLUSTERS

READ_JOB_ENV

READ_NOTIFICATION_SERVICES

READ_ORGANIZATIONS

READ_PIPELINES

READ_SUITES

READ_TEAMS

READ_USER

WRITE_AGENTS

WRITE_ARTIFACTS

WRITE_BUILD_LOGS

WRITE_BUILDS

WRITE_CLUSTERS

WRITE_NOTIFICATION_SERVICES

WRITE_PIPELINES

WRITE_SUITES

diff --git a/pages/apis/graphql/schemas/enum/auditsubjecttype.md b/pages/apis/graphql/schemas/enum/auditsubjecttype.md index a26b964a95..bb09486726 100644 --- a/pages/apis/graphql/schemas/enum/auditsubjecttype.md +++ b/pages/apis/graphql/schemas/enum/auditsubjecttype.md @@ -40,6 +40,6 @@ toc: false -

CLUSTER_PERMISSION

PIPELINE

AGENT_TOKEN

API_ACCESS_TOKEN

CLUSTER_QUEUE

CLUSTER_TOKEN

NOTIFICATION_SERVICE

ORGANIZATION

ORGANIZATION_INVITATION

PIPELINE_SCHEDULE

PIPELINE_TEMPLATE

TEAM

TEAM_MEMBER

TEAM_PIPELINE

TEAM_SUITE

SCM_SERVICE

SCM_PIPELINE_SETTINGS

SSO_PROVIDER

ORGANIZATION_MEMBER

SUITE_MONITOR

SCM_REPOSITORY_HOST

USER_EMAIL

SUITE

USER_TOTP

USER

CLUSTER

AUTHORIZATION

SUBSCRIPTION

+

SUBSCRIPTION

CLUSTER

AGENT_TOKEN

API_ACCESS_TOKEN

CLUSTER_QUEUE

CLUSTER_TOKEN

NOTIFICATION_SERVICE

ORGANIZATION

ORGANIZATION_INVITATION

PIPELINE_SCHEDULE

PIPELINE_TEMPLATE

TEAM

TEAM_MEMBER

TEAM_PIPELINE

TEAM_SUITE

SSO_PROVIDER

SCM_PIPELINE_SETTINGS

SCM_REPOSITORY_HOST

ORGANIZATION_MEMBER

SUITE_MONITOR

SUITE

SCM_SERVICE

USER_TOTP

USER_EMAIL

PIPELINE

USER

CLUSTER_PERMISSION

AUTHORIZATION

diff --git a/pages/apis/graphql/schemas/enum/revokeinactivetokenperiod.md b/pages/apis/graphql/schemas/enum/revokeinactivetokenperiod.md new file mode 100644 index 0000000000..83e1643b43 --- /dev/null +++ b/pages/apis/graphql/schemas/enum/revokeinactivetokenperiod.md @@ -0,0 +1,45 @@ +--- +toc: false +--- + + +

+ RevokeInactiveTokenPeriod + ENUM +

+ + + +

API tokens with access to this organization will be automatically revoked after this many days of inactivity.

+ + + + + + + + + + + + + + + + + +
+

ENUM Values

+

DAYS_30

Revoke organization access from API tokens after 30 days of inactivity

DAYS_60

Revoke organization access from API tokens after 60 days of inactivity

DAYS_90

Revoke organization access from API tokens after 90 days of inactivity

DAYS_180

Revoke organization access from API tokens after 180 days of inactivity

DAYS_365

Revoke organization access from API tokens after 365 days of inactivity

NEVER

Never revoke organization access from inactive API tokens

diff --git a/pages/apis/graphql/schemas/input_object/organizationrevokeinactivetokensafterupdatemutationinput.md b/pages/apis/graphql/schemas/input_object/organizationrevokeinactivetokensafterupdatemutationinput.md new file mode 100644 index 0000000000..9da75bb05c --- /dev/null +++ b/pages/apis/graphql/schemas/input_object/organizationrevokeinactivetokensafterupdatemutationinput.md @@ -0,0 +1,39 @@ +--- +toc: false +--- + + +

+ OrganizationRevokeInactiveTokensAfterUpdateMutationInput + INPUT_OBJECT +

+ + + +

Autogenerated input type of OrganizationRevokeInactiveTokensAfterUpdateMutation

+ + + + + + + + + + + +
+

Input Fields

+

clientMutationIdString!

A unique identifier for the client performing the mutation.

organizationIdID

revokeInactiveTokensAfterRevokeInactiveTokenPeriod

diff --git a/pages/apis/graphql/schemas/mutation/organizationrevokeinactivetokensafterupdate.md b/pages/apis/graphql/schemas/mutation/organizationrevokeinactivetokensafterupdate.md new file mode 100644 index 0000000000..8040b981bf --- /dev/null +++ b/pages/apis/graphql/schemas/mutation/organizationrevokeinactivetokensafterupdate.md @@ -0,0 +1,38 @@ +--- +toc: false +--- + + +

+ organizationRevokeInactiveTokensAfterUpdate + OrganizationRevokeInactiveTokensAfterUpdateMutationPayload + +

+ + + +

Specify the maximum timeframe to revoke organization access from inactive API tokens.

+ + + + + + + + + +
+

Arguments

+

inputOrganizationRevokeInactiveTokensAfterUpdateMutationInput

Parameters for OrganizationRevokeInactiveTokensAfterUpdateMutation

diff --git a/pages/apis/graphql/schemas/object/mutation.md b/pages/apis/graphql/schemas/object/mutation.md index c62b39ea1d..ec307240ed 100644 --- a/pages/apis/graphql/schemas/object/mutation.md +++ b/pages/apis/graphql/schemas/object/mutation.md @@ -32,6 +32,6 @@ toc: false -

agentStopAgentStopPayload!

Instruct an agent to stop accepting new build jobs and shut itself down.

Arguments

inputAgentStopInput

Parameters for AgentStop

agentTokenCreateAgentTokenCreatePayload!

Create a new agent registration token.

Arguments

inputAgentTokenCreateInput

Parameters for AgentTokenCreate

agentTokenRevokeAgentTokenRevokePayload!

Revoke an agent registration token.

Arguments

inputAgentTokenRevokeInput

Parameters for AgentTokenRevoke

apiAccessTokenCodeAuthorizeAPIAccessTokenCodeAuthorizeMutationPayload!

Authorize an API Access Token Code generated by an API Application. Please note this mutation is private and cannot be executed externally.

Arguments

inputAPIAccessTokenCodeAuthorizeMutationInput

Parameters for APIAccessTokenCodeAuthorizeMutation

buildAnnotateBuildAnnotatePayload!

Annotate a build with information to appear on the build page.

Arguments

inputBuildAnnotateInput

Parameters for BuildAnnotate

buildCancelBuildCancelPayload!

Cancel a build.

Arguments

inputBuildCancelInput

Parameters for BuildCancel

buildCreateBuildCreatePayload!

Create a build.

Arguments

inputBuildCreateInput

Parameters for BuildCreate

buildRebuildBuildRebuildPayload!

Rebuild a build.

Arguments

inputBuildRebuildInput

Parameters for BuildRebuild

clusterAgentTokenCreateClusterAgentTokenCreatePayload!

Create a new cluster agent token

Arguments

inputClusterAgentTokenCreateInput

Parameters for ClusterAgentTokenCreate

clusterAgentTokenRevokeClusterAgentTokenRevokePayload!

Revokes a cluster agent token

Arguments

inputClusterAgentTokenRevokeInput

Parameters for ClusterAgentTokenRevoke

clusterAgentTokenUpdateClusterAgentTokenUpdatePayload!

Updates a cluster agent token

Arguments

inputClusterAgentTokenUpdateInput

Parameters for ClusterAgentTokenUpdate

clusterCreateClusterCreatePayload!

Create a cluster.

Arguments

inputClusterCreateInput

Parameters for ClusterCreate

clusterDeleteClusterDeletePayload!

Delete a cluster.

Arguments

inputClusterDeleteInput

Parameters for ClusterDelete

clusterQueueCreateClusterQueueCreatePayload!

Create a cluster queue.

Arguments

inputClusterQueueCreateInput

Parameters for ClusterQueueCreate

clusterQueueDeleteClusterQueueDeletePayload!

Delete a cluster queue.

Arguments

inputClusterQueueDeleteInput

Parameters for ClusterQueueDelete

clusterQueuePauseDispatchClusterQueuePauseDispatchPayload!

This will prevent dispatch of jobs to agents on this queue. You can add an optional note describing the reason for pausing.

Arguments

inputClusterQueuePauseDispatchInput

Parameters for ClusterQueuePauseDispatch

clusterQueueResumeDispatchClusterQueueResumeDispatchPayload!

This will resume dispatch of jobs on this queue.

Arguments

inputClusterQueueResumeDispatchInput

Parameters for ClusterQueueResumeDispatch

clusterQueueUpdateClusterQueueUpdatePayload!

Updates a cluster queue.

Arguments

inputClusterQueueUpdateInput

Parameters for ClusterQueueUpdate

clusterUpdateClusterUpdatePayload!

Updates a cluster.

Arguments

inputClusterUpdateInput

Parameters for ClusterUpdate

emailCreateEmailCreatePayload!

Add a new email address for the current user

Arguments

inputEmailCreateInput

Parameters for EmailCreate

emailResendVerificationEmailResendVerificationPayload!

Resend a verification email.

Arguments

inputEmailResendVerificationInput

Parameters for EmailResendVerification

graphQLSnippetCreateGraphQLSnippetCreatePayload!

Create a GraphQL snippet.

Arguments

inputGraphQLSnippetCreateInput

Parameters for GraphQLSnippetCreate

jobTypeBlockUnblockJobTypeBlockUnblockPayload!

Unblocks a build's "Block pipeline" job.

Arguments

inputJobTypeBlockUnblockInput

Parameters for JobTypeBlockUnblock

jobTypeCommandCancelJobTypeCommandCancelPayload!

Cancel a job.

Arguments

inputJobTypeCommandCancelInput

Parameters for JobTypeCommandCancel

jobTypeCommandRetryJobTypeCommandRetryPayload!

Retry a job.

Arguments

inputJobTypeCommandRetryInput

Parameters for JobTypeCommandRetry

noticeDismissNoticeDismissPayload!

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

Arguments

inputNoticeDismissInput

Parameters for NoticeDismiss

organizationApiAccessTokenRevokeOrganizationAPIAccessTokenRevokeMutationPayload!

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.

Arguments

inputOrganizationAPIAccessTokenRevokeMutationInput

Parameters for OrganizationAPIAccessTokenRevokeMutation

organizationApiIpAllowlistUpdateOrganizationAPIIPAllowlistUpdateMutationPayload!

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.

Arguments

inputOrganizationAPIIPAllowlistUpdateMutationInput

Parameters for OrganizationAPIIPAllowlistUpdateMutation

organizationInvitationCreateOrganizationInvitationCreatePayload!

Send email invitations to this organization.

Arguments

inputOrganizationInvitationCreateInput

Parameters for OrganizationInvitationCreate

organizationInvitationResendOrganizationInvitationResendPayload!

Resend an organization invitation email.

Arguments

inputOrganizationInvitationResendInput

Parameters for OrganizationInvitationResend

organizationInvitationRevokeOrganizationInvitationRevokePayload!

Revoke an invitation to an organization so that it can no longer be accepted.

Arguments

inputOrganizationInvitationRevokeInput

Parameters for OrganizationInvitationRevoke

organizationMemberDeleteOrganizationMemberDeletePayload!

Remove a user from an organization.

Arguments

inputOrganizationMemberDeleteInput

Parameters for OrganizationMemberDelete

organizationMemberUpdateOrganizationMemberUpdatePayload!

Change a user's role within an organization.

Arguments

inputOrganizationMemberUpdateInput

Parameters for OrganizationMemberUpdate

pipelineArchivePipelineArchivePayload!

Archive a pipeline.

Arguments

inputPipelineArchiveInput

Parameters for PipelineArchive

pipelineCreatePipelineCreatePayload!

Create a pipeline.

Arguments

inputPipelineCreateInput

Parameters for PipelineCreate

pipelineCreateWebhookPipelineCreateWebhookPayload!

Create SCM webhooks for a pipeline.

Arguments

inputPipelineCreateWebhookInput

Parameters for PipelineCreateWebhook

pipelineDeletePipelineDeletePayload!

Delete a pipeline.

Arguments

inputPipelineDeleteInput

Parameters for PipelineDelete

pipelineFavoritePipelineFavoritePayload!

Favorite a pipeline.

Arguments

inputPipelineFavoriteInput

Parameters for PipelineFavorite

pipelineRotateWebhookURLPipelineRotateWebhookURLPayload!

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.

Arguments

inputPipelineRotateWebhookURLInput

Parameters for PipelineRotateWebhookURL

pipelineScheduleCreatePipelineScheduleCreatePayload!

Create a scheduled build on pipeline.

Arguments

inputPipelineScheduleCreateInput

Parameters for PipelineScheduleCreate

pipelineScheduleDeletePipelineScheduleDeletePayload!

Delete a scheduled build on pipeline.

Arguments

inputPipelineScheduleDeleteInput

Parameters for PipelineScheduleDelete

pipelineScheduleUpdatePipelineScheduleUpdatePayload!

Update a scheduled build on pipeline.

Arguments

inputPipelineScheduleUpdateInput

Parameters for PipelineScheduleUpdate

pipelineUnarchivePipelineUnarchivePayload!

Unarchive a pipeline.

Arguments

inputPipelineUnarchiveInput

Parameters for PipelineUnarchive

pipelineUpdatePipelineUpdatePayload!

Change the settings for a pipeline.

Arguments

inputPipelineUpdateInput

Parameters for PipelineUpdate

ssoProviderCreateSSOProviderCreatePayload!

Create a SSO provider.

Arguments

inputSSOProviderCreateInput

Parameters for SSOProviderCreate

ssoProviderDeleteSSOProviderDeletePayload!

Delete a SSO provider.

Arguments

inputSSOProviderDeleteInput

Parameters for SSOProviderDelete

ssoProviderDisableSSOProviderDisablePayload!

Disable a SSO provider.

Arguments

inputSSOProviderDisableInput

Parameters for SSOProviderDisable

ssoProviderEnableSSOProviderEnablePayload!

Enable a SSO provider.

Arguments

inputSSOProviderEnableInput

Parameters for SSOProviderEnable

ssoProviderUpdateSSOProviderUpdatePayload!

Change the settings for a SSO provider.

Arguments

inputSSOProviderUpdateInput

Parameters for SSOProviderUpdate

teamCreateTeamCreatePayload!

Create a team.

Arguments

inputTeamCreateInput

Parameters for TeamCreate

teamDeleteTeamDeletePayload!

Delete a team.

Arguments

inputTeamDeleteInput

Parameters for TeamDelete

teamMemberCreateTeamMemberCreatePayload!

Add a user to a team.

Arguments

inputTeamMemberCreateInput

Parameters for TeamMemberCreate

teamMemberDeleteTeamMemberDeletePayload!

Remove a user from a team.

Arguments

inputTeamMemberDeleteInput

Parameters for TeamMemberDelete

teamMemberUpdateTeamMemberUpdatePayload!

Update a user's role in a team.

Arguments

inputTeamMemberUpdateInput

Parameters for TeamMemberUpdate

teamPipelineCreateTeamPipelineCreatePayload!

Add a pipeline to a team.

Arguments

inputTeamPipelineCreateInput

Parameters for TeamPipelineCreate

teamPipelineDeleteTeamPipelineDeletePayload!

Remove a pipeline from a team.

Arguments

inputTeamPipelineDeleteInput

Parameters for TeamPipelineDelete

teamPipelineUpdateTeamPipelineUpdatePayload!

Update a pipeline's access level within a team.

Arguments

inputTeamPipelineUpdateInput

Parameters for TeamPipelineUpdate

teamSuiteCreateTeamSuiteCreatePayload!

Add a suite to a team.

Arguments

inputTeamSuiteCreateInput

Parameters for TeamSuiteCreate

teamSuiteDeleteTeamSuiteDeletePayload!

Remove a suite from a team.

Arguments

inputTeamSuiteDeleteInput

Parameters for TeamSuiteDelete

teamSuiteUpdateTeamSuiteUpdatePayload!

Update a suite's access level within a team.

Arguments

inputTeamSuiteUpdateInput

Parameters for TeamSuiteUpdate

teamUpdateTeamUpdatePayload!

Change the settings for a team.

Arguments

inputTeamUpdateInput

Parameters for TeamUpdate

totpActivateTOTPActivatePayload!

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.

Arguments

inputTOTPActivateInput

Parameters for TOTPActivate

totpCreateTOTPCreatePayload!

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.

Arguments

inputTOTPCreateInput

Parameters for TOTPCreate

totpDeleteTOTPDeletePayload!

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.

Arguments

inputTOTPDeleteInput

Parameters for TOTPDelete

totpRecoveryCodesRegenerateTOTPRecoveryCodesRegeneratePayload!

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.

Arguments

inputTOTPRecoveryCodesRegenerateInput

Parameters for TOTPRecoveryCodesRegenerate

+

agentStopAgentStopPayload!

Instruct an agent to stop accepting new build jobs and shut itself down.

Arguments

inputAgentStopInput

Parameters for AgentStop

agentTokenCreateAgentTokenCreatePayload!

Create a new agent registration token.

Arguments

inputAgentTokenCreateInput

Parameters for AgentTokenCreate

agentTokenRevokeAgentTokenRevokePayload!

Revoke an agent registration token.

Arguments

inputAgentTokenRevokeInput

Parameters for AgentTokenRevoke

apiAccessTokenCodeAuthorizeAPIAccessTokenCodeAuthorizeMutationPayload!

Authorize an API Access Token Code generated by an API Application. Please note this mutation is private and cannot be executed externally.

Arguments

inputAPIAccessTokenCodeAuthorizeMutationInput

Parameters for APIAccessTokenCodeAuthorizeMutation

buildAnnotateBuildAnnotatePayload!

Annotate a build with information to appear on the build page.

Arguments

inputBuildAnnotateInput

Parameters for BuildAnnotate

buildCancelBuildCancelPayload!

Cancel a build.

Arguments

inputBuildCancelInput

Parameters for BuildCancel

buildCreateBuildCreatePayload!

Create a build.

Arguments

inputBuildCreateInput

Parameters for BuildCreate

buildRebuildBuildRebuildPayload!

Rebuild a build.

Arguments

inputBuildRebuildInput

Parameters for BuildRebuild

clusterAgentTokenCreateClusterAgentTokenCreatePayload!

Create a new cluster agent token

Arguments

inputClusterAgentTokenCreateInput

Parameters for ClusterAgentTokenCreate

clusterAgentTokenRevokeClusterAgentTokenRevokePayload!

Revokes a cluster agent token

Arguments

inputClusterAgentTokenRevokeInput

Parameters for ClusterAgentTokenRevoke

clusterAgentTokenUpdateClusterAgentTokenUpdatePayload!

Updates a cluster agent token

Arguments

inputClusterAgentTokenUpdateInput

Parameters for ClusterAgentTokenUpdate

clusterCreateClusterCreatePayload!

Create a cluster.

Arguments

inputClusterCreateInput

Parameters for ClusterCreate

clusterDeleteClusterDeletePayload!

Delete a cluster.

Arguments

inputClusterDeleteInput

Parameters for ClusterDelete

clusterQueueCreateClusterQueueCreatePayload!

Create a cluster queue.

Arguments

inputClusterQueueCreateInput

Parameters for ClusterQueueCreate

clusterQueueDeleteClusterQueueDeletePayload!

Delete a cluster queue.

Arguments

inputClusterQueueDeleteInput

Parameters for ClusterQueueDelete

clusterQueuePauseDispatchClusterQueuePauseDispatchPayload!

This will prevent dispatch of jobs to agents on this queue. You can add an optional note describing the reason for pausing.

Arguments

inputClusterQueuePauseDispatchInput

Parameters for ClusterQueuePauseDispatch

clusterQueueResumeDispatchClusterQueueResumeDispatchPayload!

This will resume dispatch of jobs on this queue.

Arguments

inputClusterQueueResumeDispatchInput

Parameters for ClusterQueueResumeDispatch

clusterQueueUpdateClusterQueueUpdatePayload!

Updates a cluster queue.

Arguments

inputClusterQueueUpdateInput

Parameters for ClusterQueueUpdate

clusterUpdateClusterUpdatePayload!

Updates a cluster.

Arguments

inputClusterUpdateInput

Parameters for ClusterUpdate

emailCreateEmailCreatePayload!

Add a new email address for the current user

Arguments

inputEmailCreateInput

Parameters for EmailCreate

emailResendVerificationEmailResendVerificationPayload!

Resend a verification email.

Arguments

inputEmailResendVerificationInput

Parameters for EmailResendVerification

graphQLSnippetCreateGraphQLSnippetCreatePayload!

Create a GraphQL snippet.

Arguments

inputGraphQLSnippetCreateInput

Parameters for GraphQLSnippetCreate

jobTypeBlockUnblockJobTypeBlockUnblockPayload!

Unblocks a build's "Block pipeline" job.

Arguments

inputJobTypeBlockUnblockInput

Parameters for JobTypeBlockUnblock

jobTypeCommandCancelJobTypeCommandCancelPayload!

Cancel a job.

Arguments

inputJobTypeCommandCancelInput

Parameters for JobTypeCommandCancel

jobTypeCommandRetryJobTypeCommandRetryPayload!

Retry a job.

Arguments

inputJobTypeCommandRetryInput

Parameters for JobTypeCommandRetry

noticeDismissNoticeDismissPayload!

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

Arguments

inputNoticeDismissInput

Parameters for NoticeDismiss

organizationApiAccessTokenRevokeOrganizationAPIAccessTokenRevokeMutationPayload!

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.

Arguments

inputOrganizationAPIAccessTokenRevokeMutationInput

Parameters for OrganizationAPIAccessTokenRevokeMutation

organizationApiIpAllowlistUpdateOrganizationAPIIPAllowlistUpdateMutationPayload!

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.

Arguments

inputOrganizationAPIIPAllowlistUpdateMutationInput

Parameters for OrganizationAPIIPAllowlistUpdateMutation

organizationInvitationCreateOrganizationInvitationCreatePayload!

Send email invitations to this organization.

Arguments

inputOrganizationInvitationCreateInput

Parameters for OrganizationInvitationCreate

organizationInvitationResendOrganizationInvitationResendPayload!

Resend an organization invitation email.

Arguments

inputOrganizationInvitationResendInput

Parameters for OrganizationInvitationResend

organizationInvitationRevokeOrganizationInvitationRevokePayload!

Revoke an invitation to an organization so that it can no longer be accepted.

Arguments

inputOrganizationInvitationRevokeInput

Parameters for OrganizationInvitationRevoke

organizationMemberDeleteOrganizationMemberDeletePayload!

Remove a user from an organization.

Arguments

inputOrganizationMemberDeleteInput

Parameters for OrganizationMemberDelete

organizationMemberUpdateOrganizationMemberUpdatePayload!

Change a user's role within an organization.

Arguments

inputOrganizationMemberUpdateInput

Parameters for OrganizationMemberUpdate

organizationRevokeInactiveTokensAfterUpdateOrganizationRevokeInactiveTokensAfterUpdateMutationPayload!

Specify the maximum timeframe to revoke organization access from inactive API tokens.

Arguments

inputOrganizationRevokeInactiveTokensAfterUpdateMutationInput

Parameters for OrganizationRevokeInactiveTokensAfterUpdateMutation

pipelineArchivePipelineArchivePayload!

Archive a pipeline.

Arguments

inputPipelineArchiveInput

Parameters for PipelineArchive

pipelineCreatePipelineCreatePayload!

Create a pipeline.

Arguments

inputPipelineCreateInput

Parameters for PipelineCreate

pipelineCreateWebhookPipelineCreateWebhookPayload!

Create SCM webhooks for a pipeline.

Arguments

inputPipelineCreateWebhookInput

Parameters for PipelineCreateWebhook

pipelineDeletePipelineDeletePayload!

Delete a pipeline.

Arguments

inputPipelineDeleteInput

Parameters for PipelineDelete

pipelineFavoritePipelineFavoritePayload!

Favorite a pipeline.

Arguments

inputPipelineFavoriteInput

Parameters for PipelineFavorite

pipelineRotateWebhookURLPipelineRotateWebhookURLPayload!

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.

Arguments

inputPipelineRotateWebhookURLInput

Parameters for PipelineRotateWebhookURL

pipelineScheduleCreatePipelineScheduleCreatePayload!

Create a scheduled build on pipeline.

Arguments

inputPipelineScheduleCreateInput

Parameters for PipelineScheduleCreate

pipelineScheduleDeletePipelineScheduleDeletePayload!

Delete a scheduled build on pipeline.

Arguments

inputPipelineScheduleDeleteInput

Parameters for PipelineScheduleDelete

pipelineScheduleUpdatePipelineScheduleUpdatePayload!

Update a scheduled build on pipeline.

Arguments

inputPipelineScheduleUpdateInput

Parameters for PipelineScheduleUpdate

pipelineUnarchivePipelineUnarchivePayload!

Unarchive a pipeline.

Arguments

inputPipelineUnarchiveInput

Parameters for PipelineUnarchive

pipelineUpdatePipelineUpdatePayload!

Change the settings for a pipeline.

Arguments

inputPipelineUpdateInput

Parameters for PipelineUpdate

ssoProviderCreateSSOProviderCreatePayload!

Create a SSO provider.

Arguments

inputSSOProviderCreateInput

Parameters for SSOProviderCreate

ssoProviderDeleteSSOProviderDeletePayload!

Delete a SSO provider.

Arguments

inputSSOProviderDeleteInput

Parameters for SSOProviderDelete

ssoProviderDisableSSOProviderDisablePayload!

Disable a SSO provider.

Arguments

inputSSOProviderDisableInput

Parameters for SSOProviderDisable

ssoProviderEnableSSOProviderEnablePayload!

Enable a SSO provider.

Arguments

inputSSOProviderEnableInput

Parameters for SSOProviderEnable

ssoProviderUpdateSSOProviderUpdatePayload!

Change the settings for a SSO provider.

Arguments

inputSSOProviderUpdateInput

Parameters for SSOProviderUpdate

teamCreateTeamCreatePayload!

Create a team.

Arguments

inputTeamCreateInput

Parameters for TeamCreate

teamDeleteTeamDeletePayload!

Delete a team.

Arguments

inputTeamDeleteInput

Parameters for TeamDelete

teamMemberCreateTeamMemberCreatePayload!

Add a user to a team.

Arguments

inputTeamMemberCreateInput

Parameters for TeamMemberCreate

teamMemberDeleteTeamMemberDeletePayload!

Remove a user from a team.

Arguments

inputTeamMemberDeleteInput

Parameters for TeamMemberDelete

teamMemberUpdateTeamMemberUpdatePayload!

Update a user's role in a team.

Arguments

inputTeamMemberUpdateInput

Parameters for TeamMemberUpdate

teamPipelineCreateTeamPipelineCreatePayload!

Add a pipeline to a team.

Arguments

inputTeamPipelineCreateInput

Parameters for TeamPipelineCreate

teamPipelineDeleteTeamPipelineDeletePayload!

Remove a pipeline from a team.

Arguments

inputTeamPipelineDeleteInput

Parameters for TeamPipelineDelete

teamPipelineUpdateTeamPipelineUpdatePayload!

Update a pipeline's access level within a team.

Arguments

inputTeamPipelineUpdateInput

Parameters for TeamPipelineUpdate

teamSuiteCreateTeamSuiteCreatePayload!

Add a suite to a team.

Arguments

inputTeamSuiteCreateInput

Parameters for TeamSuiteCreate

teamSuiteDeleteTeamSuiteDeletePayload!

Remove a suite from a team.

Arguments

inputTeamSuiteDeleteInput

Parameters for TeamSuiteDelete

teamSuiteUpdateTeamSuiteUpdatePayload!

Update a suite's access level within a team.

Arguments

inputTeamSuiteUpdateInput

Parameters for TeamSuiteUpdate

teamUpdateTeamUpdatePayload!

Change the settings for a team.

Arguments

inputTeamUpdateInput

Parameters for TeamUpdate

totpActivateTOTPActivatePayload!

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.

Arguments

inputTOTPActivateInput

Parameters for TOTPActivate

totpCreateTOTPCreatePayload!

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.

Arguments

inputTOTPCreateInput

Parameters for TOTPCreate

totpDeleteTOTPDeletePayload!

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.

Arguments

inputTOTPDeleteInput

Parameters for TOTPDelete

totpRecoveryCodesRegenerateTOTPRecoveryCodesRegeneratePayload!

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.

Arguments

inputTOTPRecoveryCodesRegenerateInput

Parameters for TOTPRecoveryCodesRegenerate

diff --git a/pages/apis/graphql/schemas/object/organization.md b/pages/apis/graphql/schemas/object/organization.md index 5461aecf05..8824112ada 100644 --- a/pages/apis/graphql/schemas/object/organization.md +++ b/pages/apis/graphql/schemas/object/organization.md @@ -32,7 +32,7 @@ toc: false -

agentTokensAgentTokenConnection!

Returns agent access tokens for an Organization. By default returns all tokens, whether revoked or non-revoked.

Arguments

firstInt!

lastInt!

revokedBoolean!

Filter tokens by whether they are revoked or not

agentsAgentConnection!

Arguments

firstInt!

afterString!

lastInt!

beforeString!

searchString!

Search agents for the given query terms case insensitively across name and meta data

metaDataString

Filter agents to those only having the matching meta data

clusterID!

Filter agents by membership of a given cluster

clusterQueueID

Filter agents to those within a given cluster queue

clusteredBoolean!

Pass false to exclude agents that belong to a cluster queue

Default value: true

isRunningJobBoolean!

Filter agents by whether they are running a job or not

allowedApiIpAddressesString!

A space-separated allowlist of IP addresses that can access the organization via the GraphQL or REST API

apiAccessTokensOrganizationAPIAccessTokenConnection

Returns user API access tokens that can access this organization

Arguments

afterString!

Returns the elements in the list that come after the specified cursor.

beforeString!

Returns the elements in the list that come before the specified cursor.

firstInt!

Returns the first n elements from the list.

lastInt!

Returns the last n elements from the list.

auditEventsOrganizationAuditEventConnection!

Arguments

firstInt!

afterString!

lastInt!

beforeString!

occurredAtFromDateTime!

Filter events which occurred from the given date and time

occurredAtToDateTime!

Filter events which occurred until the given date and time

typeAuditEventType

Filter the events by type

actorTypeAuditActorType

Filter the events by the type of actor who initiated them

actorID

Filter the events by the IDs of the actors who initiated them

subjectTypeAuditSubjectType

Filter the events by the type of subject they relate to

subjectID

Filter the events by the IDs of the subject they relate to

orderOrganizationAuditEventOrders!

Order the events

Default value: RECENTLY_OCCURRED

subjectUUIDID

Filter the events by the UUIDs of the subject they relate to

clusterCluster!

Return cluster in the Organization by UUID

Arguments

idID

clustersClusterConnection!

Returns clusters for an Organization

Arguments

firstInt!

Returns the first n elements from the list.

afterString!

Returns the elements in the list that come after the specified cursor.

lastInt!

Returns the last n elements from the list.

beforeString!

Returns the elements in the list that come before the specified cursor.

orderClusterOrder!

Order the clusters

Default value: NAME

iconUrlString!

The URL to an icon representing this organization

idID

invitationsOrganizationInvitationConnection!

Arguments

firstInt!

afterString!

lastInt!

beforeString!

stateOrganizationInvitationStates

orderOrganizationInvitationOrders!

Order the invitations

Default value: RECENTLY_CREATED

isTeamsEnabledBoolean

Whether teams is enabled for this organization

jobsJobConnection!

Arguments

firstInt!

Returns the first n elements from the list.

afterString!

Returns the elements in the list that come after the specified cursor.

lastInt!

Returns the last n elements from the list.

beforeString!

Returns the elements in the list that come before the specified cursor.

typeJobTypes

stateJobStates

priorityJobPrioritySearch!

agentQueryRulesString

concurrencyJobConcurrencySearch!

passedBoolean!

Whether or not the command job passed. Passing false will return all failed jobs (including "soft failed" jobs)

stepJobStepSearch!

Filtering jobs based on related step information

orderJobOrder!

Order the jobs

Default value: RECENTLY_CREATED

clusterID!

Filter jobs by membership of a given cluster

clusterQueueID

Filter jobs to those within a given cluster queue

clusteredBoolean!

Pass false to exclude jobs that belong to a cluster queue

Default value: true

membersOrganizationMemberConnection!

Returns users within the organization

Arguments

firstInt!

afterString!

lastInt!

beforeString!

searchString!

Search members named like the given query case insensitively

emailString!

The primary email of the team member

teamTeamSelector!

Filter the members by team

roleOrganizationMemberRole

Search members by their role

securityOrganizationMemberSecurityInput!

ssoOrganizationMemberSSOInput!

orderOrganizationMemberOrder!

Order the members

Default value: RECENTLY_CREATED

nameString

The name of the organization

permissionsOrganizationPermissions

pipelinesPipelineConnection!

Return all the pipelines the current user has access to for this organization

Arguments

firstInt!

afterString!

lastInt!

beforeString!

searchString!

Search pipelines named like the given query case insensitively

repositoryPipelineRepositoryInput!

clusterID!

Filter pipelines by membership of a given cluster

clusteredBoolean!

Pass false to exclude pipelines that belong to a cluster

Default value: true

archivedBoolean!

Filter pipelines based on whether or not they've been archived. If not provided, all pipelines are returned regardless of archived state.

teamTeamSelector!

Filter the pipelines by team

favoriteBoolean!

Only return favorited pipelines

orderPipelineOrders!

Order the pipelines

Default value: RECENTLY_CREATED

tagsString

Filter pipelines with those that have particular tags

createdAtFromDateTime!

createdAtToDateTime!

publicBoolean

Whether this organization is visible to everyone, including people outside it

slugString

The slug used to represent the organization in URLs

ssoOrganizationSSO!

The single sign-on configuration of this organization

ssoProvidersSSOProviderConnection!

Single sign on providers created for an organization

Arguments

firstInt!

Returns the first n elements from the list.

afterString!

Returns the elements in the list that come after the specified cursor.

lastInt!

Returns the last n elements from the list.

beforeString!

Returns the elements in the list that come before the specified cursor.

suitesSuiteConnection!

Return all the suite the current user has access to for this organization

Arguments

firstInt!

afterString!

lastInt!

beforeString!

searchString!

Search suites named like the given query case insensitively

teamTeamSelector!

Filter the suites by team

orderSuiteOrders!

Order the suites

Default value: RECENTLY_CREATED

createdAtFromDateTime!

createdAtToDateTime!

teamsTeamConnection!

Returns teams within the organization that the viewer can see

Arguments

firstInt!

afterString!

lastInt!

beforeString!

searchString!

Search teams

pipelinePipelineSelector!

Filter teams by pipeline

userUserSelector!

Filter teams by user membership

privacyTeamPrivacy

Search teams by their privacy

orderTeamOrder!

Order the teams

Default value: NAME

usageUsageUnionConnection

Returns the resource usage data for this organization.

Arguments

afterString!

Returns the elements in the list that come after the specified cursor.

beforeString!

Returns the elements in the list that come before the specified cursor.

firstInt!

Returns the first n elements from the list.

lastInt!

Returns the last n elements from the list.

aggregatedOnFromISO8601Date!

Filter aggregations performed from this date

aggregatedOnToISO8601Date!

Filter aggregations performed until this date

resourceResourceUsageType

Filter results by resource type

Default value: [JOB_MINUTES, TEST_EXECUTIONS]

pipelineIdsID

Filter results by the associated Pipeline ID

Default value: []

suiteIdsID

Filter results by the associated Suite ID

Default value: []

uuidString

The public UUID for this organization

+

agentTokensAgentTokenConnection!

Returns agent access tokens for an Organization. By default returns all tokens, whether revoked or non-revoked.

Arguments

firstInt!

lastInt!

revokedBoolean!

Filter tokens by whether they are revoked or not

agentsAgentConnection!

Arguments

firstInt!

afterString!

lastInt!

beforeString!

searchString!

Search agents for the given query terms case insensitively across name and meta data

metaDataString

Filter agents to those only having the matching meta data

clusterID!

Filter agents by membership of a given cluster

clusterQueueID

Filter agents to those within a given cluster queue

clusteredBoolean!

Pass false to exclude agents that belong to a cluster queue

Default value: true

isRunningJobBoolean!

Filter agents by whether they are running a job or not

allowedApiIpAddressesString!

A space-separated allowlist of IP addresses that can access the organization via the GraphQL or REST API

apiAccessTokensOrganizationAPIAccessTokenConnection

Returns user API access tokens that can access this organization

Arguments

afterString!

Returns the elements in the list that come after the specified cursor.

beforeString!

Returns the elements in the list that come before the specified cursor.

firstInt!

Returns the first n elements from the list.

lastInt!

Returns the last n elements from the list.

auditEventsOrganizationAuditEventConnection!

Arguments

firstInt!

afterString!

lastInt!

beforeString!

occurredAtFromDateTime!

Filter events which occurred from the given date and time

occurredAtToDateTime!

Filter events which occurred until the given date and time

typeAuditEventType

Filter the events by type

actorTypeAuditActorType

Filter the events by the type of actor who initiated them

actorID

Filter the events by the IDs of the actors who initiated them

subjectTypeAuditSubjectType

Filter the events by the type of subject they relate to

subjectID

Filter the events by the IDs of the subject they relate to

orderOrganizationAuditEventOrders!

Order the events

Default value: RECENTLY_OCCURRED

subjectUUIDID

Filter the events by the UUIDs of the subject they relate to

clusterCluster!

Return cluster in the Organization by UUID

Arguments

idID

clustersClusterConnection!

Returns clusters for an Organization

Arguments

firstInt!

Returns the first n elements from the list.

afterString!

Returns the elements in the list that come after the specified cursor.

lastInt!

Returns the last n elements from the list.

beforeString!

Returns the elements in the list that come before the specified cursor.

orderClusterOrder!

Order the clusters

Default value: NAME

iconUrlString!

The URL to an icon representing this organization

idID

invitationsOrganizationInvitationConnection!

Arguments

firstInt!

afterString!

lastInt!

beforeString!

stateOrganizationInvitationStates

orderOrganizationInvitationOrders!

Order the invitations

Default value: RECENTLY_CREATED

isTeamsEnabledBoolean

Whether teams is enabled for this organization

jobsJobConnection!

Arguments

firstInt!

Returns the first n elements from the list.

afterString!

Returns the elements in the list that come after the specified cursor.

lastInt!

Returns the last n elements from the list.

beforeString!

Returns the elements in the list that come before the specified cursor.

typeJobTypes

stateJobStates

priorityJobPrioritySearch!

agentQueryRulesString

concurrencyJobConcurrencySearch!

passedBoolean!

Whether or not the command job passed. Passing false will return all failed jobs (including "soft failed" jobs)

stepJobStepSearch!

Filtering jobs based on related step information

orderJobOrder!

Order the jobs

Default value: RECENTLY_CREATED

clusterID!

Filter jobs by membership of a given cluster

clusterQueueID

Filter jobs to those within a given cluster queue

clusteredBoolean!

Pass false to exclude jobs that belong to a cluster queue

Default value: true

membersOrganizationMemberConnection!

Returns users within the organization

Arguments

firstInt!

afterString!

lastInt!

beforeString!

searchString!

Search members named like the given query case insensitively

emailString!

The primary email of the team member

teamTeamSelector!

Filter the members by team

roleOrganizationMemberRole

Search members by their role

securityOrganizationMemberSecurityInput!

ssoOrganizationMemberSSOInput!

orderOrganizationMemberOrder!

Order the members

Default value: RECENTLY_CREATED

nameString

The name of the organization

permissionsOrganizationPermissions

pipelinesPipelineConnection!

Return all the pipelines the current user has access to for this organization

Arguments

firstInt!

afterString!

lastInt!

beforeString!

searchString!

Search pipelines named like the given query case insensitively

repositoryPipelineRepositoryInput!

clusterID!

Filter pipelines by membership of a given cluster

clusteredBoolean!

Pass false to exclude pipelines that belong to a cluster

Default value: true

archivedBoolean!

Filter pipelines based on whether or not they've been archived. If not provided, all pipelines are returned regardless of archived state.

teamTeamSelector!

Filter the pipelines by team

favoriteBoolean!

Only return favorited pipelines

orderPipelineOrders!

Order the pipelines

Default value: RECENTLY_CREATED

tagsString

Filter pipelines with those that have particular tags

createdAtFromDateTime!

createdAtToDateTime!

publicBoolean

Whether this organization is visible to everyone, including people outside it

revokeInactiveTokensAfterRevokeInactiveTokenPeriod!

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.

slugString

The slug used to represent the organization in URLs

ssoOrganizationSSO!

The single sign-on configuration of this organization

ssoProvidersSSOProviderConnection!

Single sign on providers created for an organization

Arguments

firstInt!

Returns the first n elements from the list.

afterString!

Returns the elements in the list that come after the specified cursor.

lastInt!

Returns the last n elements from the list.

beforeString!

Returns the elements in the list that come before the specified cursor.

suitesSuiteConnection!

Return all the suite the current user has access to for this organization

Arguments

firstInt!

afterString!

lastInt!

beforeString!

searchString!

Search suites named like the given query case insensitively

teamTeamSelector!

Filter the suites by team

orderSuiteOrders!

Order the suites

Default value: RECENTLY_CREATED

createdAtFromDateTime!

createdAtToDateTime!

teamsTeamConnection!

Returns teams within the organization that the viewer can see

Arguments

firstInt!

afterString!

lastInt!

beforeString!

searchString!

Search teams

pipelinePipelineSelector!

Filter teams by pipeline

userUserSelector!

Filter teams by user membership

privacyTeamPrivacy

Search teams by their privacy

orderTeamOrder!

Order the teams

Default value: NAME

usageUsageUnionConnection

Returns the resource usage data for this organization.

Arguments

afterString!

Returns the elements in the list that come after the specified cursor.

beforeString!

Returns the elements in the list that come before the specified cursor.

firstInt!

Returns the first n elements from the list.

lastInt!

Returns the last n elements from the list.

aggregatedOnFromISO8601Date!

Filter aggregations performed from this date

aggregatedOnToISO8601Date!

Filter aggregations performed until this date

resourceResourceUsageType

Filter results by resource type

Default value: [JOB_MINUTES, TEST_EXECUTIONS]

pipelineIdsID

Filter results by the associated Pipeline ID

Default value: []

suiteIdsID

Filter results by the associated Suite ID

Default value: []

uuidString

The public UUID for this organization

diff --git a/pages/apis/graphql/schemas/object/organizationrevokeinactivetokensafterupdatemutationpayload.md b/pages/apis/graphql/schemas/object/organizationrevokeinactivetokensafterupdatemutationpayload.md new file mode 100644 index 0000000000..68dd74e626 --- /dev/null +++ b/pages/apis/graphql/schemas/object/organizationrevokeinactivetokensafterupdatemutationpayload.md @@ -0,0 +1,37 @@ +--- +toc: false +--- + + +

+ OrganizationRevokeInactiveTokensAfterUpdateMutationPayload + OBJECT +

+ + + +

Autogenerated return type of OrganizationRevokeInactiveTokensAfterUpdateMutation.

+ + + + + + + + + +
+

Fields

+

clientMutationIdString!

A unique identifier for the client performing the mutation.

organizationOrganization!

From af2b5a8abdabe8a64a986f4b17ebbb2f7baa879e Mon Sep 17 00:00:00 2001 From: Amy <47379003+amybiyuliu@users.noreply.github.com> Date: Wed, 19 Jul 2023 10:37:20 +0930 Subject: [PATCH 118/118] add created_at to runs#index and runs#show (#2305) Co-authored-by: Amy Liu --- pages/apis/rest_api/analytics/runs.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pages/apis/rest_api/analytics/runs.md b/pages/apis/rest_api/analytics/runs.md index a2a07613b0..57013816b2 100644 --- a/pages/apis/rest_api/analytics/runs.md +++ b/pages/apis/rest_api/analytics/runs.md @@ -15,7 +15,8 @@ curl "https://api.buildkite.com/v2/analytics/organizations/{org.slug}/suites/{su "branch": "main", "commit_sha": "1c3214fcceb2c14579a2c3c50cd78f1442fd8936", "url": "https://api.buildkite.com/v2/analytics/organizations/my_great_org/suites/my_suite_slug/runs/64374307-12ab-4b13-a3f3-6a408f644ea2", - "web_url":"https://buildkite.com/organizations/my_great_org/analytics/suites/my_suite_slug/runs/64374307-12ab-4b13-a3f3-6a408f644ea2" + "web_url": "https://buildkite.com/organizations/my_great_org/analytics/suites/my_suite_slug/runs/64374307-12ab-4b13-a3f3-6a408f644ea2", + "created_at": "2023-06-25T05:32:53.228Z" } ] ``` @@ -36,7 +37,8 @@ curl "https://api.buildkite.com/v2/analytics/organizations/{org.slug}/suites/{su "branch": "main", "commit_sha": "1c3214fcceb2c14579a2c3c50cd78f1442fd8936", "url": "https://api.buildkite.com/v2/analytics/organizations/my_great_org/suites/my_suite_slug/runs/64374307-12ab-4b13-a3f3-6a408f644ea2", - "web_url":"https://buildkite.com/organizations/my_great_org/analytics/suites/my_suite_slug/runs/64374307-12ab-4b13-a3f3-6a408f644ea2" + "web_url": "https://buildkite.com/organizations/my_great_org/analytics/suites/my_suite_slug/runs/64374307-12ab-4b13-a3f3-6a408f644ea2", + "created_at": "2023-06-25T05:32:53.228Z" } ```