diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 7d9b009..78e7f27 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.10.0" + ".": "0.11.0" } diff --git a/.stats.yml b/.stats.yml index 886c83c..04dee8d 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 170 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-2423c089f280cdf34a987d40531692097a69f4aa971c6adf9aeec4fd7984cec2.yml -openapi_spec_hash: 24037c3ab9ceca689150d07ecec7aa80 -config_hash: d726afb2a92132197e4eae04303e8041 +configured_endpoints: 172 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/gitpod%2Fgitpod-4a034f8dd3f618814ce17b264d78b40176f613d34f806f8add5425792e36c34d.yml +openapi_spec_hash: 5f1f4678b4956c4afa3ffc8539443ef7 +config_hash: dad4ee53c894c682895d6d045c4c2105 diff --git a/CHANGELOG.md b/CHANGELOG.md index bf5608e..2ee47f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## 0.11.0 (2026-01-23) + +Full Changelog: [v0.10.0...v0.11.0](https://github.com/gitpod-io/gitpod-sdk-typescript/compare/v0.10.0...v0.11.0) + +### Features + +* **api:** add announcement banner fields to organization proto ([2456204](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/2456204c95d6c25e38375e778d13c847c9e8d521)) +* **api:** add filters to ListPrebuilds for inventory page ([f338330](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/f3383301646f5548e7cc3cc2498dd162e1b64eef)) +* **api:** implement GetAnnouncementBanner and UpdateAnnouncementBanner handlers ([fe9a63c](https://github.com/gitpod-io/gitpod-sdk-typescript/commit/fe9a63c54dfabeff679a9e1c050a47706539cbd7)) + ## 0.10.0 (2026-01-21) Full Changelog: [v0.9.0...v0.10.0](https://github.com/gitpod-io/gitpod-sdk-typescript/compare/v0.9.0...v0.10.0) diff --git a/api.md b/api.md index 91689f3..2859c9c 100644 --- a/api.md +++ b/api.md @@ -355,6 +355,19 @@ Methods: - client.organizations.listMembers({ ...params }) -> OrganizationMembersMembersPage - client.organizations.setRole({ ...params }) -> unknown +## AnnouncementBanner + +Types: + +- AnnouncementBanner +- AnnouncementBannerUpdateResponse +- AnnouncementBannerGetResponse + +Methods: + +- client.organizations.announcementBanner.update({ ...params }) -> AnnouncementBannerUpdateResponse +- client.organizations.announcementBanner.get({ ...params }) -> AnnouncementBannerGetResponse + ## CustomDomains Types: diff --git a/package.json b/package.json index ccee8a2..fc55125 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@gitpod/sdk", - "version": "0.10.0", + "version": "0.11.0", "description": "The official TypeScript library for the Gitpod API", "author": "Gitpod ", "types": "dist/index.d.ts", diff --git a/src/resources/organizations/announcement-banner.ts b/src/resources/organizations/announcement-banner.ts new file mode 100644 index 0000000..ab0ee6a --- /dev/null +++ b/src/resources/organizations/announcement-banner.ts @@ -0,0 +1,139 @@ +// 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 AnnouncementBannerResource extends APIResource { + /** + * Updates the announcement banner configuration for an organization. + * + * Use this method to configure the announcement banner displayed to all users. + * Only organization admins can update the banner. Requires Enterprise tier. + * + * ### Examples + * + * - Enable announcement banner: + * + * ```yaml + * organizationId: "b0e12f6c-4c67-429d-a4a6-d9838b5da047" + * message: "Scheduled maintenance on Saturday 10pm-2am UTC" + * enabled: true + * ``` + * + * - Disable announcement banner: + * + * ```yaml + * organizationId: "b0e12f6c-4c67-429d-a4a6-d9838b5da047" + * enabled: false + * ``` + * + * @example + * ```ts + * const announcementBanner = + * await client.organizations.announcementBanner.update({ + * organizationId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047', + * }); + * ``` + */ + update( + body: AnnouncementBannerUpdateParams, + options?: RequestOptions, + ): APIPromise { + return this._client.post('/gitpod.v1.OrganizationService/UpdateAnnouncementBanner', { body, ...options }); + } + + /** + * Retrieves the announcement banner configuration for an organization. + * + * Use this method to fetch the current announcement banner settings. All + * organization members can read the banner configuration. + * + * ### Examples + * + * - Get announcement banner: + * + * ```yaml + * organizationId: "b0e12f6c-4c67-429d-a4a6-d9838b5da047" + * ``` + * + * @example + * ```ts + * const announcementBanner = + * await client.organizations.announcementBanner.get({ + * organizationId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047', + * }); + * ``` + */ + get( + body: AnnouncementBannerGetParams, + options?: RequestOptions, + ): APIPromise { + return this._client.post('/gitpod.v1.OrganizationService/GetAnnouncementBanner', { body, ...options }); + } +} + +export interface AnnouncementBanner { + /** + * organization_id is the ID of the organization + */ + organizationId: string; + + /** + * enabled controls whether the banner is displayed + */ + enabled?: boolean; + + /** + * message is the banner message displayed to users. Supports basic Markdown. + */ + message?: string; +} + +export interface AnnouncementBannerUpdateResponse { + /** + * banner is the updated announcement banner configuration + */ + banner: AnnouncementBanner; +} + +export interface AnnouncementBannerGetResponse { + /** + * banner is the announcement banner configuration + */ + banner: AnnouncementBanner; +} + +export interface AnnouncementBannerUpdateParams { + /** + * organization_id is the ID of the organization + */ + organizationId: string; + + /** + * enabled controls whether the banner is displayed + */ + enabled?: boolean | null; + + /** + * message is the banner message. Supports basic Markdown. Maximum 1000 characters. + */ + message?: string | null; +} + +export interface AnnouncementBannerGetParams { + /** + * organization_id is the ID of the organization + */ + organizationId: string; +} + +export declare namespace AnnouncementBannerResource { + export { + type AnnouncementBanner as AnnouncementBanner, + type AnnouncementBannerUpdateResponse as AnnouncementBannerUpdateResponse, + type AnnouncementBannerGetResponse as AnnouncementBannerGetResponse, + type AnnouncementBannerUpdateParams as AnnouncementBannerUpdateParams, + type AnnouncementBannerGetParams as AnnouncementBannerGetParams, + }; +} diff --git a/src/resources/organizations/index.ts b/src/resources/organizations/index.ts index 39fd7b6..8b542a7 100644 --- a/src/resources/organizations/index.ts +++ b/src/resources/organizations/index.ts @@ -1,5 +1,13 @@ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. +export { + AnnouncementBannerResource, + type AnnouncementBanner, + type AnnouncementBannerUpdateResponse, + type AnnouncementBannerGetResponse, + type AnnouncementBannerUpdateParams, + type AnnouncementBannerGetParams, +} from './announcement-banner'; export { CustomDomains, type CustomDomain, diff --git a/src/resources/organizations/organizations.ts b/src/resources/organizations/organizations.ts index 7923c53..c71a185 100644 --- a/src/resources/organizations/organizations.ts +++ b/src/resources/organizations/organizations.ts @@ -2,6 +2,15 @@ import { APIResource } from '../../core/resource'; import * as Shared from '../shared'; +import * as AnnouncementBannerAPI from './announcement-banner'; +import { + AnnouncementBanner, + AnnouncementBannerGetParams, + AnnouncementBannerGetResponse, + AnnouncementBannerResource, + AnnouncementBannerUpdateParams, + AnnouncementBannerUpdateResponse, +} from './announcement-banner'; import * as CustomDomainsAPI from './custom-domains'; import { CustomDomain, @@ -94,6 +103,8 @@ import { MembersPage, type MembersPageParams, PagePromise } from '../../core/pag import { RequestOptions } from '../../internal/request-options'; export class Organizations extends APIResource { + announcementBanner: AnnouncementBannerAPI.AnnouncementBannerResource = + new AnnouncementBannerAPI.AnnouncementBannerResource(this._client); customDomains: CustomDomainsAPI.CustomDomains = new CustomDomainsAPI.CustomDomains(this._client); domainVerifications: DomainVerificationsAPI.DomainVerifications = new DomainVerificationsAPI.DomainVerifications(this._client); @@ -939,6 +950,7 @@ export interface OrganizationSetRoleParams { role?: Shared.OrganizationRole; } +Organizations.AnnouncementBannerResource = AnnouncementBannerResource; Organizations.CustomDomains = CustomDomains; Organizations.DomainVerifications = DomainVerifications; Organizations.Invites = Invites; @@ -969,6 +981,15 @@ export declare namespace Organizations { type OrganizationSetRoleParams as OrganizationSetRoleParams, }; + export { + AnnouncementBannerResource as AnnouncementBannerResource, + type AnnouncementBanner as AnnouncementBanner, + type AnnouncementBannerUpdateResponse as AnnouncementBannerUpdateResponse, + type AnnouncementBannerGetResponse as AnnouncementBannerGetResponse, + type AnnouncementBannerUpdateParams as AnnouncementBannerUpdateParams, + type AnnouncementBannerGetParams as AnnouncementBannerGetParams, + }; + export { CustomDomains as CustomDomains, type CustomDomain as CustomDomain, diff --git a/src/resources/prebuilds.ts b/src/resources/prebuilds.ts index 195450c..5857fed 100644 --- a/src/resources/prebuilds.ts +++ b/src/resources/prebuilds.ts @@ -459,6 +459,16 @@ export namespace PrebuildListParams { * filter contains the filter options for listing prebuilds */ export interface Filter { + /** + * creator_ids filters prebuilds by who created them + */ + creatorIds?: Array; + + /** + * executor_ids filters prebuilds by whose credentials were used to run them + */ + executorIds?: Array; + /** * phases filters prebuilds by their current phase */ @@ -468,6 +478,11 @@ export namespace PrebuildListParams { * project_ids filters prebuilds to specific projects */ projectIds?: Array; + + /** + * triggered_by filters prebuilds by how they were triggered + */ + triggeredBy?: Array; } /** diff --git a/src/resources/shared.ts b/src/resources/shared.ts index d583493..37bacfe 100644 --- a/src/resources/shared.ts +++ b/src/resources/shared.ts @@ -295,7 +295,8 @@ export type ResourceType = | 'RESOURCE_TYPE_GROUP_MEMBERSHIP_CHANGED' | 'RESOURCE_TYPE_WEBHOOK' | 'RESOURCE_TYPE_SCIM_CONFIGURATION' - | 'RESOURCE_TYPE_SERVICE_ACCOUNT_SECRET'; + | 'RESOURCE_TYPE_SERVICE_ACCOUNT_SECRET' + | 'RESOURCE_TYPE_ANNOUNCEMENT_BANNER'; export interface RunsOn { docker?: RunsOn.Docker; diff --git a/src/version.ts b/src/version.ts index c2e5b96..9085e9d 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const VERSION = '0.10.0'; // x-release-please-version +export const VERSION = '0.11.0'; // x-release-please-version diff --git a/tests/api-resources/organizations/announcement-banner.test.ts b/tests/api-resources/organizations/announcement-banner.test.ts new file mode 100644 index 0000000..6724f45 --- /dev/null +++ b/tests/api-resources/organizations/announcement-banner.test.ts @@ -0,0 +1,54 @@ +// 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 announcementBanner', () => { + // Prism tests are disabled + test.skip('update: only required params', async () => { + const responsePromise = client.organizations.announcementBanner.update({ + 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.announcementBanner.update({ + organizationId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047', + enabled: false, + message: 'message', + }); + }); + + // Prism tests are disabled + test.skip('get: only required params', async () => { + const responsePromise = client.organizations.announcementBanner.get({ + 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('get: required and optional params', async () => { + const response = await client.organizations.announcementBanner.get({ + organizationId: 'b0e12f6c-4c67-429d-a4a6-d9838b5da047', + }); + }); +});