diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 727e2bea..f87262aa 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "0.14.0"
+ ".": "0.15.0"
}
diff --git a/.stats.yml b/.stats.yml
index 82c3873e..c248682d 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
configured_endpoints: 193
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-dabc0ff98cd7b9d91850b3c0dbada4e487e698333cd0b7257959e4819d9a29d6.yml
-openapi_spec_hash: b974bdc6025a26cfa62857bf74ec379b
-config_hash: 13514c5eb422e4eb01767e718798de1e
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod/gitpod-5c5e706fd0877a91f01455f03ef01c45106b1fad3b4aef5967807bce81bcdd53.yml
+openapi_spec_hash: 9d64ab76ba1843ae85b5c719c2a90a3c
+config_hash: 9052d3b03d620cf6871184b15487e020
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c4a175c6..9e5278d6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,53 @@
# Changelog
+## 0.15.0 (2026-05-12)
+
+Full Changelog: [v0.14.0...v0.15.0](https://github.com/gitpod-io/gitpod-sdk-typescript/compare/v0.14.0...v0.15.0)
+
+### Features
+
+* **api:** add accessToken field to runners response types ([90fa2a8](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/90fa2a8c112f3717cd08c0cc25a64cfe0d880534))
+* **api:** add agent_execution_cnf capability to runners ([e96ca1a](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/e96ca1a49605a2ddfccd4288862f5721d1d91ceb))
+* **api:** add allowUnverifiedEmailScimFallbackMatch to scim_configurations ([0c94086](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/0c940860f8be53265078463c9ef17a3a2d70b234))
+* **api:** add credential_proxy to secrets, remove format from environments ([1e6190f](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/1e6190f898a3bfd82c6431734bea4adad3c1ae37))
+* **api:** add goal field to agent execution status ([af7aefc](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/af7aefc796d2bebbcac50136ea1cafd9c21a85c5))
+* **api:** add incident trigger to WorkflowTrigger and WorkflowExecution ([eb856ef](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/eb856efd3fbac51d1c8556faef976e9a6f8dd09b))
+* **api:** add integration_id, update webhook_id in WorkflowTrigger ([e1591e6](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/e1591e617c7e29729f6ada19f03fa53a4161a1c3))
+* **api:** add maxPortAdmissionLevel to organization policies ([9fc32dc](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/9fc32dcfbf9aab465f71b2d84227318826e589ee))
+* **api:** add oldPath field to EnvironmentStatus file changes ([e179ba6](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/e179ba6bb9bc0ca5a37262a15235e5f9185a98f6))
+* **api:** add OPENAI_AUTO model option to agents ([ae690a1](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/ae690a1a744c174030a9679206f02372fd06af90))
+* **api:** add opus 4.7 model support to agent execution ([27772ea](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/27772ea9c32c3336e654df4675500ec83ab01f6a))
+* **api:** add pagination and search to runners listScmOrganizations method ([6a6e0a8](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/6a6e0a84e2a9daf23db95877e0b0c015fb51a9c4))
+* **api:** add port_authentication capability to RunnerCapability ([c8eb1d6](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/c8eb1d63e97c6570e5156f90c58e29141ed1e68c))
+* **api:** add prebuild trigger value to automations ([452d5e0](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/452d5e08209708511f3505402a1b9bd883f59721))
+* **api:** add project_creation_defaults field to organization policies ([7d70a05](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/7d70a050bf8bd1a320c67df55d4c0816a71fbe8d))
+* **api:** add PULL_REQUEST_EVENT_REVIEW_REQUESTED event type to WorkflowTrigger ([a7fe947](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/a7fe947b77f988afdc6e93d77e7629991b6709f3))
+* **api:** add readinessTimeout to automations and services ([3e90e74](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/3e90e745e1a3929292bef99678be2b6e18363b4b))
+* **api:** add RESOURCE_ROLE_ORG_ENVIRONMENTS_READER to ResourceRole ([9f9f219](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/9f9f21920fe179fcce2d9166f777449d011f1b74))
+* **api:** add UserInputMetadata type to agents ([6c834b9](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/6c834b99652dd3da17781e08d5449480cd835fcd))
+* **api:** remove terminal field from RunsOn ([85d6ef2](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/85d6ef2d704eb140512d7edf3c1e6495f1da12d5))
+* support setting headers via env ([bed4904](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/bed49045e5f23a7f683a8b8603cf1b50a2f7a433))
+* **types:** add Report and related schema types to automations ([f9c394a](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/f9c394ab4ed90dcea009c21471bbeeec3871bdd6))
+
+
+### Chores
+
+* **format:** run eslint and prettier separately ([0782de2](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/0782de2e4cc157507a34c43a5db1a8f1700db98c))
+* **formatter:** run prettier and eslint separately ([e354bf8](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/e354bf849b97e421b9694b55a1d7b0f41e7ba4fe))
+* **internal:** codegen related update ([f0055f7](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/f0055f7c6bb9420bc0ae3c6267651393832213f3))
+* **internal:** codegen related update ([afd15ee](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/afd15eebed86ae40238ac2e8a34c448e48097aed))
+* **internal:** codegen related update ([cfd1e9a](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/cfd1e9a15f844e398d089cfc9189b604628b9c33))
+* **internal:** more robust bootstrap script ([306e1fa](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/306e1fa51525f0ba764898ed4ee57a4ccb002d8c))
+* **internal:** regenerate SDK with no functional changes ([c67a192](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/c67a192f31447d27e1a5b077ea123cf9f18b402f))
+* redact api-key headers in debug logs ([2598350](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/2598350538c8203fdb338f4fa41b1e81addd485b))
+* **types:** remove deprecated accessToken from runners response types ([c521a3e](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/c521a3efa0f39ccea79c239fa8ffe208c901309a))
+
+
+### Documentation
+
+* **types:** clarify trigger restrictions in AutomationTrigger ([fadafca](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/fadafca48ec3301694befe6e3d71f14321642500))
+* **types:** deprecate isAdmin in runners organization response ([7aa6263](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/7aa6263936e7a45c43801dc818e384d43e1249c5))
+
## 0.14.0 (2026-04-02)
Full Changelog: [v0.13.0...v0.14.0](https://github.com/gitpod-io/gitpod-sdk-typescript/compare/v0.13.0...v0.14.0)
diff --git a/api.md b/api.md
index 96536d55..31ecf242 100644
--- a/api.md
+++ b/api.md
@@ -68,6 +68,7 @@ Types:
- Role
- Type
- UserInputBlock
+- UserInputMetadata
- WakeEvent
- AgentCreateExecutionConversationTokenResponse
- AgentCreatePromptResponse
@@ -479,6 +480,7 @@ Types:
- CustomSecurityAgent
- KernelControlsAction
- OrganizationPolicies
+- ProjectCreationDefaults
- SecurityAgentPolicy
- VetoExecPolicy
- PolicyRetrieveResponse
@@ -670,7 +672,7 @@ Methods:
- client.runners.checkRepositoryAccess({ ...params }) -> RunnerCheckRepositoryAccessResponse
- client.runners.createLogsToken({ ...params }) -> RunnerCreateLogsTokenResponse
- client.runners.createRunnerToken({ ...params }) -> RunnerCreateRunnerTokenResponse
-- client.runners.listScmOrganizations({ ...params }) -> RunnerListScmOrganizationsResponse
+- client.runners.listScmOrganizations({ ...params }) -> RunnerListScmOrganizationsResponsesOrganizationsPage
- client.runners.parseContextURL({ ...params }) -> RunnerParseContextURLResponse
- client.runners.searchRepositories({ ...params }) -> RunnerSearchRepositoriesResponse
diff --git a/eslint.config.mjs b/eslint.config.mjs
index a73ce380..0fd72164 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -1,7 +1,6 @@
// @ts-check
import tseslint from 'typescript-eslint';
import unusedImports from 'eslint-plugin-unused-imports';
-import prettier from 'eslint-plugin-prettier';
export default tseslint.config(
{
@@ -14,11 +13,9 @@ export default tseslint.config(
plugins: {
'@typescript-eslint': tseslint.plugin,
'unused-imports': unusedImports,
- prettier,
},
rules: {
'no-unused-vars': 'off',
- 'prettier/prettier': 'error',
'unused-imports/no-unused-imports': 'error',
'no-restricted-imports': [
'error',
diff --git a/package.json b/package.json
index 7364c376..34b4be8c 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@gitpod/sdk",
- "version": "0.14.0",
+ "version": "0.15.0",
"description": "The official TypeScript library for the Gitpod API",
"author": "Gitpod ",
"types": "dist/index.d.ts",
@@ -38,7 +38,6 @@
"@typescript-eslint/eslint-plugin": "8.31.1",
"@typescript-eslint/parser": "8.31.1",
"eslint": "^9.39.1",
- "eslint-plugin-prettier": "^5.4.1",
"eslint-plugin-unused-imports": "^4.1.4",
"iconv-lite": "^0.6.3",
"jest": "^29.4.0",
diff --git a/scripts/bootstrap b/scripts/bootstrap
index 3417182b..7db27b1b 100755
--- a/scripts/bootstrap
+++ b/scripts/bootstrap
@@ -4,7 +4,7 @@ set -e
cd "$(dirname "$0")/.."
-if [ -f "Brewfile" ] && [ "$(uname -s)" = "Darwin" ] && [ "$SKIP_BREW" != "1" ] && [ -t 0 ]; then
+if [ -f "Brewfile" ] && [ "$(uname -s)" = "Darwin" ] && [ "${SKIP_BREW:-}" != "1" ] && [ -t 0 ]; then
brew bundle check >/dev/null 2>&1 || {
echo -n "==> Install Homebrew dependencies? (y/N): "
read -r response
diff --git a/scripts/fast-format b/scripts/fast-format
index 53721ac0..f1873aef 100755
--- a/scripts/fast-format
+++ b/scripts/fast-format
@@ -31,10 +31,7 @@ if ! [ -z "$ESLINT_FILES" ]; then
fi
echo "==> Running prettier --write"
-# format things eslint didn't
-PRETTIER_FILES="$(grep '\.\(js\|json\)$' "$FILE_LIST" || true)"
-if ! [ -z "$PRETTIER_FILES" ]; then
- echo "$PRETTIER_FILES" | xargs ./node_modules/.bin/prettier \
- --write --cache --cache-strategy metadata --no-error-on-unmatched-pattern \
- '!**/dist' '!**/*.ts' '!**/*.mts' '!**/*.cts' '!**/*.js' '!**/*.mjs' '!**/*.cjs'
+if ! [ -z "$FILE_LIST" ]; then
+ cat "$FILE_LIST" | xargs ./node_modules/.bin/prettier \
+ --write --cache --cache-strategy metadata --no-error-on-unmatched-pattern --ignore-unknown
fi
diff --git a/scripts/format b/scripts/format
index 7a756401..b1b2c17a 100755
--- a/scripts/format
+++ b/scripts/format
@@ -8,5 +8,4 @@ echo "==> Running eslint --fix"
./node_modules/.bin/eslint --fix .
echo "==> Running prettier --write"
-# format things eslint didn't
-./node_modules/.bin/prettier --write --cache --cache-strategy metadata . '!**/dist' '!**/*.ts' '!**/*.mts' '!**/*.cts' '!**/*.js' '!**/*.mjs' '!**/*.cjs'
+./node_modules/.bin/prettier --write --cache --cache-strategy metadata .
diff --git a/scripts/lint b/scripts/lint
index 3ffb78a6..1f532548 100755
--- a/scripts/lint
+++ b/scripts/lint
@@ -4,6 +4,9 @@ set -e
cd "$(dirname "$0")/.."
+echo "==> Running prettier --check"
+./node_modules/.bin/prettier --check .
+
echo "==> Running eslint"
./node_modules/.bin/eslint .
diff --git a/scripts/utils/postprocess-files.cjs b/scripts/utils/postprocess-files.cjs
index deae575e..a8cdeb7c 100644
--- a/scripts/utils/postprocess-files.cjs
+++ b/scripts/utils/postprocess-files.cjs
@@ -23,12 +23,19 @@ async function postprocess() {
// strip out lib="dom", types="node", and types="react" references; these
// are needed at build time, but would pollute the user's TS environment
- const transformed = code.replace(
+ let transformed = code.replace(
/^ *\/\/\/ * ' '.repeat(match.length - 1) + '\n',
);
+ // TypeScript's declaration emitter collapses /** @ts-ignore */ onto the same
+ // line as the type declaration, which doesn't work. So we convert to // @ts-ignore
+ // on its own line to properly suppresses errors.
+ if (file.endsWith('.d.ts') || file.endsWith('.d.mts') || file.endsWith('.d.cts')) {
+ transformed = transformed.replace(/\/\*\* @ts-ignore\b[^*]*\*\/ /gm, '// @ts-ignore\n');
+ }
+
if (transformed !== code) {
console.error(`wrote ${path.relative(process.cwd(), file)}`);
await fs.promises.writeFile(file, transformed, 'utf8');
diff --git a/src/client.ts b/src/client.ts
index ad0dd92c..18e1e195 100644
--- a/src/client.ts
+++ b/src/client.ts
@@ -7,10 +7,10 @@ import { validatePositiveInteger, isAbsoluteURL, safeJSON } from './internal/uti
import { sleep } from './internal/utils/sleep';
import {
type Logger,
- type LogLevel as LogLevelClient,
- parseLogLevel,
- loggerFor,
- formatRequestDetails,
+type LogLevel as LogLevelClient,
+parseLogLevel,
+loggerFor,
+formatRequestDetails,
} from './internal/utils/log';
export type { Logger, LogLevel as LogLevelClient } from './internal/utils/log';
import { castToError, isAbortError } from './internal/errors';
@@ -52,6 +52,8 @@ import {
LoginsPageResponse,
type MembersPageParams,
MembersPageResponse,
+ type OrganizationsPageParams,
+ OrganizationsPageResponse,
type OutputsPageParams,
OutputsPageResponse,
type PersonalAccessTokensPageParams,
@@ -154,6 +156,7 @@ import {
Role,
Type,
UserInputBlock,
+ UserInputMetadata,
WakeEvent,
} from './resources/agents';
import {
@@ -417,6 +420,7 @@ import {
RunnerListParams,
RunnerListScmOrganizationsParams,
RunnerListScmOrganizationsResponse,
+ RunnerListScmOrganizationsResponsesOrganizationsPage,
RunnerParseContextURLParams,
RunnerParseContextURLResponse,
RunnerPhase,
@@ -591,6 +595,18 @@ export class Gitpod {
this.fetch = options.fetch ?? Shims.getDefaultFetch();
this.#encoder = Opts.FallbackEncoder;
+ const customHeadersEnv = readEnv('GITPOD_CUSTOM_HEADERS');
+ if (customHeadersEnv) {
+ const parsed: Record = {};
+ for (const line of customHeadersEnv.split('\n')) {
+ const colon = line.indexOf(':');
+ if (colon >= 0) {
+ parsed[line.substring(0, colon).trim()] = line.substring(colon + 1).trim();
+ }
+ }
+ options.defaultHeaders = { ...parsed, ...options.defaultHeaders };
+ }
+
this._options = options;
this.bearerToken = bearerToken;
@@ -1282,6 +1298,12 @@ export declare namespace Gitpod {
export import MembersPage = Pagination.MembersPage;
export { type MembersPageParams as MembersPageParams, type MembersPageResponse as MembersPageResponse };
+ export import OrganizationsPage = Pagination.OrganizationsPage;
+ export {
+ type OrganizationsPageParams as OrganizationsPageParams,
+ type OrganizationsPageResponse as OrganizationsPageResponse,
+ };
+
export import OutputsPage = Pagination.OutputsPage;
export { type OutputsPageParams as OutputsPageParams, type OutputsPageResponse as OutputsPageResponse };
@@ -1411,6 +1433,7 @@ export declare namespace Gitpod {
type Role as Role,
type Type as Type,
type UserInputBlock as UserInputBlock,
+ type UserInputMetadata as UserInputMetadata,
type WakeEvent as WakeEvent,
type AgentCreateExecutionConversationTokenResponse as AgentCreateExecutionConversationTokenResponse,
type AgentCreatePromptResponse as AgentCreatePromptResponse,
@@ -1695,6 +1718,7 @@ export declare namespace Gitpod {
type RunnerParseContextURLResponse as RunnerParseContextURLResponse,
type RunnerSearchRepositoriesResponse as RunnerSearchRepositoriesResponse,
type RunnersRunnersPage as RunnersRunnersPage,
+ type RunnerListScmOrganizationsResponsesOrganizationsPage as RunnerListScmOrganizationsResponsesOrganizationsPage,
type RunnerCreateParams as RunnerCreateParams,
type RunnerRetrieveParams as RunnerRetrieveParams,
type RunnerUpdateParams as RunnerUpdateParams,
diff --git a/src/core/pagination.ts b/src/core/pagination.ts
index d3e0bc6f..c01757cf 100644
--- a/src/core/pagination.ts
+++ b/src/core/pagination.ts
@@ -889,6 +889,61 @@ export class MembersPage- extends AbstractPage
- implements MembersPage
}
}
+export interface OrganizationsPageResponse
- {
+ organizations: Array
- ;
+
+ pagination: OrganizationsPageResponse.Pagination;
+}
+
+export namespace OrganizationsPageResponse {
+ export interface Pagination {
+ nextToken?: string;
+ }
+}
+
+export interface OrganizationsPageParams {
+ pageSize?: number;
+
+ token?: string;
+}
+
+export class OrganizationsPage
- extends AbstractPage
- implements OrganizationsPageResponse
- {
+ organizations: Array
- ;
+
+ pagination: OrganizationsPageResponse.Pagination;
+
+ constructor(
+ client: Gitpod,
+ response: Response,
+ body: OrganizationsPageResponse
- ,
+ options: FinalRequestOptions,
+ ) {
+ super(client, response, body, options);
+
+ this.organizations = body.organizations || [];
+ this.pagination = body.pagination || {};
+ }
+
+ getPaginatedItems(): Item[] {
+ return this.organizations ?? [];
+ }
+
+ nextPageRequestOptions(): PageRequestOptions | null {
+ const cursor = this.pagination?.nextToken;
+ if (!cursor) {
+ return null;
+ }
+
+ return {
+ ...this.options,
+ query: {
+ ...maybeObj(this.options.query),
+ token: cursor,
+ },
+ };
+ }
+}
+
export interface OutputsPageResponse
- {
outputs: Array
- ;
diff --git a/src/internal/types.ts b/src/internal/types.ts
index b668dfc0..a050513a 100644
--- a/src/internal/types.ts
+++ b/src/internal/types.ts
@@ -40,7 +40,6 @@ type OverloadedParameters =
: T extends (...args: infer A) => unknown ? A
: never;
-/* eslint-disable */
/**
* These imports attempt to get types from a parent package's dependencies.
* Unresolved bare specifiers can trigger [automatic type acquisition][1] in some projects, which
@@ -63,19 +62,18 @@ type OverloadedParameters =
*
* [1]: https://www.typescriptlang.org/tsconfig/#typeAcquisition
*/
-/** @ts-ignore For users with \@types/node */
+/** @ts-ignore For users with \@types/node */ /* prettier-ignore */
type UndiciTypesRequestInit = NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny;
-/** @ts-ignore For users with undici */
+/** @ts-ignore For users with undici */ /* prettier-ignore */
type UndiciRequestInit = NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny;
-/** @ts-ignore For users with \@types/bun */
+/** @ts-ignore For users with \@types/bun */ /* prettier-ignore */
type BunRequestInit = globalThis.FetchRequestInit;
-/** @ts-ignore For users with node-fetch@2 */
+/** @ts-ignore For users with node-fetch@2 */ /* prettier-ignore */
type NodeFetch2RequestInit = NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny;
-/** @ts-ignore For users with node-fetch@3, doesn't need file extension because types are at ./@types/index.d.ts */
+/** @ts-ignore For users with node-fetch@3, doesn't need file extension because types are at ./@types/index.d.ts */ /* prettier-ignore */
type NodeFetch3RequestInit = NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny | NotAny;
-/** @ts-ignore For users who use Deno */
+/** @ts-ignore For users who use Deno */ /* prettier-ignore */
type FetchRequestInit = NonNullable[1]>;
-/* eslint-enable */
type RequestInits =
| NotAny
diff --git a/src/internal/utils/env.ts b/src/internal/utils/env.ts
index 2d848007..cc5fa0fa 100644
--- a/src/internal/utils/env.ts
+++ b/src/internal/utils/env.ts
@@ -9,10 +9,10 @@
*/
export const readEnv = (env: string): string | undefined => {
if (typeof (globalThis as any).process !== 'undefined') {
- return (globalThis as any).process.env?.[env]?.trim() ?? undefined;
+ return (globalThis as any).process.env?.[env]?.trim() || undefined;
}
if (typeof (globalThis as any).Deno !== 'undefined') {
- return (globalThis as any).Deno.env?.get?.(env)?.trim();
+ return (globalThis as any).Deno.env?.get?.(env)?.trim() || undefined;
}
return undefined;
};
diff --git a/src/internal/utils/log.ts b/src/internal/utils/log.ts
index ce9d0523..21ff220a 100644
--- a/src/internal/utils/log.ts
+++ b/src/internal/utils/log.ts
@@ -107,6 +107,8 @@ export const formatRequestDetails = (details: {
name,
(
name.toLowerCase() === 'authorization' ||
+ name.toLowerCase() === 'api-key' ||
+ name.toLowerCase() === 'x-api-key' ||
name.toLowerCase() === 'cookie' ||
name.toLowerCase() === 'set-cookie'
) ?
diff --git a/src/resources/agents.ts b/src/resources/agents.ts
index 27755f1c..899fa4ae 100644
--- a/src/resources/agents.ts
+++ b/src/resources/agents.ts
@@ -802,6 +802,11 @@ export namespace AgentExecution {
| 'AGENT_EXECUTION_FAILURE_REASON_INTERNAL'
| 'AGENT_EXECUTION_FAILURE_REASON_AGENT_EXECUTION';
+ /**
+ * goal projects the current native Codex thread goal, if any.
+ */
+ goal?: Status.Goal;
+
inputTokensUsed?: string;
iterations?: string;
@@ -868,11 +873,13 @@ export namespace AgentExecution {
| 'SUPPORTED_MODEL_OPUS_4_5_EXTENDED'
| 'SUPPORTED_MODEL_OPUS_4_6'
| 'SUPPORTED_MODEL_OPUS_4_6_EXTENDED'
+ | 'SUPPORTED_MODEL_OPUS_4_7'
| 'SUPPORTED_MODEL_HAIKU_4_5'
| 'SUPPORTED_MODEL_OPENAI_4O'
| 'SUPPORTED_MODEL_OPENAI_4O_MINI'
| 'SUPPORTED_MODEL_OPENAI_O1'
- | 'SUPPORTED_MODEL_OPENAI_O1_MINI';
+ | 'SUPPORTED_MODEL_OPENAI_O1_MINI'
+ | 'SUPPORTED_MODEL_OPENAI_AUTO';
/**
* transcript_url is the URL to the LLM transcript (all messages exchanged between
@@ -921,6 +928,32 @@ export namespace AgentExecution {
}
}
+ /**
+ * goal projects the current native Codex thread goal, if any.
+ */
+ export interface Goal {
+ /**
+ * objective is the current goal text tracked by the native Codex thread-goal
+ * subsystem.
+ */
+ objective?: string;
+
+ /**
+ * status is the lifecycle state of the current goal.
+ */
+ status?:
+ | 'GOAL_STATUS_UNSPECIFIED'
+ | 'GOAL_STATUS_ACTIVE'
+ | 'GOAL_STATUS_PAUSED'
+ | 'GOAL_STATUS_COMPLETED'
+ | 'GOAL_STATUS_BUDGET_EXHAUSTED';
+
+ /**
+ * updated_at is the most recent native goal update timestamp, when available.
+ */
+ updatedAt?: string;
+ }
+
/**
* MCPIntegrationStatus represents the status of a single MCP integration within an
* agent execution context
@@ -1320,6 +1353,22 @@ export namespace UserInputBlock {
}
}
+/**
+ * UserInputMetadata carries integration-specific context for a user input.
+ * Internal only — not exposed in public SDKs. External API consumers should not
+ * set these fields; they are populated by integration handlers.
+ */
+export interface UserInputMetadata {
+ /**
+ * Origin of this input — set by integration handlers to their host (e.g.
+ * "github.com", "slack.com"). Empty for non-integration callers. This field drives
+ * emission gating: when set, agent responses are only emitted to the matching
+ * integration. Treated as trusted input from integration handlers; not validated
+ * against registered hosts.
+ */
+ source?: string;
+}
+
/**
* WakeEvent is sent by the backend to wake an agent when a registered interest
* fires. Delivered via SendToAgentExecution as a new oneof variant.
@@ -1696,6 +1745,7 @@ export declare namespace Agents {
type Role as Role,
type Type as Type,
type UserInputBlock as UserInputBlock,
+ type UserInputMetadata as UserInputMetadata,
type WakeEvent as WakeEvent,
type AgentCreateExecutionConversationTokenResponse as AgentCreateExecutionConversationTokenResponse,
type AgentCreatePromptResponse as AgentCreatePromptResponse,
diff --git a/src/resources/automations.ts b/src/resources/automations.ts
index 9646efdb..7e3abe39 100644
--- a/src/resources/automations.ts
+++ b/src/resources/automations.ts
@@ -2144,8 +2144,6 @@ export interface WorkflowStep {
*/
pullRequest?: WorkflowStep.PullRequest;
- report?: WorkflowStep.Report;
-
/**
* WorkflowTaskStep represents a task step that executes a command.
*/
@@ -2201,21 +2199,6 @@ export namespace WorkflowStep {
title?: string;
}
- export interface Report {
- /**
- * Report must have at least one output:
- *
- * ```
- * size(this) >= 1
- * ```
- */
- outputs?: Array;
- }
-
- export namespace Report {
- export interface Output {}
- }
-
/**
* WorkflowTaskStep represents a task step that executes a command.
*/
@@ -2264,6 +2247,8 @@ export interface WorkflowTrigger {
* - Manual: Can use any context type
* - Time: Typically uses Projects or Repositories context
* - PullRequest: Can use any context, FromTrigger uses PR repository context
+ * - Incident: Typically uses Projects or Repositories context (no inherent repo
+ * context)
*/
context: WorkflowTriggerContext;
@@ -2300,8 +2285,16 @@ export namespace WorkflowTrigger {
| 'PULL_REQUEST_EVENT_MERGED'
| 'PULL_REQUEST_EVENT_CLOSED'
| 'PULL_REQUEST_EVENT_READY_FOR_REVIEW'
+ | 'PULL_REQUEST_EVENT_REVIEW_REQUESTED'
>;
+ /**
+ * integration_id is the optional ID of an integration that acts as the source of
+ * webhook events. When set, the trigger will be activated when the webhook
+ * receives events.
+ */
+ integrationId?: string | null;
+
/**
* webhook_id is the optional ID of a webhook that this trigger is bound to. When
* set, the trigger will be activated when the webhook receives events. This allows
@@ -2341,6 +2334,8 @@ export namespace WorkflowTrigger {
* - Manual: Can use any context type
* - Time: Typically uses Projects or Repositories context
* - PullRequest: Can use any context, FromTrigger uses PR repository context
+ * - Incident: Typically uses Projects or Repositories context (no inherent repo
+ * context)
*/
export interface WorkflowTriggerContext {
/**
diff --git a/src/resources/environments/automations/automations.ts b/src/resources/environments/automations/automations.ts
index 88608942..92a13c4a 100644
--- a/src/resources/environments/automations/automations.ts
+++ b/src/resources/environments/automations/automations.ts
@@ -141,11 +141,72 @@ export namespace AutomationsFile {
name?: string;
+ /**
+ * A Duration represents a signed, fixed-length span of time represented as a count
+ * of seconds and fractions of seconds at nanosecond resolution. It is independent
+ * of any calendar and concepts like "day" or "month". It is related to Timestamp
+ * in that the difference between two Timestamp values is a Duration and it can be
+ * added or subtracted from a Timestamp. Range is approximately +-10,000 years.
+ *
+ * # Examples
+ *
+ * Example 1: Compute Duration from two Timestamps in pseudo code.
+ *
+ * Timestamp start = ...;
+ * Timestamp end = ...;
+ * Duration duration = ...;
+ *
+ * duration.seconds = end.seconds - start.seconds;
+ * duration.nanos = end.nanos - start.nanos;
+ *
+ * if (duration.seconds < 0 && duration.nanos > 0) {
+ * duration.seconds += 1;
+ * duration.nanos -= 1000000000;
+ * } else if (duration.seconds > 0 && duration.nanos < 0) {
+ * duration.seconds -= 1;
+ * duration.nanos += 1000000000;
+ * }
+ *
+ * Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
+ *
+ * Timestamp start = ...;
+ * Duration duration = ...;
+ * Timestamp end = ...;
+ *
+ * end.seconds = start.seconds + duration.seconds;
+ * end.nanos = start.nanos + duration.nanos;
+ *
+ * if (end.nanos < 0) {
+ * end.seconds -= 1;
+ * end.nanos += 1000000000;
+ * } else if (end.nanos >= 1000000000) {
+ * end.seconds += 1;
+ * end.nanos -= 1000000000;
+ * }
+ *
+ * Example 3: Compute Duration from datetime.timedelta in Python.
+ *
+ * td = datetime.timedelta(days=3, minutes=10)
+ * duration = Duration()
+ * duration.FromTimedelta(td)
+ *
+ * # JSON Mapping
+ *
+ * In JSON format, the Duration type is encoded as a string rather than an object,
+ * where the string ends in the suffix "s" (indicating seconds) and is preceded by
+ * the number of seconds, with nanoseconds expressed as fractional seconds. For
+ * example, 3 seconds with 0 nanoseconds should be encoded in JSON format as "3s",
+ * while 3 seconds and 1 nanosecond should be expressed in JSON format as
+ * "3.000000001s", and 3 seconds and 1 microsecond should be expressed in JSON
+ * format as "3.000001s".
+ */
+ readinessTimeout?: string;
+
role?: '' | 'default' | 'editor' | 'ai-agent';
runsOn?: Shared.RunsOn;
- triggeredBy?: Array<'manual' | 'postEnvironmentStart' | 'postDevcontainerStart'>;
+ triggeredBy?: Array<'manual' | 'postEnvironmentStart' | 'postDevcontainerStart' | 'prebuild'>;
}
export namespace Services {
diff --git a/src/resources/environments/automations/services.ts b/src/resources/environments/automations/services.ts
index b10dd0ce..375334cf 100644
--- a/src/resources/environments/automations/services.ts
+++ b/src/resources/environments/automations/services.ts
@@ -421,6 +421,12 @@ export interface ServiceSpec {
*/
env?: Array;
+ /**
+ * readiness_timeout is the maximum duration a service may remain in the Starting
+ * phase while readiness checks run. 0s disables the timeout.
+ */
+ readinessTimeout?: string;
+
/**
* runs_on specifies the environment the service should run on.
*/
@@ -590,6 +596,67 @@ export namespace ServiceUpdateParams {
env?: Array;
+ /**
+ * A Duration represents a signed, fixed-length span of time represented as a count
+ * of seconds and fractions of seconds at nanosecond resolution. It is independent
+ * of any calendar and concepts like "day" or "month". It is related to Timestamp
+ * in that the difference between two Timestamp values is a Duration and it can be
+ * added or subtracted from a Timestamp. Range is approximately +-10,000 years.
+ *
+ * # Examples
+ *
+ * Example 1: Compute Duration from two Timestamps in pseudo code.
+ *
+ * Timestamp start = ...;
+ * Timestamp end = ...;
+ * Duration duration = ...;
+ *
+ * duration.seconds = end.seconds - start.seconds;
+ * duration.nanos = end.nanos - start.nanos;
+ *
+ * if (duration.seconds < 0 && duration.nanos > 0) {
+ * duration.seconds += 1;
+ * duration.nanos -= 1000000000;
+ * } else if (duration.seconds > 0 && duration.nanos < 0) {
+ * duration.seconds -= 1;
+ * duration.nanos += 1000000000;
+ * }
+ *
+ * Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
+ *
+ * Timestamp start = ...;
+ * Duration duration = ...;
+ * Timestamp end = ...;
+ *
+ * end.seconds = start.seconds + duration.seconds;
+ * end.nanos = start.nanos + duration.nanos;
+ *
+ * if (end.nanos < 0) {
+ * end.seconds -= 1;
+ * end.nanos += 1000000000;
+ * } else if (end.nanos >= 1000000000) {
+ * end.seconds += 1;
+ * end.nanos -= 1000000000;
+ * }
+ *
+ * Example 3: Compute Duration from datetime.timedelta in Python.
+ *
+ * td = datetime.timedelta(days=3, minutes=10)
+ * duration = Duration()
+ * duration.FromTimedelta(td)
+ *
+ * # JSON Mapping
+ *
+ * In JSON format, the Duration type is encoded as a string rather than an object,
+ * where the string ends in the suffix "s" (indicating seconds) and is preceded by
+ * the number of seconds, with nanoseconds expressed as fractional seconds. For
+ * example, 3 seconds with 0 nanoseconds should be encoded in JSON format as "3s",
+ * while 3 seconds and 1 nanosecond should be expressed in JSON format as
+ * "3.000000001s", and 3 seconds and 1 microsecond should be expressed in JSON
+ * format as "3.000001s".
+ */
+ readinessTimeout?: string;
+
runsOn?: Shared.RunsOn | null;
}
diff --git a/src/resources/environments/environments.ts b/src/resources/environments/environments.ts
index eb9d7214..4ade7edf 100644
--- a/src/resources/environments/environments.ts
+++ b/src/resources/environments/environments.ts
@@ -1008,12 +1008,6 @@ export namespace EnvironmentSpec {
* credential) and proxied at the same time.
*/
export interface CredentialProxy {
- /**
- * format describes how the secret value is encoded. The proxy uses this to decode
- * the value before injecting it into the header.
- */
- format?: 'FORMAT_UNSPECIFIED' | 'FORMAT_PLAIN' | 'FORMAT_BASE64';
-
/**
* header is the HTTP header name to inject (e.g. "Authorization").
*/
@@ -1291,6 +1285,12 @@ export namespace EnvironmentStatus {
| 'CHANGE_TYPE_UPDATED_BUT_UNMERGED'
| 'CHANGE_TYPE_UNTRACKED';
+ /**
+ * old_path is the previous path of the file before a rename or copy. Only set when
+ * change_type is RENAMED or COPIED.
+ */
+ oldPath?: string;
+
/**
* path is the path of the file
*/
diff --git a/src/resources/index.ts b/src/resources/index.ts
index 17be5025..8658b6f1 100644
--- a/src/resources/index.ts
+++ b/src/resources/index.ts
@@ -33,6 +33,7 @@ export {
type Role,
type Type,
type UserInputBlock,
+ type UserInputMetadata,
type WakeEvent,
type AgentCreateExecutionConversationTokenResponse,
type AgentCreatePromptResponse,
@@ -317,6 +318,7 @@ export {
type RunnerParseContextURLParams,
type RunnerSearchRepositoriesParams,
type RunnersRunnersPage,
+ type RunnerListScmOrganizationsResponsesOrganizationsPage,
} from './runners/runners';
export {
Secrets,
diff --git a/src/resources/organizations/index.ts b/src/resources/organizations/index.ts
index 29e04f78..bd455f8f 100644
--- a/src/resources/organizations/index.ts
+++ b/src/resources/organizations/index.ts
@@ -77,6 +77,7 @@ export {
type CustomSecurityAgent,
type KernelControlsAction,
type OrganizationPolicies,
+ type ProjectCreationDefaults,
type SecurityAgentPolicy,
type VetoExecPolicy,
type PolicyRetrieveResponse,
diff --git a/src/resources/organizations/organizations.ts b/src/resources/organizations/organizations.ts
index 3cdc46f4..ac7560a6 100644
--- a/src/resources/organizations/organizations.ts
+++ b/src/resources/organizations/organizations.ts
@@ -66,6 +66,7 @@ import {
PolicyRetrieveResponse,
PolicyUpdateParams,
PolicyUpdateResponse,
+ ProjectCreationDefaults,
SecurityAgentPolicy,
VetoExecPolicy,
} from './policies';
@@ -1063,6 +1064,7 @@ export declare namespace Organizations {
type CustomSecurityAgent as CustomSecurityAgent,
type KernelControlsAction as KernelControlsAction,
type OrganizationPolicies as OrganizationPolicies,
+ type ProjectCreationDefaults as ProjectCreationDefaults,
type SecurityAgentPolicy as SecurityAgentPolicy,
type VetoExecPolicy as VetoExecPolicy,
type PolicyRetrieveResponse as PolicyRetrieveResponse,
diff --git a/src/resources/organizations/policies.ts b/src/resources/organizations/policies.ts
index 604b29e0..69f93c64 100644
--- a/src/resources/organizations/policies.ts
+++ b/src/resources/organizations/policies.ts
@@ -2,6 +2,7 @@
import { APIResource } from '../../core/resource';
import * as PoliciesAPI from './policies';
+import * as EnvironmentsAPI from '../environments/environments';
import { APIPromise } from '../../core/api-promise';
import { RequestOptions } from '../../internal/request-options';
@@ -348,6 +349,12 @@ export interface OrganizationPolicies {
*/
maximumEnvironmentTimeout?: string;
+ /**
+ * project_creation_defaults contains default settings applied to newly created
+ * projects.
+ */
+ projectCreationDefaults?: ProjectCreationDefaults;
+
/**
* security_agent_policy contains security agent configuration for the
* organization. When configured, security agents are automatically deployed to all
@@ -376,6 +383,18 @@ export namespace OrganizationPolicies {
}
}
+/**
+ * ProjectCreationDefaults contains default settings applied to newly created
+ * projects.
+ */
+export interface ProjectCreationDefaults {
+ /**
+ * insights_enabled controls whether Insights (co-author attribution) is
+ * automatically enabled on newly created projects.
+ */
+ insightsEnabled?: boolean;
+}
+
/**
* SecurityAgentPolicy contains security agent configuration for an organization.
* When enabled, security agents are automatically deployed to all environments.
@@ -500,6 +519,14 @@ export interface PolicyUpdateParams {
*/
maximumRunningEnvironmentsPerUser?: string | null;
+ /**
+ * max_port_admission_level caps the maximum admission level a user-opened port may
+ * use. UNSPECIFIED means no cap (any AdmissionLevel value is allowed). System
+ * ports (VS Code Browser, agents) are exempt. The legacy port_sharing_disabled
+ * field, when true, takes precedence and blocks all user-initiated port sharing.
+ */
+ maxPortAdmissionLevel?: EnvironmentsAPI.AdmissionLevel | null;
+
/**
* members_create_projects controls whether members can create projects
*/
@@ -518,6 +545,12 @@ export interface PolicyUpdateParams {
*/
portSharingDisabled?: boolean | null;
+ /**
+ * project_creation_defaults contains updates to default settings applied to newly
+ * created projects.
+ */
+ projectCreationDefaults?: PolicyUpdateParams.ProjectCreationDefaults | null;
+
/**
* require_custom_domain_access controls whether users must access via custom
* domain when one is configured. When true, access via app.gitpod.io is blocked.
@@ -597,6 +630,18 @@ export namespace PolicyUpdateParams {
allowedVersions?: Array;
}
+ /**
+ * project_creation_defaults contains updates to default settings applied to newly
+ * created projects.
+ */
+ export interface ProjectCreationDefaults {
+ /**
+ * insights_enabled controls whether Insights (co-author attribution) is
+ * automatically enabled on newly created projects.
+ */
+ insightsEnabled?: boolean | null;
+ }
+
/**
* security_agent_policy contains security agent configuration updates
*/
@@ -650,6 +695,7 @@ export declare namespace Policies {
type CustomSecurityAgent as CustomSecurityAgent,
type KernelControlsAction as KernelControlsAction,
type OrganizationPolicies as OrganizationPolicies,
+ type ProjectCreationDefaults as ProjectCreationDefaults,
type SecurityAgentPolicy as SecurityAgentPolicy,
type VetoExecPolicy as VetoExecPolicy,
type PolicyRetrieveResponse as PolicyRetrieveResponse,
diff --git a/src/resources/organizations/scim-configurations.ts b/src/resources/organizations/scim-configurations.ts
index 33dc2f84..4c2e2778 100644
--- a/src/resources/organizations/scim-configurations.ts
+++ b/src/resources/organizations/scim-configurations.ts
@@ -291,6 +291,13 @@ export interface ScimConfiguration {
*/
updatedAt: string;
+ /**
+ * allow_unverified_email_account_linking allows SCIM to link provisioned users to
+ * existing accounts when the identity provider does not mark the email address as
+ * verified
+ */
+ allowUnverifiedEmailAccountLinking?: boolean;
+
/**
* enabled indicates if SCIM provisioning is active
*/
@@ -367,6 +374,13 @@ export interface ScimConfigurationCreateParams {
*/
ssoConfigurationId: string;
+ /**
+ * allow_unverified_email_account_linking allows SCIM to link provisioned users to
+ * existing accounts when the identity provider does not mark the email address as
+ * verified
+ */
+ allowUnverifiedEmailAccountLinking?: boolean | null;
+
/**
* name is a human-readable name for the SCIM configuration
*/
@@ -392,6 +406,13 @@ export interface ScimConfigurationUpdateParams {
*/
scimConfigurationId: string;
+ /**
+ * allow_unverified_email_account_linking allows SCIM to link provisioned users to
+ * existing accounts when the identity provider does not mark the email address as
+ * verified
+ */
+ allowUnverifiedEmailAccountLinking?: boolean | null;
+
/**
* enabled controls whether SCIM provisioning is active
*/
diff --git a/src/resources/runners/index.ts b/src/resources/runners/index.ts
index fb790837..b11c33ee 100644
--- a/src/resources/runners/index.ts
+++ b/src/resources/runners/index.ts
@@ -62,4 +62,5 @@ export {
type RunnerParseContextURLParams,
type RunnerSearchRepositoriesParams,
type RunnersRunnersPage,
+ type RunnerListScmOrganizationsResponsesOrganizationsPage,
} from './runners';
diff --git a/src/resources/runners/runners.ts b/src/resources/runners/runners.ts
index b3623212..6f1aeea2 100644
--- a/src/resources/runners/runners.ts
+++ b/src/resources/runners/runners.ts
@@ -27,7 +27,13 @@ import {
ScmIntegrationValidationResult,
} from './configurations/configurations';
import { APIPromise } from '../../core/api-promise';
-import { PagePromise, RunnersPage, type RunnersPageParams } from '../../core/pagination';
+import {
+ OrganizationsPage,
+ type OrganizationsPageParams,
+ PagePromise,
+ RunnersPage,
+ type RunnersPageParams,
+} from '../../core/pagination';
import { RequestOptions } from '../../internal/request-options';
export class Runners extends APIResource {
@@ -412,24 +418,41 @@ export class Runners extends APIResource {
* scmHost: "github.com"
* ```
*
+ * - Search GitLab groups:
+ *
+ * Returns the first page of GitLab groups matching the substring.
+ *
+ * ```yaml
+ * runnerId: "d2c94c27-3b76-4a42-b88c-95a85e392c68"
+ * scmHost: "gitlab.com"
+ * query: "platform"
+ * pagination:
+ * pageSize: 25
+ * ```
+ *
* @example
* ```ts
- * const response = await client.runners.listScmOrganizations({
- * runnerId: 'd2c94c27-3b76-4a42-b88c-95a85e392c68',
- * scmHost: 'github.com',
- * });
+ * // Automatically fetches more pages as needed.
+ * for await (const runnerListScmOrganizationsResponse of client.runners.listScmOrganizations(
+ * {
+ * runnerId: 'd2c94c27-3b76-4a42-b88c-95a85e392c68',
+ * scmHost: 'github.com',
+ * },
+ * )) {
+ * // ...
+ * }
* ```
*/
listScmOrganizations(
params: RunnerListScmOrganizationsParams,
options?: RequestOptions,
- ): APIPromise {
+ ): PagePromise {
const { token, pageSize, ...body } = params;
- return this._client.post('/gitpod.v1.RunnerService/ListSCMOrganizations', {
- query: { token, pageSize },
- body,
- ...options,
- });
+ return this._client.getAPIList(
+ '/gitpod.v1.RunnerService/ListSCMOrganizations',
+ OrganizationsPage,
+ { query: { token, pageSize }, body, method: 'post', ...options },
+ );
}
/**
@@ -521,6 +544,9 @@ export class Runners extends APIResource {
export type RunnersRunnersPage = RunnersPage;
+export type RunnerListScmOrganizationsResponsesOrganizationsPage =
+ OrganizationsPage;
+
export interface GatewayInfo {
/**
* Gateway represents a system gateway that provides access to services
@@ -631,7 +657,10 @@ export type RunnerCapability =
| 'RUNNER_CAPABILITY_CHECK_REPOSITORY_ACCESS'
| 'RUNNER_CAPABILITY_RUNNER_SIDE_AGENT'
| 'RUNNER_CAPABILITY_WARM_POOL'
- | 'RUNNER_CAPABILITY_ASG_WARM_POOL';
+ | 'RUNNER_CAPABILITY_ASG_WARM_POOL'
+ | 'RUNNER_CAPABILITY_PORT_AUTHENTICATION'
+ | 'RUNNER_CAPABILITY_HORIZONTAL_SCALING'
+ | 'RUNNER_CAPABILITY_AGENT_EXECUTION_CNF';
export interface RunnerConfiguration {
/**
@@ -963,29 +992,25 @@ export interface RunnerCreateRunnerTokenResponse {
export interface RunnerListScmOrganizationsResponse {
/**
- * List of organizations the user belongs to
+ * @deprecated Deprecated: this field is unused by all known consumers and is
+ * scheduled for removal in a future release. Do not read it.
+ *
+ * Originally intended to gate organization-level webhook creation in the
+ * dashboard, but that gating was never implemented. Populating this field on the
+ * GitLab path requires a second fully-paginated ListGroups call, which is the main
+ * reason we are deprecating it.
*/
- organizations?: Array;
-}
-
-export namespace RunnerListScmOrganizationsResponse {
- export interface Organization {
- /**
- * Whether the user has admin permissions in this organization. Admin permissions
- * typically allow creating organization-level webhooks.
- */
- isAdmin?: boolean;
+ isAdmin?: boolean;
- /**
- * Organization name/slug (e.g., "gitpod-io")
- */
- name?: string;
+ /**
+ * Organization name/slug (e.g., "gitpod-io")
+ */
+ name?: string;
- /**
- * Organization URL (e.g., "https://github.com/gitpod-io")
- */
- url?: string;
- }
+ /**
+ * Organization URL (e.g., "https://github.com/gitpod-io")
+ */
+ url?: string;
}
export interface RunnerParseContextURLResponse {
@@ -1405,16 +1430,23 @@ export interface RunnerCreateRunnerTokenParams {
runnerId?: string;
}
-export interface RunnerListScmOrganizationsParams {
+export interface RunnerListScmOrganizationsParams extends OrganizationsPageParams {
/**
- * Query param
+ * Body param: Pagination parameters. When unset, defaults to the standard
+ * PaginationRequest defaults (page_size 25, max 100). Tokens are opaque and
+ * provider-specific.
*/
- token?: string;
+ pagination?: RunnerListScmOrganizationsParams.Pagination;
/**
- * Query param
+ * Body param: Optional substring filter applied to the organization name.
+ *
+ * - GitLab: forwarded to the upstream `search` parameter (server-side,
+ * case-insensitive substring on name/path).
+ * - GitHub and Bitbucket: not implemented as they don't support searching Empty
+ * value means no filter.
*/
- pageSize?: number;
+ query?: string;
/**
* Body param
@@ -1428,6 +1460,26 @@ export interface RunnerListScmOrganizationsParams {
scmHost?: string;
}
+export namespace RunnerListScmOrganizationsParams {
+ /**
+ * Pagination parameters. When unset, defaults to the standard PaginationRequest
+ * defaults (page_size 25, max 100). Tokens are opaque and provider-specific.
+ */
+ export interface Pagination {
+ /**
+ * Token for the next set of results that was returned as next_token of a
+ * PaginationResponse
+ */
+ token?: string;
+
+ /**
+ * Page size is the maximum number of results to retrieve per page. Defaults to 25.
+ * Maximum 100.
+ */
+ pageSize?: number;
+ }
+}
+
export interface RunnerParseContextURLParams {
contextUrl?: string;
@@ -1515,6 +1567,7 @@ export declare namespace Runners {
type RunnerParseContextURLResponse as RunnerParseContextURLResponse,
type RunnerSearchRepositoriesResponse as RunnerSearchRepositoriesResponse,
type RunnersRunnersPage as RunnersRunnersPage,
+ type RunnerListScmOrganizationsResponsesOrganizationsPage as RunnerListScmOrganizationsResponsesOrganizationsPage,
type RunnerCreateParams as RunnerCreateParams,
type RunnerRetrieveParams as RunnerRetrieveParams,
type RunnerUpdateParams as RunnerUpdateParams,
diff --git a/src/resources/secrets.ts b/src/resources/secrets.ts
index 86012223..7cbad510 100644
--- a/src/resources/secrets.ts
+++ b/src/resources/secrets.ts
@@ -329,6 +329,16 @@ export interface Secret {
*/
creator?: Shared.Subject;
+ /**
+ * credential_proxy configures transparent credential injection via the credential
+ * proxy. When set, the credential proxy intercepts HTTPS traffic to the target
+ * hosts and replaces the dummy mounted value with the real value in the specified
+ * HTTP header. The real secret value is never exposed in the environment. This
+ * field is orthogonal to mount — a secret can be both mounted and proxied at the
+ * same time.
+ */
+ credentialProxy?: Secret.CredentialProxy;
+
/**
* secret will be created as an Environment Variable with the same name as the
* secret
@@ -445,6 +455,29 @@ export interface Secret {
updatedAt?: string;
}
+export namespace Secret {
+ /**
+ * credential_proxy configures transparent credential injection via the credential
+ * proxy. When set, the credential proxy intercepts HTTPS traffic to the target
+ * hosts and replaces the dummy mounted value with the real value in the specified
+ * HTTP header. The real secret value is never exposed in the environment. This
+ * field is orthogonal to mount — a secret can be both mounted and proxied at the
+ * same time.
+ */
+ export interface CredentialProxy {
+ /**
+ * header is the HTTP header name to inject (e.g. "Authorization").
+ */
+ header?: string;
+
+ /**
+ * target_hosts lists the hostnames to intercept (for example "github.com" or
+ * "\*.github.com"). Wildcards are subdomain-only and do not match the apex domain.
+ */
+ targetHosts?: Array;
+ }
+}
+
export interface SecretScope {
/**
* organization_id is the Organization ID this Secret belongs to
@@ -493,6 +526,16 @@ export interface SecretCreateParams {
*/
containerRegistryBasicAuthHost?: string;
+ /**
+ * credential_proxy configures transparent credential injection when environments
+ * materialize this secret. When set, the credential proxy intercepts HTTPS traffic
+ * to the target hosts and replaces the dummy mounted value with the real value in
+ * the specified HTTP header. The real secret value is never exposed in the
+ * environment. This field is orthogonal to mount — a secret can be both mounted
+ * and proxied at the same time.
+ */
+ credentialProxy?: SecretCreateParams.CredentialProxy;
+
/**
* secret will be created as an Environment Variable with the same name as the
* secret
@@ -528,6 +571,29 @@ export interface SecretCreateParams {
value?: string;
}
+export namespace SecretCreateParams {
+ /**
+ * credential_proxy configures transparent credential injection when environments
+ * materialize this secret. When set, the credential proxy intercepts HTTPS traffic
+ * to the target hosts and replaces the dummy mounted value with the real value in
+ * the specified HTTP header. The real secret value is never exposed in the
+ * environment. This field is orthogonal to mount — a secret can be both mounted
+ * and proxied at the same time.
+ */
+ export interface CredentialProxy {
+ /**
+ * header is the HTTP header name to inject (e.g. "Authorization").
+ */
+ header?: string;
+
+ /**
+ * target_hosts lists the hostnames to intercept (for example "github.com" or
+ * "\*.github.com"). Wildcards are subdomain-only and do not match the apex domain.
+ */
+ targetHosts?: Array;
+ }
+}
+
export interface SecretListParams extends SecretsPageParams {
/**
* Body param
diff --git a/src/resources/shared.ts b/src/resources/shared.ts
index efb056cb..b097a933 100644
--- a/src/resources/shared.ts
+++ b/src/resources/shared.ts
@@ -22,8 +22,8 @@ import {
* automation during a prebuild of an environment. This phase does not have user
* secrets available. The `before_snapshot` field triggers the automation after all
* prebuild tasks complete but before the snapshot is taken. This is used for tasks
- * that need to run last during prebuilds, such as IDE warmup. Note: The prebuild
- * and before_snapshot triggers can only be used with tasks, not services.
+ * that need to run last during prebuilds, such as IDE warmup. Note: The
+ * before_snapshot trigger can only be used with tasks, not services.
*/
export interface AutomationTrigger {
beforeSnapshot?: boolean;
@@ -209,6 +209,7 @@ export type ResourceRole =
| 'RESOURCE_ROLE_ORG_PROJECTS_ADMIN'
| 'RESOURCE_ROLE_ORG_AUTOMATIONS_ADMIN'
| 'RESOURCE_ROLE_ORG_GROUPS_ADMIN'
+ | 'RESOURCE_ROLE_ORG_ENVIRONMENTS_READER'
| 'RESOURCE_ROLE_ORG_AUDIT_LOG_READER'
| 'RESOURCE_ROLE_GROUP_ADMIN'
| 'RESOURCE_ROLE_GROUP_VIEWER'
@@ -324,12 +325,6 @@ export interface RunsOn {
* Machine runs the service/task directly on the VM/machine level.
*/
machine?: unknown;
-
- /**
- * Terminal runs the service inside a managed PTY terminal in the devcontainer.
- * Users can attach to the terminal interactively via the terminal API.
- */
- terminal?: unknown;
}
export namespace RunsOn {
diff --git a/src/version.ts b/src/version.ts
index e2b0672c..b67001ee 100644
--- a/src/version.ts
+++ b/src/version.ts
@@ -1 +1 @@
-export const VERSION = '0.14.0'; // x-release-please-version
+export const VERSION = '0.15.0'; // x-release-please-version
diff --git a/tests/api-resources/automations.test.ts b/tests/api-resources/automations.test.ts
index 0da8a86f..c91fbf5d 100644
--- a/tests/api-resources/automations.test.ts
+++ b/tests/api-resources/automations.test.ts
@@ -38,21 +38,6 @@ describe('resource automations', () => {
draft: true,
title: 'title',
},
- report: {
- outputs: [
- {
- acceptanceCriteria: 'acceptanceCriteria',
- boolean: {},
- command: 'command',
- float: { max: 0, min: 0 },
- integer: { max: 0, min: 0 },
- key: 'key',
- prompt: 'prompt',
- string: { pattern: 'pattern' },
- title: 'title',
- },
- ],
- },
task: { command: 'command' },
},
],
@@ -75,21 +60,6 @@ describe('resource automations', () => {
draft: true,
title: 'title',
},
- report: {
- outputs: [
- {
- acceptanceCriteria: 'acceptanceCriteria',
- boolean: {},
- command: 'command',
- float: { max: 0, min: 0 },
- integer: { max: 0, min: 0 },
- key: 'key',
- prompt: 'prompt',
- string: { pattern: 'pattern' },
- title: 'title',
- },
- ],
- },
task: { command: 'command' },
},
],
@@ -109,6 +79,7 @@ describe('resource automations', () => {
manual: {},
pullRequest: {
events: ['PULL_REQUEST_EVENT_UNSPECIFIED'],
+ integrationId: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
webhookId: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
},
time: { cronExpression: 'cronExpression' },
diff --git a/tests/api-resources/organizations/policies.test.ts b/tests/api-resources/organizations/policies.test.ts
index 7fd9de1a..c9afd3c5 100644
--- a/tests/api-resources/organizations/policies.test.ts
+++ b/tests/api-resources/organizations/policies.test.ts
@@ -65,9 +65,11 @@ describe('resource policies', () => {
maximumEnvironmentsPerUser: '20',
maximumEnvironmentTimeout: '3600s',
maximumRunningEnvironmentsPerUser: '5',
+ maxPortAdmissionLevel: 'ADMISSION_LEVEL_UNSPECIFIED',
membersCreateProjects: true,
membersRequireProjects: true,
portSharingDisabled: true,
+ projectCreationDefaults: { insightsEnabled: true },
requireCustomDomainAccess: true,
restrictAccountCreationToScim: true,
securityAgentPolicy: {
diff --git a/tests/api-resources/organizations/scim-configurations.test.ts b/tests/api-resources/organizations/scim-configurations.test.ts
index bf121156..0da9bb8e 100644
--- a/tests/api-resources/organizations/scim-configurations.test.ts
+++ b/tests/api-resources/organizations/scim-configurations.test.ts
@@ -28,6 +28,7 @@ describe('resource scimConfigurations', () => {
const response = await client.organizations.scimConfigurations.create({
organizationId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047',
ssoConfigurationId: 'd2c94c27-3b76-4a42-b88c-95a85e392c68',
+ allowUnverifiedEmailAccountLinking: true,
name: 'name',
tokenExpiresIn: '+9125115.360s',
});
@@ -72,6 +73,7 @@ describe('resource scimConfigurations', () => {
test.skip('update: required and optional params', async () => {
const response = await client.organizations.scimConfigurations.update({
scimConfigurationId: 'd2c94c27-3b76-4a42-b88c-95a85e392c68',
+ allowUnverifiedEmailAccountLinking: true,
enabled: false,
name: 'name',
ssoConfigurationId: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
diff --git a/yarn.lock b/yarn.lock
index 9d562436..a55ecda1 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -709,11 +709,6 @@
"@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"
-"@pkgr/core@^0.2.4":
- version "0.2.4"
- resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.2.4.tgz#d897170a2b0ba51f78a099edccd968f7b103387c"
- integrity sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw==
-
"@sinclair/typebox@^0.27.8":
version "0.27.8"
resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e"
@@ -1268,9 +1263,9 @@ bcrypt-pbkdf@^1.0.0, bcrypt-pbkdf@^1.0.2:
tweetnacl "^0.14.3"
brace-expansion@^2.0.2:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.3.tgz#0493338bdd58e319b1039c67cf7ee439892c01d9"
- integrity sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.1.0.tgz#4f41a41190216ee36067ec381526fe9539c4f0ae"
+ integrity sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==
dependencies:
balanced-match "^1.0.0"
@@ -1591,14 +1586,6 @@ escape-string-regexp@^4.0.0:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
-eslint-plugin-prettier@^5.4.1:
- version "5.4.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.4.1.tgz#99b55d7dd70047886b2222fdd853665f180b36af"
- integrity sha512-9dF+KuU/Ilkq27A8idRP7N2DH8iUR6qXcjF3FR2wETY21PZdBrIjwCau8oboyGj9b7etWmTGEeM8e7oOed6ZWg==
- dependencies:
- prettier-linter-helpers "^1.0.0"
- synckit "^0.11.7"
-
eslint-plugin-unused-imports@^4.1.4:
version "4.1.4"
resolved "https://registry.yarnpkg.com/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-4.1.4.tgz#62ddc7446ccbf9aa7b6f1f0b00a980423cda2738"
@@ -1750,11 +1737,6 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
-fast-diff@^1.1.2:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0"
- integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==
-
fast-glob@^3.3.2:
version "3.3.2"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
@@ -2934,13 +2916,6 @@ prelude-ls@^1.2.1:
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
-prettier-linter-helpers@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b"
- integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==
- dependencies:
- fast-diff "^1.1.2"
-
prettier@^3.0.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.1.1.tgz#6ba9f23165d690b6cbdaa88cb0807278f7019848"
@@ -3263,13 +3238,6 @@ supports-preserve-symlinks-flag@^1.0.0:
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
-synckit@^0.11.7:
- version "0.11.8"
- resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.11.8.tgz#b2aaae998a4ef47ded60773ad06e7cb821f55457"
- integrity sha512-+XZ+r1XGIJGeQk3VvXhT6xx/VpbHsRzsTkGgF6E5RX9TTXD0118l87puaEBZ566FhqblC6U0d4XnubznJDm30A==
- dependencies:
- "@pkgr/core" "^0.2.4"
-
test-exclude@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e"