From 588885414cc29e94ec512952822d30f2007cbbae Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Mon, 15 Dec 2025 13:54:27 +0000
Subject: [PATCH 1/4] feat(api): RBAC APIs
---
.stats.yml | 8 +-
README.md | 2 +-
SECURITY.md | 2 +-
api.md | 179 +-
package.json | 2 +-
src/client.ts | 271 +++-
src/core/pagination.ts | 449 ++++++
src/resources/accounts.ts | 151 +-
src/resources/agents.ts | 1436 +++++++++++++++++
src/resources/editors.ts | 21 +
.../environments/automations/automations.ts | 6 +-
.../environments/automations/index.ts | 1 +
.../environments/automations/services.ts | 27 +
.../environments/automations/tasks/tasks.ts | 2 +
src/resources/environments/environments.ts | 97 +-
src/resources/environments/index.ts | 1 +
src/resources/errors.ts | 342 ++++
src/resources/events.ts | 35 +-
src/resources/groups.ts | 290 +---
src/resources/groups/groups.ts | 549 +++++++
src/resources/groups/index.ts | 37 +
src/resources/groups/memberships.ts | 237 +++
src/resources/groups/role-assignments.ts | 355 ++++
src/resources/index.ts | 103 +-
src/resources/organizations/custom-domains.ts | 311 ++++
src/resources/organizations/index.ts | 16 +
src/resources/organizations/organizations.ts | 54 +-
src/resources/organizations/policies.ts | 245 ++-
.../organizations/sso-configurations.ts | 24 +-
src/resources/prebuilds.ts | 527 ++++++
src/resources/projects/environment-clases.ts | 156 ++
src/resources/projects/index.ts | 9 +-
src/resources/projects/projects.ts | 192 ++-
.../runners/configurations/configurations.ts | 8 +
.../host-authentication-tokens.ts | 56 +
.../configurations/scm-integrations.ts | 24 +
src/resources/runners/index.ts | 6 +
src/resources/runners/runners.ts | 333 +++-
src/resources/secrets.ts | 17 +
src/resources/shared.ts | 147 +-
src/resources/users/index.ts | 4 +
src/resources/users/users.ts | 66 +
tests/api-resources/accounts.test.ts | 28 +-
tests/api-resources/agents.test.ts | 154 ++
tests/api-resources/editors.test.ts | 1 +
.../{groups.test.ts => errors.test.ts} | 6 +-
tests/api-resources/groups/groups.test.ts | 70 +
.../api-resources/groups/memberships.test.ts | 46 +
.../groups/role-assignments.test.ts | 46 +
.../organizations/custom-domains.test.ts | 104 ++
.../organizations/organizations.test.ts | 1 +
.../organizations/policies.test.ts | 14 +
.../organizations/sso-configurations.test.ts | 7 +-
tests/api-resources/prebuilds.test.ts | 118 ++
.../projects/environment-clases.test.ts | 34 +
tests/api-resources/projects/projects.test.ts | 11 +-
tests/api-resources/runners/runners.test.ts | 24 +
tests/api-resources/users/users.test.ts | 24 +
58 files changed, 7050 insertions(+), 436 deletions(-)
create mode 100644 src/resources/agents.ts
create mode 100644 src/resources/errors.ts
create mode 100644 src/resources/groups/groups.ts
create mode 100644 src/resources/groups/index.ts
create mode 100644 src/resources/groups/memberships.ts
create mode 100644 src/resources/groups/role-assignments.ts
create mode 100644 src/resources/organizations/custom-domains.ts
create mode 100644 src/resources/prebuilds.ts
create mode 100644 src/resources/projects/environment-clases.ts
create mode 100644 tests/api-resources/agents.test.ts
rename tests/api-resources/{groups.test.ts => errors.test.ts} (83%)
create mode 100644 tests/api-resources/groups/groups.test.ts
create mode 100644 tests/api-resources/groups/memberships.test.ts
create mode 100644 tests/api-resources/groups/role-assignments.test.ts
create mode 100644 tests/api-resources/organizations/custom-domains.test.ts
create mode 100644 tests/api-resources/prebuilds.test.ts
create mode 100644 tests/api-resources/projects/environment-clases.test.ts
diff --git a/.stats.yml b/.stats.yml
index 9333247..0fdb5b6 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
-configured_endpoints: 119
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-ca9a49ac7fbb63f55611fd7cd48a22a3ff8b38a797125c8513e891d9b7345550.yml
-openapi_spec_hash: fd6ffbdfaefcc555e61ca1c565e05214
-config_hash: 7fb76543ceafd4a116473f647f8d63b1
+configured_endpoints: 159
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-d62ef4b9187c1f3d36f428abc4b31d8a09ffd36e93d39b8136c60c8f463c838e.yml
+openapi_spec_hash: d7f01b6f24e88eb46d744ecd28061f26
+config_hash: 26e4a10dfc6ec809322e60d889d15414
diff --git a/README.md b/README.md
index 74f5d18..c116f77 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@
This library provides convenient access to the Gitpod REST API from server-side TypeScript or JavaScript.
-The REST API documentation can be found on [docs.ona.com](https://docs.ona.com). The full API of this library can be found in [api.md](api.md).
+The REST API documentation can be found on [docs.gitpod.io](https://docs.gitpod.io). The full API of this library can be found in [api.md](api.md).
It is generated with [Stainless](https://www.stainless.com/).
diff --git a/SECURITY.md b/SECURITY.md
index 8975e82..efd9088 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -20,7 +20,7 @@ or products provided by Gitpod, please follow the respective company's security
### Gitpod Terms and Policies
-Please contact dev-feedback@ona.com for any questions or concerns regarding the security of our services.
+Please contact dev-feedback@gitpod.com for any questions or concerns regarding the security of our services.
---
diff --git a/api.md b/api.md
index 228b9e2..07e45cb 100644
--- a/api.md
+++ b/api.md
@@ -4,12 +4,17 @@ Types:
- AutomationTrigger
- EnvironmentClass
+- EnvironmentVariableItem
+- EnvironmentVariableSource
- ErrorCode
- FieldValue
- Gateway
- OrganizationRole
- Principal
+- ProjectEnvironmentClass
+- ResourceType
- RunsOn
+- SecretRef
- Subject
- Task
- TaskExecution
@@ -32,21 +37,60 @@ Types:
- AccountRetrieveResponse
- AccountDeleteResponse
- AccountGetSSOLoginURLResponse
-- AccountListJoinableOrganizationsResponse
+- AccountListSSOLoginsResponse
Methods:
- client.accounts.retrieve({ ...params }) -> AccountRetrieveResponse
- client.accounts.delete({ ...params }) -> unknown
- client.accounts.getSSOLoginURL({ ...params }) -> AccountGetSSOLoginURLResponse
-- client.accounts.listJoinableOrganizations({ ...params }) -> AccountListJoinableOrganizationsResponse
+- client.accounts.listJoinableOrganizations({ ...params }) -> JoinableOrganizationsJoinableOrganizationsPage
- client.accounts.listLoginProviders({ ...params }) -> LoginProvidersLoginProvidersPage
+- client.accounts.listSSOLogins({ ...params }) -> AccountListSSOLoginsResponsesLoginsPage
+
+# Agents
+
+Types:
+
+- AgentCodeContext
+- AgentExecution
+- AgentMode
+- Prompt
+- PromptMetadata
+- PromptSpec
+- UserInputBlock
+- AgentCreateExecutionConversationTokenResponse
+- AgentCreatePromptResponse
+- AgentDeleteExecutionResponse
+- AgentDeletePromptResponse
+- AgentRetrieveExecutionResponse
+- AgentRetrievePromptResponse
+- AgentSendToExecutionResponse
+- AgentStartExecutionResponse
+- AgentStopExecutionResponse
+- AgentUpdatePromptResponse
+
+Methods:
+
+- client.agents.createExecutionConversationToken({ ...params }) -> AgentCreateExecutionConversationTokenResponse
+- client.agents.createPrompt({ ...params }) -> AgentCreatePromptResponse
+- client.agents.deleteExecution({ ...params }) -> unknown
+- client.agents.deletePrompt({ ...params }) -> unknown
+- client.agents.listExecutions({ ...params }) -> AgentExecutionsAgentExecutionsPage
+- client.agents.listPrompts({ ...params }) -> PromptsPromptsPage
+- client.agents.retrieveExecution({ ...params }) -> AgentRetrieveExecutionResponse
+- client.agents.retrievePrompt({ ...params }) -> AgentRetrievePromptResponse
+- client.agents.sendToExecution({ ...params }) -> unknown
+- client.agents.startExecution({ ...params }) -> AgentStartExecutionResponse
+- client.agents.stopExecution({ ...params }) -> unknown
+- client.agents.updatePrompt({ ...params }) -> AgentUpdatePromptResponse
# Editors
Types:
- Editor
+- EditorVersion
- EditorRetrieveResponse
- EditorResolveURLResponse
@@ -65,6 +109,7 @@ Types:
- EnvironmentActivitySignal
- EnvironmentMetadata
- EnvironmentPhase
+- EnvironmentRole
- EnvironmentSpec
- EnvironmentStatus
- EnvironmentCreateResponse
@@ -112,6 +157,7 @@ Types:
- Service
- ServiceMetadata
- ServicePhase
+- ServiceRole
- ServiceSpec
- ServiceStatus
- ServiceCreateResponse
@@ -169,12 +215,28 @@ Methods:
- client.environments.classes.list({ ...params }) -> EnvironmentClassesEnvironmentClassesPage
+# Errors
+
+Types:
+
+- Breadcrumb
+- ErrorEvent
+- ErrorLevel
+- ExceptionInfo
+- ExceptionMechanism
+- RequestInfo
+- StackFrame
+- ErrorReportErrorsResponse
+
+Methods:
+
+- client.errors.reportErrors({ ...params }) -> unknown
+
# Events
Types:
- ResourceOperation
-- ResourceType
- EventListResponse
- EventWatchResponse
@@ -193,11 +255,48 @@ Methods:
Types:
-- Group
+- Group
+- GroupCreateResponse
+- GroupRetrieveResponse
+- GroupUpdateResponse
+- GroupDeleteResponse
+
+Methods:
+
+- client.groups.create({ ...params }) -> GroupCreateResponse
+- client.groups.retrieve({ ...params }) -> GroupRetrieveResponse
+- client.groups.update({ ...params }) -> GroupUpdateResponse
+- client.groups.list({ ...params }) -> GroupsGroupsPage
+- client.groups.delete({ ...params }) -> unknown
+
+## Memberships
+
+Types:
+
+- GroupMembership
+- MembershipCreateResponse
+- MembershipDeleteResponse
Methods:
-- client.groups.list({ ...params }) -> GroupsGroupsPage
+- client.groups.memberships.create({ ...params }) -> MembershipCreateResponse
+- client.groups.memberships.list({ ...params }) -> GroupMembershipsMembersPage
+- client.groups.memberships.delete({ ...params }) -> unknown
+
+## RoleAssignments
+
+Types:
+
+- ResourceRole
+- RoleAssignment
+- RoleAssignmentCreateResponse
+- RoleAssignmentDeleteResponse
+
+Methods:
+
+- client.groups.roleAssignments.create({ ...params }) -> RoleAssignmentCreateResponse
+- client.groups.roleAssignments.list({ ...params }) -> RoleAssignmentsAssignmentsPage
+- client.groups.roleAssignments.delete({ ...params }) -> unknown
# Identity
@@ -241,6 +340,24 @@ Methods:
- client.organizations.listMembers({ ...params }) -> OrganizationMembersMembersPage
- client.organizations.setRole({ ...params }) -> unknown
+## CustomDomains
+
+Types:
+
+- CustomDomain
+- CustomDomainProvider
+- CustomDomainCreateResponse
+- CustomDomainRetrieveResponse
+- CustomDomainUpdateResponse
+- CustomDomainDeleteResponse
+
+Methods:
+
+- client.organizations.customDomains.create({ ...params }) -> CustomDomainCreateResponse
+- client.organizations.customDomains.retrieve({ ...params }) -> CustomDomainRetrieveResponse
+- client.organizations.customDomains.update({ ...params }) -> CustomDomainUpdateResponse
+- client.organizations.customDomains.delete({ ...params }) -> unknown
+
## DomainVerifications
Types:
@@ -279,7 +396,10 @@ Methods:
Types:
+- AgentPolicy
+- CrowdStrikeConfig
- OrganizationPolicies
+- SecurityAgentPolicy
- PolicyRetrieveResponse
- PolicyUpdateResponse
@@ -308,14 +428,40 @@ Methods:
- client.organizations.ssoConfigurations.list({ ...params }) -> SSOConfigurationsSSOConfigurationsPage
- client.organizations.ssoConfigurations.delete({ ...params }) -> unknown
+# Prebuilds
+
+Types:
+
+- Prebuild
+- PrebuildMetadata
+- PrebuildPhase
+- PrebuildSpec
+- PrebuildStatus
+- PrebuildTrigger
+- PrebuildCreateResponse
+- PrebuildRetrieveResponse
+- PrebuildDeleteResponse
+- PrebuildCancelResponse
+- PrebuildCreateLogsTokenResponse
+
+Methods:
+
+- client.prebuilds.create({ ...params }) -> PrebuildCreateResponse
+- client.prebuilds.retrieve({ ...params }) -> PrebuildRetrieveResponse
+- client.prebuilds.list({ ...params }) -> PrebuildsPrebuildsPage
+- client.prebuilds.delete({ ...params }) -> unknown
+- client.prebuilds.cancel({ ...params }) -> PrebuildCancelResponse
+- client.prebuilds.createLogsToken({ ...params }) -> PrebuildCreateLogsTokenResponse
+
# Projects
Types:
- EnvironmentInitializer
- Project
-- ProjectEnvironmentClass
- ProjectMetadata
+- ProjectPhase
+- ProjectPrebuildConfiguration
- ProjectCreateResponse
- ProjectRetrieveResponse
- ProjectUpdateResponse
@@ -331,6 +477,17 @@ Methods:
- client.projects.delete({ ...params }) -> unknown
- client.projects.createFromEnvironment({ ...params }) -> ProjectCreateFromEnvironmentResponse
+## EnvironmentClases
+
+Types:
+
+- EnvironmentClaseUpdateResponse
+
+Methods:
+
+- client.projects.environmentClases.update({ ...params }) -> unknown
+- client.projects.environmentClases.list({ ...params }) -> ProjectEnvironmentClassesProjectEnvironmentClassesPage
+
## Policies
Types:
@@ -364,13 +521,17 @@ Types:
- RunnerReleaseChannel
- RunnerSpec
- RunnerStatus
+- RunnerVariant
+- SearchMode
- RunnerCreateResponse
- RunnerRetrieveResponse
- RunnerUpdateResponse
- RunnerDeleteResponse
- RunnerCheckAuthenticationForHostResponse
+- RunnerCreateLogsTokenResponse
- RunnerCreateRunnerTokenResponse
- RunnerParseContextURLResponse
+- RunnerSearchRepositoriesResponse
Methods:
@@ -380,8 +541,10 @@ Methods:
- client.runners.list({ ...params }) -> RunnersRunnersPage
- client.runners.delete({ ...params }) -> unknown
- client.runners.checkAuthenticationForHost({ ...params }) -> RunnerCheckAuthenticationForHostResponse
+- client.runners.createLogsToken({ ...params }) -> RunnerCreateLogsTokenResponse
- client.runners.createRunnerToken({ ...params }) -> RunnerCreateRunnerTokenResponse
- client.runners.parseContextURL({ ...params }) -> RunnerParseContextURLResponse
+- client.runners.searchRepositories({ ...params }) -> RunnerSearchRepositoriesResponse
## Configurations
@@ -511,12 +674,16 @@ Methods:
Types:
- User
+- UserDeleteUserResponse
- UserGetAuthenticatedUserResponse
+- UserGetUserResponse
- UserSetSuspendedResponse
Methods:
+- client.users.deleteUser({ ...params }) -> unknown
- client.users.getAuthenticatedUser({ ...params }) -> UserGetAuthenticatedUserResponse
+- client.users.getUser({ ...params }) -> UserGetUserResponse
- client.users.setSuspended({ ...params }) -> unknown
## Dotfiles
diff --git a/package.json b/package.json
index a3badc3..ea70804 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "@gitpod/sdk",
"version": "0.7.11",
"description": "The official TypeScript library for the Gitpod API",
- "author": "Gitpod ",
+ "author": "Gitpod ",
"types": "dist/index.d.ts",
"main": "dist/index.js",
"type": "commonjs",
diff --git a/src/client.ts b/src/client.ts
index 1727bcc..588c9ed 100644
--- a/src/client.ts
+++ b/src/client.ts
@@ -23,6 +23,10 @@ import * as Errors from './core/error';
import * as Pagination from './core/pagination';
import {
AbstractPage,
+ type AgentExecutionsPageParams,
+ AgentExecutionsPageResponse,
+ type AssignmentsPageParams,
+ AssignmentsPageResponse,
type DomainVerificationsPageParams,
DomainVerificationsPageResponse,
type EditorsPageParams,
@@ -39,18 +43,30 @@ import {
GroupsPageResponse,
type IntegrationsPageParams,
IntegrationsPageResponse,
+ type JoinableOrganizationsPageParams,
+ JoinableOrganizationsPageResponse,
type LoginProvidersPageParams,
LoginProvidersPageResponse,
+ type LoginsPageParams,
+ LoginsPageResponse,
type MembersPageParams,
MembersPageResponse,
type PersonalAccessTokensPageParams,
PersonalAccessTokensPageResponse,
type PoliciesPageParams,
PoliciesPageResponse,
+ type PrebuildsPageParams,
+ PrebuildsPageResponse,
+ type ProjectEnvironmentClassesPageParams,
+ ProjectEnvironmentClassesPageResponse,
type ProjectsPageParams,
ProjectsPageResponse,
+ type PromptsPageParams,
+ PromptsPageResponse,
type RecordsPageParams,
RecordsPageResponse,
+ type RepositoriesPageParams,
+ RepositoriesPageResponse,
type RunnersPageParams,
RunnersPageResponse,
type SSOConfigurationsPageParams,
@@ -76,16 +92,53 @@ import {
AccountGetSSOLoginURLParams,
AccountGetSSOLoginURLResponse,
AccountListJoinableOrganizationsParams,
- AccountListJoinableOrganizationsResponse,
AccountListLoginProvidersParams,
+ AccountListSSOLoginsParams,
+ AccountListSSOLoginsResponse,
+ AccountListSSOLoginsResponsesLoginsPage,
AccountMembership,
AccountRetrieveParams,
AccountRetrieveResponse,
Accounts,
JoinableOrganization,
+ JoinableOrganizationsJoinableOrganizationsPage,
LoginProvider,
LoginProvidersLoginProvidersPage,
} from './resources/accounts';
+import {
+ AgentCodeContext,
+ AgentCreateExecutionConversationTokenParams,
+ AgentCreateExecutionConversationTokenResponse,
+ AgentCreatePromptParams,
+ AgentCreatePromptResponse,
+ AgentDeleteExecutionParams,
+ AgentDeleteExecutionResponse,
+ AgentDeletePromptParams,
+ AgentDeletePromptResponse,
+ AgentExecution,
+ AgentExecutionsAgentExecutionsPage,
+ AgentListExecutionsParams,
+ AgentListPromptsParams,
+ AgentMode,
+ AgentRetrieveExecutionParams,
+ AgentRetrieveExecutionResponse,
+ AgentRetrievePromptParams,
+ AgentRetrievePromptResponse,
+ AgentSendToExecutionParams,
+ AgentSendToExecutionResponse,
+ AgentStartExecutionParams,
+ AgentStartExecutionResponse,
+ AgentStopExecutionParams,
+ AgentStopExecutionResponse,
+ AgentUpdatePromptParams,
+ AgentUpdatePromptResponse,
+ Agents,
+ Prompt,
+ PromptMetadata,
+ PromptSpec,
+ PromptsPromptsPage,
+ UserInputBlock,
+} from './resources/agents';
import {
Editor,
EditorListParams,
@@ -93,9 +146,22 @@ import {
EditorResolveURLResponse,
EditorRetrieveParams,
EditorRetrieveResponse,
+ EditorVersion,
Editors,
EditorsEditorsPage,
} from './resources/editors';
+import {
+ Breadcrumb,
+ ErrorEvent,
+ ErrorLevel,
+ ErrorReportErrorsParams,
+ ErrorReportErrorsResponse,
+ Errors as ErrorsAPIErrors,
+ ExceptionInfo,
+ ExceptionMechanism,
+ RequestInfo,
+ StackFrame,
+} from './resources/errors';
import {
EventListParams,
EventListResponse,
@@ -104,10 +170,8 @@ import {
EventWatchResponse,
Events,
ResourceOperation,
- ResourceType,
} from './resources/events';
import { GatewayListParams, Gateways } from './resources/gateways';
-import { Group, GroupListParams, Groups, GroupsGroupsPage } from './resources/groups';
import {
IDTokenVersion,
Identity,
@@ -118,6 +182,27 @@ import {
IdentityGetIDTokenParams,
IdentityGetIDTokenResponse,
} from './resources/identity';
+import {
+ Prebuild,
+ PrebuildCancelParams,
+ PrebuildCancelResponse,
+ PrebuildCreateLogsTokenParams,
+ PrebuildCreateLogsTokenResponse,
+ PrebuildCreateParams,
+ PrebuildCreateResponse,
+ PrebuildDeleteParams,
+ PrebuildDeleteResponse,
+ PrebuildListParams,
+ PrebuildMetadata,
+ PrebuildPhase,
+ PrebuildRetrieveParams,
+ PrebuildRetrieveResponse,
+ PrebuildSpec,
+ PrebuildStatus,
+ PrebuildTrigger,
+ Prebuilds,
+ PrebuildsPrebuildsPage,
+} from './resources/prebuilds';
import {
Secret,
SecretCreateParams,
@@ -160,6 +245,7 @@ import {
EnvironmentPhase,
EnvironmentRetrieveParams,
EnvironmentRetrieveResponse,
+ EnvironmentRole,
EnvironmentSpec,
EnvironmentStartParams,
EnvironmentStartResponse,
@@ -173,6 +259,20 @@ import {
Environments,
EnvironmentsEnvironmentsPage,
} from './resources/environments/environments';
+import {
+ Group,
+ GroupCreateParams,
+ GroupCreateResponse,
+ GroupDeleteParams,
+ GroupDeleteResponse,
+ GroupListParams,
+ GroupRetrieveParams,
+ GroupRetrieveResponse,
+ GroupUpdateParams,
+ GroupUpdateResponse,
+ Groups,
+ GroupsGroupsPage,
+} from './resources/groups/groups';
import {
InviteDomains,
Organization,
@@ -205,9 +305,10 @@ import {
ProjectCreateResponse,
ProjectDeleteParams,
ProjectDeleteResponse,
- ProjectEnvironmentClass,
ProjectListParams,
ProjectMetadata,
+ ProjectPhase,
+ ProjectPrebuildConfiguration,
ProjectRetrieveParams,
ProjectRetrieveResponse,
ProjectUpdateParams,
@@ -224,6 +325,8 @@ import {
RunnerCheckAuthenticationForHostParams,
RunnerCheckAuthenticationForHostResponse,
RunnerConfiguration,
+ RunnerCreateLogsTokenParams,
+ RunnerCreateLogsTokenResponse,
RunnerCreateParams,
RunnerCreateResponse,
RunnerCreateRunnerTokenParams,
@@ -239,17 +342,25 @@ import {
RunnerReleaseChannel,
RunnerRetrieveParams,
RunnerRetrieveResponse,
+ RunnerSearchRepositoriesParams,
+ RunnerSearchRepositoriesResponse,
RunnerSpec,
RunnerStatus,
RunnerUpdateParams,
RunnerUpdateResponse,
+ RunnerVariant,
Runners,
RunnersRunnersPage,
+ SearchMode,
} from './resources/runners/runners';
import {
User,
+ UserDeleteUserParams,
+ UserDeleteUserResponse,
UserGetAuthenticatedUserParams,
UserGetAuthenticatedUserResponse,
+ UserGetUserParams,
+ UserGetUserResponse,
UserSetSuspendedParams,
UserSetSuspendedResponse,
Users,
@@ -964,13 +1075,16 @@ export class Gitpod {
static toFile = Uploads.toFile;
accounts: API.Accounts = new API.Accounts(this);
+ agents: API.Agents = new API.Agents(this);
editors: API.Editors = new API.Editors(this);
environments: API.Environments = new API.Environments(this);
+ errors: API.Errors = new API.Errors(this);
events: API.Events = new API.Events(this);
gateways: API.Gateways = new API.Gateways(this);
groups: API.Groups = new API.Groups(this);
identity: API.Identity = new API.Identity(this);
organizations: API.Organizations = new API.Organizations(this);
+ prebuilds: API.Prebuilds = new API.Prebuilds(this);
projects: API.Projects = new API.Projects(this);
runners: API.Runners = new API.Runners(this);
secrets: API.Secrets = new API.Secrets(this);
@@ -979,13 +1093,16 @@ export class Gitpod {
}
Gitpod.Accounts = Accounts;
+Gitpod.Agents = Agents;
Gitpod.Editors = Editors;
Gitpod.Environments = Environments;
+Gitpod.Errors = ErrorsAPIErrors;
Gitpod.Events = Events;
Gitpod.Gateways = Gateways;
Gitpod.Groups = Groups;
Gitpod.Identity = Identity;
Gitpod.Organizations = Organizations;
+Gitpod.Prebuilds = Prebuilds;
Gitpod.Projects = Projects;
Gitpod.Runners = Runners;
Gitpod.Secrets = Secrets;
@@ -995,6 +1112,18 @@ Gitpod.Users = Users;
export declare namespace Gitpod {
export type RequestOptions = Opts.RequestOptions;
+ export import AgentExecutionsPage = Pagination.AgentExecutionsPage;
+ export {
+ type AgentExecutionsPageParams as AgentExecutionsPageParams,
+ type AgentExecutionsPageResponse as AgentExecutionsPageResponse,
+ };
+
+ export import AssignmentsPage = Pagination.AssignmentsPage;
+ export {
+ type AssignmentsPageParams as AssignmentsPageParams,
+ type AssignmentsPageResponse as AssignmentsPageResponse,
+ };
+
export import DomainVerificationsPage = Pagination.DomainVerificationsPage;
export {
type DomainVerificationsPageParams as DomainVerificationsPageParams,
@@ -1031,12 +1160,21 @@ export declare namespace Gitpod {
type IntegrationsPageResponse as IntegrationsPageResponse,
};
+ export import JoinableOrganizationsPage = Pagination.JoinableOrganizationsPage;
+ export {
+ type JoinableOrganizationsPageParams as JoinableOrganizationsPageParams,
+ type JoinableOrganizationsPageResponse as JoinableOrganizationsPageResponse,
+ };
+
export import LoginProvidersPage = Pagination.LoginProvidersPage;
export {
type LoginProvidersPageParams as LoginProvidersPageParams,
type LoginProvidersPageResponse as LoginProvidersPageResponse,
};
+ export import LoginsPage = Pagination.LoginsPage;
+ export { type LoginsPageParams as LoginsPageParams, type LoginsPageResponse as LoginsPageResponse };
+
export import MembersPage = Pagination.MembersPage;
export { type MembersPageParams as MembersPageParams, type MembersPageResponse as MembersPageResponse };
@@ -1049,12 +1187,33 @@ export declare namespace Gitpod {
export import PoliciesPage = Pagination.PoliciesPage;
export { type PoliciesPageParams as PoliciesPageParams, type PoliciesPageResponse as PoliciesPageResponse };
+ export import PrebuildsPage = Pagination.PrebuildsPage;
+ export {
+ type PrebuildsPageParams as PrebuildsPageParams,
+ type PrebuildsPageResponse as PrebuildsPageResponse,
+ };
+
+ export import ProjectEnvironmentClassesPage = Pagination.ProjectEnvironmentClassesPage;
+ export {
+ type ProjectEnvironmentClassesPageParams as ProjectEnvironmentClassesPageParams,
+ type ProjectEnvironmentClassesPageResponse as ProjectEnvironmentClassesPageResponse,
+ };
+
export import ProjectsPage = Pagination.ProjectsPage;
export { type ProjectsPageParams as ProjectsPageParams, type ProjectsPageResponse as ProjectsPageResponse };
+ export import PromptsPage = Pagination.PromptsPage;
+ export { type PromptsPageParams as PromptsPageParams, type PromptsPageResponse as PromptsPageResponse };
+
export import RecordsPage = Pagination.RecordsPage;
export { type RecordsPageParams as RecordsPageParams, type RecordsPageResponse as RecordsPageResponse };
+ export import RepositoriesPage = Pagination.RepositoriesPage;
+ export {
+ type RepositoriesPageParams as RepositoriesPageParams,
+ type RepositoriesPageResponse as RepositoriesPageResponse,
+ };
+
export import RunnersPage = Pagination.RunnersPage;
export { type RunnersPageParams as RunnersPageParams, type RunnersPageResponse as RunnersPageResponse };
@@ -1091,18 +1250,57 @@ export declare namespace Gitpod {
type AccountRetrieveResponse as AccountRetrieveResponse,
type AccountDeleteResponse as AccountDeleteResponse,
type AccountGetSSOLoginURLResponse as AccountGetSSOLoginURLResponse,
- type AccountListJoinableOrganizationsResponse as AccountListJoinableOrganizationsResponse,
+ type AccountListSSOLoginsResponse as AccountListSSOLoginsResponse,
+ type JoinableOrganizationsJoinableOrganizationsPage as JoinableOrganizationsJoinableOrganizationsPage,
type LoginProvidersLoginProvidersPage as LoginProvidersLoginProvidersPage,
+ type AccountListSSOLoginsResponsesLoginsPage as AccountListSSOLoginsResponsesLoginsPage,
type AccountRetrieveParams as AccountRetrieveParams,
type AccountDeleteParams as AccountDeleteParams,
type AccountGetSSOLoginURLParams as AccountGetSSOLoginURLParams,
type AccountListJoinableOrganizationsParams as AccountListJoinableOrganizationsParams,
type AccountListLoginProvidersParams as AccountListLoginProvidersParams,
+ type AccountListSSOLoginsParams as AccountListSSOLoginsParams,
+ };
+
+ export {
+ Agents as Agents,
+ type AgentCodeContext as AgentCodeContext,
+ type AgentExecution as AgentExecution,
+ type AgentMode as AgentMode,
+ type Prompt as Prompt,
+ type PromptMetadata as PromptMetadata,
+ type PromptSpec as PromptSpec,
+ type UserInputBlock as UserInputBlock,
+ type AgentCreateExecutionConversationTokenResponse as AgentCreateExecutionConversationTokenResponse,
+ type AgentCreatePromptResponse as AgentCreatePromptResponse,
+ type AgentDeleteExecutionResponse as AgentDeleteExecutionResponse,
+ type AgentDeletePromptResponse as AgentDeletePromptResponse,
+ type AgentRetrieveExecutionResponse as AgentRetrieveExecutionResponse,
+ type AgentRetrievePromptResponse as AgentRetrievePromptResponse,
+ type AgentSendToExecutionResponse as AgentSendToExecutionResponse,
+ type AgentStartExecutionResponse as AgentStartExecutionResponse,
+ type AgentStopExecutionResponse as AgentStopExecutionResponse,
+ type AgentUpdatePromptResponse as AgentUpdatePromptResponse,
+ type AgentExecutionsAgentExecutionsPage as AgentExecutionsAgentExecutionsPage,
+ type PromptsPromptsPage as PromptsPromptsPage,
+ type AgentCreateExecutionConversationTokenParams as AgentCreateExecutionConversationTokenParams,
+ type AgentCreatePromptParams as AgentCreatePromptParams,
+ type AgentDeleteExecutionParams as AgentDeleteExecutionParams,
+ type AgentDeletePromptParams as AgentDeletePromptParams,
+ type AgentListExecutionsParams as AgentListExecutionsParams,
+ type AgentListPromptsParams as AgentListPromptsParams,
+ type AgentRetrieveExecutionParams as AgentRetrieveExecutionParams,
+ type AgentRetrievePromptParams as AgentRetrievePromptParams,
+ type AgentSendToExecutionParams as AgentSendToExecutionParams,
+ type AgentStartExecutionParams as AgentStartExecutionParams,
+ type AgentStopExecutionParams as AgentStopExecutionParams,
+ type AgentUpdatePromptParams as AgentUpdatePromptParams,
};
export {
Editors as Editors,
type Editor as Editor,
+ type EditorVersion as EditorVersion,
type EditorRetrieveResponse as EditorRetrieveResponse,
type EditorResolveURLResponse as EditorResolveURLResponse,
type EditorsEditorsPage as EditorsEditorsPage,
@@ -1118,6 +1316,7 @@ export declare namespace Gitpod {
type EnvironmentActivitySignal as EnvironmentActivitySignal,
type EnvironmentMetadata as EnvironmentMetadata,
type EnvironmentPhase as EnvironmentPhase,
+ type EnvironmentRole as EnvironmentRole,
type EnvironmentSpec as EnvironmentSpec,
type EnvironmentStatus as EnvironmentStatus,
type EnvironmentCreateResponse as EnvironmentCreateResponse,
@@ -1146,10 +1345,22 @@ export declare namespace Gitpod {
type EnvironmentUnarchiveParams as EnvironmentUnarchiveParams,
};
+ export {
+ ErrorsAPIErrors as Errors,
+ type Breadcrumb as Breadcrumb,
+ type ErrorEvent as ErrorEvent,
+ type ErrorLevel as ErrorLevel,
+ type ExceptionInfo as ExceptionInfo,
+ type ExceptionMechanism as ExceptionMechanism,
+ type RequestInfo as RequestInfo,
+ type StackFrame as StackFrame,
+ type ErrorReportErrorsResponse as ErrorReportErrorsResponse,
+ type ErrorReportErrorsParams as ErrorReportErrorsParams,
+ };
+
export {
Events as Events,
type ResourceOperation as ResourceOperation,
- type ResourceType as ResourceType,
type EventListResponse as EventListResponse,
type EventWatchResponse as EventWatchResponse,
type EventListResponsesEntriesPage as EventListResponsesEntriesPage,
@@ -1162,8 +1373,16 @@ export declare namespace Gitpod {
export {
Groups as Groups,
type Group as Group,
+ type GroupCreateResponse as GroupCreateResponse,
+ type GroupRetrieveResponse as GroupRetrieveResponse,
+ type GroupUpdateResponse as GroupUpdateResponse,
+ type GroupDeleteResponse as GroupDeleteResponse,
type GroupsGroupsPage as GroupsGroupsPage,
+ type GroupCreateParams as GroupCreateParams,
+ type GroupRetrieveParams as GroupRetrieveParams,
+ type GroupUpdateParams as GroupUpdateParams,
type GroupListParams as GroupListParams,
+ type GroupDeleteParams as GroupDeleteParams,
};
export {
@@ -1201,12 +1420,35 @@ export declare namespace Gitpod {
type OrganizationSetRoleParams as OrganizationSetRoleParams,
};
+ export {
+ Prebuilds as Prebuilds,
+ type Prebuild as Prebuild,
+ type PrebuildMetadata as PrebuildMetadata,
+ type PrebuildPhase as PrebuildPhase,
+ type PrebuildSpec as PrebuildSpec,
+ type PrebuildStatus as PrebuildStatus,
+ type PrebuildTrigger as PrebuildTrigger,
+ type PrebuildCreateResponse as PrebuildCreateResponse,
+ type PrebuildRetrieveResponse as PrebuildRetrieveResponse,
+ type PrebuildDeleteResponse as PrebuildDeleteResponse,
+ type PrebuildCancelResponse as PrebuildCancelResponse,
+ type PrebuildCreateLogsTokenResponse as PrebuildCreateLogsTokenResponse,
+ type PrebuildsPrebuildsPage as PrebuildsPrebuildsPage,
+ type PrebuildCreateParams as PrebuildCreateParams,
+ type PrebuildRetrieveParams as PrebuildRetrieveParams,
+ type PrebuildListParams as PrebuildListParams,
+ type PrebuildDeleteParams as PrebuildDeleteParams,
+ type PrebuildCancelParams as PrebuildCancelParams,
+ type PrebuildCreateLogsTokenParams as PrebuildCreateLogsTokenParams,
+ };
+
export {
Projects as Projects,
type EnvironmentInitializer as EnvironmentInitializer,
type Project as Project,
- type ProjectEnvironmentClass as ProjectEnvironmentClass,
type ProjectMetadata as ProjectMetadata,
+ type ProjectPhase as ProjectPhase,
+ type ProjectPrebuildConfiguration as ProjectPrebuildConfiguration,
type ProjectCreateResponse as ProjectCreateResponse,
type ProjectRetrieveResponse as ProjectRetrieveResponse,
type ProjectUpdateResponse as ProjectUpdateResponse,
@@ -1235,13 +1477,17 @@ export declare namespace Gitpod {
type RunnerReleaseChannel as RunnerReleaseChannel,
type RunnerSpec as RunnerSpec,
type RunnerStatus as RunnerStatus,
+ type RunnerVariant as RunnerVariant,
+ type SearchMode as SearchMode,
type RunnerCreateResponse as RunnerCreateResponse,
type RunnerRetrieveResponse as RunnerRetrieveResponse,
type RunnerUpdateResponse as RunnerUpdateResponse,
type RunnerDeleteResponse as RunnerDeleteResponse,
type RunnerCheckAuthenticationForHostResponse as RunnerCheckAuthenticationForHostResponse,
+ type RunnerCreateLogsTokenResponse as RunnerCreateLogsTokenResponse,
type RunnerCreateRunnerTokenResponse as RunnerCreateRunnerTokenResponse,
type RunnerParseContextURLResponse as RunnerParseContextURLResponse,
+ type RunnerSearchRepositoriesResponse as RunnerSearchRepositoriesResponse,
type RunnersRunnersPage as RunnersRunnersPage,
type RunnerCreateParams as RunnerCreateParams,
type RunnerRetrieveParams as RunnerRetrieveParams,
@@ -1249,8 +1495,10 @@ export declare namespace Gitpod {
type RunnerListParams as RunnerListParams,
type RunnerDeleteParams as RunnerDeleteParams,
type RunnerCheckAuthenticationForHostParams as RunnerCheckAuthenticationForHostParams,
+ type RunnerCreateLogsTokenParams as RunnerCreateLogsTokenParams,
type RunnerCreateRunnerTokenParams as RunnerCreateRunnerTokenParams,
type RunnerParseContextURLParams as RunnerParseContextURLParams,
+ type RunnerSearchRepositoriesParams as RunnerSearchRepositoriesParams,
};
export {
@@ -1279,20 +1527,29 @@ export declare namespace Gitpod {
export {
Users as Users,
type User as User,
+ type UserDeleteUserResponse as UserDeleteUserResponse,
type UserGetAuthenticatedUserResponse as UserGetAuthenticatedUserResponse,
+ type UserGetUserResponse as UserGetUserResponse,
type UserSetSuspendedResponse as UserSetSuspendedResponse,
+ type UserDeleteUserParams as UserDeleteUserParams,
type UserGetAuthenticatedUserParams as UserGetAuthenticatedUserParams,
+ type UserGetUserParams as UserGetUserParams,
type UserSetSuspendedParams as UserSetSuspendedParams,
};
export type AutomationTrigger = API.AutomationTrigger;
export type EnvironmentClass = API.EnvironmentClass;
+ export type EnvironmentVariableItem = API.EnvironmentVariableItem;
+ export type EnvironmentVariableSource = API.EnvironmentVariableSource;
export type ErrorCode = API.ErrorCode;
export type FieldValue = API.FieldValue;
export type Gateway = API.Gateway;
export type OrganizationRole = API.OrganizationRole;
export type Principal = API.Principal;
+ export type ProjectEnvironmentClass = API.ProjectEnvironmentClass;
+ export type ResourceType = API.ResourceType;
export type RunsOn = API.RunsOn;
+ export type SecretRef = API.SecretRef;
export type Subject = API.Subject;
export type Task = API.Task;
export type TaskExecution = API.TaskExecution;
diff --git a/src/core/pagination.ts b/src/core/pagination.ts
index 77ed264..1a591d6 100644
--- a/src/core/pagination.ts
+++ b/src/core/pagination.ts
@@ -107,6 +107,119 @@ export class PagePromise<
}
}
+export interface AgentExecutionsPageResponse- {
+ agentExecutions: Array
- ;
+
+ pagination: AgentExecutionsPageResponse.Pagination;
+}
+
+export namespace AgentExecutionsPageResponse {
+ export interface Pagination {
+ nextToken?: string;
+ }
+}
+
+export interface AgentExecutionsPageParams {
+ pageSize?: number;
+
+ token?: string;
+}
+
+export class AgentExecutionsPage
-
+ extends AbstractPage
-
+ implements AgentExecutionsPageResponse
-
+{
+ agentExecutions: Array
- ;
+
+ pagination: AgentExecutionsPageResponse.Pagination;
+
+ constructor(
+ client: Gitpod,
+ response: Response,
+ body: AgentExecutionsPageResponse
- ,
+ options: FinalRequestOptions,
+ ) {
+ super(client, response, body, options);
+
+ this.agentExecutions = body.agentExecutions || [];
+ this.pagination = body.pagination || {};
+ }
+
+ getPaginatedItems(): Item[] {
+ return this.agentExecutions ?? [];
+ }
+
+ nextPageRequestOptions(): PageRequestOptions | null {
+ const cursor = this.pagination?.nextToken;
+ if (!cursor) {
+ return null;
+ }
+
+ return {
+ ...this.options,
+ query: {
+ ...maybeObj(this.options.query),
+ token: cursor,
+ },
+ };
+ }
+}
+
+export interface AssignmentsPageResponse
- {
+ assignments: Array
- ;
+
+ pagination: AssignmentsPageResponse.Pagination;
+}
+
+export namespace AssignmentsPageResponse {
+ export interface Pagination {
+ nextToken?: string;
+ }
+}
+
+export interface AssignmentsPageParams {
+ pageSize?: number;
+
+ token?: string;
+}
+
+export class AssignmentsPage
- extends AbstractPage
- implements AssignmentsPageResponse
- {
+ assignments: Array
- ;
+
+ pagination: AssignmentsPageResponse.Pagination;
+
+ constructor(
+ client: Gitpod,
+ response: Response,
+ body: AssignmentsPageResponse
- ,
+ options: FinalRequestOptions,
+ ) {
+ super(client, response, body, options);
+
+ this.assignments = body.assignments || [];
+ this.pagination = body.pagination || {};
+ }
+
+ getPaginatedItems(): Item[] {
+ return this.assignments ?? [];
+ }
+
+ nextPageRequestOptions(): PageRequestOptions | null {
+ const cursor = this.pagination?.nextToken;
+ if (!cursor) {
+ return null;
+ }
+
+ return {
+ ...this.options,
+ query: {
+ ...maybeObj(this.options.query),
+ token: cursor,
+ },
+ };
+ }
+}
+
export interface DomainVerificationsPageResponse
- {
domainVerifications: Array
- ;
@@ -553,6 +666,64 @@ export class IntegrationsPage
- extends AbstractPage
- implements Integr
}
}
+export interface JoinableOrganizationsPageResponse
- {
+ joinableOrganizations: Array
- ;
+
+ pagination: JoinableOrganizationsPageResponse.Pagination;
+}
+
+export namespace JoinableOrganizationsPageResponse {
+ export interface Pagination {
+ nextToken?: string;
+ }
+}
+
+export interface JoinableOrganizationsPageParams {
+ pageSize?: number;
+
+ token?: string;
+}
+
+export class JoinableOrganizationsPage
-
+ extends AbstractPage
-
+ implements JoinableOrganizationsPageResponse
-
+{
+ joinableOrganizations: Array
- ;
+
+ pagination: JoinableOrganizationsPageResponse.Pagination;
+
+ constructor(
+ client: Gitpod,
+ response: Response,
+ body: JoinableOrganizationsPageResponse
- ,
+ options: FinalRequestOptions,
+ ) {
+ super(client, response, body, options);
+
+ this.joinableOrganizations = body.joinableOrganizations || [];
+ this.pagination = body.pagination || {};
+ }
+
+ getPaginatedItems(): Item[] {
+ return this.joinableOrganizations ?? [];
+ }
+
+ nextPageRequestOptions(): PageRequestOptions | null {
+ const cursor = this.pagination?.nextToken;
+ if (!cursor) {
+ return null;
+ }
+
+ return {
+ ...this.options,
+ query: {
+ ...maybeObj(this.options.query),
+ token: cursor,
+ },
+ };
+ }
+}
+
export interface LoginProvidersPageResponse
- {
loginProviders: Array
- ;
@@ -608,6 +779,61 @@ export class LoginProvidersPage
- extends AbstractPage
- implements Logi
}
}
+export interface LoginsPageResponse
- {
+ logins: Array
- ;
+
+ pagination: LoginsPageResponse.Pagination;
+}
+
+export namespace LoginsPageResponse {
+ export interface Pagination {
+ nextToken?: string;
+ }
+}
+
+export interface LoginsPageParams {
+ pageSize?: number;
+
+ token?: string;
+}
+
+export class LoginsPage
- extends AbstractPage
- implements LoginsPageResponse
- {
+ logins: Array
- ;
+
+ pagination: LoginsPageResponse.Pagination;
+
+ constructor(
+ client: Gitpod,
+ response: Response,
+ body: LoginsPageResponse
- ,
+ options: FinalRequestOptions,
+ ) {
+ super(client, response, body, options);
+
+ this.logins = body.logins || [];
+ this.pagination = body.pagination || {};
+ }
+
+ getPaginatedItems(): Item[] {
+ return this.logins ?? [];
+ }
+
+ nextPageRequestOptions(): PageRequestOptions | null {
+ const cursor = this.pagination?.nextToken;
+ if (!cursor) {
+ return null;
+ }
+
+ return {
+ ...this.options,
+ query: {
+ ...maybeObj(this.options.query),
+ token: cursor,
+ },
+ };
+ }
+}
+
export interface MembersPageResponse
- {
members: Array
- ;
@@ -776,6 +1002,119 @@ export class PoliciesPage
- extends AbstractPage
- implements PoliciesPa
}
}
+export interface PrebuildsPageResponse
- {
+ pagination: PrebuildsPageResponse.Pagination;
+
+ prebuilds: Array
- ;
+}
+
+export namespace PrebuildsPageResponse {
+ export interface Pagination {
+ nextToken?: string;
+ }
+}
+
+export interface PrebuildsPageParams {
+ pageSize?: number;
+
+ token?: string;
+}
+
+export class PrebuildsPage
- extends AbstractPage
- implements PrebuildsPageResponse
- {
+ pagination: PrebuildsPageResponse.Pagination;
+
+ prebuilds: Array
- ;
+
+ constructor(
+ client: Gitpod,
+ response: Response,
+ body: PrebuildsPageResponse
- ,
+ options: FinalRequestOptions,
+ ) {
+ super(client, response, body, options);
+
+ this.pagination = body.pagination || {};
+ this.prebuilds = body.prebuilds || [];
+ }
+
+ getPaginatedItems(): Item[] {
+ return this.prebuilds ?? [];
+ }
+
+ nextPageRequestOptions(): PageRequestOptions | null {
+ const cursor = this.pagination?.nextToken;
+ if (!cursor) {
+ return null;
+ }
+
+ return {
+ ...this.options,
+ query: {
+ ...maybeObj(this.options.query),
+ token: cursor,
+ },
+ };
+ }
+}
+
+export interface ProjectEnvironmentClassesPageResponse
- {
+ pagination: ProjectEnvironmentClassesPageResponse.Pagination;
+
+ projectEnvironmentClasses: Array
- ;
+}
+
+export namespace ProjectEnvironmentClassesPageResponse {
+ export interface Pagination {
+ nextToken?: string;
+ }
+}
+
+export interface ProjectEnvironmentClassesPageParams {
+ pageSize?: number;
+
+ token?: string;
+}
+
+export class ProjectEnvironmentClassesPage
-
+ extends AbstractPage
-
+ implements ProjectEnvironmentClassesPageResponse
-
+{
+ pagination: ProjectEnvironmentClassesPageResponse.Pagination;
+
+ projectEnvironmentClasses: Array
- ;
+
+ constructor(
+ client: Gitpod,
+ response: Response,
+ body: ProjectEnvironmentClassesPageResponse
- ,
+ options: FinalRequestOptions,
+ ) {
+ super(client, response, body, options);
+
+ this.pagination = body.pagination || {};
+ this.projectEnvironmentClasses = body.projectEnvironmentClasses || [];
+ }
+
+ getPaginatedItems(): Item[] {
+ return this.projectEnvironmentClasses ?? [];
+ }
+
+ nextPageRequestOptions(): PageRequestOptions | null {
+ const cursor = this.pagination?.nextToken;
+ if (!cursor) {
+ return null;
+ }
+
+ return {
+ ...this.options,
+ query: {
+ ...maybeObj(this.options.query),
+ token: cursor,
+ },
+ };
+ }
+}
+
export interface ProjectsPageResponse
- {
pagination: ProjectsPageResponse.Pagination;
@@ -831,6 +1170,61 @@ export class ProjectsPage
- extends AbstractPage
- implements ProjectsPa
}
}
+export interface PromptsPageResponse
- {
+ pagination: PromptsPageResponse.Pagination;
+
+ prompts: Array
- ;
+}
+
+export namespace PromptsPageResponse {
+ export interface Pagination {
+ nextToken?: string;
+ }
+}
+
+export interface PromptsPageParams {
+ pageSize?: number;
+
+ token?: string;
+}
+
+export class PromptsPage
- extends AbstractPage
- implements PromptsPageResponse
- {
+ pagination: PromptsPageResponse.Pagination;
+
+ prompts: Array
- ;
+
+ constructor(
+ client: Gitpod,
+ response: Response,
+ body: PromptsPageResponse
- ,
+ options: FinalRequestOptions,
+ ) {
+ super(client, response, body, options);
+
+ this.pagination = body.pagination || {};
+ this.prompts = body.prompts || [];
+ }
+
+ getPaginatedItems(): Item[] {
+ return this.prompts ?? [];
+ }
+
+ nextPageRequestOptions(): PageRequestOptions | null {
+ const cursor = this.pagination?.nextToken;
+ if (!cursor) {
+ return null;
+ }
+
+ return {
+ ...this.options,
+ query: {
+ ...maybeObj(this.options.query),
+ token: cursor,
+ },
+ };
+ }
+}
+
export interface RecordsPageResponse
- {
pagination: RecordsPageResponse.Pagination;
@@ -886,6 +1280,61 @@ export class RecordsPage
- extends AbstractPage
- implements RecordsPage
}
}
+export interface RepositoriesPageResponse
- {
+ pagination: RepositoriesPageResponse.Pagination;
+
+ repositories: Array
- ;
+}
+
+export namespace RepositoriesPageResponse {
+ export interface Pagination {
+ nextToken?: string;
+ }
+}
+
+export interface RepositoriesPageParams {
+ pageSize?: number;
+
+ token?: string;
+}
+
+export class RepositoriesPage
- extends AbstractPage
- implements RepositoriesPageResponse
- {
+ pagination: RepositoriesPageResponse.Pagination;
+
+ repositories: Array
- ;
+
+ constructor(
+ client: Gitpod,
+ response: Response,
+ body: RepositoriesPageResponse
- ,
+ options: FinalRequestOptions,
+ ) {
+ super(client, response, body, options);
+
+ this.pagination = body.pagination || {};
+ this.repositories = body.repositories || [];
+ }
+
+ getPaginatedItems(): Item[] {
+ return this.repositories ?? [];
+ }
+
+ nextPageRequestOptions(): PageRequestOptions | null {
+ const cursor = this.pagination?.nextToken;
+ if (!cursor) {
+ return null;
+ }
+
+ return {
+ ...this.options,
+ query: {
+ ...maybeObj(this.options.query),
+ token: cursor,
+ },
+ };
+ }
+}
+
export interface RunnersPageResponse
- {
pagination: RunnersPageResponse.Pagination;
diff --git a/src/resources/accounts.ts b/src/resources/accounts.ts
index 393e7ee..30f8bc7 100644
--- a/src/resources/accounts.ts
+++ b/src/resources/accounts.ts
@@ -3,7 +3,15 @@
import { APIResource } from '../core/resource';
import * as Shared from './shared';
import { APIPromise } from '../core/api-promise';
-import { LoginProvidersPage, type LoginProvidersPageParams, PagePromise } from '../core/pagination';
+import {
+ JoinableOrganizationsPage,
+ type JoinableOrganizationsPageParams,
+ LoginProvidersPage,
+ type LoginProvidersPageParams,
+ LoginsPage,
+ type LoginsPageParams,
+ PagePromise,
+} from '../core/pagination';
import { RequestOptions } from '../internal/request-options';
export class Accounts extends APIResource {
@@ -131,20 +139,22 @@ export class Accounts extends APIResource {
*
* @example
* ```ts
- * const response =
- * await client.accounts.listJoinableOrganizations();
+ * // Automatically fetches more pages as needed.
+ * for await (const joinableOrganization of client.accounts.listJoinableOrganizations()) {
+ * // ...
+ * }
* ```
*/
listJoinableOrganizations(
params: AccountListJoinableOrganizationsParams,
options?: RequestOptions,
- ): APIPromise {
+ ): PagePromise {
const { token, pageSize, ...body } = params;
- return this._client.post('/gitpod.v1.AccountService/ListJoinableOrganizations', {
- query: { token, pageSize },
- body,
- ...options,
- });
+ return this._client.getAPIList(
+ '/gitpod.v1.AccountService/ListJoinableOrganizations',
+ JoinableOrganizationsPage,
+ { query: { token, pageSize }, body, method: 'post', ...options },
+ );
}
/**
@@ -199,10 +209,39 @@ export class Accounts extends APIResource {
{ query: { token, pageSize }, body, method: 'post', ...options },
);
}
+
+ /**
+ * ListSSOLogins
+ *
+ * @example
+ * ```ts
+ * // Automatically fetches more pages as needed.
+ * for await (const accountListSSOLoginsResponse of client.accounts.listSSOLogins(
+ * { email: 'dev@stainless.com' },
+ * )) {
+ * // ...
+ * }
+ * ```
+ */
+ listSSOLogins(
+ params: AccountListSSOLoginsParams,
+ options?: RequestOptions,
+ ): PagePromise {
+ const { token, pageSize, ...body } = params;
+ return this._client.getAPIList(
+ '/gitpod.v1.AccountService/ListSSOLogins',
+ LoginsPage,
+ { query: { token, pageSize }, body, method: 'post', ...options },
+ );
+ }
}
+export type JoinableOrganizationsJoinableOrganizationsPage = JoinableOrganizationsPage;
+
export type LoginProvidersLoginProvidersPage = LoginProvidersPage;
+export type AccountListSSOLoginsResponsesLoginsPage = LoginsPage;
+
export interface Account {
id: string;
@@ -489,8 +528,17 @@ export interface AccountGetSSOLoginURLResponse {
loginUrl: string;
}
-export interface AccountListJoinableOrganizationsResponse {
- joinableOrganizations?: Array;
+export interface AccountListSSOLoginsResponse {
+ /**
+ * provider is the provider used by this login method, e.g. "github", "google",
+ * "custom"
+ */
+ displayName: string;
+
+ /**
+ * login_url is the URL to redirect the user to for SSO login
+ */
+ loginUrl: string;
}
export interface AccountRetrieveParams {
@@ -499,6 +547,11 @@ export interface AccountRetrieveParams {
export interface AccountDeleteParams {
accountId: string;
+
+ /**
+ * reason is an optional field for the reason for account deletion
+ */
+ reason?: string | null;
}
export interface AccountGetSSOLoginURLParams {
@@ -513,21 +566,31 @@ export interface AccountGetSSOLoginURLParams {
returnTo?: string | null;
}
-export interface AccountListJoinableOrganizationsParams {
+export interface AccountListJoinableOrganizationsParams extends JoinableOrganizationsPageParams {
/**
- * Query param:
+ * Body param: pagination contains the pagination options for listing joinable
+ * organizations
*/
- token?: string;
+ pagination?: AccountListJoinableOrganizationsParams.Pagination;
+}
+export namespace AccountListJoinableOrganizationsParams {
/**
- * Query param:
+ * pagination contains the pagination options for listing joinable organizations
*/
- pageSize?: number;
+ export interface Pagination {
+ /**
+ * Token for the next set of results that was returned as next_token of a
+ * PaginationResponse
+ */
+ token?: string;
- /**
- * Body param:
- */
- empty?: boolean;
+ /**
+ * Page size is the maximum number of results to retrieve per page. Defaults to 25.
+ * Maximum 100.
+ */
+ pageSize?: number;
+ }
}
export interface AccountListLoginProvidersParams extends LoginProvidersPageParams {
@@ -547,10 +610,15 @@ export namespace AccountListLoginProvidersParams {
* filter contains the filter options for listing login methods
*/
export interface Filter {
+ /**
+ * email is the email address to filter SSO providers by
+ */
+ email?: string | null;
+
/**
* invite_id is the ID of the invite URL the user wants to login with
*/
- inviteId?: string;
+ inviteId?: string | null;
}
/**
@@ -571,6 +639,42 @@ export namespace AccountListLoginProvidersParams {
}
}
+export interface AccountListSSOLoginsParams extends LoginsPageParams {
+ /**
+ * Body param: email is the email the user wants to login with
+ */
+ email: string;
+
+ /**
+ * Body param: pagination contains the pagination options for listing SSO logins
+ */
+ pagination?: AccountListSSOLoginsParams.Pagination;
+
+ /**
+ * Body param: return_to is the URL the user will be redirected to after login
+ */
+ returnTo?: string | null;
+}
+
+export namespace AccountListSSOLoginsParams {
+ /**
+ * pagination contains the pagination options for listing SSO logins
+ */
+ 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 declare namespace Accounts {
export {
type Account as Account,
@@ -580,12 +684,15 @@ export declare namespace Accounts {
type AccountRetrieveResponse as AccountRetrieveResponse,
type AccountDeleteResponse as AccountDeleteResponse,
type AccountGetSSOLoginURLResponse as AccountGetSSOLoginURLResponse,
- type AccountListJoinableOrganizationsResponse as AccountListJoinableOrganizationsResponse,
+ type AccountListSSOLoginsResponse as AccountListSSOLoginsResponse,
+ type JoinableOrganizationsJoinableOrganizationsPage as JoinableOrganizationsJoinableOrganizationsPage,
type LoginProvidersLoginProvidersPage as LoginProvidersLoginProvidersPage,
+ type AccountListSSOLoginsResponsesLoginsPage as AccountListSSOLoginsResponsesLoginsPage,
type AccountRetrieveParams as AccountRetrieveParams,
type AccountDeleteParams as AccountDeleteParams,
type AccountGetSSOLoginURLParams as AccountGetSSOLoginURLParams,
type AccountListJoinableOrganizationsParams as AccountListJoinableOrganizationsParams,
type AccountListLoginProvidersParams as AccountListLoginProvidersParams,
+ type AccountListSSOLoginsParams as AccountListSSOLoginsParams,
};
}
diff --git a/src/resources/agents.ts b/src/resources/agents.ts
new file mode 100644
index 0000000..c287386
--- /dev/null
+++ b/src/resources/agents.ts
@@ -0,0 +1,1436 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+import { APIResource } from '../core/resource';
+import * as AgentsAPI from './agents';
+import * as Shared from './shared';
+import { APIPromise } from '../core/api-promise';
+import {
+ AgentExecutionsPage,
+ type AgentExecutionsPageParams,
+ PagePromise,
+ PromptsPage,
+ type PromptsPageParams,
+} from '../core/pagination';
+import { RequestOptions } from '../internal/request-options';
+
+export class Agents extends APIResource {
+ /**
+ * Creates a token for conversation access with a specific agent run.
+ *
+ * This method generates a temporary token that can be used to securely connect to
+ * an ongoing agent conversation, for example in a web UI.
+ *
+ * ### Examples
+ *
+ * - Create a token to join an agent run conversation in a front-end application:
+ *
+ * ```yaml
+ * agentExecutionId: "6fa1a3c7-fbb7-49d1-ba56-1890dc7c4c35"
+ * ```
+ *
+ * @example
+ * ```ts
+ * const response =
+ * await client.agents.createExecutionConversationToken({
+ * agentExecutionId:
+ * '6fa1a3c7-fbb7-49d1-ba56-1890dc7c4c35',
+ * });
+ * ```
+ */
+ createExecutionConversationToken(
+ body: AgentCreateExecutionConversationTokenParams,
+ options?: RequestOptions,
+ ): APIPromise {
+ return this._client.post('/gitpod.v1.AgentService/CreateAgentExecutionConversationToken', {
+ body,
+ ...options,
+ });
+ }
+
+ /**
+ * Creates a new prompt.
+ *
+ * Use this method to:
+ *
+ * - Define new prompts for templates or commands
+ * - Set up organization-wide prompt libraries
+ *
+ * @example
+ * ```ts
+ * const response = await client.agents.createPrompt();
+ * ```
+ */
+ createPrompt(
+ body: AgentCreatePromptParams,
+ options?: RequestOptions,
+ ): APIPromise {
+ return this._client.post('/gitpod.v1.AgentService/CreatePrompt', { body, ...options });
+ }
+
+ /**
+ * Deletes an agent run.
+ *
+ * Use this method to:
+ *
+ * - Clean up agent runs that are no longer needed
+ *
+ * ### Examples
+ *
+ * - Delete an agent run by ID:
+ *
+ * ```yaml
+ * agentExecutionId: "6fa1a3c7-fbb7-49d1-ba56-1890dc7c4c35"
+ * ```
+ *
+ * @example
+ * ```ts
+ * const response = await client.agents.deleteExecution({
+ * agentExecutionId: '6fa1a3c7-fbb7-49d1-ba56-1890dc7c4c35',
+ * });
+ * ```
+ */
+ deleteExecution(body: AgentDeleteExecutionParams, options?: RequestOptions): APIPromise {
+ return this._client.post('/gitpod.v1.AgentService/DeleteAgentExecution', { body, ...options });
+ }
+
+ /**
+ * Deletes a prompt.
+ *
+ * Use this method to:
+ *
+ * - Remove unused prompts
+ *
+ * @example
+ * ```ts
+ * const response = await client.agents.deletePrompt();
+ * ```
+ */
+ deletePrompt(body: AgentDeletePromptParams, options?: RequestOptions): APIPromise {
+ return this._client.post('/gitpod.v1.AgentService/DeletePrompt', { body, ...options });
+ }
+
+ /**
+ * Lists all agent runs matching the specified filter.
+ *
+ * Use this method to track multiple agent runs and their associated resources.
+ * Results are ordered by their creation time with the newest first.
+ *
+ * ### Examples
+ *
+ * - List agent runs by agent ID:
+ *
+ * ```yaml
+ * filter:
+ * agentIds: ["b8a64cfa-43e2-4b9d-9fb3-07edc63f5971"]
+ * pagination:
+ * pageSize: 10
+ * ```
+ *
+ * @example
+ * ```ts
+ * // Automatically fetches more pages as needed.
+ * for await (const agentExecution of client.agents.listExecutions(
+ * {
+ * filter: {
+ * agentIds: ['b8a64cfa-43e2-4b9d-9fb3-07edc63f5971'],
+ * },
+ * pagination: { pageSize: 10 },
+ * },
+ * )) {
+ * // ...
+ * }
+ * ```
+ */
+ listExecutions(
+ params: AgentListExecutionsParams,
+ options?: RequestOptions,
+ ): PagePromise {
+ const { token, pageSize, ...body } = params;
+ return this._client.getAPIList(
+ '/gitpod.v1.AgentService/ListAgentExecutions',
+ AgentExecutionsPage,
+ { query: { token, pageSize }, body, method: 'post', ...options },
+ );
+ }
+
+ /**
+ * Lists all prompts matching the specified criteria.
+ *
+ * Use this method to find and browse prompts across your organization. Results are
+ * ordered by their creation time with the newest first.
+ *
+ * ### Examples
+ *
+ * - List all prompts:
+ *
+ * Retrieves all prompts with pagination.
+ *
+ * ```yaml
+ * pagination:
+ * pageSize: 10
+ * ```
+ *
+ * @example
+ * ```ts
+ * // Automatically fetches more pages as needed.
+ * for await (const prompt of client.agents.listPrompts({
+ * pagination: { pageSize: 10 },
+ * })) {
+ * // ...
+ * }
+ * ```
+ */
+ listPrompts(
+ params: AgentListPromptsParams,
+ options?: RequestOptions,
+ ): PagePromise {
+ const { token, pageSize, ...body } = params;
+ return this._client.getAPIList('/gitpod.v1.AgentService/ListPrompts', PromptsPage, {
+ query: { token, pageSize },
+ body,
+ method: 'post',
+ ...options,
+ });
+ }
+
+ /**
+ * Gets details about a specific agent run, including its metadata, specification,
+ * and status (phase, error messages, and usage statistics).
+ *
+ * Use this method to:
+ *
+ * - Monitor the run's progress
+ * - Retrieve the agent's conversation URL
+ * - Check if an agent run is actively producing output
+ *
+ * ### Examples
+ *
+ * - Get agent run details by ID:
+ *
+ * ```yaml
+ * agentExecutionId: "6fa1a3c7-fbb7-49d1-ba56-1890dc7c4c35"
+ * ```
+ *
+ * @example
+ * ```ts
+ * const response = await client.agents.retrieveExecution({
+ * agentExecutionId: '6fa1a3c7-fbb7-49d1-ba56-1890dc7c4c35',
+ * });
+ * ```
+ */
+ retrieveExecution(
+ body: AgentRetrieveExecutionParams,
+ options?: RequestOptions,
+ ): APIPromise {
+ return this._client.post('/gitpod.v1.AgentService/GetAgentExecution', { body, ...options });
+ }
+
+ /**
+ * Gets details about a specific prompt including name, description, and prompt
+ * content.
+ *
+ * Use this method to:
+ *
+ * - Retrieve prompt details for editing
+ * - Get prompt content for execution
+ *
+ * ### Examples
+ *
+ * - Get prompt details:
+ *
+ * ```yaml
+ * promptId: "07e03a28-65a5-4d98-b532-8ea67b188048"
+ * ```
+ *
+ * @example
+ * ```ts
+ * const response = await client.agents.retrievePrompt({
+ * promptId: '07e03a28-65a5-4d98-b532-8ea67b188048',
+ * });
+ * ```
+ */
+ retrievePrompt(
+ body: AgentRetrievePromptParams,
+ options?: RequestOptions,
+ ): APIPromise {
+ return this._client.post('/gitpod.v1.AgentService/GetPrompt', { body, ...options });
+ }
+
+ /**
+ * Sends user input to an active agent run.
+ *
+ * This method is used to provide interactive or conversation-based input to an
+ * agent. The agent can respond with output blocks containing text, file changes,
+ * or tool usage requests.
+ *
+ * ### Examples
+ *
+ * - Send a text message to an agent:
+ *
+ * ```yaml
+ * agentExecutionId: "6fa1a3c7-fbb7-49d1-ba56-1890dc7c4c35"
+ * userInput:
+ * text:
+ * content: "Generate a report based on the latest logs."
+ * ```
+ *
+ * @example
+ * ```ts
+ * const response = await client.agents.sendToExecution({
+ * agentExecutionId: '6fa1a3c7-fbb7-49d1-ba56-1890dc7c4c35',
+ * userInput: {
+ * text: {
+ * content:
+ * 'Generate a report based on the latest logs.',
+ * },
+ * },
+ * });
+ * ```
+ */
+ sendToExecution(body: AgentSendToExecutionParams, options?: RequestOptions): APIPromise {
+ return this._client.post('/gitpod.v1.AgentService/SendToAgentExecution', { body, ...options });
+ }
+
+ /**
+ * Starts (or triggers) an agent run using a provided agent.
+ *
+ * Use this method to:
+ *
+ * - Launch an agent based on a known agent
+ *
+ * ### Examples
+ *
+ * - Start an agent with a project ID:
+ *
+ * ```yaml
+ * agentId: "b8a64cfa-43e2-4b9d-9fb3-07edc63f5971"
+ * codeContext:
+ * projectId: "2d22e4eb-31da-467f-882c-27e21550992f"
+ * ```
+ *
+ * @example
+ * ```ts
+ * const response = await client.agents.startExecution({
+ * agentId: 'b8a64cfa-43e2-4b9d-9fb3-07edc63f5971',
+ * codeContext: {
+ * projectId: '2d22e4eb-31da-467f-882c-27e21550992f',
+ * },
+ * });
+ * ```
+ */
+ startExecution(
+ body: AgentStartExecutionParams,
+ options?: RequestOptions,
+ ): APIPromise {
+ return this._client.post('/gitpod.v1.AgentService/StartAgent', { body, ...options });
+ }
+
+ /**
+ * Stops an active agent execution.
+ *
+ * Use this method to:
+ *
+ * - Stop an agent that is currently running
+ * - Prevent further processing or resource usage
+ *
+ * ### Examples
+ *
+ * - Stop an agent execution by ID:
+ *
+ * ```yaml
+ * agentExecutionId: "6fa1a3c7-fbb7-49d1-ba56-1890dc7c4c35"
+ * ```
+ *
+ * @example
+ * ```ts
+ * const response = await client.agents.stopExecution({
+ * agentExecutionId: '6fa1a3c7-fbb7-49d1-ba56-1890dc7c4c35',
+ * });
+ * ```
+ */
+ stopExecution(body: AgentStopExecutionParams, options?: RequestOptions): APIPromise {
+ return this._client.post('/gitpod.v1.AgentService/StopAgentExecution', { body, ...options });
+ }
+
+ /**
+ * Updates an existing prompt.
+ *
+ * Use this method to:
+ *
+ * - Modify prompt content or metadata
+ * - Change prompt type (template/command)
+ *
+ * @example
+ * ```ts
+ * const response = await client.agents.updatePrompt();
+ * ```
+ */
+ updatePrompt(
+ body: AgentUpdatePromptParams,
+ options?: RequestOptions,
+ ): APIPromise {
+ return this._client.post('/gitpod.v1.AgentService/UpdatePrompt', { body, ...options });
+ }
+}
+
+export type AgentExecutionsAgentExecutionsPage = AgentExecutionsPage;
+
+export type PromptsPromptsPage = PromptsPage;
+
+export interface AgentCodeContext {
+ contextUrl?: AgentCodeContext.ContextURL;
+
+ environmentId?: string;
+
+ projectId?: string;
+
+ /**
+ * Pull request context - optional metadata about the PR being worked on This is
+ * populated when the agent execution is triggered by a PR workflow or when
+ * explicitly provided through the browser extension
+ */
+ pullRequest?: AgentCodeContext.PullRequest | null;
+}
+
+export namespace AgentCodeContext {
+ export interface ContextURL {
+ environmentClassId?: string;
+
+ url?: string;
+ }
+
+ /**
+ * Pull request context - optional metadata about the PR being worked on This is
+ * populated when the agent execution is triggered by a PR workflow or when
+ * explicitly provided through the browser extension
+ */
+ export interface PullRequest {
+ /**
+ * Unique identifier from the source system (e.g., "123" for GitHub PR #123)
+ */
+ id?: string;
+
+ /**
+ * Author name as provided by the SCM system
+ */
+ author?: string;
+
+ /**
+ * Source branch name (the branch being merged from)
+ */
+ fromBranch?: string;
+
+ /**
+ * Repository information
+ */
+ repository?: PullRequest.Repository;
+
+ /**
+ * Pull request title
+ */
+ title?: string;
+
+ /**
+ * Target branch name (the branch being merged into)
+ */
+ toBranch?: string;
+
+ /**
+ * Pull request URL (e.g., "https://github.com/owner/repo/pull/123")
+ */
+ url?: string;
+ }
+
+ export namespace PullRequest {
+ /**
+ * Repository information
+ */
+ export interface Repository {
+ cloneUrl?: string;
+
+ host?: string;
+
+ name?: string;
+
+ owner?: string;
+ }
+ }
+}
+
+export interface AgentExecution {
+ /**
+ * ID is a unique identifier of this agent run. No other agent run with the same
+ * name must be managed by this agent manager
+ */
+ id?: string;
+
+ /**
+ * Metadata is data associated with this agent that's required for other parts of
+ * Gitpod to function
+ */
+ metadata?: AgentExecution.Metadata;
+
+ /**
+ * Spec is the configuration of the agent that's required for the runner to start
+ * the agent
+ */
+ spec?: AgentExecution.Spec;
+
+ /**
+ * Status is the current status of the agent
+ */
+ status?: AgentExecution.Status;
+}
+
+export namespace AgentExecution {
+ /**
+ * Metadata is data associated with this agent that's required for other parts of
+ * Gitpod to function
+ */
+ export interface Metadata {
+ /**
+ * A Timestamp represents a point in time independent of any time zone or local
+ * calendar, encoded as a count of seconds and fractions of seconds at nanosecond
+ * resolution. The count is relative to an epoch at UTC midnight on January 1,
+ * 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar
+ * backwards to year one.
+ *
+ * All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap
+ * second table is needed for interpretation, using a
+ * [24-hour linear smear](https://developers.google.com/time/smear).
+ *
+ * The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
+ * restricting to that range, we ensure that we can convert to and from
+ * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
+ *
+ * # Examples
+ *
+ * Example 1: Compute Timestamp from POSIX `time()`.
+ *
+ * Timestamp timestamp;
+ * timestamp.set_seconds(time(NULL));
+ * timestamp.set_nanos(0);
+ *
+ * Example 2: Compute Timestamp from POSIX `gettimeofday()`.
+ *
+ * struct timeval tv;
+ * gettimeofday(&tv, NULL);
+ *
+ * Timestamp timestamp;
+ * timestamp.set_seconds(tv.tv_sec);
+ * timestamp.set_nanos(tv.tv_usec * 1000);
+ *
+ * Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
+ *
+ * FILETIME ft;
+ * GetSystemTimeAsFileTime(&ft);
+ * UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
+ *
+ * // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
+ * // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
+ * Timestamp timestamp;
+ * timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
+ * timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
+ *
+ * Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
+ *
+ * long millis = System.currentTimeMillis();
+ *
+ * Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
+ * .setNanos((int) ((millis % 1000) * 1000000)).build();
+ *
+ * Example 5: Compute Timestamp from Java `Instant.now()`.
+ *
+ * Instant now = Instant.now();
+ *
+ * Timestamp timestamp =
+ * Timestamp.newBuilder().setSeconds(now.getEpochSecond())
+ * .setNanos(now.getNano()).build();
+ *
+ * Example 6: Compute Timestamp from current time in Python.
+ *
+ * timestamp = Timestamp()
+ * timestamp.GetCurrentTime()
+ *
+ * # JSON Mapping
+ *
+ * In JSON format, the Timestamp type is encoded as a string in the
+ * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is
+ * "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" where {year} is always
+ * expressed using four digits while {month}, {day}, {hour}, {min}, and {sec} are
+ * zero-padded to two digits each. The fractional seconds, which can go up to 9
+ * digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix
+ * indicates the timezone ("UTC"); the timezone is required. A proto3 JSON
+ * serializer should always use UTC (as indicated by "Z") when printing the
+ * Timestamp type and a proto3 JSON parser should be able to accept both UTC and
+ * other timezones (as indicated by an offset).
+ *
+ * For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on
+ * January 15, 2017.
+ *
+ * In JavaScript, one can convert a Date object to this format using the standard
+ * [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)
+ * method. In Python, a standard `datetime.datetime` object can be converted to
+ * this format using
+ * [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with the
+ * time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the
+ * Joda Time's
+ * [`ISODateTimeFormat.dateTime()`]()
+ * to obtain a formatter capable of generating timestamps in this format.
+ */
+ createdAt?: string;
+
+ creator?: Shared.Subject;
+
+ description?: string;
+
+ name?: string;
+
+ /**
+ * role is the role of the agent execution
+ */
+ role?:
+ | 'AGENT_EXECUTION_ROLE_UNSPECIFIED'
+ | 'AGENT_EXECUTION_ROLE_DEFAULT'
+ | 'AGENT_EXECUTION_ROLE_WORKFLOW';
+
+ /**
+ * A Timestamp represents a point in time independent of any time zone or local
+ * calendar, encoded as a count of seconds and fractions of seconds at nanosecond
+ * resolution. The count is relative to an epoch at UTC midnight on January 1,
+ * 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar
+ * backwards to year one.
+ *
+ * All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap
+ * second table is needed for interpretation, using a
+ * [24-hour linear smear](https://developers.google.com/time/smear).
+ *
+ * The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
+ * restricting to that range, we ensure that we can convert to and from
+ * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
+ *
+ * # Examples
+ *
+ * Example 1: Compute Timestamp from POSIX `time()`.
+ *
+ * Timestamp timestamp;
+ * timestamp.set_seconds(time(NULL));
+ * timestamp.set_nanos(0);
+ *
+ * Example 2: Compute Timestamp from POSIX `gettimeofday()`.
+ *
+ * struct timeval tv;
+ * gettimeofday(&tv, NULL);
+ *
+ * Timestamp timestamp;
+ * timestamp.set_seconds(tv.tv_sec);
+ * timestamp.set_nanos(tv.tv_usec * 1000);
+ *
+ * Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
+ *
+ * FILETIME ft;
+ * GetSystemTimeAsFileTime(&ft);
+ * UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
+ *
+ * // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
+ * // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
+ * Timestamp timestamp;
+ * timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
+ * timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
+ *
+ * Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
+ *
+ * long millis = System.currentTimeMillis();
+ *
+ * Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
+ * .setNanos((int) ((millis % 1000) * 1000000)).build();
+ *
+ * Example 5: Compute Timestamp from Java `Instant.now()`.
+ *
+ * Instant now = Instant.now();
+ *
+ * Timestamp timestamp =
+ * Timestamp.newBuilder().setSeconds(now.getEpochSecond())
+ * .setNanos(now.getNano()).build();
+ *
+ * Example 6: Compute Timestamp from current time in Python.
+ *
+ * timestamp = Timestamp()
+ * timestamp.GetCurrentTime()
+ *
+ * # JSON Mapping
+ *
+ * In JSON format, the Timestamp type is encoded as a string in the
+ * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is
+ * "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" where {year} is always
+ * expressed using four digits while {month}, {day}, {hour}, {min}, and {sec} are
+ * zero-padded to two digits each. The fractional seconds, which can go up to 9
+ * digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix
+ * indicates the timezone ("UTC"); the timezone is required. A proto3 JSON
+ * serializer should always use UTC (as indicated by "Z") when printing the
+ * Timestamp type and a proto3 JSON parser should be able to accept both UTC and
+ * other timezones (as indicated by an offset).
+ *
+ * For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on
+ * January 15, 2017.
+ *
+ * In JavaScript, one can convert a Date object to this format using the standard
+ * [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)
+ * method. In Python, a standard `datetime.datetime` object can be converted to
+ * this format using
+ * [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with the
+ * time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the
+ * Joda Time's
+ * [`ISODateTimeFormat.dateTime()`]()
+ * to obtain a formatter capable of generating timestamps in this format.
+ */
+ updatedAt?: string;
+
+ /**
+ * workflow_action_id is set when this agent execution was created as part of a
+ * workflow. Used to correlate agent executions with their parent workflow
+ * execution action.
+ */
+ workflowActionId?: string | null;
+ }
+
+ /**
+ * Spec is the configuration of the agent that's required for the runner to start
+ * the agent
+ */
+ export interface Spec {
+ agentId?: string;
+
+ codeContext?: AgentsAPI.AgentCodeContext;
+
+ /**
+ * desired_phase is the desired phase of the agent run
+ */
+ desiredPhase?:
+ | 'PHASE_UNSPECIFIED'
+ | 'PHASE_PENDING'
+ | 'PHASE_RUNNING'
+ | 'PHASE_WAITING_FOR_INPUT'
+ | 'PHASE_STOPPED';
+
+ limits?: Spec.Limits;
+
+ /**
+ * mode is the operational mode for this agent execution
+ */
+ mode?: AgentsAPI.AgentMode;
+
+ session?: string;
+
+ /**
+ * version of the spec. The value of this field has no semantic meaning (e.g. don't
+ * interpret it as as a timestamp), but it can be used to impose a partial order.
+ * If a.spec_version < b.spec_version then a was the spec before b.
+ */
+ specVersion?: string;
+ }
+
+ export namespace Spec {
+ export interface Limits {
+ maxInputTokens?: string;
+
+ maxIterations?: string;
+
+ maxOutputTokens?: string;
+ }
+ }
+
+ /**
+ * Status is the current status of the agent
+ */
+ export interface Status {
+ cachedCreationTokensUsed?: string;
+
+ cachedInputTokensUsed?: string;
+
+ contextWindowLength?: string;
+
+ /**
+ * conversation_url is the URL to the conversation (all messages exchanged between
+ * the agent and the user) of the agent run.
+ */
+ conversationUrl?: string;
+
+ /**
+ * current_activity is the current activity description of the agent execution.
+ */
+ currentActivity?: string;
+
+ /**
+ * current_operation is the current operation of the agent execution.
+ */
+ currentOperation?: Status.CurrentOperation;
+
+ /**
+ * failure_message contains the reason the agent run failed to operate.
+ */
+ failureMessage?: string;
+
+ /**
+ * failure_reason contains a structured reason code for the failure.
+ */
+ failureReason?:
+ | 'AGENT_EXECUTION_FAILURE_REASON_UNSPECIFIED'
+ | 'AGENT_EXECUTION_FAILURE_REASON_ENVIRONMENT'
+ | 'AGENT_EXECUTION_FAILURE_REASON_SERVICE'
+ | 'AGENT_EXECUTION_FAILURE_REASON_LLM_INTEGRATION'
+ | 'AGENT_EXECUTION_FAILURE_REASON_INTERNAL'
+ | 'AGENT_EXECUTION_FAILURE_REASON_AGENT_EXECUTION';
+
+ inputTokensUsed?: string;
+
+ iterations?: string;
+
+ /**
+ * judgement is the judgement of the agent run produced by the judgement prompt.
+ */
+ judgement?: string;
+
+ /**
+ * outputs is a map of key-value pairs that can be set by the agent during
+ * execution. Similar to task execution outputs, but with typed values for
+ * structured data.
+ */
+ outputs?: { [key: string]: Status.Outputs };
+
+ outputTokensUsed?: string;
+
+ phase?:
+ | 'PHASE_UNSPECIFIED'
+ | 'PHASE_PENDING'
+ | 'PHASE_RUNNING'
+ | 'PHASE_WAITING_FOR_INPUT'
+ | 'PHASE_STOPPED';
+
+ session?: string;
+
+ /**
+ * version of the status. The value of this field has no semantic meaning (e.g.
+ * don't interpret it as as a timestamp), but it can be used to impose a partial
+ * order. If a.status_version < b.status_version then a was the status before b.
+ */
+ statusVersion?: string;
+
+ /**
+ * supported_model is the LLM model being used by the agent execution.
+ */
+ supportedModel?:
+ | 'SUPPORTED_MODEL_UNSPECIFIED'
+ | 'SUPPORTED_MODEL_SONNET_3_5'
+ | 'SUPPORTED_MODEL_SONNET_3_7'
+ | 'SUPPORTED_MODEL_SONNET_3_7_EXTENDED'
+ | 'SUPPORTED_MODEL_SONNET_4'
+ | 'SUPPORTED_MODEL_SONNET_4_EXTENDED'
+ | 'SUPPORTED_MODEL_SONNET_4_5'
+ | 'SUPPORTED_MODEL_SONNET_4_5_EXTENDED'
+ | 'SUPPORTED_MODEL_OPUS_4'
+ | 'SUPPORTED_MODEL_OPUS_4_EXTENDED'
+ | 'SUPPORTED_MODEL_OPUS_4_5'
+ | 'SUPPORTED_MODEL_OPUS_4_5_EXTENDED'
+ | 'SUPPORTED_MODEL_OPENAI_4O'
+ | 'SUPPORTED_MODEL_OPENAI_4O_MINI'
+ | 'SUPPORTED_MODEL_OPENAI_O1'
+ | 'SUPPORTED_MODEL_OPENAI_O1_MINI';
+
+ /**
+ * transcript_url is the URL to the LLM transcript (all messages exchanged between
+ * the agent and the LLM) of the agent run.
+ */
+ transcriptUrl?: string;
+
+ /**
+ * used_environments is the list of environments that were used by the agent
+ * execution.
+ */
+ usedEnvironments?: Array;
+
+ /**
+ * warning_message contains warnings, e.g. when the LLM is overloaded.
+ */
+ warningMessage?: string;
+ }
+
+ export namespace Status {
+ /**
+ * current_operation is the current operation of the agent execution.
+ */
+ export interface CurrentOperation {
+ llm?: CurrentOperation.Llm;
+
+ /**
+ * retries is the number of times the agent run has retried one or more steps
+ */
+ retries?: string;
+
+ session?: string;
+
+ toolUse?: CurrentOperation.ToolUse;
+ }
+
+ export namespace CurrentOperation {
+ export interface Llm {
+ complete?: boolean;
+ }
+
+ export interface ToolUse {
+ complete?: boolean;
+
+ toolName?: string;
+ }
+ }
+
+ export interface Outputs {
+ boolValue?: boolean;
+
+ floatValue?: number;
+
+ intValue?: string;
+
+ stringValue?: string;
+ }
+
+ export interface UsedEnvironment {
+ createdByAgent?: boolean;
+
+ environmentId?: string;
+ }
+ }
+}
+
+/**
+ * AgentMode defines the operational mode of an agent
+ */
+export type AgentMode = 'AGENT_MODE_UNSPECIFIED' | 'AGENT_MODE_EXECUTION' | 'AGENT_MODE_PLANNING';
+
+export interface Prompt {
+ id?: string;
+
+ metadata?: PromptMetadata;
+
+ spec?: PromptSpec;
+}
+
+export interface PromptMetadata {
+ /**
+ * A Timestamp represents a point in time independent of any time zone or local
+ * calendar, encoded as a count of seconds and fractions of seconds at nanosecond
+ * resolution. The count is relative to an epoch at UTC midnight on January 1,
+ * 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar
+ * backwards to year one.
+ *
+ * All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap
+ * second table is needed for interpretation, using a
+ * [24-hour linear smear](https://developers.google.com/time/smear).
+ *
+ * The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
+ * restricting to that range, we ensure that we can convert to and from
+ * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
+ *
+ * # Examples
+ *
+ * Example 1: Compute Timestamp from POSIX `time()`.
+ *
+ * Timestamp timestamp;
+ * timestamp.set_seconds(time(NULL));
+ * timestamp.set_nanos(0);
+ *
+ * Example 2: Compute Timestamp from POSIX `gettimeofday()`.
+ *
+ * struct timeval tv;
+ * gettimeofday(&tv, NULL);
+ *
+ * Timestamp timestamp;
+ * timestamp.set_seconds(tv.tv_sec);
+ * timestamp.set_nanos(tv.tv_usec * 1000);
+ *
+ * Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
+ *
+ * FILETIME ft;
+ * GetSystemTimeAsFileTime(&ft);
+ * UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
+ *
+ * // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
+ * // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
+ * Timestamp timestamp;
+ * timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
+ * timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
+ *
+ * Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
+ *
+ * long millis = System.currentTimeMillis();
+ *
+ * Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
+ * .setNanos((int) ((millis % 1000) * 1000000)).build();
+ *
+ * Example 5: Compute Timestamp from Java `Instant.now()`.
+ *
+ * Instant now = Instant.now();
+ *
+ * Timestamp timestamp =
+ * Timestamp.newBuilder().setSeconds(now.getEpochSecond())
+ * .setNanos(now.getNano()).build();
+ *
+ * Example 6: Compute Timestamp from current time in Python.
+ *
+ * timestamp = Timestamp()
+ * timestamp.GetCurrentTime()
+ *
+ * # JSON Mapping
+ *
+ * In JSON format, the Timestamp type is encoded as a string in the
+ * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is
+ * "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" where {year} is always
+ * expressed using four digits while {month}, {day}, {hour}, {min}, and {sec} are
+ * zero-padded to two digits each. The fractional seconds, which can go up to 9
+ * digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix
+ * indicates the timezone ("UTC"); the timezone is required. A proto3 JSON
+ * serializer should always use UTC (as indicated by "Z") when printing the
+ * Timestamp type and a proto3 JSON parser should be able to accept both UTC and
+ * other timezones (as indicated by an offset).
+ *
+ * For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on
+ * January 15, 2017.
+ *
+ * In JavaScript, one can convert a Date object to this format using the standard
+ * [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)
+ * method. In Python, a standard `datetime.datetime` object can be converted to
+ * this format using
+ * [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with the
+ * time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the
+ * Joda Time's
+ * [`ISODateTimeFormat.dateTime()`]()
+ * to obtain a formatter capable of generating timestamps in this format.
+ */
+ createdAt?: string;
+
+ /**
+ * creator is the identity of the prompt creator
+ */
+ creator?: Shared.Subject;
+
+ /**
+ * description is a description of what the prompt does
+ */
+ description?: string;
+
+ /**
+ * name is the human readable name of the prompt
+ */
+ name?: string;
+
+ /**
+ * organization_id is the ID of the organization that contains the prompt
+ */
+ organizationId?: string;
+
+ /**
+ * A Timestamp represents a point in time independent of any time zone or local
+ * calendar, encoded as a count of seconds and fractions of seconds at nanosecond
+ * resolution. The count is relative to an epoch at UTC midnight on January 1,
+ * 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar
+ * backwards to year one.
+ *
+ * All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap
+ * second table is needed for interpretation, using a
+ * [24-hour linear smear](https://developers.google.com/time/smear).
+ *
+ * The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
+ * restricting to that range, we ensure that we can convert to and from
+ * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
+ *
+ * # Examples
+ *
+ * Example 1: Compute Timestamp from POSIX `time()`.
+ *
+ * Timestamp timestamp;
+ * timestamp.set_seconds(time(NULL));
+ * timestamp.set_nanos(0);
+ *
+ * Example 2: Compute Timestamp from POSIX `gettimeofday()`.
+ *
+ * struct timeval tv;
+ * gettimeofday(&tv, NULL);
+ *
+ * Timestamp timestamp;
+ * timestamp.set_seconds(tv.tv_sec);
+ * timestamp.set_nanos(tv.tv_usec * 1000);
+ *
+ * Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
+ *
+ * FILETIME ft;
+ * GetSystemTimeAsFileTime(&ft);
+ * UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
+ *
+ * // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
+ * // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
+ * Timestamp timestamp;
+ * timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
+ * timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
+ *
+ * Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
+ *
+ * long millis = System.currentTimeMillis();
+ *
+ * Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
+ * .setNanos((int) ((millis % 1000) * 1000000)).build();
+ *
+ * Example 5: Compute Timestamp from Java `Instant.now()`.
+ *
+ * Instant now = Instant.now();
+ *
+ * Timestamp timestamp =
+ * Timestamp.newBuilder().setSeconds(now.getEpochSecond())
+ * .setNanos(now.getNano()).build();
+ *
+ * Example 6: Compute Timestamp from current time in Python.
+ *
+ * timestamp = Timestamp()
+ * timestamp.GetCurrentTime()
+ *
+ * # JSON Mapping
+ *
+ * In JSON format, the Timestamp type is encoded as a string in the
+ * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is
+ * "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" where {year} is always
+ * expressed using four digits while {month}, {day}, {hour}, {min}, and {sec} are
+ * zero-padded to two digits each. The fractional seconds, which can go up to 9
+ * digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix
+ * indicates the timezone ("UTC"); the timezone is required. A proto3 JSON
+ * serializer should always use UTC (as indicated by "Z") when printing the
+ * Timestamp type and a proto3 JSON parser should be able to accept both UTC and
+ * other timezones (as indicated by an offset).
+ *
+ * For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on
+ * January 15, 2017.
+ *
+ * In JavaScript, one can convert a Date object to this format using the standard
+ * [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)
+ * method. In Python, a standard `datetime.datetime` object can be converted to
+ * this format using
+ * [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with the
+ * time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the
+ * Joda Time's
+ * [`ISODateTimeFormat.dateTime()`]()
+ * to obtain a formatter capable of generating timestamps in this format.
+ */
+ updatedAt?: string;
+}
+
+export interface PromptSpec {
+ /**
+ * command is the unique command string within the organization
+ */
+ command?: string;
+
+ /**
+ * is_command indicates if this prompt is a command
+ */
+ isCommand?: boolean;
+
+ /**
+ * is_template indicates if this prompt is a template
+ */
+ isTemplate?: boolean;
+
+ /**
+ * prompt is the content of the prompt
+ */
+ prompt?: string;
+}
+
+export interface UserInputBlock {
+ text: UserInputBlock.Text;
+
+ id?: string;
+
+ /**
+ * Timestamp when this block was created. Used for debugging and support bundles.
+ */
+ createdAt?: string;
+}
+
+export namespace UserInputBlock {
+ export interface Text {
+ content?: string;
+ }
+}
+
+export interface AgentCreateExecutionConversationTokenResponse {
+ token?: string;
+}
+
+export interface AgentCreatePromptResponse {
+ prompt?: Prompt;
+}
+
+export type AgentDeleteExecutionResponse = unknown;
+
+export type AgentDeletePromptResponse = unknown;
+
+export interface AgentRetrieveExecutionResponse {
+ agentExecution?: AgentExecution;
+}
+
+export interface AgentRetrievePromptResponse {
+ prompt?: Prompt;
+}
+
+export type AgentSendToExecutionResponse = unknown;
+
+export interface AgentStartExecutionResponse {
+ agentExecutionId?: string;
+}
+
+export type AgentStopExecutionResponse = unknown;
+
+export interface AgentUpdatePromptResponse {
+ prompt?: Prompt;
+}
+
+export interface AgentCreateExecutionConversationTokenParams {
+ agentExecutionId?: string;
+}
+
+export interface AgentCreatePromptParams {
+ command?: string;
+
+ description?: string;
+
+ isCommand?: boolean;
+
+ isTemplate?: boolean;
+
+ name?: string;
+
+ prompt?: string;
+}
+
+export interface AgentDeleteExecutionParams {
+ agentExecutionId?: string;
+}
+
+export interface AgentDeletePromptParams {
+ promptId?: string;
+}
+
+export interface AgentListExecutionsParams extends AgentExecutionsPageParams {
+ /**
+ * Body param:
+ */
+ filter?: AgentListExecutionsParams.Filter;
+
+ /**
+ * Body param:
+ */
+ pagination?: AgentListExecutionsParams.Pagination;
+}
+
+export namespace AgentListExecutionsParams {
+ export interface Filter {
+ agentIds?: Array;
+
+ creatorIds?: Array;
+
+ environmentIds?: Array;
+
+ projectIds?: Array;
+
+ roles?: Array<
+ 'AGENT_EXECUTION_ROLE_UNSPECIFIED' | 'AGENT_EXECUTION_ROLE_DEFAULT' | 'AGENT_EXECUTION_ROLE_WORKFLOW'
+ >;
+
+ statusPhases?: Array<
+ 'PHASE_UNSPECIFIED' | 'PHASE_PENDING' | 'PHASE_RUNNING' | 'PHASE_WAITING_FOR_INPUT' | 'PHASE_STOPPED'
+ >;
+ }
+
+ 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 AgentListPromptsParams extends PromptsPageParams {
+ /**
+ * Body param:
+ */
+ filter?: AgentListPromptsParams.Filter;
+
+ /**
+ * Body param:
+ */
+ pagination?: AgentListPromptsParams.Pagination;
+}
+
+export namespace AgentListPromptsParams {
+ export interface Filter {
+ command?: string;
+
+ commandPrefix?: string;
+
+ isCommand?: boolean;
+
+ isTemplate?: boolean;
+ }
+
+ 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 AgentRetrieveExecutionParams {
+ agentExecutionId?: string;
+}
+
+export interface AgentRetrievePromptParams {
+ promptId?: string;
+}
+
+export interface AgentSendToExecutionParams {
+ agentExecutionId?: string;
+
+ userInput?: UserInputBlock;
+}
+
+export interface AgentStartExecutionParams {
+ agentId?: string;
+
+ codeContext?: AgentCodeContext;
+
+ /**
+ * mode specifies the operational mode for this agent execution If not specified,
+ * defaults to AGENT_MODE_EXECUTION
+ */
+ mode?: AgentMode;
+
+ name?: string;
+
+ /**
+ * workflow_action_id is an optional reference to the workflow execution action
+ * that created this agent execution. Used for tracking and event correlation.
+ */
+ workflowActionId?: string | null;
+}
+
+export interface AgentStopExecutionParams {
+ agentExecutionId?: string;
+}
+
+export interface AgentUpdatePromptParams {
+ /**
+ * Metadata updates
+ */
+ metadata?: AgentUpdatePromptParams.Metadata | null;
+
+ /**
+ * The ID of the prompt to update
+ */
+ promptId?: string;
+
+ /**
+ * Spec updates
+ */
+ spec?: AgentUpdatePromptParams.Spec | null;
+}
+
+export namespace AgentUpdatePromptParams {
+ /**
+ * Metadata updates
+ */
+ export interface Metadata {
+ /**
+ * A description of what the prompt does
+ */
+ description?: string | null;
+
+ /**
+ * The name of the prompt
+ */
+ name?: string | null;
+ }
+
+ /**
+ * Spec updates
+ */
+ export interface Spec {
+ /**
+ * The command string (unique within organization)
+ */
+ command?: string | null;
+
+ /**
+ * Whether this prompt is a command
+ */
+ isCommand?: boolean | null;
+
+ /**
+ * Whether this prompt is a template
+ */
+ isTemplate?: boolean | null;
+
+ /**
+ * The prompt content
+ */
+ prompt?: string | null;
+ }
+}
+
+export declare namespace Agents {
+ export {
+ type AgentCodeContext as AgentCodeContext,
+ type AgentExecution as AgentExecution,
+ type AgentMode as AgentMode,
+ type Prompt as Prompt,
+ type PromptMetadata as PromptMetadata,
+ type PromptSpec as PromptSpec,
+ type UserInputBlock as UserInputBlock,
+ type AgentCreateExecutionConversationTokenResponse as AgentCreateExecutionConversationTokenResponse,
+ type AgentCreatePromptResponse as AgentCreatePromptResponse,
+ type AgentDeleteExecutionResponse as AgentDeleteExecutionResponse,
+ type AgentDeletePromptResponse as AgentDeletePromptResponse,
+ type AgentRetrieveExecutionResponse as AgentRetrieveExecutionResponse,
+ type AgentRetrievePromptResponse as AgentRetrievePromptResponse,
+ type AgentSendToExecutionResponse as AgentSendToExecutionResponse,
+ type AgentStartExecutionResponse as AgentStartExecutionResponse,
+ type AgentStopExecutionResponse as AgentStopExecutionResponse,
+ type AgentUpdatePromptResponse as AgentUpdatePromptResponse,
+ type AgentExecutionsAgentExecutionsPage as AgentExecutionsAgentExecutionsPage,
+ type PromptsPromptsPage as PromptsPromptsPage,
+ type AgentCreateExecutionConversationTokenParams as AgentCreateExecutionConversationTokenParams,
+ type AgentCreatePromptParams as AgentCreatePromptParams,
+ type AgentDeleteExecutionParams as AgentDeleteExecutionParams,
+ type AgentDeletePromptParams as AgentDeletePromptParams,
+ type AgentListExecutionsParams as AgentListExecutionsParams,
+ type AgentListPromptsParams as AgentListPromptsParams,
+ type AgentRetrieveExecutionParams as AgentRetrieveExecutionParams,
+ type AgentRetrievePromptParams as AgentRetrievePromptParams,
+ type AgentSendToExecutionParams as AgentSendToExecutionParams,
+ type AgentStartExecutionParams as AgentStartExecutionParams,
+ type AgentStopExecutionParams as AgentStopExecutionParams,
+ type AgentUpdatePromptParams as AgentUpdatePromptParams,
+ };
+}
diff --git a/src/resources/editors.ts b/src/resources/editors.ts
index bf322de..61ad898 100644
--- a/src/resources/editors.ts
+++ b/src/resources/editors.ts
@@ -141,6 +141,18 @@ export interface Editor {
iconUrl?: string;
shortDescription?: string;
+
+ /**
+ * versions contains the list of available versions for this editor
+ */
+ versions?: Array;
+}
+
+export interface EditorVersion {
+ /**
+ * version is the version string of the editor Examples for JetBrains: 2025.2
+ */
+ version: string;
}
export interface EditorRetrieveResponse {
@@ -221,11 +233,20 @@ export interface EditorResolveURLParams {
* organizationId is the ID of the organization to resolve the URL for
*/
organizationId: string;
+
+ /**
+ * version is the editor version to use If not provided, the latest version will be
+ * installed
+ *
+ * Examples for JetBrains: 2025.2
+ */
+ version?: string;
}
export declare namespace Editors {
export {
type Editor as Editor,
+ type EditorVersion as EditorVersion,
type EditorRetrieveResponse as EditorRetrieveResponse,
type EditorResolveURLResponse as EditorResolveURLResponse,
type EditorsEditorsPage as EditorsEditorsPage,
diff --git a/src/resources/environments/automations/automations.ts b/src/resources/environments/automations/automations.ts
index 0ef7335..8860894 100644
--- a/src/resources/environments/automations/automations.ts
+++ b/src/resources/environments/automations/automations.ts
@@ -14,6 +14,7 @@ import {
ServicePhase,
ServiceRetrieveParams,
ServiceRetrieveResponse,
+ ServiceRole,
ServiceSpec,
ServiceStartParams,
ServiceStartResponse,
@@ -140,6 +141,8 @@ export namespace AutomationsFile {
name?: string;
+ role?: '' | 'default' | 'editor' | 'ai-agent';
+
runsOn?: Shared.RunsOn;
triggeredBy?: Array<'manual' | 'postEnvironmentStart' | 'postDevcontainerStart'>;
@@ -188,7 +191,7 @@ export namespace AutomationsFile {
runsOn?: Shared.RunsOn;
- triggeredBy?: Array<'manual' | 'postEnvironmentStart' | 'postDevcontainerStart'>;
+ triggeredBy?: Array<'manual' | 'postEnvironmentStart' | 'postDevcontainerStart' | 'prebuild'>;
}
}
@@ -225,6 +228,7 @@ export declare namespace Automations {
type Service as Service,
type ServiceMetadata as ServiceMetadata,
type ServicePhase as ServicePhase,
+ type ServiceRole as ServiceRole,
type ServiceSpec as ServiceSpec,
type ServiceStatus as ServiceStatus,
type ServiceCreateResponse as ServiceCreateResponse,
diff --git a/src/resources/environments/automations/index.ts b/src/resources/environments/automations/index.ts
index 052267d..ae3513f 100644
--- a/src/resources/environments/automations/index.ts
+++ b/src/resources/environments/automations/index.ts
@@ -11,6 +11,7 @@ export {
type Service,
type ServiceMetadata,
type ServicePhase,
+ type ServiceRole,
type ServiceSpec,
type ServiceStatus,
type ServiceCreateResponse,
diff --git a/src/resources/environments/automations/services.ts b/src/resources/environments/automations/services.ts
index 1abda28..b10dd0c 100644
--- a/src/resources/environments/automations/services.ts
+++ b/src/resources/environments/automations/services.ts
@@ -376,6 +376,11 @@ export interface ServiceMetadata {
*/
reference?: string;
+ /**
+ * role specifies the intended role or purpose of the service.
+ */
+ role?: ServiceRole;
+
/**
* triggered_by is a list of trigger that start the service.
*/
@@ -391,6 +396,13 @@ export type ServicePhase =
| 'SERVICE_PHASE_FAILED'
| 'SERVICE_PHASE_DELETED';
+export type ServiceRole =
+ | 'SERVICE_ROLE_UNSPECIFIED'
+ | 'SERVICE_ROLE_DEFAULT'
+ | 'SERVICE_ROLE_EDITOR'
+ | 'SERVICE_ROLE_AI_AGENT'
+ | 'SERVICE_ROLE_SECURITY_AGENT';
+
export interface ServiceSpec {
/**
* commands contains the commands to start, stop and check the readiness of the
@@ -404,6 +416,11 @@ export interface ServiceSpec {
*/
desiredPhase?: ServicePhase;
+ /**
+ * env specifies environment variables for the service.
+ */
+ env?: Array;
+
/**
* runs_on specifies the environment the service should run on.
*/
@@ -552,6 +569,8 @@ export namespace ServiceUpdateParams {
name?: string | null;
+ role?: ServicesAPI.ServiceRole | null;
+
triggeredBy?: Metadata.TriggeredBy | null;
}
@@ -569,6 +588,8 @@ export namespace ServiceUpdateParams {
export interface Spec {
commands?: Spec.Commands | null;
+ env?: Array;
+
runsOn?: Shared.RunsOn | null;
}
@@ -630,6 +651,11 @@ export namespace ServiceListParams {
*/
references?: Array;
+ /**
+ * roles filters the response to only services with these roles
+ */
+ roles?: Array;
+
/**
* service_ids filters the response to only services with these IDs
*/
@@ -673,6 +699,7 @@ export declare namespace Services {
type Service as Service,
type ServiceMetadata as ServiceMetadata,
type ServicePhase as ServicePhase,
+ type ServiceRole as ServiceRole,
type ServiceSpec as ServiceSpec,
type ServiceStatus as ServiceStatus,
type ServiceCreateResponse as ServiceCreateResponse,
diff --git a/src/resources/environments/automations/tasks/tasks.ts b/src/resources/environments/automations/tasks/tasks.ts
index 6543b3d..16d9bf7 100644
--- a/src/resources/environments/automations/tasks/tasks.ts
+++ b/src/resources/environments/automations/tasks/tasks.ts
@@ -339,6 +339,8 @@ export namespace TaskUpdateParams {
export interface Spec {
command?: string | null;
+ env?: Array;
+
runsOn?: Shared.RunsOn | null;
}
}
diff --git a/src/resources/environments/environments.ts b/src/resources/environments/environments.ts
index 1e85d49..988d166 100644
--- a/src/resources/environments/environments.ts
+++ b/src/resources/environments/environments.ts
@@ -661,12 +661,23 @@ export interface EnvironmentMetadata {
*/
originalContextUrl?: string;
+ /**
+ * prebuild_id is the ID of the prebuild this environment was created from. Only
+ * set if the environment was created from a prebuild.
+ */
+ prebuildId?: string | null;
+
/**
* If the Environment was started from a project, the project_id will reference the
* project.
*/
projectId?: string;
+ /**
+ * role is the role of the environment
+ */
+ role?: EnvironmentRole;
+
/**
* Runner is the ID of the runner that runs this environment.
*/
@@ -684,6 +695,15 @@ export type EnvironmentPhase =
| 'ENVIRONMENT_PHASE_DELETING'
| 'ENVIRONMENT_PHASE_DELETED';
+/**
+ * EnvironmentRole represents the role of an environment
+ */
+export type EnvironmentRole =
+ | 'ENVIRONMENT_ROLE_UNSPECIFIED'
+ | 'ENVIRONMENT_ROLE_DEFAULT'
+ | 'ENVIRONMENT_ROLE_PREBUILD'
+ | 'ENVIRONMENT_ROLE_WORKFLOW';
+
/**
* EnvironmentSpec specifies the configuration of an environment for an environment
* start
@@ -720,7 +740,7 @@ export interface EnvironmentSpec {
machine?: EnvironmentSpec.Machine;
/**
- * ports is the set of ports which ought to be exposed to the internet
+ * ports is the set of ports which ought to be exposed to your network
*/
ports?: Array;
@@ -745,6 +765,12 @@ export interface EnvironmentSpec {
* Timeout configures the environment timeout
*/
timeout?: EnvironmentSpec.Timeout;
+
+ /**
+ * workflow_action_id is an optional reference to the workflow execution action
+ * that created this environment. Used for tracking and event correlation.
+ */
+ workflowActionId?: string | null;
}
export namespace EnvironmentSpec {
@@ -764,6 +790,13 @@ export namespace EnvironmentSpec {
automationsFilePath?: string;
session?: string;
+
+ /**
+ * trigger_filter specifies which automation triggers should execute. When set,
+ * only automations matching these triggers will run. If empty/unset, all triggers
+ * are evaluated normally.
+ */
+ triggerFilter?: Array;
}
/**
@@ -813,6 +846,12 @@ export namespace EnvironmentSpec {
*/
dotfiles?: Devcontainer.Dotfiles;
+ /**
+ * lifecycle_stage controls which devcontainer lifecycle commands are executed.
+ * Defaults to FULL if not specified.
+ */
+ lifecycleStage?: 'LIFECYCLE_STAGE_UNSPECIFIED' | 'LIFECYCLE_STAGE_FULL' | 'LIFECYCLE_STAGE_PREBUILD';
+
session?: string;
}
@@ -855,6 +894,13 @@ export namespace EnvironmentSpec {
* port number
*/
port?: number;
+
+ /**
+ * protocol for communication (Gateway proxy → user environment service). this
+ * setting only affects the protocol used between Gateway and user environment
+ * services.
+ */
+ protocol?: 'PROTOCOL_UNSPECIFIED' | 'PROTOCOL_HTTP' | 'PROTOCOL_HTTPS';
}
export interface Secret {
@@ -863,6 +909,12 @@ export namespace EnvironmentSpec {
*/
id?: string;
+ /**
+ * api_only indicates the secret is only available via API/CLI. These secrets are
+ * resolved but NOT automatically injected into services or devcontainers.
+ */
+ apiOnly?: boolean;
+
/**
* container_registry_basic_auth_host is the hostname of the container registry
* that supports basic auth
@@ -1040,7 +1092,8 @@ export namespace EnvironmentStatus {
| 'CONTENT_PHASE_INITIALIZING'
| 'CONTENT_PHASE_READY'
| 'CONTENT_PHASE_UPDATING'
- | 'CONTENT_PHASE_FAILED';
+ | 'CONTENT_PHASE_FAILED'
+ | 'CONTENT_PHASE_UNAVAILABLE';
/**
* session is the automations file session that is currently applied in the
@@ -1085,7 +1138,8 @@ export namespace EnvironmentStatus {
| 'CONTENT_PHASE_INITIALIZING'
| 'CONTENT_PHASE_READY'
| 'CONTENT_PHASE_UPDATING'
- | 'CONTENT_PHASE_FAILED';
+ | 'CONTENT_PHASE_FAILED'
+ | 'CONTENT_PHASE_UNAVAILABLE';
/**
* session is the session that is currently active in the environment.
@@ -1251,12 +1305,23 @@ export namespace EnvironmentStatus {
*/
logs?: string;
+ /**
+ * ops is the URL at which the environment ops service can be accessed.
+ */
+ ops?: string;
+
ports?: Array;
/**
* SSH is the URL at which the environment can be accessed via SSH.
*/
ssh?: EnvironmentURLs.SSH;
+
+ /**
+ * support_bundle is the URL at which the environment support bundle can be
+ * accessed.
+ */
+ supportBundle?: string;
}
export namespace EnvironmentURLs {
@@ -1330,6 +1395,8 @@ export namespace EnvironmentStatus {
* versions contains the versions of components in the machine.
*/
export interface Versions {
+ amiId?: string;
+
supervisorCommit?: string;
supervisorVersion?: string;
@@ -1369,7 +1436,8 @@ export namespace EnvironmentStatus {
| 'CONTENT_PHASE_INITIALIZING'
| 'CONTENT_PHASE_READY'
| 'CONTENT_PHASE_UPDATING'
- | 'CONTENT_PHASE_FAILED';
+ | 'CONTENT_PHASE_FAILED'
+ | 'CONTENT_PHASE_UNAVAILABLE';
secretName?: string;
@@ -1400,7 +1468,8 @@ export namespace EnvironmentStatus {
| 'CONTENT_PHASE_INITIALIZING'
| 'CONTENT_PHASE_READY'
| 'CONTENT_PHASE_UPDATING'
- | 'CONTENT_PHASE_FAILED';
+ | 'CONTENT_PHASE_FAILED'
+ | 'CONTENT_PHASE_UNAVAILABLE';
}
}
@@ -1587,6 +1656,13 @@ export namespace EnvironmentUpdateParams {
* port number
*/
port?: number;
+
+ /**
+ * protocol for communication (Gateway proxy → user environment service). this
+ * setting only affects the protocol used between Gateway and user environment
+ * services.
+ */
+ protocol?: 'PROTOCOL_UNSPECIFIED' | 'PROTOCOL_HTTP' | 'PROTOCOL_HTTPS';
}
export interface SSHPublicKey {
@@ -1639,6 +1715,11 @@ export namespace EnvironmentListParams {
| 'ARCHIVAL_STATUS_ALL'
| null;
+ /**
+ * created_before filters environments created before this timestamp
+ */
+ createdBefore?: string | null;
+
/**
* creator_ids filters the response to only Environments created by specified
* members
@@ -1651,6 +1732,11 @@ export namespace EnvironmentListParams {
*/
projectIds?: Array;
+ /**
+ * roles filters the response to only Environments with the specified roles
+ */
+ roles?: Array;
+
/**
* runner_ids filters the response to only Environments running on these Runner IDs
*/
@@ -1780,6 +1866,7 @@ export declare namespace Environments {
type EnvironmentActivitySignal as EnvironmentActivitySignal,
type EnvironmentMetadata as EnvironmentMetadata,
type EnvironmentPhase as EnvironmentPhase,
+ type EnvironmentRole as EnvironmentRole,
type EnvironmentSpec as EnvironmentSpec,
type EnvironmentStatus as EnvironmentStatus,
type EnvironmentCreateResponse as EnvironmentCreateResponse,
diff --git a/src/resources/environments/index.ts b/src/resources/environments/index.ts
index f106742..d73f7b0 100644
--- a/src/resources/environments/index.ts
+++ b/src/resources/environments/index.ts
@@ -14,6 +14,7 @@ export {
type EnvironmentActivitySignal,
type EnvironmentMetadata,
type EnvironmentPhase,
+ type EnvironmentRole,
type EnvironmentSpec,
type EnvironmentStatus,
type EnvironmentCreateResponse,
diff --git a/src/resources/errors.ts b/src/resources/errors.ts
new file mode 100644
index 0000000..c78f5e2
--- /dev/null
+++ b/src/resources/errors.ts
@@ -0,0 +1,342 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+import { APIResource } from '../core/resource';
+import { APIPromise } from '../core/api-promise';
+import { RequestOptions } from '../internal/request-options';
+
+export class Errors extends APIResource {
+ /**
+ * ReportErrors allows clients to report batches of errors that will be sent to
+ * error reporting systems. The structure is fully compatible with Sentry's event
+ * payload format.
+ *
+ * Use this method to:
+ *
+ * - Report client-side errors and exceptions
+ * - Track application crashes and panics
+ * - Send error context and metadata for debugging
+ *
+ * ### Examples
+ *
+ * - Report a JavaScript error with Sentry-compatible structure: The service
+ * accepts events with comprehensive error information including stack traces,
+ * identity context, breadcrumbs, and metadata that align with Sentry's event
+ * payload format.
+ */
+ reportErrors(body: ErrorReportErrorsParams, options?: RequestOptions): APIPromise {
+ return this._client.post('/gitpod.v1.ErrorsService/ReportErrors', { body, ...options });
+ }
+}
+
+/**
+ * Breadcrumb information (Sentry-compatible)
+ */
+export interface Breadcrumb {
+ /**
+ * Breadcrumb category
+ */
+ category?: string;
+
+ /**
+ * Additional breadcrumb data
+ */
+ data?: { [key: string]: string };
+
+ /**
+ * Breadcrumb level
+ */
+ level?: ErrorLevel;
+
+ /**
+ * Breadcrumb message
+ */
+ message?: string;
+
+ /**
+ * When the breadcrumb occurred
+ */
+ timestamp?: string;
+
+ /**
+ * Breadcrumb type (e.g., "navigation", "http", "user", "error")
+ */
+ type?: string;
+}
+
+/**
+ * ErrorEvent contains comprehensive error information (Sentry-compatible)
+ */
+export interface ErrorEvent {
+ /**
+ * Breadcrumbs leading up to the error
+ */
+ breadcrumbs?: Array;
+
+ /**
+ * Environment (e.g., "production", "staging", "development")
+ */
+ environment?: string;
+
+ /**
+ * Unique event identifier (required by Sentry)
+ */
+ eventId?: string;
+
+ /**
+ * Exception information (primary error data)
+ */
+ exceptions?: Array;
+
+ /**
+ * Additional arbitrary metadata
+ */
+ extra?: { [key: string]: string };
+
+ /**
+ * Custom fingerprint for grouping
+ */
+ fingerprint?: Array;
+
+ /**
+ * Identity ID of the user (UUID)
+ */
+ identityId?: string;
+
+ /**
+ * Error severity level
+ */
+ level?: ErrorLevel;
+
+ /**
+ * Logger name
+ */
+ logger?: string;
+
+ /**
+ * Modules/dependencies information
+ */
+ modules?: { [key: string]: string };
+
+ /**
+ * Platform identifier (required by Sentry)
+ */
+ platform?: string;
+
+ /**
+ * Release version
+ */
+ release?: string;
+
+ /**
+ * Request information
+ */
+ request?: RequestInfo;
+
+ /**
+ * SDK information
+ */
+ sdk?: { [key: string]: string };
+
+ /**
+ * Server/host name
+ */
+ serverName?: string;
+
+ /**
+ * Tags for filtering and grouping
+ */
+ tags?: { [key: string]: string };
+
+ /**
+ * When the event occurred (required by Sentry)
+ */
+ timestamp?: string;
+
+ /**
+ * Transaction name (e.g., route name, function name)
+ */
+ transaction?: string;
+}
+
+/**
+ * Error severity levels (aligned with Sentry levels)
+ */
+export type ErrorLevel =
+ | 'ERROR_LEVEL_UNSPECIFIED'
+ | 'ERROR_LEVEL_DEBUG'
+ | 'ERROR_LEVEL_INFO'
+ | 'ERROR_LEVEL_WARNING'
+ | 'ERROR_LEVEL_ERROR'
+ | 'ERROR_LEVEL_FATAL';
+
+/**
+ * Exception information (Sentry-compatible)
+ */
+export interface ExceptionInfo {
+ /**
+ * Exception mechanism
+ */
+ mechanism?: ExceptionMechanism;
+
+ /**
+ * Module or package where the exception type is defined
+ */
+ module?: string;
+
+ /**
+ * Stack trace frames
+ */
+ stacktrace?: Array;
+
+ /**
+ * Thread ID if applicable
+ */
+ threadId?: string;
+
+ /**
+ * Exception type/class name
+ */
+ type?: string;
+
+ /**
+ * Exception message/value
+ */
+ value?: string;
+}
+
+/**
+ * Exception mechanism information (Sentry-compatible)
+ */
+export interface ExceptionMechanism {
+ /**
+ * Additional mechanism-specific data
+ */
+ data?: { [key: string]: string };
+
+ /**
+ * Human-readable description of the mechanism
+ */
+ description?: string;
+
+ /**
+ * Whether the exception was handled by user code
+ */
+ handled?: boolean;
+
+ /**
+ * Whether this is a synthetic exception (created by SDK)
+ */
+ synthetic?: boolean;
+
+ /**
+ * Type of mechanism (e.g., "generic", "promise", "onerror")
+ */
+ type?: string;
+}
+
+/**
+ * Request information (Sentry-compatible)
+ */
+export interface RequestInfo {
+ /**
+ * Request body (truncated if large)
+ */
+ data?: string;
+
+ /**
+ * Request headers
+ */
+ headers?: { [key: string]: string };
+
+ /**
+ * HTTP method
+ */
+ method?: string;
+
+ /**
+ * Query parameters
+ */
+ queryString?: { [key: string]: string };
+
+ /**
+ * Request URL
+ */
+ url?: string;
+}
+
+/**
+ * Stack trace frame information (Sentry-compatible)
+ */
+export interface StackFrame {
+ /**
+ * Column number in the line
+ */
+ colno?: number;
+
+ contextLine?: string;
+
+ /**
+ * File name or path
+ */
+ filename?: string;
+
+ /**
+ * Function name
+ */
+ function?: string;
+
+ /**
+ * Whether this frame is in application code (vs library/framework code)
+ */
+ inApp?: boolean;
+
+ /**
+ * Line number in the file
+ */
+ lineno?: number;
+
+ /**
+ * Module or package name
+ */
+ module?: string;
+
+ postContext?: Array;
+
+ /**
+ * Source code context around the error line
+ */
+ preContext?: Array;
+
+ /**
+ * Additional frame-specific variables/locals
+ */
+ vars?: { [key: string]: string };
+}
+
+/**
+ * ReportErrorsResponse confirms that the errors were successfully received Success
+ * is indicated by HTTP 200 status code, failures by other status codes Empty
+ * response - success indicated by HTTP status code
+ */
+export type ErrorReportErrorsResponse = unknown;
+
+export interface ErrorReportErrorsParams {
+ /**
+ * Error events to be reported (batch) - now using Sentry-compatible structure
+ */
+ events?: Array;
+}
+
+export declare namespace Errors {
+ export {
+ type Breadcrumb as Breadcrumb,
+ type ErrorEvent as ErrorEvent,
+ type ErrorLevel as ErrorLevel,
+ type ExceptionInfo as ExceptionInfo,
+ type ExceptionMechanism as ExceptionMechanism,
+ type RequestInfo as RequestInfo,
+ type StackFrame as StackFrame,
+ type ErrorReportErrorsResponse as ErrorReportErrorsResponse,
+ type ErrorReportErrorsParams as ErrorReportErrorsParams,
+ };
+}
diff --git a/src/resources/events.ts b/src/resources/events.ts
index 1cdccaf..bb25c8b 100644
--- a/src/resources/events.ts
+++ b/src/resources/events.ts
@@ -1,7 +1,6 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
import { APIResource } from '../core/resource';
-import * as EventsAPI from './events';
import * as Shared from './shared';
import { APIPromise } from '../core/api-promise';
import { EntriesPage, type EntriesPageParams, PagePromise } from '../core/pagination';
@@ -116,33 +115,6 @@ export type ResourceOperation =
| 'RESOURCE_OPERATION_DELETE'
| 'RESOURCE_OPERATION_UPDATE_STATUS';
-export type ResourceType =
- | 'RESOURCE_TYPE_UNSPECIFIED'
- | 'RESOURCE_TYPE_ENVIRONMENT'
- | 'RESOURCE_TYPE_RUNNER'
- | 'RESOURCE_TYPE_PROJECT'
- | 'RESOURCE_TYPE_TASK'
- | 'RESOURCE_TYPE_TASK_EXECUTION'
- | 'RESOURCE_TYPE_SERVICE'
- | 'RESOURCE_TYPE_ORGANIZATION'
- | 'RESOURCE_TYPE_USER'
- | 'RESOURCE_TYPE_ENVIRONMENT_CLASS'
- | 'RESOURCE_TYPE_RUNNER_SCM_INTEGRATION'
- | 'RESOURCE_TYPE_HOST_AUTHENTICATION_TOKEN'
- | 'RESOURCE_TYPE_GROUP'
- | 'RESOURCE_TYPE_PERSONAL_ACCESS_TOKEN'
- | 'RESOURCE_TYPE_USER_PREFERENCE'
- | 'RESOURCE_TYPE_SERVICE_ACCOUNT'
- | 'RESOURCE_TYPE_SECRET'
- | 'RESOURCE_TYPE_SSO_CONFIG'
- | 'RESOURCE_TYPE_DOMAIN_VERIFICATION'
- | 'RESOURCE_TYPE_AGENT_EXECUTION'
- | 'RESOURCE_TYPE_RUNNER_LLM_INTEGRATION'
- | 'RESOURCE_TYPE_AGENT'
- | 'RESOURCE_TYPE_ENVIRONMENT_SESSION'
- | 'RESOURCE_TYPE_USER_SECRET'
- | 'RESOURCE_TYPE_ORGANIZATION_POLICY';
-
export interface EventListResponse {
id?: string;
@@ -246,7 +218,7 @@ export interface EventListResponse {
subjectId?: string;
- subjectType?: ResourceType;
+ subjectType?: Shared.ResourceType;
}
export interface EventWatchResponse {
@@ -254,7 +226,7 @@ export interface EventWatchResponse {
resourceId?: string;
- resourceType?: ResourceType;
+ resourceType?: Shared.ResourceType;
}
export interface EventListParams extends EntriesPageParams {
@@ -277,7 +249,7 @@ export namespace EventListParams {
subjectIds?: Array;
- subjectTypes?: Array;
+ subjectTypes?: Array;
}
/**
@@ -316,7 +288,6 @@ export interface EventWatchParams {
export declare namespace Events {
export {
type ResourceOperation as ResourceOperation,
- type ResourceType as ResourceType,
type EventListResponse as EventListResponse,
type EventWatchResponse as EventWatchResponse,
type EventListResponsesEntriesPage as EventListResponsesEntriesPage,
diff --git a/src/resources/groups.ts b/src/resources/groups.ts
index 2ba760c..429bb1a 100644
--- a/src/resources/groups.ts
+++ b/src/resources/groups.ts
@@ -1,291 +1,3 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-import { APIResource } from '../core/resource';
-import { GroupsPage, type GroupsPageParams, PagePromise } from '../core/pagination';
-import { RequestOptions } from '../internal/request-options';
-
-export class Groups extends APIResource {
- /**
- * Lists groups with optional pagination.
- *
- * Use this method to:
- *
- * - View all groups
- * - Check group memberships
- * - Monitor group configurations
- * - Audit group access
- *
- * ### Examples
- *
- * - List all groups:
- *
- * Shows all groups with pagination.
- *
- * ```yaml
- * pagination:
- * pageSize: 20
- * ```
- *
- * - List with custom page size:
- *
- * Shows groups with specified page size.
- *
- * ```yaml
- * pagination:
- * pageSize: 50
- * token: "next-page-token-from-previous-response"
- * ```
- *
- * @example
- * ```ts
- * // Automatically fetches more pages as needed.
- * for await (const group of client.groups.list({
- * pagination: { pageSize: 20 },
- * })) {
- * // ...
- * }
- * ```
- */
- list(params: GroupListParams, options?: RequestOptions): PagePromise {
- const { token, pageSize, ...body } = params;
- return this._client.getAPIList('/gitpod.v1.GroupService/ListGroups', GroupsPage, {
- query: { token, pageSize },
- body,
- method: 'post',
- ...options,
- });
- }
-}
-
-export type GroupsGroupsPage = GroupsPage;
-
-export interface Group {
- id?: string;
-
- /**
- * A Timestamp represents a point in time independent of any time zone or local
- * calendar, encoded as a count of seconds and fractions of seconds at nanosecond
- * resolution. The count is relative to an epoch at UTC midnight on January 1,
- * 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar
- * backwards to year one.
- *
- * All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap
- * second table is needed for interpretation, using a
- * [24-hour linear smear](https://developers.google.com/time/smear).
- *
- * The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
- * restricting to that range, we ensure that we can convert to and from
- * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
- *
- * # Examples
- *
- * Example 1: Compute Timestamp from POSIX `time()`.
- *
- * Timestamp timestamp;
- * timestamp.set_seconds(time(NULL));
- * timestamp.set_nanos(0);
- *
- * Example 2: Compute Timestamp from POSIX `gettimeofday()`.
- *
- * struct timeval tv;
- * gettimeofday(&tv, NULL);
- *
- * Timestamp timestamp;
- * timestamp.set_seconds(tv.tv_sec);
- * timestamp.set_nanos(tv.tv_usec * 1000);
- *
- * Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
- *
- * FILETIME ft;
- * GetSystemTimeAsFileTime(&ft);
- * UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
- *
- * // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
- * // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
- * Timestamp timestamp;
- * timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
- * timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
- *
- * Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
- *
- * long millis = System.currentTimeMillis();
- *
- * Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
- * .setNanos((int) ((millis % 1000) * 1000000)).build();
- *
- * Example 5: Compute Timestamp from Java `Instant.now()`.
- *
- * Instant now = Instant.now();
- *
- * Timestamp timestamp =
- * Timestamp.newBuilder().setSeconds(now.getEpochSecond())
- * .setNanos(now.getNano()).build();
- *
- * Example 6: Compute Timestamp from current time in Python.
- *
- * timestamp = Timestamp()
- * timestamp.GetCurrentTime()
- *
- * # JSON Mapping
- *
- * In JSON format, the Timestamp type is encoded as a string in the
- * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is
- * "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" where {year} is always
- * expressed using four digits while {month}, {day}, {hour}, {min}, and {sec} are
- * zero-padded to two digits each. The fractional seconds, which can go up to 9
- * digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix
- * indicates the timezone ("UTC"); the timezone is required. A proto3 JSON
- * serializer should always use UTC (as indicated by "Z") when printing the
- * Timestamp type and a proto3 JSON parser should be able to accept both UTC and
- * other timezones (as indicated by an offset).
- *
- * For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on
- * January 15, 2017.
- *
- * In JavaScript, one can convert a Date object to this format using the standard
- * [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)
- * method. In Python, a standard `datetime.datetime` object can be converted to
- * this format using
- * [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with the
- * time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the
- * Joda Time's
- * [`ISODateTimeFormat.dateTime()`]()
- * to obtain a formatter capable of generating timestamps in this format.
- */
- createdAt?: string;
-
- name?: string;
-
- organizationId?: string;
-
- /**
- * system_managed indicates that this group is created by the system automatically
- */
- systemManaged?: boolean;
-
- /**
- * A Timestamp represents a point in time independent of any time zone or local
- * calendar, encoded as a count of seconds and fractions of seconds at nanosecond
- * resolution. The count is relative to an epoch at UTC midnight on January 1,
- * 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar
- * backwards to year one.
- *
- * All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap
- * second table is needed for interpretation, using a
- * [24-hour linear smear](https://developers.google.com/time/smear).
- *
- * The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
- * restricting to that range, we ensure that we can convert to and from
- * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
- *
- * # Examples
- *
- * Example 1: Compute Timestamp from POSIX `time()`.
- *
- * Timestamp timestamp;
- * timestamp.set_seconds(time(NULL));
- * timestamp.set_nanos(0);
- *
- * Example 2: Compute Timestamp from POSIX `gettimeofday()`.
- *
- * struct timeval tv;
- * gettimeofday(&tv, NULL);
- *
- * Timestamp timestamp;
- * timestamp.set_seconds(tv.tv_sec);
- * timestamp.set_nanos(tv.tv_usec * 1000);
- *
- * Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
- *
- * FILETIME ft;
- * GetSystemTimeAsFileTime(&ft);
- * UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
- *
- * // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
- * // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
- * Timestamp timestamp;
- * timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
- * timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
- *
- * Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
- *
- * long millis = System.currentTimeMillis();
- *
- * Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
- * .setNanos((int) ((millis % 1000) * 1000000)).build();
- *
- * Example 5: Compute Timestamp from Java `Instant.now()`.
- *
- * Instant now = Instant.now();
- *
- * Timestamp timestamp =
- * Timestamp.newBuilder().setSeconds(now.getEpochSecond())
- * .setNanos(now.getNano()).build();
- *
- * Example 6: Compute Timestamp from current time in Python.
- *
- * timestamp = Timestamp()
- * timestamp.GetCurrentTime()
- *
- * # JSON Mapping
- *
- * In JSON format, the Timestamp type is encoded as a string in the
- * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is
- * "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" where {year} is always
- * expressed using four digits while {month}, {day}, {hour}, {min}, and {sec} are
- * zero-padded to two digits each. The fractional seconds, which can go up to 9
- * digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix
- * indicates the timezone ("UTC"); the timezone is required. A proto3 JSON
- * serializer should always use UTC (as indicated by "Z") when printing the
- * Timestamp type and a proto3 JSON parser should be able to accept both UTC and
- * other timezones (as indicated by an offset).
- *
- * For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on
- * January 15, 2017.
- *
- * In JavaScript, one can convert a Date object to this format using the standard
- * [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)
- * method. In Python, a standard `datetime.datetime` object can be converted to
- * this format using
- * [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with the
- * time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the
- * Joda Time's
- * [`ISODateTimeFormat.dateTime()`]()
- * to obtain a formatter capable of generating timestamps in this format.
- */
- updatedAt?: string;
-}
-
-export interface GroupListParams extends GroupsPageParams {
- /**
- * Body param: pagination contains the pagination options for listing groups
- */
- pagination?: GroupListParams.Pagination;
-}
-
-export namespace GroupListParams {
- /**
- * pagination contains the pagination options for listing groups
- */
- 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 declare namespace Groups {
- export {
- type Group as Group,
- type GroupsGroupsPage as GroupsGroupsPage,
- type GroupListParams as GroupListParams,
- };
-}
+export * from './groups/index';
diff --git a/src/resources/groups/groups.ts b/src/resources/groups/groups.ts
new file mode 100644
index 0000000..5c566bf
--- /dev/null
+++ b/src/resources/groups/groups.ts
@@ -0,0 +1,549 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+import { APIResource } from '../../core/resource';
+import * as MembershipsAPI from './memberships';
+import {
+ GroupMembership,
+ GroupMembershipsMembersPage,
+ MembershipCreateParams,
+ MembershipCreateResponse,
+ MembershipDeleteParams,
+ MembershipDeleteResponse,
+ MembershipListParams,
+ Memberships,
+} from './memberships';
+import * as RoleAssignmentsAPI from './role-assignments';
+import {
+ ResourceRole,
+ RoleAssignment,
+ RoleAssignmentCreateParams,
+ RoleAssignmentCreateResponse,
+ RoleAssignmentDeleteParams,
+ RoleAssignmentDeleteResponse,
+ RoleAssignmentListParams,
+ RoleAssignments,
+ RoleAssignmentsAssignmentsPage,
+} from './role-assignments';
+import { APIPromise } from '../../core/api-promise';
+import { GroupsPage, type GroupsPageParams, PagePromise } from '../../core/pagination';
+import { RequestOptions } from '../../internal/request-options';
+
+export class Groups extends APIResource {
+ memberships: MembershipsAPI.Memberships = new MembershipsAPI.Memberships(this._client);
+ roleAssignments: RoleAssignmentsAPI.RoleAssignments = new RoleAssignmentsAPI.RoleAssignments(this._client);
+
+ /**
+ * Creates a new group within an organization.
+ *
+ * Use this method to:
+ *
+ * - Create teams for access control
+ * - Organize users by department or function
+ * - Set up role-based access groups
+ *
+ * ### Examples
+ *
+ * - Create a basic group:
+ *
+ * Creates a group with name and description.
+ *
+ * ```yaml
+ * organizationId: "b0e12f6c-4c67-429d-a4a6-d9838b5da047"
+ * name: "Backend Team"
+ * description: "Backend engineering team"
+ * ```
+ *
+ * ### Authorization
+ *
+ * Requires `org:admin` role on the organization.
+ *
+ * @example
+ * ```ts
+ * const group = await client.groups.create({
+ * description: 'Backend engineering team',
+ * name: 'Backend Team',
+ * organizationId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047',
+ * });
+ * ```
+ */
+ create(body: GroupCreateParams, options?: RequestOptions): APIPromise {
+ return this._client.post('/gitpod.v1.GroupService/CreateGroup', { body, ...options });
+ }
+
+ /**
+ * Gets information about a specific group.
+ *
+ * Use this method to:
+ *
+ * - Retrieve group details and metadata
+ * - Check group configuration
+ * - View member count
+ *
+ * ### Examples
+ *
+ * - Get group details:
+ *
+ * Retrieves information about a specific group.
+ *
+ * ```yaml
+ * groupId: "d2c94c27-3b76-4a42-b88c-95a85e392c68"
+ * ```
+ *
+ * ### Authorization
+ *
+ * All organization members can view group information (transparency model).
+ *
+ * @example
+ * ```ts
+ * const group = await client.groups.retrieve({
+ * groupId: 'd2c94c27-3b76-4a42-b88c-95a85e392c68',
+ * });
+ * ```
+ */
+ retrieve(body: GroupRetrieveParams, options?: RequestOptions): APIPromise {
+ return this._client.post('/gitpod.v1.GroupService/GetGroup', { body, ...options });
+ }
+
+ /**
+ * Updates group information.
+ *
+ * Use this method to:
+ *
+ * - Rename a group
+ * - Update group description
+ *
+ * ### Examples
+ *
+ * - Update group name:
+ *
+ * Changes the name of an existing group.
+ *
+ * ```yaml
+ * groupId: "d2c94c27-3b76-4a42-b88c-95a85e392c68"
+ * name: "Platform Team"
+ * description: "Platform engineering team"
+ * ```
+ *
+ * ### Authorization
+ *
+ * Requires `org:admin` permission on the organization or `group:admin` permission
+ * on the specific group.
+ *
+ * @example
+ * ```ts
+ * const group = await client.groups.update({
+ * description: 'Platform engineering team',
+ * groupId: 'd2c94c27-3b76-4a42-b88c-95a85e392c68',
+ * name: 'Platform Team',
+ * });
+ * ```
+ */
+ update(body: GroupUpdateParams, options?: RequestOptions): APIPromise {
+ return this._client.post('/gitpod.v1.GroupService/UpdateGroup', { body, ...options });
+ }
+
+ /**
+ * Lists groups with optional pagination.
+ *
+ * Use this method to:
+ *
+ * - View all groups in an organization
+ * - Check group memberships
+ * - Monitor group configurations
+ * - Audit group access
+ *
+ * ### Examples
+ *
+ * - List all groups:
+ *
+ * Shows all groups with pagination.
+ *
+ * ```yaml
+ * pagination:
+ * pageSize: 20
+ * ```
+ *
+ * - List with custom page size:
+ *
+ * Shows groups with specified page size.
+ *
+ * ```yaml
+ * pagination:
+ * pageSize: 50
+ * token: "next-page-token-from-previous-response"
+ * ```
+ *
+ * ### Authorization
+ *
+ * All organization members can list groups (transparency model).
+ *
+ * @example
+ * ```ts
+ * // Automatically fetches more pages as needed.
+ * for await (const group of client.groups.list({
+ * pagination: { pageSize: 20 },
+ * })) {
+ * // ...
+ * }
+ * ```
+ */
+ list(params: GroupListParams, options?: RequestOptions): PagePromise {
+ const { token, pageSize, ...body } = params;
+ return this._client.getAPIList('/gitpod.v1.GroupService/ListGroups', GroupsPage, {
+ query: { token, pageSize },
+ body,
+ method: 'post',
+ ...options,
+ });
+ }
+
+ /**
+ * Deletes a group and removes all its resource assignments.
+ *
+ * When a group is deleted, all resource assignments revert to org-level scope.
+ *
+ * Use this method to:
+ *
+ * - Remove unused groups
+ * - Clean up after team reorganization
+ *
+ * ### Examples
+ *
+ * - Delete a group:
+ *
+ * Permanently removes a group.
+ *
+ * ```yaml
+ * groupId: "d2c94c27-3b76-4a42-b88c-95a85e392c68"
+ * ```
+ *
+ * ### Authorization
+ *
+ * Requires `org:admin` role on the organization.
+ *
+ * @example
+ * ```ts
+ * const group = await client.groups.delete({
+ * groupId: 'd2c94c27-3b76-4a42-b88c-95a85e392c68',
+ * });
+ * ```
+ */
+ delete(body: GroupDeleteParams, options?: RequestOptions): APIPromise {
+ return this._client.post('/gitpod.v1.GroupService/DeleteGroup', { body, ...options });
+ }
+}
+
+export type GroupsGroupsPage = GroupsPage;
+
+export interface Group {
+ id?: string;
+
+ /**
+ * A Timestamp represents a point in time independent of any time zone or local
+ * calendar, encoded as a count of seconds and fractions of seconds at nanosecond
+ * resolution. The count is relative to an epoch at UTC midnight on January 1,
+ * 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar
+ * backwards to year one.
+ *
+ * All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap
+ * second table is needed for interpretation, using a
+ * [24-hour linear smear](https://developers.google.com/time/smear).
+ *
+ * The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
+ * restricting to that range, we ensure that we can convert to and from
+ * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
+ *
+ * # Examples
+ *
+ * Example 1: Compute Timestamp from POSIX `time()`.
+ *
+ * Timestamp timestamp;
+ * timestamp.set_seconds(time(NULL));
+ * timestamp.set_nanos(0);
+ *
+ * Example 2: Compute Timestamp from POSIX `gettimeofday()`.
+ *
+ * struct timeval tv;
+ * gettimeofday(&tv, NULL);
+ *
+ * Timestamp timestamp;
+ * timestamp.set_seconds(tv.tv_sec);
+ * timestamp.set_nanos(tv.tv_usec * 1000);
+ *
+ * Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
+ *
+ * FILETIME ft;
+ * GetSystemTimeAsFileTime(&ft);
+ * UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
+ *
+ * // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
+ * // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
+ * Timestamp timestamp;
+ * timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
+ * timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
+ *
+ * Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
+ *
+ * long millis = System.currentTimeMillis();
+ *
+ * Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
+ * .setNanos((int) ((millis % 1000) * 1000000)).build();
+ *
+ * Example 5: Compute Timestamp from Java `Instant.now()`.
+ *
+ * Instant now = Instant.now();
+ *
+ * Timestamp timestamp =
+ * Timestamp.newBuilder().setSeconds(now.getEpochSecond())
+ * .setNanos(now.getNano()).build();
+ *
+ * Example 6: Compute Timestamp from current time in Python.
+ *
+ * timestamp = Timestamp()
+ * timestamp.GetCurrentTime()
+ *
+ * # JSON Mapping
+ *
+ * In JSON format, the Timestamp type is encoded as a string in the
+ * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is
+ * "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" where {year} is always
+ * expressed using four digits while {month}, {day}, {hour}, {min}, and {sec} are
+ * zero-padded to two digits each. The fractional seconds, which can go up to 9
+ * digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix
+ * indicates the timezone ("UTC"); the timezone is required. A proto3 JSON
+ * serializer should always use UTC (as indicated by "Z") when printing the
+ * Timestamp type and a proto3 JSON parser should be able to accept both UTC and
+ * other timezones (as indicated by an offset).
+ *
+ * For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on
+ * January 15, 2017.
+ *
+ * In JavaScript, one can convert a Date object to this format using the standard
+ * [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)
+ * method. In Python, a standard `datetime.datetime` object can be converted to
+ * this format using
+ * [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with the
+ * time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the
+ * Joda Time's
+ * [`ISODateTimeFormat.dateTime()`]()
+ * to obtain a formatter capable of generating timestamps in this format.
+ */
+ createdAt?: string;
+
+ description?: string;
+
+ /**
+ * member_count is the total number of members in this group
+ */
+ memberCount?: number;
+
+ name?: string;
+
+ organizationId?: string;
+
+ /**
+ * system_managed indicates that this group is created by the system automatically
+ */
+ systemManaged?: boolean;
+
+ /**
+ * A Timestamp represents a point in time independent of any time zone or local
+ * calendar, encoded as a count of seconds and fractions of seconds at nanosecond
+ * resolution. The count is relative to an epoch at UTC midnight on January 1,
+ * 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar
+ * backwards to year one.
+ *
+ * All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap
+ * second table is needed for interpretation, using a
+ * [24-hour linear smear](https://developers.google.com/time/smear).
+ *
+ * The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
+ * restricting to that range, we ensure that we can convert to and from
+ * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
+ *
+ * # Examples
+ *
+ * Example 1: Compute Timestamp from POSIX `time()`.
+ *
+ * Timestamp timestamp;
+ * timestamp.set_seconds(time(NULL));
+ * timestamp.set_nanos(0);
+ *
+ * Example 2: Compute Timestamp from POSIX `gettimeofday()`.
+ *
+ * struct timeval tv;
+ * gettimeofday(&tv, NULL);
+ *
+ * Timestamp timestamp;
+ * timestamp.set_seconds(tv.tv_sec);
+ * timestamp.set_nanos(tv.tv_usec * 1000);
+ *
+ * Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
+ *
+ * FILETIME ft;
+ * GetSystemTimeAsFileTime(&ft);
+ * UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
+ *
+ * // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
+ * // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
+ * Timestamp timestamp;
+ * timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
+ * timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
+ *
+ * Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
+ *
+ * long millis = System.currentTimeMillis();
+ *
+ * Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
+ * .setNanos((int) ((millis % 1000) * 1000000)).build();
+ *
+ * Example 5: Compute Timestamp from Java `Instant.now()`.
+ *
+ * Instant now = Instant.now();
+ *
+ * Timestamp timestamp =
+ * Timestamp.newBuilder().setSeconds(now.getEpochSecond())
+ * .setNanos(now.getNano()).build();
+ *
+ * Example 6: Compute Timestamp from current time in Python.
+ *
+ * timestamp = Timestamp()
+ * timestamp.GetCurrentTime()
+ *
+ * # JSON Mapping
+ *
+ * In JSON format, the Timestamp type is encoded as a string in the
+ * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the format is
+ * "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" where {year} is always
+ * expressed using four digits while {month}, {day}, {hour}, {min}, and {sec} are
+ * zero-padded to two digits each. The fractional seconds, which can go up to 9
+ * digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix
+ * indicates the timezone ("UTC"); the timezone is required. A proto3 JSON
+ * serializer should always use UTC (as indicated by "Z") when printing the
+ * Timestamp type and a proto3 JSON parser should be able to accept both UTC and
+ * other timezones (as indicated by an offset).
+ *
+ * For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on
+ * January 15, 2017.
+ *
+ * In JavaScript, one can convert a Date object to this format using the standard
+ * [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)
+ * method. In Python, a standard `datetime.datetime` object can be converted to
+ * this format using
+ * [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with the
+ * time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the
+ * Joda Time's
+ * [`ISODateTimeFormat.dateTime()`]()
+ * to obtain a formatter capable of generating timestamps in this format.
+ */
+ updatedAt?: string;
+}
+
+export interface GroupCreateResponse {
+ group?: Group;
+}
+
+export interface GroupRetrieveResponse {
+ group?: Group;
+}
+
+export interface GroupUpdateResponse {
+ group?: Group;
+}
+
+/**
+ * Empty response
+ */
+export type GroupDeleteResponse = unknown;
+
+export interface GroupCreateParams {
+ description?: string;
+
+ name?: string;
+
+ organizationId?: string;
+}
+
+export interface GroupRetrieveParams {
+ groupId?: string;
+}
+
+export interface GroupUpdateParams {
+ description?: string;
+
+ groupId?: string;
+
+ name?: string;
+}
+
+export interface GroupListParams extends GroupsPageParams {
+ /**
+ * Body param: pagination contains the pagination options for listing groups
+ */
+ pagination?: GroupListParams.Pagination;
+}
+
+export namespace GroupListParams {
+ /**
+ * pagination contains the pagination options for listing groups
+ */
+ 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 GroupDeleteParams {
+ groupId?: string;
+}
+
+Groups.Memberships = Memberships;
+Groups.RoleAssignments = RoleAssignments;
+
+export declare namespace Groups {
+ export {
+ type Group as Group,
+ type GroupCreateResponse as GroupCreateResponse,
+ type GroupRetrieveResponse as GroupRetrieveResponse,
+ type GroupUpdateResponse as GroupUpdateResponse,
+ type GroupDeleteResponse as GroupDeleteResponse,
+ type GroupsGroupsPage as GroupsGroupsPage,
+ type GroupCreateParams as GroupCreateParams,
+ type GroupRetrieveParams as GroupRetrieveParams,
+ type GroupUpdateParams as GroupUpdateParams,
+ type GroupListParams as GroupListParams,
+ type GroupDeleteParams as GroupDeleteParams,
+ };
+
+ export {
+ Memberships as Memberships,
+ type GroupMembership as GroupMembership,
+ type MembershipCreateResponse as MembershipCreateResponse,
+ type MembershipDeleteResponse as MembershipDeleteResponse,
+ type GroupMembershipsMembersPage as GroupMembershipsMembersPage,
+ type MembershipCreateParams as MembershipCreateParams,
+ type MembershipListParams as MembershipListParams,
+ type MembershipDeleteParams as MembershipDeleteParams,
+ };
+
+ export {
+ RoleAssignments as RoleAssignments,
+ type ResourceRole as ResourceRole,
+ type RoleAssignment as RoleAssignment,
+ type RoleAssignmentCreateResponse as RoleAssignmentCreateResponse,
+ type RoleAssignmentDeleteResponse as RoleAssignmentDeleteResponse,
+ type RoleAssignmentsAssignmentsPage as RoleAssignmentsAssignmentsPage,
+ type RoleAssignmentCreateParams as RoleAssignmentCreateParams,
+ type RoleAssignmentListParams as RoleAssignmentListParams,
+ type RoleAssignmentDeleteParams as RoleAssignmentDeleteParams,
+ };
+}
diff --git a/src/resources/groups/index.ts b/src/resources/groups/index.ts
new file mode 100644
index 0000000..80bf45e
--- /dev/null
+++ b/src/resources/groups/index.ts
@@ -0,0 +1,37 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+export {
+ Groups,
+ type Group,
+ type GroupCreateResponse,
+ type GroupRetrieveResponse,
+ type GroupUpdateResponse,
+ type GroupDeleteResponse,
+ type GroupCreateParams,
+ type GroupRetrieveParams,
+ type GroupUpdateParams,
+ type GroupListParams,
+ type GroupDeleteParams,
+ type GroupsGroupsPage,
+} from './groups';
+export {
+ Memberships,
+ type GroupMembership,
+ type MembershipCreateResponse,
+ type MembershipDeleteResponse,
+ type MembershipCreateParams,
+ type MembershipListParams,
+ type MembershipDeleteParams,
+ type GroupMembershipsMembersPage,
+} from './memberships';
+export {
+ RoleAssignments,
+ type ResourceRole,
+ type RoleAssignment,
+ type RoleAssignmentCreateResponse,
+ type RoleAssignmentDeleteResponse,
+ type RoleAssignmentCreateParams,
+ type RoleAssignmentListParams,
+ type RoleAssignmentDeleteParams,
+ type RoleAssignmentsAssignmentsPage,
+} from './role-assignments';
diff --git a/src/resources/groups/memberships.ts b/src/resources/groups/memberships.ts
new file mode 100644
index 0000000..097335a
--- /dev/null
+++ b/src/resources/groups/memberships.ts
@@ -0,0 +1,237 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+import { APIResource } from '../../core/resource';
+import * as Shared from '../shared';
+import { APIPromise } from '../../core/api-promise';
+import { MembersPage, type MembersPageParams, PagePromise } from '../../core/pagination';
+import { RequestOptions } from '../../internal/request-options';
+
+export class Memberships extends APIResource {
+ /**
+ * Creates a membership for a user in a group.
+ *
+ * Use this method to:
+ *
+ * - Add users to groups
+ * - Grant group-based permissions to users
+ *
+ * ### Examples
+ *
+ * - Add a user to a group:
+ *
+ * Creates a membership for a user in a group.
+ *
+ * ```yaml
+ * groupId: "d2c94c27-3b76-4a42-b88c-95a85e392c68"
+ * subject:
+ * id: "f53d2330-3795-4c5d-a1f3-453121af9c60"
+ * principal: PRINCIPAL_USER
+ * ```
+ *
+ * ### Authorization
+ *
+ * Requires `org:admin` permission on the organization or `group:admin` permission
+ * on the specific group.
+ *
+ * @example
+ * ```ts
+ * const membership = await client.groups.memberships.create({
+ * groupId: 'd2c94c27-3b76-4a42-b88c-95a85e392c68',
+ * subject: {
+ * id: 'f53d2330-3795-4c5d-a1f3-453121af9c60',
+ * principal: 'PRINCIPAL_USER',
+ * },
+ * });
+ * ```
+ */
+ create(body: MembershipCreateParams, options?: RequestOptions): APIPromise {
+ return this._client.post('/gitpod.v1.GroupService/CreateMembership', { body, ...options });
+ }
+
+ /**
+ * Lists all memberships of a group.
+ *
+ * Use this method to:
+ *
+ * - View all members of a group
+ * - Audit group membership
+ *
+ * ### Examples
+ *
+ * - List group members:
+ *
+ * Shows all members of a specific group.
+ *
+ * ```yaml
+ * groupId: "d2c94c27-3b76-4a42-b88c-95a85e392c68"
+ * pagination:
+ * pageSize: 20
+ * ```
+ *
+ * ### Authorization
+ *
+ * All organization members can view group membership (transparency model).
+ *
+ * @example
+ * ```ts
+ * // Automatically fetches more pages as needed.
+ * for await (const groupMembership of client.groups.memberships.list(
+ * {
+ * groupId: 'd2c94c27-3b76-4a42-b88c-95a85e392c68',
+ * pagination: { pageSize: 20 },
+ * },
+ * )) {
+ * // ...
+ * }
+ * ```
+ */
+ list(
+ params: MembershipListParams,
+ options?: RequestOptions,
+ ): PagePromise {
+ const { token, pageSize, ...body } = params;
+ return this._client.getAPIList('/gitpod.v1.GroupService/ListMemberships', MembersPage, {
+ query: { token, pageSize },
+ body,
+ method: 'post',
+ ...options,
+ });
+ }
+
+ /**
+ * Deletes a membership for a user in a group.
+ *
+ * Use this method to:
+ *
+ * - Remove users from groups
+ * - Revoke group-based permissions
+ *
+ * ### Examples
+ *
+ * - Remove a user from a group:
+ *
+ * Deletes a membership by its ID.
+ *
+ * ```yaml
+ * membershipId: "a1b2c3d4-5678-90ab-cdef-1234567890ab"
+ * ```
+ *
+ * ### Authorization
+ *
+ * Requires `org:admin` permission on the organization or `group:admin` permission
+ * on the specific group.
+ *
+ * @example
+ * ```ts
+ * const membership = await client.groups.memberships.delete({
+ * membershipId: 'a1b2c3d4-5678-90ab-cdef-1234567890ab',
+ * });
+ * ```
+ */
+ delete(body: MembershipDeleteParams, options?: RequestOptions): APIPromise {
+ return this._client.post('/gitpod.v1.GroupService/DeleteMembership', { body, ...options });
+ }
+}
+
+export type GroupMembershipsMembersPage = MembersPage;
+
+/**
+ * GroupMembership represents a subject's membership in a group
+ */
+export interface GroupMembership {
+ /**
+ * Unique identifier for the group membership
+ */
+ id?: string;
+
+ /**
+ * Subject's avatar URL
+ */
+ avatarUrl?: string;
+
+ /**
+ * Group identifier
+ */
+ groupId?: string;
+
+ /**
+ * Subject's display name
+ */
+ name?: string;
+
+ /**
+ * Subject (user, runner, environment, service account, etc.)
+ */
+ subject?: Shared.Subject;
+}
+
+export interface MembershipCreateResponse {
+ /**
+ * GroupMembership represents a subject's membership in a group
+ */
+ member?: GroupMembership;
+}
+
+/**
+ * Empty response
+ */
+export type MembershipDeleteResponse = unknown;
+
+export interface MembershipCreateParams {
+ groupId?: string;
+
+ /**
+ * Subject to add to the group
+ */
+ subject?: Shared.Subject;
+}
+
+export interface MembershipListParams extends MembersPageParams {
+ /**
+ * Body param:
+ */
+ groupId?: string;
+
+ /**
+ * Body param: pagination contains the pagination options for listing memberships
+ */
+ pagination?: MembershipListParams.Pagination;
+}
+
+export namespace MembershipListParams {
+ /**
+ * pagination contains the pagination options for listing memberships
+ */
+ 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 MembershipDeleteParams {
+ /**
+ * The membership to delete
+ */
+ membershipId?: string;
+}
+
+export declare namespace Memberships {
+ export {
+ type GroupMembership as GroupMembership,
+ type MembershipCreateResponse as MembershipCreateResponse,
+ type MembershipDeleteResponse as MembershipDeleteResponse,
+ type GroupMembershipsMembersPage as GroupMembershipsMembersPage,
+ type MembershipCreateParams as MembershipCreateParams,
+ type MembershipListParams as MembershipListParams,
+ type MembershipDeleteParams as MembershipDeleteParams,
+ };
+}
diff --git a/src/resources/groups/role-assignments.ts b/src/resources/groups/role-assignments.ts
new file mode 100644
index 0000000..4c8c1eb
--- /dev/null
+++ b/src/resources/groups/role-assignments.ts
@@ -0,0 +1,355 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+import { APIResource } from '../../core/resource';
+import * as RoleAssignmentsAPI from './role-assignments';
+import * as Shared from '../shared';
+import { APIPromise } from '../../core/api-promise';
+import { AssignmentsPage, type AssignmentsPageParams, PagePromise } from '../../core/pagination';
+import { RequestOptions } from '../../internal/request-options';
+
+export class RoleAssignments extends APIResource {
+ /**
+ * Creates a role assignment for a group on a resource.
+ *
+ * Use this method to:
+ *
+ * - Assign specific roles to groups on runners, projects, or environments
+ * - Grant group-based access to resources
+ *
+ * ### Examples
+ *
+ * - Assign admin role on a runner:
+ *
+ * Grants the group admin access to a runner.
+ *
+ * ```yaml
+ * groupId: "d2c94c27-3b76-4a42-b88c-95a85e392c68"
+ * resourceType: RESOURCE_TYPE_RUNNER
+ * resourceId: "f53d2330-3795-4c5d-a1f3-453121af9c60"
+ * resourceRole: RESOURCE_ROLE_RUNNER_ADMIN
+ * ```
+ *
+ * - Assign user role on a project:
+ *
+ * Grants the group user access to a project.
+ *
+ * ```yaml
+ * groupId: "d2c94c27-3b76-4a42-b88c-95a85e392c68"
+ * resourceType: RESOURCE_TYPE_PROJECT
+ * resourceId: "a1b2c3d4-5678-90ab-cdef-1234567890ab"
+ * resourceRole: RESOURCE_ROLE_PROJECT_USER
+ * ```
+ *
+ * ### Authorization
+ *
+ * Requires admin role on the specific resource.
+ *
+ * @example
+ * ```ts
+ * const roleAssignment =
+ * await client.groups.roleAssignments.create({
+ * groupId: 'd2c94c27-3b76-4a42-b88c-95a85e392c68',
+ * resourceId: 'f53d2330-3795-4c5d-a1f3-453121af9c60',
+ * resourceRole: 'RESOURCE_ROLE_RUNNER_ADMIN',
+ * resourceType: 'RESOURCE_TYPE_RUNNER',
+ * });
+ * ```
+ */
+ create(
+ body: RoleAssignmentCreateParams,
+ options?: RequestOptions,
+ ): APIPromise {
+ return this._client.post('/gitpod.v1.GroupService/CreateRoleAssignment', { body, ...options });
+ }
+
+ /**
+ * Lists role assignments for a group or resource.
+ *
+ * Use this method to:
+ *
+ * - View all role assignments for a group
+ * - Audit resource access
+ * - Check which groups have access to resources
+ *
+ * ### Examples
+ *
+ * - List role assignments for a group:
+ *
+ * Shows all role assignments for a specific group.
+ *
+ * ```yaml
+ * filter:
+ * groupId: "d2c94c27-3b76-4a42-b88c-95a85e392c68"
+ * pagination:
+ * pageSize: 20
+ * ```
+ *
+ * - List role assignments by resource type:
+ *
+ * Shows all role assignments for runners.
+ *
+ * ```yaml
+ * filter:
+ * resourceTypes:
+ * - RESOURCE_TYPE_RUNNER
+ * pagination:
+ * pageSize: 20
+ * ```
+ *
+ * ### Authorization
+ *
+ * All organization members can view role assignments (transparency model).
+ *
+ * @example
+ * ```ts
+ * // Automatically fetches more pages as needed.
+ * for await (const roleAssignment of client.groups.roleAssignments.list(
+ * {
+ * filter: { resourceTypes: ['RESOURCE_TYPE_RUNNER'] },
+ * pagination: { pageSize: 20 },
+ * },
+ * )) {
+ * // ...
+ * }
+ * ```
+ */
+ list(
+ params: RoleAssignmentListParams,
+ options?: RequestOptions,
+ ): PagePromise {
+ const { token, pageSize, ...body } = params;
+ return this._client.getAPIList(
+ '/gitpod.v1.GroupService/ListRoleAssignments',
+ AssignmentsPage,
+ { query: { token, pageSize }, body, method: 'post', ...options },
+ );
+ }
+
+ /**
+ * Deletes a role assignment.
+ *
+ * Use this method to:
+ *
+ * - Remove group access to resources
+ * - Revoke role-based permissions
+ *
+ * ### Examples
+ *
+ * - Delete a role assignment:
+ *
+ * Removes a role assignment by its ID.
+ *
+ * ```yaml
+ * assignmentId: "a1b2c3d4-5678-90ab-cdef-1234567890ab"
+ * ```
+ *
+ * ### Authorization
+ *
+ * Requires admin role on the specific resource.
+ *
+ * @example
+ * ```ts
+ * const roleAssignment =
+ * await client.groups.roleAssignments.delete({
+ * assignmentId: 'a1b2c3d4-5678-90ab-cdef-1234567890ab',
+ * });
+ * ```
+ */
+ delete(body: RoleAssignmentDeleteParams, options?: RequestOptions): APIPromise {
+ return this._client.post('/gitpod.v1.GroupService/DeleteRoleAssignment', { body, ...options });
+ }
+}
+
+export type RoleAssignmentsAssignmentsPage = AssignmentsPage;
+
+/**
+ * ResourceRole represents roles that can be assigned to groups on resources These
+ * map directly to the roles defined in backend/db/rule/rbac/role/role.go
+ */
+export type ResourceRole =
+ | 'RESOURCE_ROLE_UNSPECIFIED'
+ | 'RESOURCE_ROLE_ORG_ADMIN'
+ | 'RESOURCE_ROLE_ORG_MEMBER'
+ | 'RESOURCE_ROLE_GROUP_ADMIN'
+ | 'RESOURCE_ROLE_GROUP_VIEWER'
+ | 'RESOURCE_ROLE_USER_IDENTITY'
+ | 'RESOURCE_ROLE_USER_VIEWER'
+ | 'RESOURCE_ROLE_USER_ADMIN'
+ | 'RESOURCE_ROLE_ENVIRONMENT_IDENTITY'
+ | 'RESOURCE_ROLE_ENVIRONMENT_ADMIN'
+ | 'RESOURCE_ROLE_ENVIRONMENT_USER'
+ | 'RESOURCE_ROLE_ENVIRONMENT_VIEWER'
+ | 'RESOURCE_ROLE_ENVIRONMENT_RUNNER'
+ | 'RESOURCE_ROLE_RUNNER_IDENTITY'
+ | 'RESOURCE_ROLE_RUNNER_ADMIN'
+ | 'RESOURCE_ROLE_RUNNER_LOCAL_ADMIN'
+ | 'RESOURCE_ROLE_RUNNER_MANAGED_ADMIN'
+ | 'RESOURCE_ROLE_RUNNER_USER'
+ | 'RESOURCE_ROLE_RUNNER_CONFIGURATION_READER'
+ | 'RESOURCE_ROLE_HOST_AUTHENTICATION_TOKEN_ADMIN'
+ | 'RESOURCE_ROLE_HOST_AUTHENTICATION_TOKEN_UPDATER'
+ | 'RESOURCE_ROLE_PROJECT_ADMIN'
+ | 'RESOURCE_ROLE_PROJECT_USER'
+ | 'RESOURCE_ROLE_PROJECT_EDITOR'
+ | 'RESOURCE_ROLE_ENVIRONMENT_SERVICE_ADMIN'
+ | 'RESOURCE_ROLE_ENVIRONMENT_SERVICE_VIEWER'
+ | 'RESOURCE_ROLE_ENVIRONMENT_SERVICE_USER'
+ | 'RESOURCE_ROLE_ENVIRONMENT_SERVICE_ENV'
+ | 'RESOURCE_ROLE_ENVIRONMENT_TASK_ADMIN'
+ | 'RESOURCE_ROLE_ENVIRONMENT_TASK_VIEWER'
+ | 'RESOURCE_ROLE_ENVIRONMENT_TASK_USER'
+ | 'RESOURCE_ROLE_ENVIRONMENT_TASK_ENV'
+ | 'RESOURCE_ROLE_SERVICE_ACCOUNT_IDENTITY'
+ | 'RESOURCE_ROLE_SERVICE_ACCOUNT_ADMIN'
+ | 'RESOURCE_ROLE_AGENT_EXECUTION_IDENTITY'
+ | 'RESOURCE_ROLE_AGENT_EXECUTION_USER'
+ | 'RESOURCE_ROLE_AGENT_EXECUTION_ADMIN'
+ | 'RESOURCE_ROLE_AGENT_EXECUTION_RUNNER'
+ | 'RESOURCE_ROLE_AGENT_EXECUTION_OUTPUTS_REPORTER'
+ | 'RESOURCE_ROLE_AGENT_ADMIN'
+ | 'RESOURCE_ROLE_AGENT_VIEWER'
+ | 'RESOURCE_ROLE_AGENT_EXECUTOR'
+ | 'RESOURCE_ROLE_WORKFLOW_ADMIN'
+ | 'RESOURCE_ROLE_WORKFLOW_USER'
+ | 'RESOURCE_ROLE_WORKFLOW_VIEWER'
+ | 'RESOURCE_ROLE_WORKFLOW_EXECUTOR'
+ | 'RESOURCE_ROLE_SNAPSHOT_ADMIN'
+ | 'RESOURCE_ROLE_SNAPSHOT_RUNNER';
+
+/**
+ * RoleAssignment represents a role assigned to a group on a specific resource
+ */
+export interface RoleAssignment {
+ /**
+ * Unique identifier for the role assignment
+ */
+ id?: string;
+
+ /**
+ * Group identifier
+ */
+ groupId?: string;
+
+ /**
+ * Organization identifier
+ */
+ organizationId?: string;
+
+ /**
+ * Resource identifier
+ */
+ resourceId?: string;
+
+ /**
+ * Role assigned to the group on this resource
+ */
+ resourceRole?: ResourceRole;
+
+ /**
+ * Type of resource (runner, project, environment, etc.)
+ */
+ resourceType?: Shared.ResourceType;
+}
+
+export interface RoleAssignmentCreateResponse {
+ /**
+ * RoleAssignment represents a role assigned to a group on a specific resource
+ */
+ assignment?: RoleAssignment;
+}
+
+/**
+ * Empty response
+ */
+export type RoleAssignmentDeleteResponse = unknown;
+
+export interface RoleAssignmentCreateParams {
+ groupId?: string;
+
+ resourceId?: string;
+
+ /**
+ * ResourceRole represents roles that can be assigned to groups on resources These
+ * map directly to the roles defined in backend/db/rule/rbac/role/role.go
+ */
+ resourceRole?: ResourceRole;
+
+ resourceType?: Shared.ResourceType;
+}
+
+export interface RoleAssignmentListParams extends AssignmentsPageParams {
+ /**
+ * Body param: Filter parameters
+ */
+ filter?: RoleAssignmentListParams.Filter;
+
+ /**
+ * Body param: Pagination parameters
+ */
+ pagination?: RoleAssignmentListParams.Pagination;
+}
+
+export namespace RoleAssignmentListParams {
+ /**
+ * Filter parameters
+ */
+ export interface Filter {
+ /**
+ * group_id filters the response to only role assignments for this specific group
+ * Empty string is allowed and means no filtering by group
+ */
+ groupId?: string;
+
+ /**
+ * resource_roles filters the response to only role assignments with these specific
+ * roles
+ */
+ resourceRoles?: Array;
+
+ /**
+ * resource_types filters the response to only role assignments for these resource
+ * types
+ */
+ resourceTypes?: Array;
+
+ /**
+ * user_id filters the response to only role assignments for groups that this user
+ * is a member of Empty string is allowed and means no filtering by user
+ */
+ userId?: string;
+ }
+
+ /**
+ * Pagination parameters
+ */
+ 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 RoleAssignmentDeleteParams {
+ assignmentId?: string;
+}
+
+export declare namespace RoleAssignments {
+ export {
+ type ResourceRole as ResourceRole,
+ type RoleAssignment as RoleAssignment,
+ type RoleAssignmentCreateResponse as RoleAssignmentCreateResponse,
+ type RoleAssignmentDeleteResponse as RoleAssignmentDeleteResponse,
+ type RoleAssignmentsAssignmentsPage as RoleAssignmentsAssignmentsPage,
+ type RoleAssignmentCreateParams as RoleAssignmentCreateParams,
+ type RoleAssignmentListParams as RoleAssignmentListParams,
+ type RoleAssignmentDeleteParams as RoleAssignmentDeleteParams,
+ };
+}
diff --git a/src/resources/index.ts b/src/resources/index.ts
index 6fdf73f..0d1d9fd 100644
--- a/src/resources/index.ts
+++ b/src/resources/index.ts
@@ -10,17 +10,55 @@ export {
type AccountRetrieveResponse,
type AccountDeleteResponse,
type AccountGetSSOLoginURLResponse,
- type AccountListJoinableOrganizationsResponse,
+ type AccountListSSOLoginsResponse,
type AccountRetrieveParams,
type AccountDeleteParams,
type AccountGetSSOLoginURLParams,
type AccountListJoinableOrganizationsParams,
type AccountListLoginProvidersParams,
+ type AccountListSSOLoginsParams,
+ type JoinableOrganizationsJoinableOrganizationsPage,
type LoginProvidersLoginProvidersPage,
+ type AccountListSSOLoginsResponsesLoginsPage,
} from './accounts';
+export {
+ Agents,
+ type AgentCodeContext,
+ type AgentExecution,
+ type AgentMode,
+ type Prompt,
+ type PromptMetadata,
+ type PromptSpec,
+ type UserInputBlock,
+ type AgentCreateExecutionConversationTokenResponse,
+ type AgentCreatePromptResponse,
+ type AgentDeleteExecutionResponse,
+ type AgentDeletePromptResponse,
+ type AgentRetrieveExecutionResponse,
+ type AgentRetrievePromptResponse,
+ type AgentSendToExecutionResponse,
+ type AgentStartExecutionResponse,
+ type AgentStopExecutionResponse,
+ type AgentUpdatePromptResponse,
+ type AgentCreateExecutionConversationTokenParams,
+ type AgentCreatePromptParams,
+ type AgentDeleteExecutionParams,
+ type AgentDeletePromptParams,
+ type AgentListExecutionsParams,
+ type AgentListPromptsParams,
+ type AgentRetrieveExecutionParams,
+ type AgentRetrievePromptParams,
+ type AgentSendToExecutionParams,
+ type AgentStartExecutionParams,
+ type AgentStopExecutionParams,
+ type AgentUpdatePromptParams,
+ type AgentExecutionsAgentExecutionsPage,
+ type PromptsPromptsPage,
+} from './agents';
export {
Editors,
type Editor,
+ type EditorVersion,
type EditorRetrieveResponse,
type EditorResolveURLResponse,
type EditorRetrieveParams,
@@ -35,6 +73,7 @@ export {
type EnvironmentActivitySignal,
type EnvironmentMetadata,
type EnvironmentPhase,
+ type EnvironmentRole,
type EnvironmentSpec,
type EnvironmentStatus,
type EnvironmentCreateResponse,
@@ -62,10 +101,21 @@ export {
type EnvironmentUnarchiveParams,
type EnvironmentsEnvironmentsPage,
} from './environments/environments';
+export {
+ Errors,
+ type Breadcrumb,
+ type ErrorEvent,
+ type ErrorLevel,
+ type ExceptionInfo,
+ type ExceptionMechanism,
+ type RequestInfo,
+ type StackFrame,
+ type ErrorReportErrorsResponse,
+ type ErrorReportErrorsParams,
+} from './errors';
export {
Events,
type ResourceOperation,
- type ResourceType,
type EventListResponse,
type EventWatchResponse,
type EventListParams,
@@ -73,7 +123,20 @@ export {
type EventListResponsesEntriesPage,
} from './events';
export { Gateways, type GatewayListParams } from './gateways';
-export { Groups, type Group, type GroupListParams, type GroupsGroupsPage } from './groups';
+export {
+ Groups,
+ type Group,
+ type GroupCreateResponse,
+ type GroupRetrieveResponse,
+ type GroupUpdateResponse,
+ type GroupDeleteResponse,
+ type GroupCreateParams,
+ type GroupRetrieveParams,
+ type GroupUpdateParams,
+ type GroupListParams,
+ type GroupDeleteParams,
+ type GroupsGroupsPage,
+} from './groups/groups';
export {
Identity,
type IDTokenVersion,
@@ -107,12 +170,34 @@ export {
type OrganizationSetRoleParams,
type OrganizationMembersMembersPage,
} from './organizations/organizations';
+export {
+ Prebuilds,
+ type Prebuild,
+ type PrebuildMetadata,
+ type PrebuildPhase,
+ type PrebuildSpec,
+ type PrebuildStatus,
+ type PrebuildTrigger,
+ type PrebuildCreateResponse,
+ type PrebuildRetrieveResponse,
+ type PrebuildDeleteResponse,
+ type PrebuildCancelResponse,
+ type PrebuildCreateLogsTokenResponse,
+ type PrebuildCreateParams,
+ type PrebuildRetrieveParams,
+ type PrebuildListParams,
+ type PrebuildDeleteParams,
+ type PrebuildCancelParams,
+ type PrebuildCreateLogsTokenParams,
+ type PrebuildsPrebuildsPage,
+} from './prebuilds';
export {
Projects,
type EnvironmentInitializer,
type Project,
- type ProjectEnvironmentClass,
type ProjectMetadata,
+ type ProjectPhase,
+ type ProjectPrebuildConfiguration,
type ProjectCreateResponse,
type ProjectRetrieveResponse,
type ProjectUpdateResponse,
@@ -140,21 +225,27 @@ export {
type RunnerReleaseChannel,
type RunnerSpec,
type RunnerStatus,
+ type RunnerVariant,
+ type SearchMode,
type RunnerCreateResponse,
type RunnerRetrieveResponse,
type RunnerUpdateResponse,
type RunnerDeleteResponse,
type RunnerCheckAuthenticationForHostResponse,
+ type RunnerCreateLogsTokenResponse,
type RunnerCreateRunnerTokenResponse,
type RunnerParseContextURLResponse,
+ type RunnerSearchRepositoriesResponse,
type RunnerCreateParams,
type RunnerRetrieveParams,
type RunnerUpdateParams,
type RunnerListParams,
type RunnerDeleteParams,
type RunnerCheckAuthenticationForHostParams,
+ type RunnerCreateLogsTokenParams,
type RunnerCreateRunnerTokenParams,
type RunnerParseContextURLParams,
+ type RunnerSearchRepositoriesParams,
type RunnersRunnersPage,
} from './runners/runners';
export {
@@ -181,8 +272,12 @@ export {
export {
Users,
type User,
+ type UserDeleteUserResponse,
type UserGetAuthenticatedUserResponse,
+ type UserGetUserResponse,
type UserSetSuspendedResponse,
+ type UserDeleteUserParams,
type UserGetAuthenticatedUserParams,
+ type UserGetUserParams,
type UserSetSuspendedParams,
} from './users/users';
diff --git a/src/resources/organizations/custom-domains.ts b/src/resources/organizations/custom-domains.ts
new file mode 100644
index 0000000..2e5f32d
--- /dev/null
+++ b/src/resources/organizations/custom-domains.ts
@@ -0,0 +1,311 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+import { APIResource } from '../../core/resource';
+import { APIPromise } from '../../core/api-promise';
+import { RequestOptions } from '../../internal/request-options';
+
+export class CustomDomains extends APIResource {
+ /**
+ * Creates a custom domain configuration for an organization.
+ *
+ * Use this method to configure custom domains for organization workspaces
+ *
+ * ### Examples
+ *
+ * - Configure AWS custom domain:
+ *
+ * Sets up a custom domain with AWS provider.
+ *
+ * ```yaml
+ * organizationId: "b0e12f6c-4c67-429d-a4a6-d9838b5da047"
+ * domainName: "workspaces.acme-corp.com"
+ * provider: CUSTOM_DOMAIN_PROVIDER_AWS
+ * awsAccountId: "123456789012"
+ * ```
+ *
+ * @example
+ * ```ts
+ * const customDomain =
+ * await client.organizations.customDomains.create({
+ * domainName: 'workspaces.acme-corp.com',
+ * organizationId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047',
+ * awsAccountId: '123456789012',
+ * provider: 'CUSTOM_DOMAIN_PROVIDER_AWS',
+ * });
+ * ```
+ */
+ create(body: CustomDomainCreateParams, options?: RequestOptions): APIPromise {
+ return this._client.post('/gitpod.v1.OrganizationService/CreateCustomDomain', { body, ...options });
+ }
+
+ /**
+ * Retrieves a specific custom domain configuration.
+ *
+ * Use this method to view custom domain details
+ *
+ * ### Examples
+ *
+ * - Get custom domain configuration:
+ *
+ * Retrieves details of a specific custom domain.
+ *
+ * ```yaml
+ * organizationId: "b0e12f6c-4c67-429d-a4a6-d9838b5da047"
+ * ```
+ *
+ * @example
+ * ```ts
+ * const customDomain =
+ * await client.organizations.customDomains.retrieve({
+ * organizationId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047',
+ * });
+ * ```
+ */
+ retrieve(
+ body: CustomDomainRetrieveParams,
+ options?: RequestOptions,
+ ): APIPromise {
+ return this._client.post('/gitpod.v1.OrganizationService/GetCustomDomain', { body, ...options });
+ }
+
+ /**
+ * Updates custom domain configuration settings.
+ *
+ * Use this method to:
+ *
+ * - Update cloud provider settings
+ * - Change AWS account ID
+ * - Modify domain configuration
+ *
+ * ### Examples
+ *
+ * - Update AWS account ID:
+ *
+ * Changes the AWS account ID for the custom domain.
+ *
+ * ```yaml
+ * organizationId: "b0e12f6c-4c67-429d-a4a6-d9838b5da047"
+ * domainName: "workspaces.acme-corp.com"
+ * awsAccountId: "987654321098"
+ * ```
+ *
+ * @example
+ * ```ts
+ * const customDomain =
+ * await client.organizations.customDomains.update({
+ * domainName: 'workspaces.acme-corp.com',
+ * organizationId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047',
+ * awsAccountId: '987654321098',
+ * });
+ * ```
+ */
+ update(body: CustomDomainUpdateParams, options?: RequestOptions): APIPromise {
+ return this._client.post('/gitpod.v1.OrganizationService/UpdateCustomDomain', { body, ...options });
+ }
+
+ /**
+ * Removes a custom domain configuration from an organization.
+ *
+ * Use this method to:
+ *
+ * - Disable custom domain functionality
+ * - Remove outdated configurations
+ * - Clean up unused domains
+ *
+ * ### Examples
+ *
+ * - Delete custom domain configuration:
+ *
+ * Removes a specific custom domain configuration.
+ *
+ * ```yaml
+ * organizationId: "b0e12f6c-4c67-429d-a4a6-d9838b5da047"
+ * ```
+ *
+ * @example
+ * ```ts
+ * const customDomain =
+ * await client.organizations.customDomains.delete({
+ * organizationId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047',
+ * });
+ * ```
+ */
+ delete(body: CustomDomainDeleteParams, options?: RequestOptions): APIPromise {
+ return this._client.post('/gitpod.v1.OrganizationService/DeleteCustomDomain', { body, ...options });
+ }
+}
+
+/**
+ * CustomDomain represents a custom domain configuration for an organization
+ */
+export interface CustomDomain {
+ /**
+ * id is the unique identifier of the custom domain
+ */
+ id: string;
+
+ /**
+ * created_at is when the custom domain was created
+ */
+ createdAt: string;
+
+ /**
+ * domain_name is the custom domain name
+ */
+ domainName: string;
+
+ /**
+ * organization_id is the ID of the organization this custom domain belongs to
+ */
+ organizationId: string;
+
+ /**
+ * updated_at is when the custom domain was last updated
+ */
+ updatedAt: string;
+
+ /**
+ * @deprecated aws_account_id is the AWS account ID (deprecated: use
+ * cloud_account_id)
+ */
+ awsAccountId?: string;
+
+ /**
+ * cloud_account_id is the unified cloud account identifier (AWS Account ID or GCP
+ * Project ID)
+ */
+ cloudAccountId?: string;
+
+ /**
+ * provider is the cloud provider for this custom domain
+ */
+ provider?: CustomDomainProvider;
+}
+
+/**
+ * CustomDomainProvider represents the cloud provider for custom domain
+ * configuration
+ */
+export type CustomDomainProvider =
+ | 'CUSTOM_DOMAIN_PROVIDER_UNSPECIFIED'
+ | 'CUSTOM_DOMAIN_PROVIDER_AWS'
+ | 'CUSTOM_DOMAIN_PROVIDER_GCP';
+
+/**
+ * CreateCustomDomainResponse is the response message for creating a custom domain
+ */
+export interface CustomDomainCreateResponse {
+ /**
+ * custom_domain is the created custom domain
+ */
+ customDomain: CustomDomain;
+}
+
+export interface CustomDomainRetrieveResponse {
+ /**
+ * CustomDomain represents a custom domain configuration for an organization
+ */
+ customDomain: CustomDomain;
+}
+
+/**
+ * UpdateCustomDomainResponse is the response message for updating a custom domain
+ */
+export interface CustomDomainUpdateResponse {
+ /**
+ * custom_domain is the updated custom domain
+ */
+ customDomain: CustomDomain;
+}
+
+/**
+ * DeleteCustomDomainResponse is the response message for deleting a custom domain
+ */
+export type CustomDomainDeleteResponse = unknown;
+
+export interface CustomDomainCreateParams {
+ /**
+ * domain_name is the custom domain name
+ */
+ domainName: string;
+
+ /**
+ * organization_id is the ID of the organization to create the custom domain for
+ */
+ organizationId: string;
+
+ /**
+ * @deprecated aws_account_id is the AWS account ID (deprecated: use
+ * cloud_account_id)
+ */
+ awsAccountId?: string | null;
+
+ /**
+ * cloud_account_id is the unified cloud account identifier (AWS Account ID or GCP
+ * Project ID)
+ */
+ cloudAccountId?: string | null;
+
+ /**
+ * provider is the cloud provider for this custom domain
+ */
+ provider?: CustomDomainProvider;
+}
+
+export interface CustomDomainRetrieveParams {
+ /**
+ * organization_id is the ID of the organization to retrieve custom domain for
+ */
+ organizationId: string;
+}
+
+export interface CustomDomainUpdateParams {
+ /**
+ * domain_name is the custom domain name
+ */
+ domainName: string;
+
+ /**
+ * organization_id is the ID of the organization to update custom domain for
+ */
+ organizationId: string;
+
+ /**
+ * @deprecated aws_account_id is the AWS account ID (deprecated: use
+ * cloud_account_id)
+ */
+ awsAccountId?: string | null;
+
+ /**
+ * cloud_account_id is the unified cloud account identifier (AWS Account ID or GCP
+ * Project ID)
+ */
+ cloudAccountId?: string | null;
+
+ /**
+ * provider is the cloud provider for this custom domain
+ */
+ provider?: CustomDomainProvider | null;
+}
+
+export interface CustomDomainDeleteParams {
+ /**
+ * organization_id is the ID of the organization to delete custom domain for
+ */
+ organizationId: string;
+}
+
+export declare namespace CustomDomains {
+ export {
+ type CustomDomain as CustomDomain,
+ type CustomDomainProvider as CustomDomainProvider,
+ type CustomDomainCreateResponse as CustomDomainCreateResponse,
+ type CustomDomainRetrieveResponse as CustomDomainRetrieveResponse,
+ type CustomDomainUpdateResponse as CustomDomainUpdateResponse,
+ type CustomDomainDeleteResponse as CustomDomainDeleteResponse,
+ type CustomDomainCreateParams as CustomDomainCreateParams,
+ type CustomDomainRetrieveParams as CustomDomainRetrieveParams,
+ type CustomDomainUpdateParams as CustomDomainUpdateParams,
+ type CustomDomainDeleteParams as CustomDomainDeleteParams,
+ };
+}
diff --git a/src/resources/organizations/index.ts b/src/resources/organizations/index.ts
index a023d54..0e53032 100644
--- a/src/resources/organizations/index.ts
+++ b/src/resources/organizations/index.ts
@@ -1,5 +1,18 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+export {
+ CustomDomains,
+ type CustomDomain,
+ type CustomDomainProvider,
+ type CustomDomainCreateResponse,
+ type CustomDomainRetrieveResponse,
+ type CustomDomainUpdateResponse,
+ type CustomDomainDeleteResponse,
+ type CustomDomainCreateParams,
+ type CustomDomainRetrieveParams,
+ type CustomDomainUpdateParams,
+ type CustomDomainDeleteParams,
+} from './custom-domains';
export {
DomainVerifications,
type DomainVerification,
@@ -50,7 +63,10 @@ export {
} from './organizations';
export {
Policies,
+ type AgentPolicy,
+ type CrowdStrikeConfig,
type OrganizationPolicies,
+ type SecurityAgentPolicy,
type PolicyRetrieveResponse,
type PolicyUpdateResponse,
type PolicyRetrieveParams,
diff --git a/src/resources/organizations/organizations.ts b/src/resources/organizations/organizations.ts
index 6f06f14..f2cf942 100644
--- a/src/resources/organizations/organizations.ts
+++ b/src/resources/organizations/organizations.ts
@@ -2,6 +2,20 @@
import { APIResource } from '../../core/resource';
import * as Shared from '../shared';
+import * as CustomDomainsAPI from './custom-domains';
+import {
+ CustomDomain,
+ CustomDomainCreateParams,
+ CustomDomainCreateResponse,
+ CustomDomainDeleteParams,
+ CustomDomainDeleteResponse,
+ CustomDomainProvider,
+ CustomDomainRetrieveParams,
+ CustomDomainRetrieveResponse,
+ CustomDomainUpdateParams,
+ CustomDomainUpdateResponse,
+ CustomDomains,
+} from './custom-domains';
import * as DomainVerificationsAPI from './domain-verifications';
import {
DomainVerification,
@@ -31,12 +45,15 @@ import {
} from './invites';
import * as PoliciesAPI from './policies';
import {
+ AgentPolicy,
+ CrowdStrikeConfig,
OrganizationPolicies,
Policies,
PolicyRetrieveParams,
PolicyRetrieveResponse,
PolicyUpdateParams,
PolicyUpdateResponse,
+ SecurityAgentPolicy,
} from './policies';
import * as SSOConfigurationsAPI from './sso-configurations';
import {
@@ -60,6 +77,7 @@ import { MembersPage, type MembersPageParams, PagePromise } from '../../core/pag
import { RequestOptions } from '../../internal/request-options';
export class Organizations extends APIResource {
+ customDomains: CustomDomainsAPI.CustomDomains = new CustomDomainsAPI.CustomDomains(this._client);
domainVerifications: DomainVerificationsAPI.DomainVerifications =
new DomainVerificationsAPI.DomainVerifications(this._client);
invites: InvitesAPI.Invites = new InvitesAPI.Invites(this._client);
@@ -504,7 +522,7 @@ export interface Organization {
name: string;
/**
- * The tier of the organization - free or enterprise
+ * The tier of the organization - free, enterprise or core
*/
tier: OrganizationTier;
@@ -717,7 +735,9 @@ export interface OrganizationMember {
export type OrganizationTier =
| 'ORGANIZATION_TIER_UNSPECIFIED'
| 'ORGANIZATION_TIER_FREE'
- | 'ORGANIZATION_TIER_ENTERPRISE';
+ | 'ORGANIZATION_TIER_ENTERPRISE'
+ | 'ORGANIZATION_TIER_CORE'
+ | 'ORGANIZATION_TIER_FREE_ONA';
export interface OrganizationCreateResponse {
/**
@@ -831,6 +851,11 @@ export interface OrganizationListMembersParams extends MembersPageParams {
*/
organizationId: string;
+ /**
+ * Body param:
+ */
+ filter?: OrganizationListMembersParams.Filter;
+
/**
* Body param: pagination contains the pagination options for listing members
*/
@@ -838,6 +863,13 @@ export interface OrganizationListMembersParams extends MembersPageParams {
}
export namespace OrganizationListMembersParams {
+ export interface Filter {
+ /**
+ * search performs case-insensitive search across member name and email
+ */
+ search?: string;
+ }
+
/**
* pagination contains the pagination options for listing members
*/
@@ -864,6 +896,7 @@ export interface OrganizationSetRoleParams {
role?: Shared.OrganizationRole;
}
+Organizations.CustomDomains = CustomDomains;
Organizations.DomainVerifications = DomainVerifications;
Organizations.Invites = Invites;
Organizations.Policies = Policies;
@@ -893,6 +926,20 @@ export declare namespace Organizations {
type OrganizationSetRoleParams as OrganizationSetRoleParams,
};
+ export {
+ CustomDomains as CustomDomains,
+ type CustomDomain as CustomDomain,
+ type CustomDomainProvider as CustomDomainProvider,
+ type CustomDomainCreateResponse as CustomDomainCreateResponse,
+ type CustomDomainRetrieveResponse as CustomDomainRetrieveResponse,
+ type CustomDomainUpdateResponse as CustomDomainUpdateResponse,
+ type CustomDomainDeleteResponse as CustomDomainDeleteResponse,
+ type CustomDomainCreateParams as CustomDomainCreateParams,
+ type CustomDomainRetrieveParams as CustomDomainRetrieveParams,
+ type CustomDomainUpdateParams as CustomDomainUpdateParams,
+ type CustomDomainDeleteParams as CustomDomainDeleteParams,
+ };
+
export {
DomainVerifications as DomainVerifications,
type DomainVerification as DomainVerification,
@@ -922,7 +969,10 @@ export declare namespace Organizations {
export {
Policies as Policies,
+ type AgentPolicy as AgentPolicy,
+ type CrowdStrikeConfig as CrowdStrikeConfig,
type OrganizationPolicies as OrganizationPolicies,
+ type SecurityAgentPolicy as SecurityAgentPolicy,
type PolicyRetrieveResponse as PolicyRetrieveResponse,
type PolicyUpdateResponse as PolicyUpdateResponse,
type PolicyRetrieveParams as PolicyRetrieveParams,
diff --git a/src/resources/organizations/policies.ts b/src/resources/organizations/policies.ts
index c74050a..86b9b7c 100644
--- a/src/resources/organizations/policies.ts
+++ b/src/resources/organizations/policies.ts
@@ -90,7 +90,67 @@ export class Policies extends APIResource {
}
}
+/**
+ * AgentPolicy contains agent-specific policy settings for an organization
+ */
+export interface AgentPolicy {
+ /**
+ * command_deny_list contains a list of commands that agents are not allowed to
+ * execute
+ */
+ commandDenyList: Array;
+
+ /**
+ * mcp_disabled controls whether MCP (Model Context Protocol) is disabled for
+ * agents
+ */
+ mcpDisabled: boolean;
+
+ /**
+ * scm_tools_disabled controls whether SCM (Source Control Management) tools are
+ * disabled for agents
+ */
+ scmToolsDisabled: boolean;
+}
+
+/**
+ * CrowdStrikeConfig configures CrowdStrike Falcon sensor deployment
+ */
+export interface CrowdStrikeConfig {
+ /**
+ * additional*options contains additional FALCONCTL_OPT*\* options as key-value
+ * pairs. Keys should NOT include the FALCONCTL*OPT* prefix.
+ */
+ additionalOptions?: { [key: string]: string };
+
+ /**
+ * cid_secret_id references an organization secret containing the Customer ID
+ * (CID).
+ */
+ cidSecretId?: string;
+
+ /**
+ * enabled controls whether CrowdStrike Falcon is deployed to environments
+ */
+ enabled?: boolean;
+
+ /**
+ * image is the CrowdStrike Falcon sensor container image reference
+ */
+ image?: string;
+
+ /**
+ * tags are optional tags to apply to the Falcon sensor (comma-separated)
+ */
+ tags?: string;
+}
+
export interface OrganizationPolicies {
+ /**
+ * agent_policy contains agent-specific policy settings
+ */
+ agentPolicy: AgentPolicy;
+
/**
* allowed_editor_ids is the list of editor IDs that are allowed to be used in the
* organization
@@ -149,12 +209,73 @@ export interface OrganizationPolicies {
*/
portSharingDisabled: boolean;
+ /**
+ * 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.
+ */
+ requireCustomDomainAccess: boolean;
+
+ /**
+ * delete_archived_environments_after controls how long archived environments are
+ * kept before automatic deletion. 0 means no automatic deletion. Maximum duration
+ * is 4 weeks (2419200 seconds).
+ */
+ deleteArchivedEnvironmentsAfter?: string;
+
+ /**
+ * editor_version_restrictions restricts which editor versions can be used. Maps
+ * editor ID to version policy, editor_version_restrictions not set means no
+ * restrictions. If empty or not set for an editor, we will use the latest version
+ * of the editor
+ */
+ editorVersionRestrictions?: { [key: string]: OrganizationPolicies.EditorVersionRestrictions };
+
+ /**
+ * maximum_environment_lifetime controls for how long environments are allowed to
+ * be reused. 0 means no maximum lifetime. Maximum duration is 180 days (15552000
+ * seconds).
+ */
+ maximumEnvironmentLifetime?: string;
+
/**
* maximum_environment_timeout controls the maximum timeout allowed for
* environments in seconds. 0 means no limit (never). Minimum duration is 30
- * minutes.
+ * minutes (1800 seconds).
*/
maximumEnvironmentTimeout?: string;
+
+ /**
+ * security_agent_policy contains security agent configuration for the
+ * organization. When configured, security agents are automatically deployed to all
+ * environments.
+ */
+ securityAgentPolicy?: SecurityAgentPolicy;
+}
+
+export namespace OrganizationPolicies {
+ /**
+ * EditorVersionPolicy defines the version policy for a specific editor
+ */
+ export interface EditorVersionRestrictions {
+ /**
+ * allowed_versions lists the versions that are allowed If empty, we will use the
+ * latest version of the editor
+ *
+ * Examples for JetBrains: `["2025.2", "2025.1", "2024.3"]`
+ */
+ allowedVersions?: Array;
+ }
+}
+
+/**
+ * SecurityAgentPolicy contains security agent configuration for an organization.
+ * When enabled, security agents are automatically deployed to all environments.
+ */
+export interface SecurityAgentPolicy {
+ /**
+ * crowdstrike contains CrowdStrike Falcon configuration
+ */
+ crowdstrike?: CrowdStrikeConfig;
}
export interface PolicyRetrieveResponse {
@@ -176,6 +297,11 @@ export interface PolicyUpdateParams {
*/
organizationId: string;
+ /**
+ * agent_policy contains agent-specific policy settings
+ */
+ agentPolicy?: PolicyUpdateParams.AgentPolicy | null;
+
/**
* allowed_editor_ids is the list of editor IDs that are allowed to be used in the
* organization
@@ -200,6 +326,26 @@ export interface PolicyUpdateParams {
*/
defaultEnvironmentImage?: string | null;
+ /**
+ * delete_archived_environments_after controls how long archived environments are
+ * kept before automatic deletion. 0 means no automatic deletion. Maximum duration
+ * is 4 weeks (2419200 seconds).
+ */
+ deleteArchivedEnvironmentsAfter?: string | null;
+
+ /**
+ * editor_version_restrictions restricts which editor versions can be used. Maps
+ * editor ID to version policy with allowed major versions.
+ */
+ editorVersionRestrictions?: { [key: string]: PolicyUpdateParams.EditorVersionRestrictions };
+
+ /**
+ * maximum_environment_lifetime controls for how long environments are allowed to
+ * be reused. 0 means no maximum lifetime. Maximum duration is 180 days (15552000
+ * seconds).
+ */
+ maximumEnvironmentLifetime?: string | null;
+
/**
* maximum_environments_per_user limits total environments (running or stopped) per
* user
@@ -209,7 +355,7 @@ export interface PolicyUpdateParams {
/**
* maximum_environment_timeout controls the maximum timeout allowed for
* environments in seconds. 0 means no limit (never). Minimum duration is 30
- * minutes.
+ * minutes (1800 seconds).
*/
maximumEnvironmentTimeout?: string | null;
@@ -235,11 +381,106 @@ export interface PolicyUpdateParams {
* organization
*/
portSharingDisabled?: boolean | 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.
+ */
+ requireCustomDomainAccess?: boolean | null;
+
+ /**
+ * security_agent_policy contains security agent configuration updates
+ */
+ securityAgentPolicy?: PolicyUpdateParams.SecurityAgentPolicy | null;
+}
+
+export namespace PolicyUpdateParams {
+ /**
+ * agent_policy contains agent-specific policy settings
+ */
+ export interface AgentPolicy {
+ /**
+ * command_deny_list contains a list of commands that agents are not allowed to
+ * execute
+ */
+ commandDenyList?: Array;
+
+ /**
+ * mcp_disabled controls whether MCP (Model Context Protocol) is disabled for
+ * agents
+ */
+ mcpDisabled?: boolean | null;
+
+ /**
+ * scm_tools_disabled controls whether SCM (Source Control Management) tools are
+ * disabled for agents
+ */
+ scmToolsDisabled?: boolean | null;
+ }
+
+ /**
+ * EditorVersionPolicy defines the version policy for a specific editor
+ */
+ export interface EditorVersionRestrictions {
+ /**
+ * allowed_versions lists the versions that are allowed If empty, we will use the
+ * latest version of the editor
+ *
+ * Examples for JetBrains: `["2025.2", "2025.1", "2024.3"]`
+ */
+ allowedVersions?: Array;
+ }
+
+ /**
+ * security_agent_policy contains security agent configuration updates
+ */
+ export interface SecurityAgentPolicy {
+ /**
+ * crowdstrike contains CrowdStrike Falcon configuration updates
+ */
+ crowdstrike?: SecurityAgentPolicy.Crowdstrike | null;
+ }
+
+ export namespace SecurityAgentPolicy {
+ /**
+ * crowdstrike contains CrowdStrike Falcon configuration updates
+ */
+ export interface Crowdstrike {
+ /**
+ * additional*options contains additional FALCONCTL_OPT*\* options as key-value
+ * pairs
+ */
+ additionalOptions?: { [key: string]: string };
+
+ /**
+ * cid_secret_id references an organization secret containing the Customer ID (CID)
+ */
+ cidSecretId?: string | null;
+
+ /**
+ * enabled controls whether CrowdStrike Falcon is deployed to environments
+ */
+ enabled?: boolean | null;
+
+ /**
+ * image is the CrowdStrike Falcon sensor container image reference
+ */
+ image?: string | null;
+
+ /**
+ * tags are optional tags to apply to the Falcon sensor
+ */
+ tags?: string | null;
+ }
+ }
}
export declare namespace Policies {
export {
+ type AgentPolicy as AgentPolicy,
+ type CrowdStrikeConfig as CrowdStrikeConfig,
type OrganizationPolicies as OrganizationPolicies,
+ type SecurityAgentPolicy as SecurityAgentPolicy,
type PolicyRetrieveResponse as PolicyRetrieveResponse,
type PolicyUpdateResponse as PolicyUpdateResponse,
type PolicyRetrieveParams as PolicyRetrieveParams,
diff --git a/src/resources/organizations/sso-configurations.ts b/src/resources/organizations/sso-configurations.ts
index 88875e7..6b0a9d7 100644
--- a/src/resources/organizations/sso-configurations.ts
+++ b/src/resources/organizations/sso-configurations.ts
@@ -49,9 +49,9 @@ export class SSOConfigurations extends APIResource {
* clientId:
* '012345678-abcdefghijklmnopqrstuvwxyz.apps.googleusercontent.com',
* clientSecret: 'GOCSPX-abcdefghijklmnopqrstuvwxyz123456',
- * emailDomain: 'acme-corp.com',
* issuerUrl: 'https://accounts.google.com',
* organizationId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047',
+ * emailDomain: 'acme-corp.com',
* });
* ```
*/
@@ -272,7 +272,11 @@ export interface SSOConfiguration {
*/
clientId?: string;
+ displayName?: string;
+
emailDomain?: string;
+
+ emailDomains?: Array;
}
export type SSOConfigurationState =
@@ -309,17 +313,21 @@ export interface SSOConfigurationCreateParams {
*/
clientSecret: string;
- /**
- * email_domain is the domain that is allowed to sign in to the organization
- */
- emailDomain: string;
-
/**
* issuer_url is the URL of the IdP issuer
*/
issuerUrl: string;
organizationId: string;
+
+ displayName?: string;
+
+ /**
+ * email_domain is the domain that is allowed to sign in to the organization
+ */
+ emailDomain?: string | null;
+
+ emailDomains?: Array;
}
export interface SSOConfigurationRetrieveParams {
@@ -350,8 +358,12 @@ export interface SSOConfigurationUpdateParams {
*/
clientSecret?: string | null;
+ displayName?: string | null;
+
emailDomain?: string | null;
+ emailDomains?: Array;
+
/**
* issuer_url is the URL of the IdP issuer
*/
diff --git a/src/resources/prebuilds.ts b/src/resources/prebuilds.ts
new file mode 100644
index 0000000..af5a6f1
--- /dev/null
+++ b/src/resources/prebuilds.ts
@@ -0,0 +1,527 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+import { APIResource } from '../core/resource';
+import * as PrebuildsAPI from './prebuilds';
+import * as Shared from './shared';
+import { APIPromise } from '../core/api-promise';
+import { PagePromise, PrebuildsPage, type PrebuildsPageParams } from '../core/pagination';
+import { RequestOptions } from '../internal/request-options';
+
+export class Prebuilds extends APIResource {
+ /**
+ * Creates a prebuild for a project.
+ *
+ * Use this method to:
+ *
+ * - Create on-demand prebuilds for faster environment startup
+ * - Trigger prebuilds after repository changes
+ * - Generate prebuilds for specific environment classes
+ *
+ * The prebuild process creates an environment, runs the devcontainer prebuild
+ * lifecycle, and creates a snapshot for future environment provisioning.
+ *
+ * ### Examples
+ *
+ * - Create basic prebuild:
+ *
+ * Creates a prebuild for a project using default settings.
+ *
+ * ```yaml
+ * projectId: "b0e12f6c-4c67-429d-a4a6-d9838b5da047"
+ * spec:
+ * timeout: "3600s" # 60 minutes default
+ * ```
+ *
+ * - Create prebuild with custom environment class:
+ *
+ * Creates a prebuild with a specific environment class and timeout.
+ *
+ * ```yaml
+ * projectId: "b0e12f6c-4c67-429d-a4a6-d9838b5da047"
+ * environmentClassId: "d2c94c27-3b76-4a42-b88c-95a85e392c68"
+ * spec:
+ * timeout: "3600s" # 1 hour
+ * ```
+ *
+ * @example
+ * ```ts
+ * const prebuild = await client.prebuilds.create({
+ * projectId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047',
+ * spec: { timeout: '3600s' },
+ * });
+ * ```
+ */
+ create(body: PrebuildCreateParams, options?: RequestOptions): APIPromise {
+ return this._client.post('/gitpod.v1.PrebuildService/CreatePrebuild', { body, ...options });
+ }
+
+ /**
+ * Gets details about a specific prebuild.
+ *
+ * Use this method to:
+ *
+ * - Check prebuild status and progress
+ * - Access prebuild logs for debugging
+ *
+ * ### Examples
+ *
+ * - Get prebuild details:
+ *
+ * Retrieves comprehensive information about a prebuild.
+ *
+ * ```yaml
+ * prebuildId: "07e03a28-65a5-4d98-b532-8ea67b188048"
+ * ```
+ *
+ * @example
+ * ```ts
+ * const prebuild = await client.prebuilds.retrieve({
+ * prebuildId: '07e03a28-65a5-4d98-b532-8ea67b188048',
+ * });
+ * ```
+ */
+ retrieve(body: PrebuildRetrieveParams, options?: RequestOptions): APIPromise {
+ return this._client.post('/gitpod.v1.PrebuildService/GetPrebuild', { body, ...options });
+ }
+
+ /**
+ * ListPrebuilds
+ *
+ * @example
+ * ```ts
+ * // Automatically fetches more pages as needed.
+ * for await (const prebuild of client.prebuilds.list()) {
+ * // ...
+ * }
+ * ```
+ */
+ list(params: PrebuildListParams, options?: RequestOptions): PagePromise {
+ const { token, pageSize, ...body } = params;
+ return this._client.getAPIList('/gitpod.v1.PrebuildService/ListPrebuilds', PrebuildsPage, {
+ query: { token, pageSize },
+ body,
+ method: 'post',
+ ...options,
+ });
+ }
+
+ /**
+ * Deletes a prebuild.
+ *
+ * Prebuilds are automatically deleted after some time. Use this method to manually
+ * delete a prebuild before automatic cleanup, for example to remove a prebuild
+ * that should no longer be used.
+ *
+ * Deletion is processed asynchronously. The prebuild will be marked for deletion
+ * and removed from the system in the background.
+ *
+ * ### Examples
+ *
+ * - Delete prebuild:
+ *
+ * Marks a prebuild for deletion and removes it from the system.
+ *
+ * ```yaml
+ * prebuildId: "07e03a28-65a5-4d98-b532-8ea67b188048"
+ * ```
+ *
+ * @example
+ * ```ts
+ * const prebuild = await client.prebuilds.delete({
+ * prebuildId: '07e03a28-65a5-4d98-b532-8ea67b188048',
+ * });
+ * ```
+ */
+ delete(body: PrebuildDeleteParams, options?: RequestOptions): APIPromise {
+ return this._client.post('/gitpod.v1.PrebuildService/DeletePrebuild', { body, ...options });
+ }
+
+ /**
+ * Cancels a running prebuild.
+ *
+ * Use this method to:
+ *
+ * - Stop prebuilds that are no longer needed
+ * - Free up resources for other operations
+ *
+ * ### Examples
+ *
+ * - Cancel prebuild:
+ *
+ * Stops a running prebuild and cleans up resources.
+ *
+ * ```yaml
+ * prebuildId: "07e03a28-65a5-4d98-b532-8ea67b188048"
+ * ```
+ *
+ * @example
+ * ```ts
+ * const response = await client.prebuilds.cancel({
+ * prebuildId: '07e03a28-65a5-4d98-b532-8ea67b188048',
+ * });
+ * ```
+ */
+ cancel(body: PrebuildCancelParams, options?: RequestOptions): APIPromise {
+ return this._client.post('/gitpod.v1.PrebuildService/CancelPrebuild', { body, ...options });
+ }
+
+ /**
+ * Creates a logs access token for a prebuild.
+ *
+ * Use this method to:
+ *
+ * - Stream logs from a running prebuild
+ * - Access archived logs from completed prebuilds
+ *
+ * Generated tokens are valid for one hour.
+ *
+ * ### Examples
+ *
+ * - Create prebuild logs token:
+ *
+ * Generates a token for accessing prebuild logs.
+ *
+ * ```yaml
+ * prebuildId: "07e03a28-65a5-4d98-b532-8ea67b188048"
+ * ```
+ *
+ * @example
+ * ```ts
+ * const response = await client.prebuilds.createLogsToken({
+ * prebuildId: '07e03a28-65a5-4d98-b532-8ea67b188048',
+ * });
+ * ```
+ */
+ createLogsToken(
+ body: PrebuildCreateLogsTokenParams,
+ options?: RequestOptions,
+ ): APIPromise {
+ return this._client.post('/gitpod.v1.PrebuildService/CreatePrebuildLogsToken', { body, ...options });
+ }
+}
+
+export type PrebuildsPrebuildsPage = PrebuildsPage;
+
+/**
+ * Prebuild represents a prebuild for a project that creates a snapshot for faster
+ * environment startup times.
+ */
+export interface Prebuild {
+ /**
+ * metadata contains organizational and ownership information
+ */
+ metadata: PrebuildMetadata;
+
+ /**
+ * spec contains the configuration used to create this prebuild
+ */
+ spec: PrebuildSpec;
+
+ /**
+ * status contains the current status and progress of the prebuild
+ */
+ status: PrebuildStatus;
+
+ /**
+ * id is the unique identifier for the prebuild
+ */
+ id?: string;
+}
+
+/**
+ * PrebuildMetadata contains metadata about the prebuild
+ */
+export interface PrebuildMetadata {
+ /**
+ * created_at is when the prebuild was created
+ */
+ createdAt: string;
+
+ /**
+ * creator is the identity of who created the prebuild. For manual prebuilds, this
+ * is the user who triggered it. For scheduled prebuilds, this is the configured
+ * executor.
+ */
+ creator: Shared.Subject;
+
+ /**
+ * updated_at is when the prebuild was last updated
+ */
+ updatedAt: string;
+
+ /**
+ * environment_class_id is the environment class used to create this prebuild.
+ * While the prebuild is created with a specific environment class, environments
+ * with different classes (e.g., smaller or larger instance sizes) can be created
+ * from the same prebuild, as long as they run on the same runner. If not specified
+ * in create requests, uses the project's default environment class.
+ */
+ environmentClassId?: string;
+
+ /**
+ * executor is the identity used to run the prebuild. The executor's SCM
+ * credentials are used to clone the repository. If not set, the creator's identity
+ * is used.
+ */
+ executor?: Shared.Subject;
+
+ /**
+ * organization_id is the ID of the organization that owns the prebuild
+ */
+ organizationId?: string;
+
+ /**
+ * project_id is the ID of the project this prebuild was created for
+ */
+ projectId?: string;
+
+ /**
+ * trigger describes the trigger that created this prebuild.
+ */
+ triggeredBy?: PrebuildTrigger;
+}
+
+/**
+ * PrebuildPhase represents the lifecycle phase of a prebuild
+ */
+export type PrebuildPhase =
+ | 'PREBUILD_PHASE_UNSPECIFIED'
+ | 'PREBUILD_PHASE_PENDING'
+ | 'PREBUILD_PHASE_STARTING'
+ | 'PREBUILD_PHASE_RUNNING'
+ | 'PREBUILD_PHASE_STOPPING'
+ | 'PREBUILD_PHASE_SNAPSHOTTING'
+ | 'PREBUILD_PHASE_COMPLETED'
+ | 'PREBUILD_PHASE_FAILED'
+ | 'PREBUILD_PHASE_CANCELLING'
+ | 'PREBUILD_PHASE_CANCELLED'
+ | 'PREBUILD_PHASE_DELETING'
+ | 'PREBUILD_PHASE_DELETED';
+
+/**
+ * PrebuildSpec contains the configuration used to create a prebuild
+ */
+export interface PrebuildSpec {
+ /**
+ * desired_phase is the desired phase of the prebuild. Used to signal cancellation
+ * or other state changes. This field is managed by the API and reconciler.
+ */
+ desiredPhase?: PrebuildPhase;
+
+ /**
+ * spec_version is incremented each time the spec is updated. Used for optimistic
+ * concurrency control.
+ */
+ specVersion?: string;
+
+ /**
+ * timeout is the maximum time allowed for the prebuild to complete. Defaults to 60
+ * minutes if not specified. Maximum allowed timeout is 2 hours.
+ */
+ timeout?: string;
+}
+
+/**
+ * PrebuildStatus contains the current status and progress of a prebuild
+ */
+export interface PrebuildStatus {
+ /**
+ * phase is the current phase of the prebuild lifecycle
+ */
+ phase: PrebuildPhase;
+
+ /**
+ * completion_time is when the prebuild completed (successfully or with failure)
+ */
+ completionTime?: string;
+
+ /**
+ * environment_id is the ID of the environment used to create this prebuild. This
+ * field is set when the prebuild environment is created.
+ */
+ environmentId?: string;
+
+ /**
+ * failure_message contains details about why the prebuild failed
+ */
+ failureMessage?: string;
+
+ /**
+ * log_url provides access to prebuild logs. During prebuild execution, this
+ * references the environment logs. After completion, this may reference archived
+ * logs.
+ */
+ logUrl?: string;
+
+ /**
+ * status_version is incremented each time the status is updated. Used for
+ * optimistic concurrency control.
+ */
+ statusVersion?: string;
+
+ /**
+ * warning_message contains warnings from the prebuild environment that indicate
+ * something went wrong but the prebuild could still complete. For example, the
+ * devcontainer failed to build but the environment is still usable. These warnings
+ * will likely affect any environment started from this prebuild.
+ */
+ warningMessage?: string;
+}
+
+/**
+ * PrebuildTrigger indicates how the prebuild was triggered
+ */
+export type PrebuildTrigger =
+ | 'PREBUILD_TRIGGER_UNSPECIFIED'
+ | 'PREBUILD_TRIGGER_MANUAL'
+ | 'PREBUILD_TRIGGER_SCHEDULED';
+
+export interface PrebuildCreateResponse {
+ /**
+ * Prebuild represents a prebuild for a project that creates a snapshot for faster
+ * environment startup times.
+ */
+ prebuild: Prebuild;
+}
+
+export interface PrebuildRetrieveResponse {
+ /**
+ * Prebuild represents a prebuild for a project that creates a snapshot for faster
+ * environment startup times.
+ */
+ prebuild: Prebuild;
+}
+
+export type PrebuildDeleteResponse = unknown;
+
+export interface PrebuildCancelResponse {
+ /**
+ * Prebuild represents a prebuild for a project that creates a snapshot for faster
+ * environment startup times.
+ */
+ prebuild: Prebuild;
+}
+
+export interface PrebuildCreateLogsTokenResponse {
+ /**
+ * access_token is the token that can be used to access the logs of the prebuild
+ */
+ accessToken: string;
+}
+
+export interface PrebuildCreateParams {
+ /**
+ * project_id specifies the project to create a prebuild for
+ */
+ projectId: string;
+
+ /**
+ * spec contains the configuration for creating the prebuild
+ */
+ spec: PrebuildSpec;
+
+ /**
+ * environment_class_id specifies which environment class to use for the prebuild.
+ * If not specified, uses the project's default environment class.
+ */
+ environmentClassId?: string | null;
+}
+
+export interface PrebuildRetrieveParams {
+ /**
+ * prebuild_id specifies the prebuild to retrieve
+ */
+ prebuildId: string;
+}
+
+export interface PrebuildListParams extends PrebuildsPageParams {
+ /**
+ * Body param: filter contains the filter options for listing prebuilds
+ */
+ filter?: PrebuildListParams.Filter;
+
+ /**
+ * Body param: pagination contains the pagination options for listing prebuilds
+ */
+ pagination?: PrebuildListParams.Pagination;
+}
+
+export namespace PrebuildListParams {
+ /**
+ * filter contains the filter options for listing prebuilds
+ */
+ export interface Filter {
+ /**
+ * phases filters prebuilds by their current phase
+ */
+ phases?: Array;
+
+ /**
+ * project_ids filters prebuilds to specific projects
+ */
+ projectIds?: Array;
+ }
+
+ /**
+ * pagination contains the pagination options for listing prebuilds
+ */
+ 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 PrebuildDeleteParams {
+ /**
+ * prebuild_id specifies the prebuild to delete
+ */
+ prebuildId: string;
+}
+
+export interface PrebuildCancelParams {
+ /**
+ * prebuild_id specifies the prebuild to cancel
+ */
+ prebuildId: string;
+}
+
+export interface PrebuildCreateLogsTokenParams {
+ /**
+ * prebuild_id specifies the prebuild for which the logs token should be created.
+ *
+ * +required
+ */
+ prebuildId: string;
+}
+
+export declare namespace Prebuilds {
+ export {
+ type Prebuild as Prebuild,
+ type PrebuildMetadata as PrebuildMetadata,
+ type PrebuildPhase as PrebuildPhase,
+ type PrebuildSpec as PrebuildSpec,
+ type PrebuildStatus as PrebuildStatus,
+ type PrebuildTrigger as PrebuildTrigger,
+ type PrebuildCreateResponse as PrebuildCreateResponse,
+ type PrebuildRetrieveResponse as PrebuildRetrieveResponse,
+ type PrebuildDeleteResponse as PrebuildDeleteResponse,
+ type PrebuildCancelResponse as PrebuildCancelResponse,
+ type PrebuildCreateLogsTokenResponse as PrebuildCreateLogsTokenResponse,
+ type PrebuildsPrebuildsPage as PrebuildsPrebuildsPage,
+ type PrebuildCreateParams as PrebuildCreateParams,
+ type PrebuildRetrieveParams as PrebuildRetrieveParams,
+ type PrebuildListParams as PrebuildListParams,
+ type PrebuildDeleteParams as PrebuildDeleteParams,
+ type PrebuildCancelParams as PrebuildCancelParams,
+ type PrebuildCreateLogsTokenParams as PrebuildCreateLogsTokenParams,
+ };
+}
diff --git a/src/resources/projects/environment-clases.ts b/src/resources/projects/environment-clases.ts
new file mode 100644
index 0000000..728168b
--- /dev/null
+++ b/src/resources/projects/environment-clases.ts
@@ -0,0 +1,156 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+import { APIResource } from '../../core/resource';
+import * as Shared from '../shared';
+import { ProjectEnvironmentClassesProjectEnvironmentClassesPage } from '../shared';
+import { APIPromise } from '../../core/api-promise';
+import {
+ PagePromise,
+ ProjectEnvironmentClassesPage,
+ type ProjectEnvironmentClassesPageParams,
+} from '../../core/pagination';
+import { RequestOptions } from '../../internal/request-options';
+
+export class EnvironmentClases extends APIResource {
+ /**
+ * Updates all environment classes of a project.
+ *
+ * Use this method to:
+ *
+ * - Modify all environment classea of a project
+ *
+ * ### Examples
+ *
+ * - Update project environment classes:
+ *
+ * Updates all environment classes for a project.
+ *
+ * ```yaml
+ * projectId: "b0e12f6c-4c67-429d-a4a6-d9838b5da047"
+ * projectEnvironmentClasses:
+ * - environmentClassId: "b0e12f6c-4c67-429d-a4a6-d9838b5da041"
+ * order: 0
+ * - localRunner: true
+ * order: 1
+ * ```
+ *
+ * @example
+ * ```ts
+ * const environmentClase =
+ * await client.projects.environmentClases.update({
+ * projectEnvironmentClasses: [
+ * {
+ * environmentClassId:
+ * 'b0e12f6c-4c67-429d-a4a6-d9838b5da041',
+ * order: 0,
+ * },
+ * { localRunner: true, order: 1 },
+ * ],
+ * projectId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047',
+ * });
+ * ```
+ */
+ update(body: EnvironmentClaseUpdateParams, options?: RequestOptions): APIPromise {
+ return this._client.post('/gitpod.v1.ProjectService/UpdateProjectEnvironmentClasses', {
+ body,
+ ...options,
+ });
+ }
+
+ /**
+ * Lists environment classes of a project.
+ *
+ * Use this method to:
+ *
+ * - View all environment classes of a project
+ *
+ * ### Examples
+ *
+ * - List project environment classes:
+ *
+ * Shows all environment classes of a project.
+ *
+ * ```yaml
+ * projectId: "b0e12f6c-4c67-429d-a4a6-d9838b5da047"
+ * pagination:
+ * pageSize: 20
+ * ```
+ *
+ * @example
+ * ```ts
+ * // Automatically fetches more pages as needed.
+ * for await (const projectEnvironmentClass of client.projects.environmentClases.list(
+ * {
+ * pagination: { pageSize: 20 },
+ * projectId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047',
+ * },
+ * )) {
+ * // ...
+ * }
+ * ```
+ */
+ list(
+ params: EnvironmentClaseListParams,
+ options?: RequestOptions,
+ ): PagePromise {
+ const { token, pageSize, ...body } = params;
+ return this._client.getAPIList(
+ '/gitpod.v1.ProjectService/ListProjectEnvironmentClasses',
+ ProjectEnvironmentClassesPage,
+ { query: { token, pageSize }, body, method: 'post', ...options },
+ );
+ }
+}
+
+export type EnvironmentClaseUpdateResponse = unknown;
+
+export interface EnvironmentClaseUpdateParams {
+ projectEnvironmentClasses?: Array;
+
+ /**
+ * project_id specifies the project identifier
+ */
+ projectId?: string;
+}
+
+export interface EnvironmentClaseListParams extends ProjectEnvironmentClassesPageParams {
+ /**
+ * Body param: pagination contains the pagination options for listing project
+ * policies
+ */
+ pagination?: EnvironmentClaseListParams.Pagination;
+
+ /**
+ * Body param: project_id specifies the project identifier
+ */
+ projectId?: string;
+}
+
+export namespace EnvironmentClaseListParams {
+ /**
+ * pagination contains the pagination options for listing project policies
+ */
+ 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 declare namespace EnvironmentClases {
+ export {
+ type EnvironmentClaseUpdateResponse as EnvironmentClaseUpdateResponse,
+ type EnvironmentClaseUpdateParams as EnvironmentClaseUpdateParams,
+ type EnvironmentClaseListParams as EnvironmentClaseListParams,
+ };
+}
+
+export { type ProjectEnvironmentClassesProjectEnvironmentClassesPage };
diff --git a/src/resources/projects/index.ts b/src/resources/projects/index.ts
index 0dc0a82..14efa77 100644
--- a/src/resources/projects/index.ts
+++ b/src/resources/projects/index.ts
@@ -1,5 +1,11 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+export {
+ EnvironmentClases,
+ type EnvironmentClaseUpdateResponse,
+ type EnvironmentClaseUpdateParams,
+ type EnvironmentClaseListParams,
+} from './environment-clases';
export {
Policies,
type ProjectPolicy,
@@ -17,8 +23,9 @@ export {
Projects,
type EnvironmentInitializer,
type Project,
- type ProjectEnvironmentClass,
type ProjectMetadata,
+ type ProjectPhase,
+ type ProjectPrebuildConfiguration,
type ProjectCreateResponse,
type ProjectRetrieveResponse,
type ProjectUpdateResponse,
diff --git a/src/resources/projects/projects.ts b/src/resources/projects/projects.ts
index 25e1df1..b7d4d83 100644
--- a/src/resources/projects/projects.ts
+++ b/src/resources/projects/projects.ts
@@ -2,6 +2,13 @@
import { APIResource } from '../../core/resource';
import * as Shared from '../shared';
+import * as EnvironmentClasesAPI from './environment-clases';
+import {
+ EnvironmentClaseListParams,
+ EnvironmentClaseUpdateParams,
+ EnvironmentClaseUpdateResponse,
+ EnvironmentClases,
+} from './environment-clases';
import * as PoliciesAPI from './policies';
import {
Policies,
@@ -21,6 +28,9 @@ import { PagePromise, ProjectsPage, type ProjectsPageParams } from '../../core/p
import { RequestOptions } from '../../internal/request-options';
export class Projects extends APIResource {
+ environmentClases: EnvironmentClasesAPI.EnvironmentClases = new EnvironmentClasesAPI.EnvironmentClases(
+ this._client,
+ );
policies: PoliciesAPI.Policies = new PoliciesAPI.Policies(this._client);
/**
@@ -41,8 +51,6 @@ export class Projects extends APIResource {
*
* ```yaml
* name: "Web Application"
- * environmentClass:
- * environmentClassId: "d2c94c27-3b76-4a42-b88c-95a85e392c68"
* initializer:
* specs:
* - git:
@@ -55,8 +63,6 @@ export class Projects extends APIResource {
*
* ```yaml
* name: "Backend Service"
- * environmentClass:
- * environmentClassId: "d2c94c27-3b76-4a42-b88c-95a85e392c68"
* initializer:
* specs:
* - git:
@@ -68,10 +74,6 @@ export class Projects extends APIResource {
* @example
* ```ts
* const project = await client.projects.create({
- * environmentClass: {
- * environmentClassId:
- * 'd2c94c27-3b76-4a42-b88c-95a85e392c68',
- * },
* initializer: {
* specs: [
* { git: { remoteUri: 'https://github.com/org/repo' } },
@@ -124,6 +126,7 @@ export class Projects extends APIResource {
* - Update environment class
* - Change project name
* - Configure initializers
+ * - Configure prebuild settings
*
* ### Examples
*
@@ -136,22 +139,32 @@ export class Projects extends APIResource {
* name: "New Project Name"
* ```
*
- * - Update environment class:
+ * - Enable prebuilds with daily schedule:
*
- * Changes the project's environment class.
+ * Configures prebuilds to run daily at 2 AM UTC.
*
* ```yaml
* projectId: "b0e12f6c-4c67-429d-a4a6-d9838b5da047"
- * environmentClass:
- * environmentClassId: "d2c94c27-3b76-4a42-b88c-95a85e392c68"
+ * prebuildConfiguration:
+ * enabled: true
+ * environmentClassIds:
+ * - "b0e12f6c-4c67-429d-a4a6-d9838b5da041"
+ * timeout: "3600s"
+ * trigger:
+ * dailySchedule:
+ * hourUtc: 2
* ```
*
* @example
* ```ts
* const project = await client.projects.update({
- * environmentClass: {
- * environmentClassId:
- * 'd2c94c27-3b76-4a42-b88c-95a85e392c68',
+ * prebuildConfiguration: {
+ * enabled: true,
+ * environmentClassIds: [
+ * 'b0e12f6c-4c67-429d-a4a6-d9838b5da041',
+ * ],
+ * timeout: '3600s',
+ * trigger: { dailySchedule: { hourUtc: 2 } },
* },
* projectId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047',
* });
@@ -316,7 +329,8 @@ export namespace EnvironmentInitializer {
| 'CLONE_TARGET_MODE_REMOTE_HEAD'
| 'CLONE_TARGET_MODE_REMOTE_COMMIT'
| 'CLONE_TARGET_MODE_REMOTE_BRANCH'
- | 'CLONE_TARGET_MODE_LOCAL_BRANCH';
+ | 'CLONE_TARGET_MODE_LOCAL_BRANCH'
+ | 'CLONE_TARGET_MODE_REMOTE_TAG';
/**
* upstream_Remote_uri is the fork upstream of a repository
@@ -327,7 +341,10 @@ export namespace EnvironmentInitializer {
}
export interface Project {
- environmentClass: ProjectEnvironmentClass;
+ /**
+ * @deprecated Use `environment_classes` instead.
+ */
+ environmentClass: Shared.ProjectEnvironmentClass;
/**
* id is the unique identifier for the project
@@ -340,12 +357,23 @@ export interface Project {
*/
automationsFilePath?: string;
+ /**
+ * desired_phase is the desired phase of the project When set to DELETED, the
+ * project is pending deletion
+ */
+ desiredPhase?: ProjectPhase;
+
/**
* devcontainer_file_path is the path to the devcontainer file relative to the repo
* root
*/
devcontainerFilePath?: string;
+ /**
+ * environment_classes is the list of environment classes for the project
+ */
+ environmentClasses?: Array;
+
/**
* initializer is the content initializer
*/
@@ -353,6 +381,11 @@ export interface Project {
metadata?: ProjectMetadata;
+ /**
+ * prebuild_configuration defines how prebuilds are created for this project.
+ */
+ prebuildConfiguration?: ProjectPrebuildConfiguration;
+
/**
* technical_description is a detailed technical description of the project This
* field is not returned by default in GetProject or ListProjects responses
@@ -377,19 +410,6 @@ export namespace Project {
}
}
-export interface ProjectEnvironmentClass {
- /**
- * Use a fixed environment class on a given Runner. This cannot be a local runner's
- * environment class.
- */
- environmentClassId?: string;
-
- /**
- * Use a local runner for the user
- */
- localRunner?: boolean;
-}
-
export interface ProjectMetadata {
/**
* A Timestamp represents a point in time independent of any time zone or local
@@ -591,6 +611,78 @@ export interface ProjectMetadata {
updatedAt?: string;
}
+export type ProjectPhase = 'PROJECT_PHASE_UNSPECIFIED' | 'PROJECT_PHASE_ACTIVE' | 'PROJECT_PHASE_DELETED';
+
+/**
+ * ProjectPrebuildConfiguration defines how prebuilds are created for a project.
+ * Prebuilds create environment snapshots that enable faster environment startup
+ * times.
+ */
+export interface ProjectPrebuildConfiguration {
+ /**
+ * enabled controls whether prebuilds are created for this project. When disabled,
+ * no automatic prebuilds will be triggered.
+ */
+ enabled?: boolean;
+
+ /**
+ * enable_jetbrains_warmup controls whether JetBrains IDE warmup runs during
+ * prebuilds.
+ */
+ enableJetbrainsWarmup?: boolean;
+
+ /**
+ * environment_class_ids specifies which environment classes should have prebuilds
+ * created. If empty, no prebuilds are created.
+ */
+ environmentClassIds?: Array;
+
+ /**
+ * executor specifies who runs prebuilds for this project. The executor's SCM
+ * credentials are used to clone the repository. If not set, defaults to the
+ * project creator.
+ */
+ executor?: Shared.Subject;
+
+ /**
+ * timeout is the maximum duration allowed for a prebuild to complete. If not
+ * specified, defaults to 1 hour. Must be between 5 minutes and 2 hours.
+ */
+ timeout?: string;
+
+ /**
+ * trigger defines when prebuilds should be created.
+ */
+ trigger?: ProjectPrebuildConfiguration.Trigger;
+}
+
+export namespace ProjectPrebuildConfiguration {
+ /**
+ * trigger defines when prebuilds should be created.
+ */
+ export interface Trigger {
+ /**
+ * daily_schedule triggers a prebuild once per day at the specified hour (UTC). The
+ * actual start time may vary slightly to distribute system load.
+ */
+ dailySchedule: Trigger.DailySchedule;
+ }
+
+ export namespace Trigger {
+ /**
+ * daily_schedule triggers a prebuild once per day at the specified hour (UTC). The
+ * actual start time may vary slightly to distribute system load.
+ */
+ export interface DailySchedule {
+ /**
+ * hour_utc is the hour of day (0-23) in UTC when the prebuild should start. The
+ * actual start time may be adjusted by a few minutes to balance system load.
+ */
+ hourUtc?: number;
+ }
+ }
+}
+
export interface ProjectCreateResponse {
project?: Project;
}
@@ -610,8 +702,6 @@ export interface ProjectCreateFromEnvironmentResponse {
}
export interface ProjectCreateParams {
- environmentClass: ProjectEnvironmentClass;
-
/**
* initializer is the content initializer
*/
@@ -639,6 +729,12 @@ export interface ProjectCreateParams {
name?: string;
+ /**
+ * prebuild_configuration defines how prebuilds are created for this project. If
+ * not set, prebuilds are disabled for the project.
+ */
+ prebuildConfiguration?: ProjectPrebuildConfiguration;
+
/**
* technical_description is a detailed technical description of the project This
* field is not returned by default in GetProject or ListProjects responses 8KB max
@@ -674,8 +770,6 @@ export interface ProjectUpdateParams {
*/
devcontainerFilePath?: string | null;
- environmentClass?: ProjectEnvironmentClass | null;
-
/**
* initializer is the content initializer
*/
@@ -683,6 +777,13 @@ export interface ProjectUpdateParams {
name?: string | null;
+ /**
+ * prebuild_configuration defines how prebuilds are created for this project. If
+ * not provided, the existing prebuild configuration is not modified. To disable
+ * prebuilds, set enabled to false.
+ */
+ prebuildConfiguration?: ProjectPrebuildConfiguration | null;
+
/**
* project_id specifies the project identifier
*/
@@ -713,6 +814,18 @@ export namespace ProjectListParams {
* project_ids filters the response to only projects with these IDs
*/
projectIds?: Array;
+
+ /**
+ * runner_ids filters the response to only projects that use environment classes
+ * from these runners
+ */
+ runnerIds?: Array;
+
+ /**
+ * search performs case-insensitive search across project name, project ID, and
+ * repository name
+ */
+ search?: string;
}
/**
@@ -749,14 +862,16 @@ export interface ProjectCreateFromEnvironmentParams {
name?: string;
}
+Projects.EnvironmentClases = EnvironmentClases;
Projects.Policies = Policies;
export declare namespace Projects {
export {
type EnvironmentInitializer as EnvironmentInitializer,
type Project as Project,
- type ProjectEnvironmentClass as ProjectEnvironmentClass,
type ProjectMetadata as ProjectMetadata,
+ type ProjectPhase as ProjectPhase,
+ type ProjectPrebuildConfiguration as ProjectPrebuildConfiguration,
type ProjectCreateResponse as ProjectCreateResponse,
type ProjectRetrieveResponse as ProjectRetrieveResponse,
type ProjectUpdateResponse as ProjectUpdateResponse,
@@ -771,6 +886,13 @@ export declare namespace Projects {
type ProjectCreateFromEnvironmentParams as ProjectCreateFromEnvironmentParams,
};
+ export {
+ EnvironmentClases as EnvironmentClases,
+ type EnvironmentClaseUpdateResponse as EnvironmentClaseUpdateResponse,
+ type EnvironmentClaseUpdateParams as EnvironmentClaseUpdateParams,
+ type EnvironmentClaseListParams as EnvironmentClaseListParams,
+ };
+
export {
Policies as Policies,
type ProjectPolicy as ProjectPolicy,
diff --git a/src/resources/runners/configurations/configurations.ts b/src/resources/runners/configurations/configurations.ts
index e77550d..4db5ee0 100644
--- a/src/resources/runners/configurations/configurations.ts
+++ b/src/resources/runners/configurations/configurations.ts
@@ -195,6 +195,14 @@ export namespace ConfigurationValidateParams {
* integration is for
*/
scmId?: string;
+
+ /**
+ * virtual_directory is the virtual directory path for Azure DevOps Server (e.g.,
+ * "/tfs"). This field is only used for Azure DevOps Server SCM integrations and
+ * should be empty for other SCM types. Azure DevOps Server APIs work without
+ * collection when PAT scope is 'All accessible organizations'.
+ */
+ virtualDirectory?: string | null;
}
}
diff --git a/src/resources/runners/configurations/host-authentication-tokens.ts b/src/resources/runners/configurations/host-authentication-tokens.ts
index 5a538a9..4ad2b74 100644
--- a/src/resources/runners/configurations/host-authentication-tokens.ts
+++ b/src/resources/runners/configurations/host-authentication-tokens.ts
@@ -1,6 +1,7 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
import { APIResource } from '../../../core/resource';
+import * as Shared from '../../shared';
import { APIPromise } from '../../../core/api-promise';
import { PagePromise, TokensPage, type TokensPageParams } from '../../../core/pagination';
import { RequestOptions } from '../../../internal/request-options';
@@ -328,10 +329,34 @@ export interface HostAuthenticationToken {
host?: string;
+ /**
+ * links to integration instance
+ */
+ integrationId?: string;
+
runnerId?: string;
+ /**
+ * token permissions
+ */
+ scopes?: Array;
+
+ /**
+ * auth_type
+ */
source?: HostAuthenticationTokenSource;
+ /**
+ * Subject identifies the principal (user or service account) for the token Note:
+ * actual token and refresh_token values are retrieved via
+ * GetHostAuthenticationTokenValue API
+ */
+ subject?: Shared.Subject;
+
+ /**
+ * @deprecated Deprecated: Use principal_id and principal_type instead principal
+ * (user)
+ */
userId?: string;
}
@@ -353,6 +378,9 @@ export type HostAuthenticationTokenUpdateResponse = unknown;
export type HostAuthenticationTokenDeleteResponse = unknown;
export interface HostAuthenticationTokenCreateParams {
+ /**
+ * stored encrypted, retrieved via GetHostAuthenticationTokenValue
+ */
token?: string;
/**
@@ -449,12 +477,30 @@ export interface HostAuthenticationTokenCreateParams {
host?: string;
+ integrationId?: string;
+
+ /**
+ * stored encrypted, retrieved via GetHostAuthenticationTokenValue
+ */
refreshToken?: string;
runnerId?: string;
+ /**
+ * Maximum 100 scopes allowed (101 for validation purposes)
+ */
+ scopes?: Array;
+
source?: HostAuthenticationTokenSource;
+ /**
+ * Subject identifies the principal (user or service account) for the token
+ */
+ subject?: Shared.Subject;
+
+ /**
+ * @deprecated Deprecated: Use principal_id and principal_type instead
+ */
userId?: string;
}
@@ -560,6 +606,8 @@ export interface HostAuthenticationTokenUpdateParams {
expiresAt?: string | null;
refreshToken?: string | null;
+
+ scopes?: Array;
}
export interface HostAuthenticationTokenListParams extends TokensPageParams {
@@ -578,6 +626,14 @@ export namespace HostAuthenticationTokenListParams {
export interface Filter {
runnerId?: string | null;
+ /**
+ * Filter by subject (user or service account)
+ */
+ subjectId?: string | null;
+
+ /**
+ * @deprecated Deprecated: Use principal_id instead
+ */
userId?: string | null;
}
diff --git a/src/resources/runners/configurations/scm-integrations.ts b/src/resources/runners/configurations/scm-integrations.ts
index b458f97..7c19374 100644
--- a/src/resources/runners/configurations/scm-integrations.ts
+++ b/src/resources/runners/configurations/scm-integrations.ts
@@ -232,6 +232,14 @@ export interface ScmIntegration {
* integration is for
*/
scmId?: string;
+
+ /**
+ * virtual_directory is the virtual directory path for Azure DevOps Server (e.g.,
+ * "/tfs"). This field is only used for Azure DevOps Server SCM integrations and
+ * should be empty for other SCM types. Azure DevOps Server APIs work without
+ * collection when PAT scope is 'All accessible organizations'.
+ */
+ virtualDirectory?: string | null;
}
export interface ScmIntegrationOAuthConfig {
@@ -300,6 +308,14 @@ export interface ScmIntegrationCreateParams {
* integration is for
*/
scmId?: string;
+
+ /**
+ * virtual_directory is the virtual directory path for Azure DevOps Server (e.g.,
+ * "/tfs"). This field is only used for Azure DevOps Server SCM integrations and
+ * should be empty for other SCM types. Azure DevOps Server APIs work without
+ * collection when PAT scope is 'All accessible organizations'.
+ */
+ virtualDirectory?: string | null;
}
export interface ScmIntegrationRetrieveParams {
@@ -340,6 +356,14 @@ export interface ScmIntegrationUpdateParams {
* re-authenticate.
*/
pat?: boolean | null;
+
+ /**
+ * virtual_directory is the virtual directory path for Azure DevOps Server (e.g.,
+ * "/tfs"). This field is only used for Azure DevOps Server SCM integrations and
+ * should be empty for other SCM types. Azure DevOps Server APIs work without
+ * collection when PAT scope is 'All accessible organizations'.
+ */
+ virtualDirectory?: string | null;
}
export interface ScmIntegrationListParams extends IntegrationsPageParams {
diff --git a/src/resources/runners/index.ts b/src/resources/runners/index.ts
index be65dbf..a28c3f8 100644
--- a/src/resources/runners/index.ts
+++ b/src/resources/runners/index.ts
@@ -35,20 +35,26 @@ export {
type RunnerReleaseChannel,
type RunnerSpec,
type RunnerStatus,
+ type RunnerVariant,
+ type SearchMode,
type RunnerCreateResponse,
type RunnerRetrieveResponse,
type RunnerUpdateResponse,
type RunnerDeleteResponse,
type RunnerCheckAuthenticationForHostResponse,
+ type RunnerCreateLogsTokenResponse,
type RunnerCreateRunnerTokenResponse,
type RunnerParseContextURLResponse,
+ type RunnerSearchRepositoriesResponse,
type RunnerCreateParams,
type RunnerRetrieveParams,
type RunnerUpdateParams,
type RunnerListParams,
type RunnerDeleteParams,
type RunnerCheckAuthenticationForHostParams,
+ type RunnerCreateLogsTokenParams,
type RunnerCreateRunnerTokenParams,
type RunnerParseContextURLParams,
+ type RunnerSearchRepositoriesParams,
type RunnersRunnersPage,
} from './runners';
diff --git a/src/resources/runners/runners.ts b/src/resources/runners/runners.ts
index e7eaa88..aa02a4c 100644
--- a/src/resources/runners/runners.ts
+++ b/src/resources/runners/runners.ts
@@ -287,6 +287,35 @@ export class Runners extends APIResource {
return this._client.post('/gitpod.v1.RunnerService/CheckAuthenticationForHost', { body, ...options });
}
+ /**
+ * Creates an access token for runner logs and debug information.
+ *
+ * Generated tokens are valid for one hour and provide runner-specific access
+ * permissions. The token is scoped to a specific runner and can be used to access
+ * support bundles.
+ *
+ * ### Examples
+ *
+ * - Generate runner logs token:
+ *
+ * ```yaml
+ * runnerId: "d2c94c27-3b76-4a42-b88c-95a85e392c68"
+ * ```
+ *
+ * @example
+ * ```ts
+ * const response = await client.runners.createLogsToken({
+ * runnerId: 'd2c94c27-3b76-4a42-b88c-95a85e392c68',
+ * });
+ * ```
+ */
+ createLogsToken(
+ body: RunnerCreateLogsTokenParams,
+ options?: RequestOptions,
+ ): APIPromise {
+ return this._client.post('/gitpod.v1.RunnerService/CreateRunnerLogsToken', { body, ...options });
+ }
+
/**
* Creates a new authentication token for a runner.
*
@@ -361,6 +390,52 @@ export class Runners extends APIResource {
): APIPromise {
return this._client.post('/gitpod.v1.RunnerService/ParseContextURL', { body, ...options });
}
+
+ /**
+ * Searches for repositories across all authenticated SCM hosts.
+ *
+ * Use this method to:
+ *
+ * - List available repositories
+ * - Search repositories by name or content
+ * - Discover repositories for environment creation
+ *
+ * Returns repositories from all authenticated SCM hosts in natural sort order. If
+ * no repositories are found, returns an empty list.
+ *
+ * ### Examples
+ *
+ * - List all repositories:
+ *
+ * Returns up to 25 repositories from all authenticated hosts.
+ *
+ * ```yaml
+ * runnerId: "d2c94c27-3b76-4a42-b88c-95a85e392c68"
+ * ```
+ *
+ * - Search repositories:
+ *
+ * Searches for repositories matching the query across all hosts.
+ *
+ * ```yaml
+ * runnerId: "d2c94c27-3b76-4a42-b88c-95a85e392c68"
+ * searchString: "my-project"
+ * limit: 10
+ * ```
+ *
+ * @example
+ * ```ts
+ * const response = await client.runners.searchRepositories({
+ * runnerId: 'd2c94c27-3b76-4a42-b88c-95a85e392c68',
+ * });
+ * ```
+ */
+ searchRepositories(
+ body: RunnerSearchRepositoriesParams,
+ options?: RequestOptions,
+ ): APIPromise {
+ return this._client.post('/gitpod.v1.RunnerService/SearchRepositories', { body, ...options });
+ }
}
export type RunnersRunnersPage = RunnersPage;
@@ -434,6 +509,12 @@ export interface Runner {
runnerId?: string;
+ /**
+ * The runner manager id specifies the runner manager for the managed runner. This
+ * field is only set for managed runners.
+ */
+ runnerManagerId?: string;
+
/**
* The runner's specification
*/
@@ -456,7 +537,8 @@ export type RunnerCapability =
| 'RUNNER_CAPABILITY_SECRET_CONTAINER_REGISTRY'
| 'RUNNER_CAPABILITY_AGENT_EXECUTION'
| 'RUNNER_CAPABILITY_ALLOW_ENV_TOKEN_POPULATION'
- | 'RUNNER_CAPABILITY_DEFAULT_DEV_CONTAINER_IMAGE';
+ | 'RUNNER_CAPABILITY_DEFAULT_DEV_CONTAINER_IMAGE'
+ | 'RUNNER_CAPABILITY_ENVIRONMENT_SNAPSHOT';
export interface RunnerConfiguration {
/**
@@ -467,7 +549,7 @@ export interface RunnerConfiguration {
/**
* devcontainer_image_cache_enabled controls whether the devcontainer build cache
* is enabled for this runner. Only takes effect on supported runners, currently
- * only AWS EC2 runners.
+ * only AWS EC2 and Gitpod-managed runners.
*/
devcontainerImageCacheEnabled?: boolean;
@@ -525,7 +607,8 @@ export type RunnerProvider =
| 'RUNNER_PROVIDER_AWS_EC2'
| 'RUNNER_PROVIDER_LINUX_HOST'
| 'RUNNER_PROVIDER_DESKTOP_MAC'
- | 'RUNNER_PROVIDER_MANAGED';
+ | 'RUNNER_PROVIDER_MANAGED'
+ | 'RUNNER_PROVIDER_GCP';
export type RunnerReleaseChannel =
| 'RUNNER_RELEASE_CHANNEL_UNSPECIFIED'
@@ -542,6 +625,11 @@ export interface RunnerSpec {
* RunnerPhase represents the phase a runner is in
*/
desiredPhase?: RunnerPhase;
+
+ /**
+ * The runner's variant
+ */
+ variant?: RunnerVariant;
}
/**
@@ -564,6 +652,11 @@ export interface RunnerStatus {
*/
gatewayInfo?: GatewayInfo;
+ /**
+ * llm_url is the URL of the LLM service to which the runner is connected.
+ */
+ llmUrl?: string;
+
logUrl?: string;
/**
@@ -577,11 +670,23 @@ export interface RunnerStatus {
*/
phase?: RunnerPhase;
+ /**
+ * public_key is the runner's public key used for encryption (32 bytes)
+ */
+ publicKey?: string;
+
/**
* region is the region the runner is running in, if applicable.
*/
region?: string;
+ /**
+ * support_bundle_url is the URL at which the runner support bundle can be
+ * accessed. This URL provides access to pprof profiles and other debug
+ * information. Only available for standalone runners.
+ */
+ supportBundleUrl?: string;
+
systemDetails?: string;
/**
@@ -592,6 +697,13 @@ export interface RunnerStatus {
version?: string;
}
+export type RunnerVariant =
+ | 'RUNNER_VARIANT_UNSPECIFIED'
+ | 'RUNNER_VARIANT_STANDARD'
+ | 'RUNNER_VARIANT_ENTERPRISE';
+
+export type SearchMode = 'SEARCH_MODE_UNSPECIFIED' | 'SEARCH_MODE_KEYWORD' | 'SEARCH_MODE_NATIVE';
+
export interface RunnerCreateResponse {
runner: Runner;
@@ -696,6 +808,14 @@ export namespace RunnerCheckAuthenticationForHostResponse {
}
}
+export interface RunnerCreateLogsTokenResponse {
+ /**
+ * access_token is the token that can be used to access the logs and support bundle
+ * of the runner
+ */
+ accessToken: string;
+}
+
export interface RunnerCreateRunnerTokenResponse {
/**
* @deprecated deprecated, will be removed. Use exchange_token instead.
@@ -713,12 +833,32 @@ export interface RunnerCreateRunnerTokenResponse {
export interface RunnerParseContextURLResponse {
git?: RunnerParseContextURLResponse.Git;
+ issue?: RunnerParseContextURLResponse.Issue;
+
originalContextUrl?: string;
+ /**
+ * @deprecated Deprecated: Use top-level PullRequest message instead
+ */
+ pr?: RunnerParseContextURLResponse.Pr;
+
/**
* project_ids is a list of projects to which the context URL belongs to.
*/
projectIds?: Array;
+
+ /**
+ * PullRequest represents pull request metadata from source control systems. This
+ * message is used across workflow triggers, executions, and agent contexts to
+ * maintain consistent PR information throughout the system.
+ */
+ pullRequest?: RunnerParseContextURLResponse.PullRequest;
+
+ /**
+ * scm_id is the unique identifier of the SCM provider (e.g., "github", "gitlab",
+ * "bitbucket")
+ */
+ scmId?: string;
}
export namespace RunnerParseContextURLResponse {
@@ -735,8 +875,131 @@ export namespace RunnerParseContextURLResponse {
repo?: string;
+ tag?: string;
+
upstreamRemoteUrl?: string;
}
+
+ export interface Issue {
+ /**
+ * id is the source system's ID of this issue, e.g. BNFRD-6100
+ */
+ id?: string;
+
+ title?: string;
+ }
+
+ /**
+ * @deprecated Deprecated: Use top-level PullRequest message instead
+ */
+ export interface Pr {
+ id?: string;
+
+ fromBranch?: string;
+
+ title?: string;
+
+ toBranch?: string;
+ }
+
+ /**
+ * PullRequest represents pull request metadata from source control systems. This
+ * message is used across workflow triggers, executions, and agent contexts to
+ * maintain consistent PR information throughout the system.
+ */
+ export interface PullRequest {
+ /**
+ * Unique identifier from the source system (e.g., "123" for GitHub PR #123)
+ */
+ id?: string;
+
+ /**
+ * Author name as provided by the SCM system
+ */
+ author?: string;
+
+ /**
+ * Source branch name (the branch being merged from)
+ */
+ fromBranch?: string;
+
+ /**
+ * Repository information
+ */
+ repository?: PullRequest.Repository;
+
+ /**
+ * Pull request title
+ */
+ title?: string;
+
+ /**
+ * Target branch name (the branch being merged into)
+ */
+ toBranch?: string;
+
+ /**
+ * Pull request URL (e.g., "https://github.com/owner/repo/pull/123")
+ */
+ url?: string;
+ }
+
+ export namespace PullRequest {
+ /**
+ * Repository information
+ */
+ export interface Repository {
+ cloneUrl?: string;
+
+ host?: string;
+
+ name?: string;
+
+ owner?: string;
+ }
+ }
+}
+
+export interface RunnerSearchRepositoriesResponse {
+ /**
+ * Last page in the responses
+ */
+ lastPage?: number;
+
+ /**
+ * Pagination information for the response
+ */
+ pagination?: RunnerSearchRepositoriesResponse.Pagination;
+
+ /**
+ * List of repositories matching the search criteria
+ */
+ repositories?: Array;
+}
+
+export namespace RunnerSearchRepositoriesResponse {
+ /**
+ * Pagination information for the response
+ */
+ export interface Pagination {
+ /**
+ * Token passed for retrieving the next set of results. Empty if there are no more
+ * results
+ */
+ nextToken?: string;
+ }
+
+ export interface Repository {
+ /**
+ * Repository name (e.g., "my-project")
+ */
+ name?: string;
+
+ /**
+ * Repository URL (e.g., "https://github.com/owner/my-project")
+ */
+ url?: string;
+ }
}
export interface RunnerCreateParams {
@@ -930,6 +1193,15 @@ export interface RunnerCheckAuthenticationForHostParams {
runnerId?: string;
}
+export interface RunnerCreateLogsTokenParams {
+ /**
+ * runner_id specifies the runner for which the logs token should be created.
+ *
+ * +required
+ */
+ runnerId?: string;
+}
+
export interface RunnerCreateRunnerTokenParams {
runnerId?: string;
}
@@ -940,6 +1212,55 @@ export interface RunnerParseContextURLParams {
runnerId?: string;
}
+export interface RunnerSearchRepositoriesParams {
+ /**
+ * @deprecated Maximum number of repositories to return. Default: 25, Maximum: 100
+ * Deprecated: Use pagination.page_size instead
+ */
+ limit?: number;
+
+ /**
+ * Pagination parameters for repository search
+ */
+ pagination?: RunnerSearchRepositoriesParams.Pagination;
+
+ runnerId?: string;
+
+ /**
+ * The SCM's host to retrieve repositories from
+ */
+ scmHost?: string;
+
+ /**
+ * Search mode determines how search_string is interpreted
+ */
+ searchMode?: SearchMode;
+
+ /**
+ * Search query - interpretation depends on search_mode
+ */
+ searchString?: string;
+}
+
+export namespace RunnerSearchRepositoriesParams {
+ /**
+ * Pagination parameters for repository search
+ */
+ 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;
+ }
+}
+
Runners.Configurations = Configurations;
Runners.Policies = Policies;
@@ -957,13 +1278,17 @@ export declare namespace Runners {
type RunnerReleaseChannel as RunnerReleaseChannel,
type RunnerSpec as RunnerSpec,
type RunnerStatus as RunnerStatus,
+ type RunnerVariant as RunnerVariant,
+ type SearchMode as SearchMode,
type RunnerCreateResponse as RunnerCreateResponse,
type RunnerRetrieveResponse as RunnerRetrieveResponse,
type RunnerUpdateResponse as RunnerUpdateResponse,
type RunnerDeleteResponse as RunnerDeleteResponse,
type RunnerCheckAuthenticationForHostResponse as RunnerCheckAuthenticationForHostResponse,
+ type RunnerCreateLogsTokenResponse as RunnerCreateLogsTokenResponse,
type RunnerCreateRunnerTokenResponse as RunnerCreateRunnerTokenResponse,
type RunnerParseContextURLResponse as RunnerParseContextURLResponse,
+ type RunnerSearchRepositoriesResponse as RunnerSearchRepositoriesResponse,
type RunnersRunnersPage as RunnersRunnersPage,
type RunnerCreateParams as RunnerCreateParams,
type RunnerRetrieveParams as RunnerRetrieveParams,
@@ -971,8 +1296,10 @@ export declare namespace Runners {
type RunnerListParams as RunnerListParams,
type RunnerDeleteParams as RunnerDeleteParams,
type RunnerCheckAuthenticationForHostParams as RunnerCheckAuthenticationForHostParams,
+ type RunnerCreateLogsTokenParams as RunnerCreateLogsTokenParams,
type RunnerCreateRunnerTokenParams as RunnerCreateRunnerTokenParams,
type RunnerParseContextURLParams as RunnerParseContextURLParams,
+ type RunnerSearchRepositoriesParams as RunnerSearchRepositoriesParams,
};
export {
diff --git a/src/resources/secrets.ts b/src/resources/secrets.ts
index 9c812cd..84069d3 100644
--- a/src/resources/secrets.ts
+++ b/src/resources/secrets.ts
@@ -222,6 +222,11 @@ export type SecretsSecretsPage = SecretsPage;
export interface Secret {
id?: string;
+ /**
+ * api_only indicates the secret is only available via API/CLI
+ */
+ apiOnly?: boolean;
+
/**
* secret will be mounted as a registry secret
*/
@@ -441,6 +446,11 @@ export interface Secret {
}
export interface SecretScope {
+ /**
+ * organization_id is the Organization ID this Secret belongs to
+ */
+ organizationId?: string;
+
/**
* project_id is the Project ID this Secret belongs to
*/
@@ -465,6 +475,13 @@ export interface SecretGetValueResponse {
export type SecretUpdateValueResponse = unknown;
export interface SecretCreateParams {
+ /**
+ * api_only indicates the secret is only available via API/CLI. These secrets are
+ * NOT automatically injected into services or devcontainers. Useful for secrets
+ * that should only be consumed programmatically (e.g., by security agents).
+ */
+ apiOnly?: boolean;
+
/**
* secret will be mounted as a docker config in the environment VM, mount will have
* the docker registry host
diff --git a/src/resources/shared.ts b/src/resources/shared.ts
index a779cf3..1bb2c24 100644
--- a/src/resources/shared.ts
+++ b/src/resources/shared.ts
@@ -1,13 +1,27 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
import * as Shared from './shared';
-import { EnvironmentClassesPage, GatewaysPage, TaskExecutionsPage, TasksPage } from '../core/pagination';
+import {
+ EnvironmentClassesPage,
+ GatewaysPage,
+ ProjectEnvironmentClassesPage,
+ TaskExecutionsPage,
+ TasksPage,
+} from '../core/pagination';
/**
- * An AutomationTrigger represents a trigger for an automation action. The
+ * An AutomationTrigger represents a trigger for an automation action. The `manual`
+ * field shows a start button in the UI for manually triggering the automation. The
+ * `post_machine_start` field indicates that the automation should be triggered
+ * after the machine has started, before the devcontainer is ready. This is used
+ * for machine-level services like security agents that need to start early. The
* `post_environment_start` field indicates that the automation should be triggered
- * after the environment has started. The `post_devcontainer_start` field indicates
- * that the automation should be triggered after the dev container has started.
+ * after the environment has started (devcontainer ready). The
+ * `post_devcontainer_start` field indicates that the automation should be
+ * triggered after the dev container has started. The `prebuild` field starts the
+ * automation during a prebuild of an environment. This phase does not have user
+ * secrets available. Note: The prebuild trigger can only be used with tasks, not
+ * services.
*/
export interface AutomationTrigger {
manual?: boolean;
@@ -15,6 +29,10 @@ export interface AutomationTrigger {
postDevcontainerStart?: boolean;
postEnvironmentStart?: boolean;
+
+ postMachineStart?: boolean;
+
+ prebuild?: boolean;
}
export interface EnvironmentClass {
@@ -51,6 +69,37 @@ export interface EnvironmentClass {
enabled?: boolean;
}
+/**
+ * EnvironmentVariableItem represents an environment variable that can be set
+ * either from a literal value or from a secret reference.
+ */
+export interface EnvironmentVariableItem {
+ /**
+ * name is the environment variable name.
+ */
+ name?: string;
+
+ /**
+ * value is a literal string value.
+ */
+ value?: string;
+
+ /**
+ * value_from specifies a source for the value.
+ */
+ valueFrom?: EnvironmentVariableSource;
+}
+
+/**
+ * EnvironmentVariableSource specifies a source for an environment variable value.
+ */
+export interface EnvironmentVariableSource {
+ /**
+ * secret_ref references a secret by ID.
+ */
+ secretRef: SecretRef;
+}
+
/**
* The status code, which should be an enum value of
* [google.rpc.Code][google.rpc.Code].
@@ -112,10 +161,78 @@ export type Principal =
| 'PRINCIPAL_RUNNER'
| 'PRINCIPAL_ENVIRONMENT'
| 'PRINCIPAL_SERVICE_ACCOUNT'
- | 'PRINCIPAL_RUNNER_MANAGER';
+ | 'PRINCIPAL_RUNNER_MANAGER'
+ | 'PRINCIPAL_AGENT_EXECUTION';
+
+export interface ProjectEnvironmentClass {
+ /**
+ * Use a fixed environment class on a given Runner. This cannot be a local runner's
+ * environment class.
+ */
+ environmentClassId?: string;
+
+ /**
+ * Use a local runner for the user
+ */
+ localRunner?: boolean;
+
+ /**
+ * order is the priority of this entry
+ */
+ order?: number;
+}
+
+export type ResourceType =
+ | 'RESOURCE_TYPE_UNSPECIFIED'
+ | 'RESOURCE_TYPE_ENVIRONMENT'
+ | 'RESOURCE_TYPE_RUNNER'
+ | 'RESOURCE_TYPE_PROJECT'
+ | 'RESOURCE_TYPE_TASK'
+ | 'RESOURCE_TYPE_TASK_EXECUTION'
+ | 'RESOURCE_TYPE_SERVICE'
+ | 'RESOURCE_TYPE_ORGANIZATION'
+ | 'RESOURCE_TYPE_USER'
+ | 'RESOURCE_TYPE_ENVIRONMENT_CLASS'
+ | 'RESOURCE_TYPE_RUNNER_SCM_INTEGRATION'
+ | 'RESOURCE_TYPE_HOST_AUTHENTICATION_TOKEN'
+ | 'RESOURCE_TYPE_GROUP'
+ | 'RESOURCE_TYPE_PERSONAL_ACCESS_TOKEN'
+ | 'RESOURCE_TYPE_USER_PREFERENCE'
+ | 'RESOURCE_TYPE_SERVICE_ACCOUNT'
+ | 'RESOURCE_TYPE_SECRET'
+ | 'RESOURCE_TYPE_SSO_CONFIG'
+ | 'RESOURCE_TYPE_DOMAIN_VERIFICATION'
+ | 'RESOURCE_TYPE_AGENT_EXECUTION'
+ | 'RESOURCE_TYPE_RUNNER_LLM_INTEGRATION'
+ | 'RESOURCE_TYPE_AGENT'
+ | 'RESOURCE_TYPE_ENVIRONMENT_SESSION'
+ | 'RESOURCE_TYPE_USER_SECRET'
+ | 'RESOURCE_TYPE_ORGANIZATION_POLICY'
+ | 'RESOURCE_TYPE_ORGANIZATION_SECRET'
+ | 'RESOURCE_TYPE_PROJECT_ENVIRONMENT_CLASS'
+ | 'RESOURCE_TYPE_BILLING'
+ | 'RESOURCE_TYPE_PROMPT'
+ | 'RESOURCE_TYPE_COUPON'
+ | 'RESOURCE_TYPE_COUPON_REDEMPTION'
+ | 'RESOURCE_TYPE_ACCOUNT'
+ | 'RESOURCE_TYPE_INTEGRATION'
+ | 'RESOURCE_TYPE_WORKFLOW'
+ | 'RESOURCE_TYPE_WORKFLOW_EXECUTION'
+ | 'RESOURCE_TYPE_WORKFLOW_EXECUTION_ACTION'
+ | 'RESOURCE_TYPE_SNAPSHOT'
+ | 'RESOURCE_TYPE_PREBUILD'
+ | 'RESOURCE_TYPE_ORGANIZATION_LLM_INTEGRATION'
+ | 'RESOURCE_TYPE_CUSTOM_DOMAIN'
+ | 'RESOURCE_TYPE_ROLE_ASSIGNMENT_CHANGED'
+ | 'RESOURCE_TYPE_GROUP_MEMBERSHIP_CHANGED';
export interface RunsOn {
- docker: RunsOn.Docker;
+ docker?: RunsOn.Docker;
+
+ /**
+ * Machine runs the service/task directly on the VM/machine level.
+ */
+ machine?: unknown;
}
export namespace RunsOn {
@@ -126,6 +243,16 @@ export namespace RunsOn {
}
}
+/**
+ * SecretRef references a secret by its ID.
+ */
+export interface SecretRef {
+ /**
+ * id is the UUID of the secret to reference.
+ */
+ id?: string;
+}
+
export interface Subject {
/**
* id is the UUID of the subject
@@ -358,6 +485,11 @@ export interface TaskSpec {
*/
command?: string;
+ /**
+ * env specifies environment variables for the task.
+ */
+ env?: Array;
+
/**
* runs_on specifies the environment the task should run on.
*/
@@ -377,3 +509,6 @@ export type TaskExecutionsTaskExecutionsPage = TaskExecutionsPage
export type EnvironmentClassesEnvironmentClassesPage = EnvironmentClassesPage;
export type GatewaysGatewaysPage = GatewaysPage;
+
+export type ProjectEnvironmentClassesProjectEnvironmentClassesPage =
+ ProjectEnvironmentClassesPage;
diff --git a/src/resources/users/index.ts b/src/resources/users/index.ts
index c91cbf0..be4f278 100644
--- a/src/resources/users/index.ts
+++ b/src/resources/users/index.ts
@@ -21,8 +21,12 @@ export {
export {
Users,
type User,
+ type UserDeleteUserResponse,
type UserGetAuthenticatedUserResponse,
+ type UserGetUserResponse,
type UserSetSuspendedResponse,
+ type UserDeleteUserParams,
type UserGetAuthenticatedUserParams,
+ type UserGetUserParams,
type UserSetSuspendedParams,
} from './users';
diff --git a/src/resources/users/users.ts b/src/resources/users/users.ts
index 744a576..f9f4b88 100644
--- a/src/resources/users/users.ts
+++ b/src/resources/users/users.ts
@@ -29,6 +29,19 @@ export class Users extends APIResource {
dotfiles: DotfilesAPI.Dotfiles = new DotfilesAPI.Dotfiles(this._client);
pats: PatsAPI.Pats = new PatsAPI.Pats(this._client);
+ /**
+ * Deletes a user. If the User comes from an organization's SSO provider, the
+ * Account will also be deleted.
+ *
+ * @example
+ * ```ts
+ * const response = await client.users.deleteUser();
+ * ```
+ */
+ deleteUser(body: UserDeleteUserParams, options?: RequestOptions): APIPromise {
+ return this._client.post('/gitpod.v1.UserService/DeleteUser', { body, ...options });
+ }
+
/**
* Gets information about the currently authenticated user.
*
@@ -61,6 +74,36 @@ export class Users extends APIResource {
return this._client.post('/gitpod.v1.UserService/GetAuthenticatedUser', { body, ...options });
}
+ /**
+ * Gets basic information about a specific user by their ID.
+ *
+ * Use this method to:
+ *
+ * - Retrieve user profile information
+ * - Get user details for display purposes
+ * - Fetch user metadata for administrative tasks
+ *
+ * ### Examples
+ *
+ * - Get user by ID:
+ *
+ * Retrieves basic user information by user ID.
+ *
+ * ```yaml
+ * userId: "f53d2330-3795-4c5d-a1f3-453121af9c60"
+ * ```
+ *
+ * @example
+ * ```ts
+ * const response = await client.users.getUser({
+ * userId: 'f53d2330-3795-4c5d-a1f3-453121af9c60',
+ * });
+ * ```
+ */
+ getUser(body: UserGetUserParams, options?: RequestOptions): APIPromise {
+ return this._client.post('/gitpod.v1.UserService/GetUser', { body, ...options });
+ }
+
/**
* Sets whether a user account is suspended.
*
@@ -118,6 +161,11 @@ export interface User {
*/
createdAt?: string;
+ /**
+ * email is the user's email address
+ */
+ email?: string;
+
/**
* name is the full name of the user
*/
@@ -136,16 +184,30 @@ export interface User {
status?: Shared.UserStatus;
}
+export type UserDeleteUserResponse = unknown;
+
export interface UserGetAuthenticatedUserResponse {
user: User;
}
+export interface UserGetUserResponse {
+ user: User;
+}
+
export type UserSetSuspendedResponse = unknown;
+export interface UserDeleteUserParams {
+ userId?: string;
+}
+
export interface UserGetAuthenticatedUserParams {
empty?: boolean;
}
+export interface UserGetUserParams {
+ userId?: string;
+}
+
export interface UserSetSuspendedParams {
suspended?: boolean;
@@ -158,9 +220,13 @@ Users.Pats = Pats;
export declare namespace Users {
export {
type User as User,
+ type UserDeleteUserResponse as UserDeleteUserResponse,
type UserGetAuthenticatedUserResponse as UserGetAuthenticatedUserResponse,
+ type UserGetUserResponse as UserGetUserResponse,
type UserSetSuspendedResponse as UserSetSuspendedResponse,
+ type UserDeleteUserParams as UserDeleteUserParams,
type UserGetAuthenticatedUserParams as UserGetAuthenticatedUserParams,
+ type UserGetUserParams as UserGetUserParams,
type UserSetSuspendedParams as UserSetSuspendedParams,
};
diff --git a/tests/api-resources/accounts.test.ts b/tests/api-resources/accounts.test.ts
index 0b5df9a..11942fa 100644
--- a/tests/api-resources/accounts.test.ts
+++ b/tests/api-resources/accounts.test.ts
@@ -34,7 +34,10 @@ describe('resource accounts', () => {
// Prism tests are disabled
test.skip('delete: required and optional params', async () => {
- const response = await client.accounts.delete({ accountId: 'f53d2330-3795-4c5d-a1f3-453121af9c60' });
+ const response = await client.accounts.delete({
+ accountId: 'f53d2330-3795-4c5d-a1f3-453121af9c60',
+ reason: 'reason',
+ });
});
// Prism tests are disabled
@@ -80,4 +83,27 @@ describe('resource accounts', () => {
expect(dataAndResponse.data).toBe(response);
expect(dataAndResponse.response).toBe(rawResponse);
});
+
+ // Prism tests are disabled
+ test.skip('listSSOLogins: only required params', async () => {
+ const responsePromise = client.accounts.listSSOLogins({ email: 'dev@stainless.com' });
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('listSSOLogins: required and optional params', async () => {
+ const response = await client.accounts.listSSOLogins({
+ email: 'dev@stainless.com',
+ token: 'token',
+ pageSize: 0,
+ pagination: { token: 'token', pageSize: 100 },
+ returnTo: 'https://example.com',
+ });
+ });
});
diff --git a/tests/api-resources/agents.test.ts b/tests/api-resources/agents.test.ts
new file mode 100644
index 0000000..a283db7
--- /dev/null
+++ b/tests/api-resources/agents.test.ts
@@ -0,0 +1,154 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+import Gitpod from '@gitpod/sdk';
+
+const client = new Gitpod({
+ bearerToken: 'My Bearer Token',
+ baseURL: process.env['TEST_API_BASE_URL'] ?? 'http://127.0.0.1:4010',
+});
+
+describe('resource agents', () => {
+ // Prism tests are disabled
+ test.skip('createExecutionConversationToken', async () => {
+ const responsePromise = client.agents.createExecutionConversationToken({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('createPrompt', async () => {
+ const responsePromise = client.agents.createPrompt({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('deleteExecution', async () => {
+ const responsePromise = client.agents.deleteExecution({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('deletePrompt', async () => {
+ const responsePromise = client.agents.deletePrompt({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('listExecutions', async () => {
+ const responsePromise = client.agents.listExecutions({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('listPrompts', async () => {
+ const responsePromise = client.agents.listPrompts({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('retrieveExecution', async () => {
+ const responsePromise = client.agents.retrieveExecution({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('retrievePrompt', async () => {
+ const responsePromise = client.agents.retrievePrompt({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('sendToExecution', async () => {
+ const responsePromise = client.agents.sendToExecution({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('startExecution', async () => {
+ const responsePromise = client.agents.startExecution({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('stopExecution', async () => {
+ const responsePromise = client.agents.stopExecution({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('updatePrompt', async () => {
+ const responsePromise = client.agents.updatePrompt({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+});
diff --git a/tests/api-resources/editors.test.ts b/tests/api-resources/editors.test.ts
index 911417b..6979c29 100644
--- a/tests/api-resources/editors.test.ts
+++ b/tests/api-resources/editors.test.ts
@@ -59,6 +59,7 @@ describe('resource editors', () => {
editorId: 'd2c94c27-3b76-4a42-b88c-95a85e392c68',
environmentId: '07e03a28-65a5-4d98-b532-8ea67b188048',
organizationId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047',
+ version: 'version',
});
});
});
diff --git a/tests/api-resources/groups.test.ts b/tests/api-resources/errors.test.ts
similarity index 83%
rename from tests/api-resources/groups.test.ts
rename to tests/api-resources/errors.test.ts
index f87d93e..f09b290 100644
--- a/tests/api-resources/groups.test.ts
+++ b/tests/api-resources/errors.test.ts
@@ -7,10 +7,10 @@ const client = new Gitpod({
baseURL: process.env['TEST_API_BASE_URL'] ?? 'http://127.0.0.1:4010',
});
-describe('resource groups', () => {
+describe('resource errors', () => {
// Prism tests are disabled
- test.skip('list', async () => {
- const responsePromise = client.groups.list({});
+ test.skip('reportErrors', async () => {
+ const responsePromise = client.errors.reportErrors({});
const rawResponse = await responsePromise.asResponse();
expect(rawResponse).toBeInstanceOf(Response);
const response = await responsePromise;
diff --git a/tests/api-resources/groups/groups.test.ts b/tests/api-resources/groups/groups.test.ts
new file mode 100644
index 0000000..97c3ca0
--- /dev/null
+++ b/tests/api-resources/groups/groups.test.ts
@@ -0,0 +1,70 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+import Gitpod from '@gitpod/sdk';
+
+const client = new Gitpod({
+ bearerToken: 'My Bearer Token',
+ baseURL: process.env['TEST_API_BASE_URL'] ?? 'http://127.0.0.1:4010',
+});
+
+describe('resource groups', () => {
+ // Prism tests are disabled
+ test.skip('create', async () => {
+ const responsePromise = client.groups.create({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('retrieve', async () => {
+ const responsePromise = client.groups.retrieve({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('update', async () => {
+ const responsePromise = client.groups.update({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('list', async () => {
+ const responsePromise = client.groups.list({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('delete', async () => {
+ const responsePromise = client.groups.delete({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+});
diff --git a/tests/api-resources/groups/memberships.test.ts b/tests/api-resources/groups/memberships.test.ts
new file mode 100644
index 0000000..5a8f3cf
--- /dev/null
+++ b/tests/api-resources/groups/memberships.test.ts
@@ -0,0 +1,46 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+import Gitpod from '@gitpod/sdk';
+
+const client = new Gitpod({
+ bearerToken: 'My Bearer Token',
+ baseURL: process.env['TEST_API_BASE_URL'] ?? 'http://127.0.0.1:4010',
+});
+
+describe('resource memberships', () => {
+ // Prism tests are disabled
+ test.skip('create', async () => {
+ const responsePromise = client.groups.memberships.create({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('list', async () => {
+ const responsePromise = client.groups.memberships.list({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('delete', async () => {
+ const responsePromise = client.groups.memberships.delete({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+});
diff --git a/tests/api-resources/groups/role-assignments.test.ts b/tests/api-resources/groups/role-assignments.test.ts
new file mode 100644
index 0000000..5b4a4eb
--- /dev/null
+++ b/tests/api-resources/groups/role-assignments.test.ts
@@ -0,0 +1,46 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+import Gitpod from '@gitpod/sdk';
+
+const client = new Gitpod({
+ bearerToken: 'My Bearer Token',
+ baseURL: process.env['TEST_API_BASE_URL'] ?? 'http://127.0.0.1:4010',
+});
+
+describe('resource roleAssignments', () => {
+ // Prism tests are disabled
+ test.skip('create', async () => {
+ const responsePromise = client.groups.roleAssignments.create({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('list', async () => {
+ const responsePromise = client.groups.roleAssignments.list({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('delete', async () => {
+ const responsePromise = client.groups.roleAssignments.delete({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+});
diff --git a/tests/api-resources/organizations/custom-domains.test.ts b/tests/api-resources/organizations/custom-domains.test.ts
new file mode 100644
index 0000000..c3b3cac
--- /dev/null
+++ b/tests/api-resources/organizations/custom-domains.test.ts
@@ -0,0 +1,104 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+import Gitpod from '@gitpod/sdk';
+
+const client = new Gitpod({
+ bearerToken: 'My Bearer Token',
+ baseURL: process.env['TEST_API_BASE_URL'] ?? 'http://127.0.0.1:4010',
+});
+
+describe('resource customDomains', () => {
+ // Prism tests are disabled
+ test.skip('create: only required params', async () => {
+ const responsePromise = client.organizations.customDomains.create({
+ domainName: 'workspaces.acme-corp.com',
+ organizationId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047',
+ });
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('create: required and optional params', async () => {
+ const response = await client.organizations.customDomains.create({
+ domainName: 'workspaces.acme-corp.com',
+ organizationId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047',
+ awsAccountId: '123456789012',
+ cloudAccountId: 'cloudAccountId',
+ provider: 'CUSTOM_DOMAIN_PROVIDER_AWS',
+ });
+ });
+
+ // Prism tests are disabled
+ test.skip('retrieve: only required params', async () => {
+ const responsePromise = client.organizations.customDomains.retrieve({
+ organizationId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047',
+ });
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('retrieve: required and optional params', async () => {
+ const response = await client.organizations.customDomains.retrieve({
+ organizationId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047',
+ });
+ });
+
+ // Prism tests are disabled
+ test.skip('update: only required params', async () => {
+ const responsePromise = client.organizations.customDomains.update({
+ domainName: 'workspaces.acme-corp.com',
+ organizationId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047',
+ });
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('update: required and optional params', async () => {
+ const response = await client.organizations.customDomains.update({
+ domainName: 'workspaces.acme-corp.com',
+ organizationId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047',
+ awsAccountId: '987654321098',
+ cloudAccountId: 'cloudAccountId',
+ provider: 'CUSTOM_DOMAIN_PROVIDER_UNSPECIFIED',
+ });
+ });
+
+ // Prism tests are disabled
+ test.skip('delete: only required params', async () => {
+ const responsePromise = client.organizations.customDomains.delete({
+ organizationId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047',
+ });
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('delete: required and optional params', async () => {
+ const response = await client.organizations.customDomains.delete({
+ organizationId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047',
+ });
+ });
+});
diff --git a/tests/api-resources/organizations/organizations.test.ts b/tests/api-resources/organizations/organizations.test.ts
index 8ec21c3..970f752 100644
--- a/tests/api-resources/organizations/organizations.test.ts
+++ b/tests/api-resources/organizations/organizations.test.ts
@@ -143,6 +143,7 @@ describe('resource organizations', () => {
organizationId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047',
token: 'token',
pageSize: 0,
+ filter: { search: 'search' },
pagination: { token: 'token', pageSize: 20 },
});
});
diff --git a/tests/api-resources/organizations/policies.test.ts b/tests/api-resources/organizations/policies.test.ts
index c648f9d..fbbc3b8 100644
--- a/tests/api-resources/organizations/policies.test.ts
+++ b/tests/api-resources/organizations/policies.test.ts
@@ -47,16 +47,30 @@ describe('resource policies', () => {
test.skip('update: required and optional params', async () => {
const response = await client.organizations.policies.update({
organizationId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047',
+ agentPolicy: { commandDenyList: ['string'], mcpDisabled: true, scmToolsDisabled: true },
allowedEditorIds: ['string'],
allowLocalRunners: true,
defaultEditorId: 'defaultEditorId',
defaultEnvironmentImage: 'defaultEnvironmentImage',
+ deleteArchivedEnvironmentsAfter: '+9125115.360s',
+ editorVersionRestrictions: { foo: { allowedVersions: ['string'] } },
+ maximumEnvironmentLifetime: '+9125115.360s',
maximumEnvironmentsPerUser: '20',
maximumEnvironmentTimeout: '3600s',
maximumRunningEnvironmentsPerUser: '5',
membersCreateProjects: true,
membersRequireProjects: true,
portSharingDisabled: true,
+ requireCustomDomainAccess: true,
+ securityAgentPolicy: {
+ crowdstrike: {
+ additionalOptions: { foo: 'string' },
+ cidSecretId: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
+ enabled: true,
+ image: 'image',
+ tags: 'tags',
+ },
+ },
});
});
});
diff --git a/tests/api-resources/organizations/sso-configurations.test.ts b/tests/api-resources/organizations/sso-configurations.test.ts
index 1f90621..eab88b8 100644
--- a/tests/api-resources/organizations/sso-configurations.test.ts
+++ b/tests/api-resources/organizations/sso-configurations.test.ts
@@ -13,7 +13,6 @@ describe('resource ssoConfigurations', () => {
const responsePromise = client.organizations.ssoConfigurations.create({
clientId: '012345678-abcdefghijklmnopqrstuvwxyz.apps.googleusercontent.com',
clientSecret: 'GOCSPX-abcdefghijklmnopqrstuvwxyz123456',
- emailDomain: 'acme-corp.com',
issuerUrl: 'https://accounts.google.com',
organizationId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047',
});
@@ -31,9 +30,11 @@ describe('resource ssoConfigurations', () => {
const response = await client.organizations.ssoConfigurations.create({
clientId: '012345678-abcdefghijklmnopqrstuvwxyz.apps.googleusercontent.com',
clientSecret: 'GOCSPX-abcdefghijklmnopqrstuvwxyz123456',
- emailDomain: 'acme-corp.com',
issuerUrl: 'https://accounts.google.com',
organizationId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047',
+ displayName: 'displayName',
+ emailDomain: 'acme-corp.com',
+ emailDomains: ['sfN2.l.iJR-BU.u9JV9.a.m.o2D-4b-Jd.0Z-kX.L.n.S.f.UKbxB'],
});
});
@@ -79,7 +80,9 @@ describe('resource ssoConfigurations', () => {
claims: { foo: 'string' },
clientId: 'new-client-id',
clientSecret: 'new-client-secret',
+ displayName: 'displayName',
emailDomain: 'xxxx',
+ emailDomains: ['sfN2.l.iJR-BU.u9JV9.a.m.o2D-4b-Jd.0Z-kX.L.n.S.f.UKbxB'],
issuerUrl: 'https://example.com',
state: 'SSO_CONFIGURATION_STATE_UNSPECIFIED',
});
diff --git a/tests/api-resources/prebuilds.test.ts b/tests/api-resources/prebuilds.test.ts
new file mode 100644
index 0000000..4db6cc4
--- /dev/null
+++ b/tests/api-resources/prebuilds.test.ts
@@ -0,0 +1,118 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+import Gitpod from '@gitpod/sdk';
+
+const client = new Gitpod({
+ bearerToken: 'My Bearer Token',
+ baseURL: process.env['TEST_API_BASE_URL'] ?? 'http://127.0.0.1:4010',
+});
+
+describe('resource prebuilds', () => {
+ // Prism tests are disabled
+ test.skip('create: only required params', async () => {
+ const responsePromise = client.prebuilds.create({
+ projectId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047',
+ spec: {},
+ });
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('create: required and optional params', async () => {
+ const response = await client.prebuilds.create({
+ projectId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047',
+ spec: { desiredPhase: 'PREBUILD_PHASE_UNSPECIFIED', specVersion: 'specVersion', timeout: '3600s' },
+ environmentClassId: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
+ });
+ });
+
+ // Prism tests are disabled
+ test.skip('retrieve: only required params', async () => {
+ const responsePromise = client.prebuilds.retrieve({ prebuildId: '07e03a28-65a5-4d98-b532-8ea67b188048' });
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('retrieve: required and optional params', async () => {
+ const response = await client.prebuilds.retrieve({ prebuildId: '07e03a28-65a5-4d98-b532-8ea67b188048' });
+ });
+
+ // Prism tests are disabled
+ test.skip('list', async () => {
+ const responsePromise = client.prebuilds.list({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('delete: only required params', async () => {
+ const responsePromise = client.prebuilds.delete({ prebuildId: '07e03a28-65a5-4d98-b532-8ea67b188048' });
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('delete: required and optional params', async () => {
+ const response = await client.prebuilds.delete({ prebuildId: '07e03a28-65a5-4d98-b532-8ea67b188048' });
+ });
+
+ // Prism tests are disabled
+ test.skip('cancel: only required params', async () => {
+ const responsePromise = client.prebuilds.cancel({ prebuildId: '07e03a28-65a5-4d98-b532-8ea67b188048' });
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('cancel: required and optional params', async () => {
+ const response = await client.prebuilds.cancel({ prebuildId: '07e03a28-65a5-4d98-b532-8ea67b188048' });
+ });
+
+ // Prism tests are disabled
+ test.skip('createLogsToken: only required params', async () => {
+ const responsePromise = client.prebuilds.createLogsToken({
+ prebuildId: '07e03a28-65a5-4d98-b532-8ea67b188048',
+ });
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('createLogsToken: required and optional params', async () => {
+ const response = await client.prebuilds.createLogsToken({
+ prebuildId: '07e03a28-65a5-4d98-b532-8ea67b188048',
+ });
+ });
+});
diff --git a/tests/api-resources/projects/environment-clases.test.ts b/tests/api-resources/projects/environment-clases.test.ts
new file mode 100644
index 0000000..1d6fe4f
--- /dev/null
+++ b/tests/api-resources/projects/environment-clases.test.ts
@@ -0,0 +1,34 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+import Gitpod from '@gitpod/sdk';
+
+const client = new Gitpod({
+ bearerToken: 'My Bearer Token',
+ baseURL: process.env['TEST_API_BASE_URL'] ?? 'http://127.0.0.1:4010',
+});
+
+describe('resource environmentClases', () => {
+ // Prism tests are disabled
+ test.skip('update', async () => {
+ const responsePromise = client.projects.environmentClases.update({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ // Prism tests are disabled
+ test.skip('list', async () => {
+ const responsePromise = client.projects.environmentClases.list({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+});
diff --git a/tests/api-resources/projects/projects.test.ts b/tests/api-resources/projects/projects.test.ts
index 16245bf..d6d64e5 100644
--- a/tests/api-resources/projects/projects.test.ts
+++ b/tests/api-resources/projects/projects.test.ts
@@ -10,7 +10,7 @@ const client = new Gitpod({
describe('resource projects', () => {
// Prism tests are disabled
test.skip('create: only required params', async () => {
- const responsePromise = client.projects.create({ environmentClass: {}, initializer: {} });
+ const responsePromise = client.projects.create({ initializer: {} });
const rawResponse = await responsePromise.asResponse();
expect(rawResponse).toBeInstanceOf(Response);
const response = await responsePromise;
@@ -23,7 +23,6 @@ describe('resource projects', () => {
// Prism tests are disabled
test.skip('create: required and optional params', async () => {
const response = await client.projects.create({
- environmentClass: { environmentClassId: 'd2c94c27-3b76-4a42-b88c-95a85e392c68', localRunner: true },
initializer: {
specs: [
{
@@ -41,6 +40,14 @@ describe('resource projects', () => {
automationsFilePath: 'automationsFilePath',
devcontainerFilePath: 'devcontainerFilePath',
name: 'Web Application',
+ prebuildConfiguration: {
+ enabled: true,
+ enableJetbrainsWarmup: true,
+ environmentClassIds: ['182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e'],
+ executor: { id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', principal: 'PRINCIPAL_UNSPECIFIED' },
+ timeout: '+9125115.360s',
+ trigger: { dailySchedule: { hourUtc: 23 } },
+ },
technicalDescription: 'technicalDescription',
});
});
diff --git a/tests/api-resources/runners/runners.test.ts b/tests/api-resources/runners/runners.test.ts
index cd005be..9367fda 100644
--- a/tests/api-resources/runners/runners.test.ts
+++ b/tests/api-resources/runners/runners.test.ts
@@ -80,6 +80,18 @@ describe('resource runners', () => {
expect(dataAndResponse.response).toBe(rawResponse);
});
+ // Prism tests are disabled
+ test.skip('createLogsToken', async () => {
+ const responsePromise = client.runners.createLogsToken({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
// Prism tests are disabled
test.skip('createRunnerToken', async () => {
const responsePromise = client.runners.createRunnerToken({});
@@ -103,4 +115,16 @@ describe('resource runners', () => {
expect(dataAndResponse.data).toBe(response);
expect(dataAndResponse.response).toBe(rawResponse);
});
+
+ // Prism tests are disabled
+ test.skip('searchRepositories', async () => {
+ const responsePromise = client.runners.searchRepositories({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
});
diff --git a/tests/api-resources/users/users.test.ts b/tests/api-resources/users/users.test.ts
index e58134e..ca85341 100644
--- a/tests/api-resources/users/users.test.ts
+++ b/tests/api-resources/users/users.test.ts
@@ -8,6 +8,18 @@ const client = new Gitpod({
});
describe('resource users', () => {
+ // Prism tests are disabled
+ test.skip('deleteUser', async () => {
+ const responsePromise = client.users.deleteUser({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
// Prism tests are disabled
test.skip('getAuthenticatedUser', async () => {
const responsePromise = client.users.getAuthenticatedUser({});
@@ -20,6 +32,18 @@ describe('resource users', () => {
expect(dataAndResponse.response).toBe(rawResponse);
});
+ // Prism tests are disabled
+ test.skip('getUser', async () => {
+ const responsePromise = client.users.getUser({});
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
// Prism tests are disabled
test.skip('setSuspended', async () => {
const responsePromise = client.users.setSuspended({});
From 3be95ec6b6db72d76e8611b728ecdd4f6f7ab744 Mon Sep 17 00:00:00 2001
From: "stainless-app[bot]"
<142633134+stainless-app[bot]@users.noreply.github.com>
Date: Mon, 15 Dec 2025 13:54:42 +0000
Subject: [PATCH 2/4] release: 0.8.0
---
.release-please-manifest.json | 2 +-
CHANGELOG.md | 8 ++++++++
package.json | 2 +-
src/version.ts | 2 +-
4 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 7eea51c..64f3cdd 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "0.7.11"
+ ".": "0.8.0"
}
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3f5873e..f86e4aa 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,13 @@
# Changelog
+## 0.8.0 (2025-12-15)
+
+Full Changelog: [v0.7.11...v0.8.0](https://github.com/gitpod-io/gitpod-sdk-typescript/compare/v0.7.11...v0.8.0)
+
+### Features
+
+* **api:** RBAC APIs ([5888854](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/588885414cc29e94ec512952822d30f2007cbbae))
+
## 0.7.11 (2025-12-15)
Full Changelog: [v0.7.10...v0.7.11](https://github.com/gitpod-io/gitpod-sdk-typescript/compare/v0.7.10...v0.7.11)
diff --git a/package.json b/package.json
index ea70804..d491c93 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@gitpod/sdk",
- "version": "0.7.11",
+ "version": "0.8.0",
"description": "The official TypeScript library for the Gitpod API",
"author": "Gitpod ",
"types": "dist/index.d.ts",
diff --git a/src/version.ts b/src/version.ts
index 364dd7f..23f967c 100644
--- a/src/version.ts
+++ b/src/version.ts
@@ -1 +1 @@
-export const VERSION = '0.7.11'; // x-release-please-version
+export const VERSION = '0.8.0'; // x-release-please-version
From 2eb8db9b4a572b9d5ac1482273a310f9fc60e47f Mon Sep 17 00:00:00 2001
From: Milan Pavlik
Date: Mon, 15 Dec 2025 15:09:18 +0100
Subject: [PATCH 3/4] Remove unused import of RequestInfo from client.ts
---
src/client.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/client.ts b/src/client.ts
index 588c9ed..fdf88b7 100644
--- a/src/client.ts
+++ b/src/client.ts
@@ -1,6 +1,6 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-import type { RequestInit, RequestInfo, BodyInit } from './internal/builtin-types';
+import type { RequestInit, BodyInit } from './internal/builtin-types';
import type { HTTPMethod, PromiseOrValue, MergedRequestInit, FinalizedRequestInit } from './internal/types';
import { uuid4 } from './internal/utils/uuid';
import { validatePositiveInteger, isAbsoluteURL, safeJSON } from './internal/utils/values';
From d779cee5034603c803b29fa6da9504e53cac30fd Mon Sep 17 00:00:00 2001
From: Milan Pavlik
Date: Mon, 15 Dec 2025 14:18:48 +0000
Subject: [PATCH 4/4] Fix RequestInfo type conflict between errors resource and
fetch API
Rename the RequestInfo import from errors resource to ErrorRequestInfo to avoid
shadowing the global RequestInfo type needed by fetchWithTimeout method.
Co-authored-by: Ona
---
src/client.ts | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/client.ts b/src/client.ts
index fdf88b7..aef5331 100644
--- a/src/client.ts
+++ b/src/client.ts
@@ -1,6 +1,6 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-import type { RequestInit, BodyInit } from './internal/builtin-types';
+import type { RequestInit, RequestInfo, BodyInit } from './internal/builtin-types';
import type { HTTPMethod, PromiseOrValue, MergedRequestInit, FinalizedRequestInit } from './internal/types';
import { uuid4 } from './internal/utils/uuid';
import { validatePositiveInteger, isAbsoluteURL, safeJSON } from './internal/utils/values';
@@ -159,7 +159,7 @@ import {
Errors as ErrorsAPIErrors,
ExceptionInfo,
ExceptionMechanism,
- RequestInfo,
+ RequestInfo as ErrorRequestInfo,
StackFrame,
} from './resources/errors';
import {
@@ -1352,7 +1352,7 @@ export declare namespace Gitpod {
type ErrorLevel as ErrorLevel,
type ExceptionInfo as ExceptionInfo,
type ExceptionMechanism as ExceptionMechanism,
- type RequestInfo as RequestInfo,
+ type ErrorRequestInfo as RequestInfo,
type StackFrame as StackFrame,
type ErrorReportErrorsResponse as ErrorReportErrorsResponse,
type ErrorReportErrorsParams as ErrorReportErrorsParams,