From 1c68237c9aa6c3e790391f08c793654f12787d30 Mon Sep 17 00:00:00 2001 From: Ron Cohen Date: Thu, 10 Sep 2026 13:49:36 +0200 Subject: [PATCH 1/5] feat(management-sdk): update to OpenAPI 3.1.0 --- .changeset/modern-pears-manage.md | 5 + packages/management-sdk/README.md | 39 +- .../src/generated/.openapi-generator/FILES | 8 + .../src/generated/apis/DefaultApi.ts | 421 ++++++++++++++++-- .../src/generated/models/App.ts | 2 +- .../src/generated/models/AppHeader.ts | 2 +- .../generated/models/AppHeaderCollection.ts | 2 +- .../generated/models/CreateFlag200Response.ts | 10 +- .../models/CreateFlag200ResponseFlag.ts | 2 +- .../src/generated/models/CreateFlagRequest.ts | 2 +- .../generated/models/DeleteCompanyRequest.ts | 63 +++ .../src/generated/models/EntityFlag.ts | 2 +- .../src/generated/models/EntityFlagUpdate.ts | 2 +- .../generated/models/EntityFlagsResponse.ts | 2 +- .../src/generated/models/Environment.ts | 2 +- .../src/generated/models/EnvironmentHeader.ts | 2 +- .../models/EnvironmentHeaderCollection.ts | 2 +- .../models/EnvironmentHeaderSortByColumn.ts | 2 +- .../generated/models/EnvironmentSdkAccess.ts | 2 +- .../src/generated/models/ErrorResponse.ts | 2 +- .../generated/models/ErrorResponseError.ts | 2 +- .../src/generated/models/FlagHeader.ts | 2 +- .../generated/models/FlagHeaderCollection.ts | 2 +- .../src/generated/models/FlagKeyFormat.ts | 2 +- .../src/generated/models/FlagTargeting.ts | 2 +- .../src/generated/models/FlagValue.ts | 2 +- .../generated/models/FlagValueTargeting.ts | 2 +- .../src/generated/models/OrgHeader.ts | 2 +- .../src/generated/models/ReflagUserHeader.ts | 2 +- .../src/generated/models/Schema0.ts | 46 ++ .../src/generated/models/Schema1.ts | 46 ++ .../src/generated/models/SegmentHeader.ts | 2 +- .../src/generated/models/SegmentType.ts | 2 +- .../src/generated/models/SortOrder.ts | 2 +- .../src/generated/models/StageHeader.ts | 2 +- .../generated/models/UpdateEntityFlagsBody.ts | 2 +- .../models/UpdateEntityFlagsResponse.ts | 104 +++++ .../src/generated/models/UpdateFlagRequest.ts | 2 +- .../models/UpsertCompany200Response.ts | 86 ++++ .../generated/models/UpsertCompanyRequest.ts | 78 ++++ .../generated/models/UpsertUser200Response.ts | 86 ++++ .../src/generated/models/UpsertUserRequest.ts | 78 ++++ .../src/generated/models/index.ts | 8 + .../management-sdk/src/generated/runtime.ts | 2 +- .../test/createAppClient.test.ts | 61 +++ 45 files changed, 1140 insertions(+), 59 deletions(-) create mode 100644 .changeset/modern-pears-manage.md create mode 100644 packages/management-sdk/src/generated/models/DeleteCompanyRequest.ts create mode 100644 packages/management-sdk/src/generated/models/Schema0.ts create mode 100644 packages/management-sdk/src/generated/models/Schema1.ts create mode 100644 packages/management-sdk/src/generated/models/UpdateEntityFlagsResponse.ts create mode 100644 packages/management-sdk/src/generated/models/UpsertCompany200Response.ts create mode 100644 packages/management-sdk/src/generated/models/UpsertCompanyRequest.ts create mode 100644 packages/management-sdk/src/generated/models/UpsertUser200Response.ts create mode 100644 packages/management-sdk/src/generated/models/UpsertUserRequest.ts diff --git a/.changeset/modern-pears-manage.md b/.changeset/modern-pears-manage.md new file mode 100644 index 00000000..f012fc6b --- /dev/null +++ b/.changeset/modern-pears-manage.md @@ -0,0 +1,5 @@ +--- +"@reflag/management-sdk": minor +--- + +Update the generated client to Management API 3.1.0. Add user and company upsert/delete methods, and expose flag-state versions from flag mutations. diff --git a/packages/management-sdk/README.md b/packages/management-sdk/README.md index 888b48b0..569326e6 100644 --- a/packages/management-sdk/README.md +++ b/packages/management-sdk/README.md @@ -40,6 +40,7 @@ Core method groups: - Applications: `listApps`, `getApp` - Environments: `listEnvironments`, `getEnvironment` - Flags: `listFlags`, `createFlag`, `updateFlag` +- User/company management: `upsertUser`, `deleteUser`, `upsertCompany`, `deleteCompany` - User/company evaluation: `getUserFlags`, `updateUserFlags`, `getCompanyFlags`, `updateCompanyFlags` ## Quick start @@ -127,7 +128,8 @@ console.log(flags.data); ### Create and update a flag -`createFlag` and `updateFlag` return `{ flag }` with the latest flag details. +`createFlag` and `updateFlag` return the latest flag details together with +`flagStateVersions`, keyed by environment ID. Use `null` to clear nullable fields like `description` or `ownerUserId` on update. @@ -170,6 +172,41 @@ console.log(updated.flag); // } ``` +### Create, update, and delete entities + +Use the entity management methods to synchronously manage users and companies in +an environment. Entity attributes are merged with existing attributes. + +```typescript +const company = await api.upsertCompany({ + appId: "app-123", + envId: "env-456", + companyId: "company-1", + name: "Acme, Inc.", + attributes: { plan: "enterprise", seats: 50 }, +}); + +const user = await api.upsertUser({ + appId: "app-123", + envId: "env-456", + userId: "user-1", + name: "Jane Doe", + attributes: { role: "admin" }, +}); + +await api.deleteUser({ + appId: "app-123", + envId: "env-456", + userId: user.id, +}); +await api.deleteCompany({ + appId: "app-123", + envId: "env-456", + companyId: company.id, + deleteUsers: false, +}); +``` + ### Read user flags for an environment `getUserFlags` evaluates flag results for one user in one environment and returns diff --git a/packages/management-sdk/src/generated/.openapi-generator/FILES b/packages/management-sdk/src/generated/.openapi-generator/FILES index f8105a66..1c123e8d 100644 --- a/packages/management-sdk/src/generated/.openapi-generator/FILES +++ b/packages/management-sdk/src/generated/.openapi-generator/FILES @@ -8,6 +8,7 @@ models/AppHeaderCollection.ts models/CreateFlag200Response.ts models/CreateFlag200ResponseFlag.ts models/CreateFlagRequest.ts +models/DeleteCompanyRequest.ts models/EntityFlag.ts models/EntityFlagUpdate.ts models/EntityFlagsResponse.ts @@ -26,11 +27,18 @@ models/FlagValue.ts models/FlagValueTargeting.ts models/OrgHeader.ts models/ReflagUserHeader.ts +models/Schema0.ts +models/Schema1.ts models/SegmentHeader.ts models/SegmentType.ts models/SortOrder.ts models/StageHeader.ts models/UpdateEntityFlagsBody.ts +models/UpdateEntityFlagsResponse.ts models/UpdateFlagRequest.ts +models/UpsertCompany200Response.ts +models/UpsertCompanyRequest.ts +models/UpsertUser200Response.ts +models/UpsertUserRequest.ts models/index.ts runtime.ts diff --git a/packages/management-sdk/src/generated/apis/DefaultApi.ts b/packages/management-sdk/src/generated/apis/DefaultApi.ts index 9559bd04..5315ca63 100644 --- a/packages/management-sdk/src/generated/apis/DefaultApi.ts +++ b/packages/management-sdk/src/generated/apis/DefaultApi.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -19,6 +19,7 @@ import type { AppHeaderCollection, CreateFlag200Response, CreateFlagRequest, + DeleteCompanyRequest, EntityFlagsResponse, Environment, EnvironmentHeaderCollection, @@ -28,7 +29,12 @@ import type { FlagTargeting, SortOrder, UpdateEntityFlagsBody, + UpdateEntityFlagsResponse, UpdateFlagRequest, + UpsertCompany200Response, + UpsertCompanyRequest, + UpsertUser200Response, + UpsertUserRequest, } from '../models/index'; import { AppFromJSON, @@ -39,6 +45,8 @@ import { CreateFlag200ResponseToJSON, CreateFlagRequestFromJSON, CreateFlagRequestToJSON, + DeleteCompanyRequestFromJSON, + DeleteCompanyRequestToJSON, EntityFlagsResponseFromJSON, EntityFlagsResponseToJSON, EnvironmentFromJSON, @@ -57,14 +65,36 @@ import { SortOrderToJSON, UpdateEntityFlagsBodyFromJSON, UpdateEntityFlagsBodyToJSON, + UpdateEntityFlagsResponseFromJSON, + UpdateEntityFlagsResponseToJSON, UpdateFlagRequestFromJSON, UpdateFlagRequestToJSON, + UpsertCompany200ResponseFromJSON, + UpsertCompany200ResponseToJSON, + UpsertCompanyRequestFromJSON, + UpsertCompanyRequestToJSON, + UpsertUser200ResponseFromJSON, + UpsertUser200ResponseToJSON, + UpsertUserRequestFromJSON, + UpsertUserRequestToJSON, } from '../models/index'; export interface CreateFlagOperationRequest extends CreateFlagRequest { appId: string; } +export interface DeleteCompanyOperationRequest extends DeleteCompanyRequest { + appId: string; + envId: string; + companyId: string; +} + +export interface DeleteUserRequest { + appId: string; + envId: string; + userId: string; +} + export interface GetAppRequest { appId: string; } @@ -123,6 +153,18 @@ export interface UpdateUserFlagsRequest extends UpdateEntityFlagsBody { userId: string; } +export interface UpsertCompanyOperationRequest extends UpsertCompanyRequest { + appId: string; + envId: string; + companyId: string; +} + +export interface UpsertUserOperationRequest extends UpsertUserRequest { + appId: string; + envId: string; + userId: string; +} + /** * DefaultApi - interface * @@ -130,7 +172,7 @@ export interface UpdateUserFlagsRequest extends UpdateEntityFlagsBody { */ export interface DefaultApiInterface { /** - * Create a new flag in the application. Returns the created flag details. + * Create a new flag in the application. Returns the created flag and the resulting flag-state version for every environment. * @summary Create a flag * @param requestParameters Request parameters for this operation. * @throws {RequiredError} @@ -138,11 +180,39 @@ export interface DefaultApiInterface { createFlagRaw(requestParameters: CreateFlagOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; /** - * Create a new flag in the application. Returns the created flag details. + * Create a new flag in the application. Returns the created flag and the resulting flag-state version for every environment. * Create a flag */ createFlag(requestParameters: CreateFlagOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** + * Synchronously delete a company and its related data from an environment. Requires the `write:entities` API key scope or admin member access. By default, users that belong only to this company are also deleted; set `deleteUsers` to false to preserve them. Users that belong to other companies are always preserved. + * @summary Delete a company + * @param requestParameters Request parameters for this operation. + * @throws {RequiredError} + */ + deleteCompanyRaw(requestParameters: DeleteCompanyOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + + /** + * Synchronously delete a company and its related data from an environment. Requires the `write:entities` API key scope or admin member access. By default, users that belong only to this company are also deleted; set `deleteUsers` to false to preserve them. Users that belong to other companies are always preserved. + * Delete a company + */ + deleteCompany(requestParameters: DeleteCompanyOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + + /** + * Synchronously delete a user and its related data, including company memberships, from an environment. Requires the `write:entities` API key scope or admin member access. + * @summary Delete a user + * @param requestParameters Request parameters for this operation. + * @throws {RequiredError} + */ + deleteUserRaw(requestParameters: DeleteUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + + /** + * Synchronously delete a user and its related data, including company memberships, from an environment. Requires the `write:entities` API key scope or admin member access. + * Delete a user + */ + deleteUser(requestParameters: DeleteUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + /** * Retrieve a specific application by its identifier * @summary Get details of an application @@ -256,21 +326,21 @@ export interface DefaultApiInterface { listFlags(requestParameters: ListFlagsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; /** - * Update specific targeting for flags for a company in an environment + * Update specific targeting for flags for a company in an environment. Returns the environment flag-state version containing the completed update. * @summary Update flag targeting for a company * @param requestParameters Request parameters for this operation. * @throws {RequiredError} */ - updateCompanyFlagsRaw(requestParameters: UpdateCompanyFlagsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + updateCompanyFlagsRaw(requestParameters: UpdateCompanyFlagsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; /** - * Update specific targeting for flags for a company in an environment + * Update specific targeting for flags for a company in an environment. Returns the environment flag-state version containing the completed update. * Update flag targeting for a company */ - updateCompanyFlags(requestParameters: UpdateCompanyFlagsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + updateCompanyFlags(requestParameters: UpdateCompanyFlagsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; /** - * Update an existing flag + * Update an existing flag. Returns the current flag-state version for every environment, including any versions advanced by this update. * @summary Update a flag * @param requestParameters Request parameters for this operation. * @throws {RequiredError} @@ -278,24 +348,52 @@ export interface DefaultApiInterface { updateFlagRaw(requestParameters: UpdateFlagOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; /** - * Update an existing flag + * Update an existing flag. Returns the current flag-state version for every environment, including any versions advanced by this update. * Update a flag */ updateFlag(requestParameters: UpdateFlagOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; /** - * Update specific targeting for flags for a user in an environment + * Update specific targeting for flags for a user in an environment. Returns the environment flag-state version containing the completed update. * @summary Update flag targeting for a user * @param requestParameters Request parameters for this operation. * @throws {RequiredError} */ - updateUserFlagsRaw(requestParameters: UpdateUserFlagsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + updateUserFlagsRaw(requestParameters: UpdateUserFlagsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; /** - * Update specific targeting for flags for a user in an environment + * Update specific targeting for flags for a user in an environment. Returns the environment flag-state version containing the completed update. * Update flag targeting for a user */ - updateUserFlags(requestParameters: UpdateUserFlagsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + updateUserFlags(requestParameters: UpdateUserFlagsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + + /** + * Synchronously create or update a company in an environment. Requires the `write:entities` API key scope or admin member access. This scope also grants deletion through the corresponding entity DELETE endpoints, but does not grant membership changes or flag targeting; grant `write:flag:targeting` separately to assign flags and `read` for GET requests. Attributes accept JSON values and are normalized and merged using the same rules as ingestion. Recognized name and avatar attributes also update the corresponding company fields; top-level `name` takes precedence over name attributes. Omitting a field preserves its existing value. New companies may omit all fields. When this request succeeds, a subsequent company targeting request can read the company. Flag configuration propagation to SDKs is independent. Delayed ingestion writes may later replace overlapping values because the last database writer wins. + * @summary Create or update a company + * @param requestParameters Request parameters for this operation. + * @throws {RequiredError} + */ + upsertCompanyRaw(requestParameters: UpsertCompanyOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + + /** + * Synchronously create or update a company in an environment. Requires the `write:entities` API key scope or admin member access. This scope also grants deletion through the corresponding entity DELETE endpoints, but does not grant membership changes or flag targeting; grant `write:flag:targeting` separately to assign flags and `read` for GET requests. Attributes accept JSON values and are normalized and merged using the same rules as ingestion. Recognized name and avatar attributes also update the corresponding company fields; top-level `name` takes precedence over name attributes. Omitting a field preserves its existing value. New companies may omit all fields. When this request succeeds, a subsequent company targeting request can read the company. Flag configuration propagation to SDKs is independent. Delayed ingestion writes may later replace overlapping values because the last database writer wins. + * Create or update a company + */ + upsertCompany(requestParameters: UpsertCompanyOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; + + /** + * Synchronously create or update a user in an environment. Requires the `write:entities` API key scope or admin member access. This scope also grants deletion through the corresponding entity DELETE endpoints, but does not grant membership changes or flag targeting; grant `write:flag:targeting` separately to assign flags and `read` for GET requests. Attributes accept JSON values and are normalized and merged using the same rules as ingestion. Recognized name, email, and avatar attributes also update the corresponding user fields; top-level `name` takes precedence over name attributes. Omitting a field preserves its existing value. New users may omit all fields. When this request succeeds, a subsequent user targeting request can read the user. Flag configuration propagation to SDKs is independent. Delayed ingestion writes may later replace overlapping values because the last database writer wins. + * @summary Create or update a user + * @param requestParameters Request parameters for this operation. + * @throws {RequiredError} + */ + upsertUserRaw(requestParameters: UpsertUserOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>; + + /** + * Synchronously create or update a user in an environment. Requires the `write:entities` API key scope or admin member access. This scope also grants deletion through the corresponding entity DELETE endpoints, but does not grant membership changes or flag targeting; grant `write:flag:targeting` separately to assign flags and `read` for GET requests. Attributes accept JSON values and are normalized and merged using the same rules as ingestion. Recognized name, email, and avatar attributes also update the corresponding user fields; top-level `name` takes precedence over name attributes. Omitting a field preserves its existing value. New users may omit all fields. When this request succeeds, a subsequent user targeting request can read the user. Flag configuration propagation to SDKs is independent. Delayed ingestion writes may later replace overlapping values because the last database writer wins. + * Create or update a user + */ + upsertUser(requestParameters: UpsertUserOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise; } @@ -305,7 +403,7 @@ export interface DefaultApiInterface { export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface { /** - * Create a new flag in the application. Returns the created flag details. + * Create a new flag in the application. Returns the created flag and the resulting flag-state version for every environment. * Create a flag */ async createFlagRaw(requestParameters: CreateFlagOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { @@ -354,7 +452,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface { } /** - * Create a new flag in the application. Returns the created flag details. + * Create a new flag in the application. Returns the created flag and the resulting flag-state version for every environment. * Create a flag */ async createFlag(requestParameters: CreateFlagOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { @@ -362,6 +460,137 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface { return await response.value(); } + /** + * Synchronously delete a company and its related data from an environment. Requires the `write:entities` API key scope or admin member access. By default, users that belong only to this company are also deleted; set `deleteUsers` to false to preserve them. Users that belong to other companies are always preserved. + * Delete a company + */ + async deleteCompanyRaw(requestParameters: DeleteCompanyOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['appId'] == null) { + throw new runtime.RequiredError( + 'appId', + 'Required parameter "appId" was null or undefined when calling deleteCompany().' + ); + } + + if (requestParameters['envId'] == null) { + throw new runtime.RequiredError( + 'envId', + 'Required parameter "envId" was null or undefined when calling deleteCompany().' + ); + } + + if (requestParameters['companyId'] == null) { + throw new runtime.RequiredError( + 'companyId', + 'Required parameter "companyId" was null or undefined when calling deleteCompany().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("APIKey", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/apps/{appId}/envs/{envId}/companies/{companyId}`; + urlPath = urlPath.replace(`{${"appId"}}`, encodeURIComponent(String(requestParameters['appId']))); + urlPath = urlPath.replace(`{${"envId"}}`, encodeURIComponent(String(requestParameters['envId']))); + urlPath = urlPath.replace(`{${"companyId"}}`, encodeURIComponent(String(requestParameters['companyId']))); + + const response = await this.request({ + path: urlPath, + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + body: DeleteCompanyRequestToJSON({ + deleteUsers: requestParameters['deleteUsers'], + }), + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * Synchronously delete a company and its related data from an environment. Requires the `write:entities` API key scope or admin member access. By default, users that belong only to this company are also deleted; set `deleteUsers` to false to preserve them. Users that belong to other companies are always preserved. + * Delete a company + */ + async deleteCompany(requestParameters: DeleteCompanyOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.deleteCompanyRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Synchronously delete a user and its related data, including company memberships, from an environment. Requires the `write:entities` API key scope or admin member access. + * Delete a user + */ + async deleteUserRaw(requestParameters: DeleteUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['appId'] == null) { + throw new runtime.RequiredError( + 'appId', + 'Required parameter "appId" was null or undefined when calling deleteUser().' + ); + } + + if (requestParameters['envId'] == null) { + throw new runtime.RequiredError( + 'envId', + 'Required parameter "envId" was null or undefined when calling deleteUser().' + ); + } + + if (requestParameters['userId'] == null) { + throw new runtime.RequiredError( + 'userId', + 'Required parameter "userId" was null or undefined when calling deleteUser().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("APIKey", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/apps/{appId}/envs/{envId}/users/{userId}`; + urlPath = urlPath.replace(`{${"appId"}}`, encodeURIComponent(String(requestParameters['appId']))); + urlPath = urlPath.replace(`{${"envId"}}`, encodeURIComponent(String(requestParameters['envId']))); + urlPath = urlPath.replace(`{${"userId"}}`, encodeURIComponent(String(requestParameters['userId']))); + + const response = await this.request({ + path: urlPath, + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * Synchronously delete a user and its related data, including company memberships, from an environment. Requires the `write:entities` API key scope or admin member access. + * Delete a user + */ + async deleteUser(requestParameters: DeleteUserRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.deleteUserRaw(requestParameters, initOverrides); + return await response.value(); + } + /** * Retrieve a specific application by its identifier * Get details of an application @@ -799,10 +1028,10 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface { } /** - * Update specific targeting for flags for a company in an environment + * Update specific targeting for flags for a company in an environment. Returns the environment flag-state version containing the completed update. * Update flag targeting for a company */ - async updateCompanyFlagsRaw(requestParameters: UpdateCompanyFlagsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + async updateCompanyFlagsRaw(requestParameters: UpdateCompanyFlagsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { if (requestParameters['appId'] == null) { throw new runtime.RequiredError( 'appId', @@ -856,20 +1085,20 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface { }), }, initOverrides); - return new runtime.JSONApiResponse(response, (jsonValue) => EntityFlagsResponseFromJSON(jsonValue)); + return new runtime.JSONApiResponse(response, (jsonValue) => UpdateEntityFlagsResponseFromJSON(jsonValue)); } /** - * Update specific targeting for flags for a company in an environment + * Update specific targeting for flags for a company in an environment. Returns the environment flag-state version containing the completed update. * Update flag targeting for a company */ - async updateCompanyFlags(requestParameters: UpdateCompanyFlagsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + async updateCompanyFlags(requestParameters: UpdateCompanyFlagsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { const response = await this.updateCompanyFlagsRaw(requestParameters, initOverrides); return await response.value(); } /** - * Update an existing flag + * Update an existing flag. Returns the current flag-state version for every environment, including any versions advanced by this update. * Update a flag */ async updateFlagRaw(requestParameters: UpdateFlagOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { @@ -926,7 +1155,7 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface { } /** - * Update an existing flag + * Update an existing flag. Returns the current flag-state version for every environment, including any versions advanced by this update. * Update a flag */ async updateFlag(requestParameters: UpdateFlagOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { @@ -935,10 +1164,10 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface { } /** - * Update specific targeting for flags for a user in an environment + * Update specific targeting for flags for a user in an environment. Returns the environment flag-state version containing the completed update. * Update flag targeting for a user */ - async updateUserFlagsRaw(requestParameters: UpdateUserFlagsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + async updateUserFlagsRaw(requestParameters: UpdateUserFlagsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { if (requestParameters['appId'] == null) { throw new runtime.RequiredError( 'appId', @@ -992,16 +1221,154 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface { }), }, initOverrides); - return new runtime.JSONApiResponse(response, (jsonValue) => EntityFlagsResponseFromJSON(jsonValue)); + return new runtime.JSONApiResponse(response, (jsonValue) => UpdateEntityFlagsResponseFromJSON(jsonValue)); } /** - * Update specific targeting for flags for a user in an environment + * Update specific targeting for flags for a user in an environment. Returns the environment flag-state version containing the completed update. * Update flag targeting for a user */ - async updateUserFlags(requestParameters: UpdateUserFlagsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + async updateUserFlags(requestParameters: UpdateUserFlagsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { const response = await this.updateUserFlagsRaw(requestParameters, initOverrides); return await response.value(); } + /** + * Synchronously create or update a company in an environment. Requires the `write:entities` API key scope or admin member access. This scope also grants deletion through the corresponding entity DELETE endpoints, but does not grant membership changes or flag targeting; grant `write:flag:targeting` separately to assign flags and `read` for GET requests. Attributes accept JSON values and are normalized and merged using the same rules as ingestion. Recognized name and avatar attributes also update the corresponding company fields; top-level `name` takes precedence over name attributes. Omitting a field preserves its existing value. New companies may omit all fields. When this request succeeds, a subsequent company targeting request can read the company. Flag configuration propagation to SDKs is independent. Delayed ingestion writes may later replace overlapping values because the last database writer wins. + * Create or update a company + */ + async upsertCompanyRaw(requestParameters: UpsertCompanyOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['appId'] == null) { + throw new runtime.RequiredError( + 'appId', + 'Required parameter "appId" was null or undefined when calling upsertCompany().' + ); + } + + if (requestParameters['envId'] == null) { + throw new runtime.RequiredError( + 'envId', + 'Required parameter "envId" was null or undefined when calling upsertCompany().' + ); + } + + if (requestParameters['companyId'] == null) { + throw new runtime.RequiredError( + 'companyId', + 'Required parameter "companyId" was null or undefined when calling upsertCompany().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("APIKey", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/apps/{appId}/envs/{envId}/companies/{companyId}`; + urlPath = urlPath.replace(`{${"appId"}}`, encodeURIComponent(String(requestParameters['appId']))); + urlPath = urlPath.replace(`{${"envId"}}`, encodeURIComponent(String(requestParameters['envId']))); + urlPath = urlPath.replace(`{${"companyId"}}`, encodeURIComponent(String(requestParameters['companyId']))); + + const response = await this.request({ + path: urlPath, + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: UpsertCompanyRequestToJSON({ + name: requestParameters['name'], + attributes: requestParameters['attributes'], + }), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => UpsertCompany200ResponseFromJSON(jsonValue)); + } + + /** + * Synchronously create or update a company in an environment. Requires the `write:entities` API key scope or admin member access. This scope also grants deletion through the corresponding entity DELETE endpoints, but does not grant membership changes or flag targeting; grant `write:flag:targeting` separately to assign flags and `read` for GET requests. Attributes accept JSON values and are normalized and merged using the same rules as ingestion. Recognized name and avatar attributes also update the corresponding company fields; top-level `name` takes precedence over name attributes. Omitting a field preserves its existing value. New companies may omit all fields. When this request succeeds, a subsequent company targeting request can read the company. Flag configuration propagation to SDKs is independent. Delayed ingestion writes may later replace overlapping values because the last database writer wins. + * Create or update a company + */ + async upsertCompany(requestParameters: UpsertCompanyOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.upsertCompanyRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Synchronously create or update a user in an environment. Requires the `write:entities` API key scope or admin member access. This scope also grants deletion through the corresponding entity DELETE endpoints, but does not grant membership changes or flag targeting; grant `write:flag:targeting` separately to assign flags and `read` for GET requests. Attributes accept JSON values and are normalized and merged using the same rules as ingestion. Recognized name, email, and avatar attributes also update the corresponding user fields; top-level `name` takes precedence over name attributes. Omitting a field preserves its existing value. New users may omit all fields. When this request succeeds, a subsequent user targeting request can read the user. Flag configuration propagation to SDKs is independent. Delayed ingestion writes may later replace overlapping values because the last database writer wins. + * Create or update a user + */ + async upsertUserRaw(requestParameters: UpsertUserOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['appId'] == null) { + throw new runtime.RequiredError( + 'appId', + 'Required parameter "appId" was null or undefined when calling upsertUser().' + ); + } + + if (requestParameters['envId'] == null) { + throw new runtime.RequiredError( + 'envId', + 'Required parameter "envId" was null or undefined when calling upsertUser().' + ); + } + + if (requestParameters['userId'] == null) { + throw new runtime.RequiredError( + 'userId', + 'Required parameter "userId" was null or undefined when calling upsertUser().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + if (this.configuration && this.configuration.accessToken) { + const token = this.configuration.accessToken; + const tokenString = await token("APIKey", []); + + if (tokenString) { + headerParameters["Authorization"] = `Bearer ${tokenString}`; + } + } + + let urlPath = `/apps/{appId}/envs/{envId}/users/{userId}`; + urlPath = urlPath.replace(`{${"appId"}}`, encodeURIComponent(String(requestParameters['appId']))); + urlPath = urlPath.replace(`{${"envId"}}`, encodeURIComponent(String(requestParameters['envId']))); + urlPath = urlPath.replace(`{${"userId"}}`, encodeURIComponent(String(requestParameters['userId']))); + + const response = await this.request({ + path: urlPath, + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: UpsertUserRequestToJSON({ + name: requestParameters['name'], + attributes: requestParameters['attributes'], + }), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => UpsertUser200ResponseFromJSON(jsonValue)); + } + + /** + * Synchronously create or update a user in an environment. Requires the `write:entities` API key scope or admin member access. This scope also grants deletion through the corresponding entity DELETE endpoints, but does not grant membership changes or flag targeting; grant `write:flag:targeting` separately to assign flags and `read` for GET requests. Attributes accept JSON values and are normalized and merged using the same rules as ingestion. Recognized name, email, and avatar attributes also update the corresponding user fields; top-level `name` takes precedence over name attributes. Omitting a field preserves its existing value. New users may omit all fields. When this request succeeds, a subsequent user targeting request can read the user. Flag configuration propagation to SDKs is independent. Delayed ingestion writes may later replace overlapping values because the last database writer wins. + * Create or update a user + */ + async upsertUser(requestParameters: UpsertUserOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.upsertUserRaw(requestParameters, initOverrides); + return await response.value(); + } + } diff --git a/packages/management-sdk/src/generated/models/App.ts b/packages/management-sdk/src/generated/models/App.ts index 8cac4a13..a7bca7d2 100644 --- a/packages/management-sdk/src/generated/models/App.ts +++ b/packages/management-sdk/src/generated/models/App.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/AppHeader.ts b/packages/management-sdk/src/generated/models/AppHeader.ts index 98178099..58d7190c 100644 --- a/packages/management-sdk/src/generated/models/AppHeader.ts +++ b/packages/management-sdk/src/generated/models/AppHeader.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/AppHeaderCollection.ts b/packages/management-sdk/src/generated/models/AppHeaderCollection.ts index 1aee7314..41f8bf9f 100644 --- a/packages/management-sdk/src/generated/models/AppHeaderCollection.ts +++ b/packages/management-sdk/src/generated/models/AppHeaderCollection.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/CreateFlag200Response.ts b/packages/management-sdk/src/generated/models/CreateFlag200Response.ts index a2da0365..6bd9b684 100644 --- a/packages/management-sdk/src/generated/models/CreateFlag200Response.ts +++ b/packages/management-sdk/src/generated/models/CreateFlag200Response.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). @@ -31,6 +31,11 @@ export interface CreateFlag200Response { * @type {CreateFlag200ResponseFlag} */ flag: CreateFlag200ResponseFlag; + /** + * Current flag-state version keyed by environment ID + * @type {{ [key: string]: number; }} + */ + flagStateVersions: { [key: string]: number; }; } /** @@ -38,6 +43,7 @@ export interface CreateFlag200Response { */ export function instanceOfCreateFlag200Response(value: object): value is CreateFlag200Response { if (!('flag' in value) || value['flag'] === undefined) return false; + if (!('flagStateVersions' in value) || value['flagStateVersions'] === undefined) return false; return true; } @@ -52,6 +58,7 @@ export function CreateFlag200ResponseFromJSONTyped(json: any, ignoreDiscriminato return { 'flag': CreateFlag200ResponseFlagFromJSON(json['flag']), + 'flagStateVersions': json['flagStateVersions'], }; } @@ -67,6 +74,7 @@ export function CreateFlag200ResponseToJSONTyped(value?: CreateFlag200Response | return { 'flag': CreateFlag200ResponseFlagToJSON(value['flag']), + 'flagStateVersions': value['flagStateVersions'], }; } diff --git a/packages/management-sdk/src/generated/models/CreateFlag200ResponseFlag.ts b/packages/management-sdk/src/generated/models/CreateFlag200ResponseFlag.ts index d718e543..191c55f3 100644 --- a/packages/management-sdk/src/generated/models/CreateFlag200ResponseFlag.ts +++ b/packages/management-sdk/src/generated/models/CreateFlag200ResponseFlag.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/CreateFlagRequest.ts b/packages/management-sdk/src/generated/models/CreateFlagRequest.ts index 19e9c877..a3235615 100644 --- a/packages/management-sdk/src/generated/models/CreateFlagRequest.ts +++ b/packages/management-sdk/src/generated/models/CreateFlagRequest.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/DeleteCompanyRequest.ts b/packages/management-sdk/src/generated/models/DeleteCompanyRequest.ts new file mode 100644 index 00000000..4190f5ce --- /dev/null +++ b/packages/management-sdk/src/generated/models/DeleteCompanyRequest.ts @@ -0,0 +1,63 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Reflag Management API + * Feature flag Management API + * + * The version of the OpenAPI document: 3.1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @interface DeleteCompanyRequest + */ +export interface DeleteCompanyRequest { + /** + * + * @type {boolean} + */ + deleteUsers?: boolean; +} + +/** + * Check if a given object implements the DeleteCompanyRequest interface. + */ +export function instanceOfDeleteCompanyRequest(value: object): value is DeleteCompanyRequest { + return true; +} + +export function DeleteCompanyRequestFromJSON(json: any): DeleteCompanyRequest { + return DeleteCompanyRequestFromJSONTyped(json, false); +} + +export function DeleteCompanyRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): DeleteCompanyRequest { + if (json == null) { + return json; + } + return { + + 'deleteUsers': json['deleteUsers'] == null ? undefined : json['deleteUsers'], + }; +} + +export function DeleteCompanyRequestToJSON(json: any): DeleteCompanyRequest { + return DeleteCompanyRequestToJSONTyped(json, false); +} + +export function DeleteCompanyRequestToJSONTyped(value?: DeleteCompanyRequest | null, ignoreDiscriminator: boolean = false): any { + if (value == null) { + return value; + } + + return { + + 'deleteUsers': value['deleteUsers'], + }; +} + diff --git a/packages/management-sdk/src/generated/models/EntityFlag.ts b/packages/management-sdk/src/generated/models/EntityFlag.ts index ec56b2af..f8fdc4f9 100644 --- a/packages/management-sdk/src/generated/models/EntityFlag.ts +++ b/packages/management-sdk/src/generated/models/EntityFlag.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/EntityFlagUpdate.ts b/packages/management-sdk/src/generated/models/EntityFlagUpdate.ts index d6987408..b58a63fa 100644 --- a/packages/management-sdk/src/generated/models/EntityFlagUpdate.ts +++ b/packages/management-sdk/src/generated/models/EntityFlagUpdate.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/EntityFlagsResponse.ts b/packages/management-sdk/src/generated/models/EntityFlagsResponse.ts index 035319c9..ae5d26ec 100644 --- a/packages/management-sdk/src/generated/models/EntityFlagsResponse.ts +++ b/packages/management-sdk/src/generated/models/EntityFlagsResponse.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/Environment.ts b/packages/management-sdk/src/generated/models/Environment.ts index 10a0b568..065cb240 100644 --- a/packages/management-sdk/src/generated/models/Environment.ts +++ b/packages/management-sdk/src/generated/models/Environment.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/EnvironmentHeader.ts b/packages/management-sdk/src/generated/models/EnvironmentHeader.ts index 4acfd81a..b2bc6e83 100644 --- a/packages/management-sdk/src/generated/models/EnvironmentHeader.ts +++ b/packages/management-sdk/src/generated/models/EnvironmentHeader.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/EnvironmentHeaderCollection.ts b/packages/management-sdk/src/generated/models/EnvironmentHeaderCollection.ts index 3bafbf34..96ffce0f 100644 --- a/packages/management-sdk/src/generated/models/EnvironmentHeaderCollection.ts +++ b/packages/management-sdk/src/generated/models/EnvironmentHeaderCollection.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/EnvironmentHeaderSortByColumn.ts b/packages/management-sdk/src/generated/models/EnvironmentHeaderSortByColumn.ts index 723eab85..0f850871 100644 --- a/packages/management-sdk/src/generated/models/EnvironmentHeaderSortByColumn.ts +++ b/packages/management-sdk/src/generated/models/EnvironmentHeaderSortByColumn.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/EnvironmentSdkAccess.ts b/packages/management-sdk/src/generated/models/EnvironmentSdkAccess.ts index 91740129..1a1a7ca9 100644 --- a/packages/management-sdk/src/generated/models/EnvironmentSdkAccess.ts +++ b/packages/management-sdk/src/generated/models/EnvironmentSdkAccess.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/ErrorResponse.ts b/packages/management-sdk/src/generated/models/ErrorResponse.ts index f22fe326..d89b7a8e 100644 --- a/packages/management-sdk/src/generated/models/ErrorResponse.ts +++ b/packages/management-sdk/src/generated/models/ErrorResponse.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/ErrorResponseError.ts b/packages/management-sdk/src/generated/models/ErrorResponseError.ts index 02496be1..082a25bd 100644 --- a/packages/management-sdk/src/generated/models/ErrorResponseError.ts +++ b/packages/management-sdk/src/generated/models/ErrorResponseError.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/FlagHeader.ts b/packages/management-sdk/src/generated/models/FlagHeader.ts index 81d43bd8..775b32e0 100644 --- a/packages/management-sdk/src/generated/models/FlagHeader.ts +++ b/packages/management-sdk/src/generated/models/FlagHeader.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/FlagHeaderCollection.ts b/packages/management-sdk/src/generated/models/FlagHeaderCollection.ts index 6297f976..9585db8c 100644 --- a/packages/management-sdk/src/generated/models/FlagHeaderCollection.ts +++ b/packages/management-sdk/src/generated/models/FlagHeaderCollection.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/FlagKeyFormat.ts b/packages/management-sdk/src/generated/models/FlagKeyFormat.ts index 2d671a5b..fe8c1479 100644 --- a/packages/management-sdk/src/generated/models/FlagKeyFormat.ts +++ b/packages/management-sdk/src/generated/models/FlagKeyFormat.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/FlagTargeting.ts b/packages/management-sdk/src/generated/models/FlagTargeting.ts index 59e124ae..e40f8667 100644 --- a/packages/management-sdk/src/generated/models/FlagTargeting.ts +++ b/packages/management-sdk/src/generated/models/FlagTargeting.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/FlagValue.ts b/packages/management-sdk/src/generated/models/FlagValue.ts index be0b5a9a..308f3a01 100644 --- a/packages/management-sdk/src/generated/models/FlagValue.ts +++ b/packages/management-sdk/src/generated/models/FlagValue.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/FlagValueTargeting.ts b/packages/management-sdk/src/generated/models/FlagValueTargeting.ts index f72495f1..b5d0266c 100644 --- a/packages/management-sdk/src/generated/models/FlagValueTargeting.ts +++ b/packages/management-sdk/src/generated/models/FlagValueTargeting.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/OrgHeader.ts b/packages/management-sdk/src/generated/models/OrgHeader.ts index f747b528..917d6f3c 100644 --- a/packages/management-sdk/src/generated/models/OrgHeader.ts +++ b/packages/management-sdk/src/generated/models/OrgHeader.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/ReflagUserHeader.ts b/packages/management-sdk/src/generated/models/ReflagUserHeader.ts index 8adbbeb9..6fd6ba95 100644 --- a/packages/management-sdk/src/generated/models/ReflagUserHeader.ts +++ b/packages/management-sdk/src/generated/models/ReflagUserHeader.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/Schema0.ts b/packages/management-sdk/src/generated/models/Schema0.ts new file mode 100644 index 00000000..7340454f --- /dev/null +++ b/packages/management-sdk/src/generated/models/Schema0.ts @@ -0,0 +1,46 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Reflag Management API + * Feature flag Management API + * + * The version of the OpenAPI document: 3.1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; + +/** + * + * @interface Schema0 + */ +export interface Schema0 { +} + +/** + * Check if a given object implements the Schema0 interface. + */ +export function instanceOfSchema0(value: object): value is Schema0 { + return true; +} + +export function Schema0FromJSON(json: any): Schema0 { + return Schema0FromJSONTyped(json, false); +} + +export function Schema0FromJSONTyped(json: any, ignoreDiscriminator: boolean): Schema0 { + return json; +} + +export function Schema0ToJSON(json: any): Schema0 { + return Schema0ToJSONTyped(json, false); +} + +export function Schema0ToJSONTyped(value?: Schema0 | null, ignoreDiscriminator: boolean = false): any { + return value; +} + diff --git a/packages/management-sdk/src/generated/models/Schema1.ts b/packages/management-sdk/src/generated/models/Schema1.ts new file mode 100644 index 00000000..cb1112ea --- /dev/null +++ b/packages/management-sdk/src/generated/models/Schema1.ts @@ -0,0 +1,46 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Reflag Management API + * Feature flag Management API + * + * The version of the OpenAPI document: 3.1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; + +/** + * + * @interface Schema1 + */ +export interface Schema1 { +} + +/** + * Check if a given object implements the Schema1 interface. + */ +export function instanceOfSchema1(value: object): value is Schema1 { + return true; +} + +export function Schema1FromJSON(json: any): Schema1 { + return Schema1FromJSONTyped(json, false); +} + +export function Schema1FromJSONTyped(json: any, ignoreDiscriminator: boolean): Schema1 { + return json; +} + +export function Schema1ToJSON(json: any): Schema1 { + return Schema1ToJSONTyped(json, false); +} + +export function Schema1ToJSONTyped(value?: Schema1 | null, ignoreDiscriminator: boolean = false): any { + return value; +} + diff --git a/packages/management-sdk/src/generated/models/SegmentHeader.ts b/packages/management-sdk/src/generated/models/SegmentHeader.ts index bc280784..fbc1b65c 100644 --- a/packages/management-sdk/src/generated/models/SegmentHeader.ts +++ b/packages/management-sdk/src/generated/models/SegmentHeader.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/SegmentType.ts b/packages/management-sdk/src/generated/models/SegmentType.ts index 06f37d62..d09a11ea 100644 --- a/packages/management-sdk/src/generated/models/SegmentType.ts +++ b/packages/management-sdk/src/generated/models/SegmentType.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/SortOrder.ts b/packages/management-sdk/src/generated/models/SortOrder.ts index a1fc22a3..b4839bee 100644 --- a/packages/management-sdk/src/generated/models/SortOrder.ts +++ b/packages/management-sdk/src/generated/models/SortOrder.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/StageHeader.ts b/packages/management-sdk/src/generated/models/StageHeader.ts index d2361794..be6572b4 100644 --- a/packages/management-sdk/src/generated/models/StageHeader.ts +++ b/packages/management-sdk/src/generated/models/StageHeader.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/UpdateEntityFlagsBody.ts b/packages/management-sdk/src/generated/models/UpdateEntityFlagsBody.ts index 191fac0c..b546a6fd 100644 --- a/packages/management-sdk/src/generated/models/UpdateEntityFlagsBody.ts +++ b/packages/management-sdk/src/generated/models/UpdateEntityFlagsBody.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/UpdateEntityFlagsResponse.ts b/packages/management-sdk/src/generated/models/UpdateEntityFlagsResponse.ts new file mode 100644 index 00000000..08715e8e --- /dev/null +++ b/packages/management-sdk/src/generated/models/UpdateEntityFlagsResponse.ts @@ -0,0 +1,104 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Reflag Management API + * Feature flag Management API + * + * The version of the OpenAPI document: 3.1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { EntityFlag } from './EntityFlag'; +import { + EntityFlagFromJSON, + EntityFlagFromJSONTyped, + EntityFlagToJSON, + EntityFlagToJSONTyped, +} from './EntityFlag'; + +/** + * Updated entity flags and the environment flag-state version containing the change + * @interface UpdateEntityFlagsResponse + */ +export interface UpdateEntityFlagsResponse { + /** + * List of flags with their enabled status + * @type {Array} + */ + data: Array; + /** + * Total number of flags + * @type {number} + */ + totalCount: number; + /** + * Page size + * @type {number} + */ + pageSize: number; + /** + * Page index + * @type {number} + */ + pageIndex: number; + /** + * Environment flag-state version containing the completed mutation + * @type {number} + */ + flagStateVersion: number; +} + +/** + * Check if a given object implements the UpdateEntityFlagsResponse interface. + */ +export function instanceOfUpdateEntityFlagsResponse(value: object): value is UpdateEntityFlagsResponse { + if (!('data' in value) || value['data'] === undefined) return false; + if (!('totalCount' in value) || value['totalCount'] === undefined) return false; + if (!('pageSize' in value) || value['pageSize'] === undefined) return false; + if (!('pageIndex' in value) || value['pageIndex'] === undefined) return false; + if (!('flagStateVersion' in value) || value['flagStateVersion'] === undefined) return false; + return true; +} + +export function UpdateEntityFlagsResponseFromJSON(json: any): UpdateEntityFlagsResponse { + return UpdateEntityFlagsResponseFromJSONTyped(json, false); +} + +export function UpdateEntityFlagsResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): UpdateEntityFlagsResponse { + if (json == null) { + return json; + } + return { + + 'data': ((json['data'] as Array).map(EntityFlagFromJSON)), + 'totalCount': json['totalCount'], + 'pageSize': json['pageSize'], + 'pageIndex': json['pageIndex'], + 'flagStateVersion': json['flagStateVersion'], + }; +} + +export function UpdateEntityFlagsResponseToJSON(json: any): UpdateEntityFlagsResponse { + return UpdateEntityFlagsResponseToJSONTyped(json, false); +} + +export function UpdateEntityFlagsResponseToJSONTyped(value?: UpdateEntityFlagsResponse | null, ignoreDiscriminator: boolean = false): any { + if (value == null) { + return value; + } + + return { + + 'data': ((value['data'] as Array).map(EntityFlagToJSON)), + 'totalCount': value['totalCount'], + 'pageSize': value['pageSize'], + 'pageIndex': value['pageIndex'], + 'flagStateVersion': value['flagStateVersion'], + }; +} + diff --git a/packages/management-sdk/src/generated/models/UpdateFlagRequest.ts b/packages/management-sdk/src/generated/models/UpdateFlagRequest.ts index 0a4ba140..d9a0be85 100644 --- a/packages/management-sdk/src/generated/models/UpdateFlagRequest.ts +++ b/packages/management-sdk/src/generated/models/UpdateFlagRequest.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/src/generated/models/UpsertCompany200Response.ts b/packages/management-sdk/src/generated/models/UpsertCompany200Response.ts new file mode 100644 index 00000000..34b27970 --- /dev/null +++ b/packages/management-sdk/src/generated/models/UpsertCompany200Response.ts @@ -0,0 +1,86 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Reflag Management API + * Feature flag Management API + * + * The version of the OpenAPI document: 3.1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { Schema1 } from './Schema1'; +import { + Schema1FromJSON, + Schema1FromJSONTyped, + Schema1ToJSON, + Schema1ToJSONTyped, +} from './Schema1'; + +/** + * + * @interface UpsertCompany200Response + */ +export interface UpsertCompany200Response { + /** + * Company name. Omit it to preserve an existing name; new companies may be unnamed. + * @type {string} + */ + name?: string; + /** + * + * @type {{ [key: string]: Schema1; }} + */ + attributes?: { [key: string]: Schema1; } | null; + /** + * Company ID within your application + * @type {string} + */ + id: string; +} + +/** + * Check if a given object implements the UpsertCompany200Response interface. + */ +export function instanceOfUpsertCompany200Response(value: object): value is UpsertCompany200Response { + if (!('id' in value) || value['id'] === undefined) return false; + return true; +} + +export function UpsertCompany200ResponseFromJSON(json: any): UpsertCompany200Response { + return UpsertCompany200ResponseFromJSONTyped(json, false); +} + +export function UpsertCompany200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): UpsertCompany200Response { + if (json == null) { + return json; + } + return { + + 'name': json['name'] == null ? undefined : json['name'], + 'attributes': json['attributes'] == null ? undefined : (mapValues(json['attributes'], Schema1FromJSON)), + 'id': json['id'], + }; +} + +export function UpsertCompany200ResponseToJSON(json: any): UpsertCompany200Response { + return UpsertCompany200ResponseToJSONTyped(json, false); +} + +export function UpsertCompany200ResponseToJSONTyped(value?: UpsertCompany200Response | null, ignoreDiscriminator: boolean = false): any { + if (value == null) { + return value; + } + + return { + + 'name': value['name'], + 'attributes': value['attributes'] == null ? undefined : (mapValues(value['attributes'], Schema1ToJSON)), + 'id': value['id'], + }; +} + diff --git a/packages/management-sdk/src/generated/models/UpsertCompanyRequest.ts b/packages/management-sdk/src/generated/models/UpsertCompanyRequest.ts new file mode 100644 index 00000000..74be8a04 --- /dev/null +++ b/packages/management-sdk/src/generated/models/UpsertCompanyRequest.ts @@ -0,0 +1,78 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Reflag Management API + * Feature flag Management API + * + * The version of the OpenAPI document: 3.1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { Schema0 } from './Schema0'; +import { + Schema0FromJSON, + Schema0FromJSONTyped, + Schema0ToJSON, + Schema0ToJSONTyped, +} from './Schema0'; + +/** + * + * @interface UpsertCompanyRequest + */ +export interface UpsertCompanyRequest { + /** + * Company name. Omit it to preserve an existing name; new companies may be unnamed. + * @type {string} + */ + name?: string; + /** + * + * @type {{ [key: string]: Schema0; }} + */ + attributes?: { [key: string]: Schema0; } | null; +} + +/** + * Check if a given object implements the UpsertCompanyRequest interface. + */ +export function instanceOfUpsertCompanyRequest(value: object): value is UpsertCompanyRequest { + return true; +} + +export function UpsertCompanyRequestFromJSON(json: any): UpsertCompanyRequest { + return UpsertCompanyRequestFromJSONTyped(json, false); +} + +export function UpsertCompanyRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): UpsertCompanyRequest { + if (json == null) { + return json; + } + return { + + 'name': json['name'] == null ? undefined : json['name'], + 'attributes': json['attributes'] == null ? undefined : (mapValues(json['attributes'], Schema0FromJSON)), + }; +} + +export function UpsertCompanyRequestToJSON(json: any): UpsertCompanyRequest { + return UpsertCompanyRequestToJSONTyped(json, false); +} + +export function UpsertCompanyRequestToJSONTyped(value?: UpsertCompanyRequest | null, ignoreDiscriminator: boolean = false): any { + if (value == null) { + return value; + } + + return { + + 'name': value['name'], + 'attributes': value['attributes'] == null ? undefined : (mapValues(value['attributes'], Schema0ToJSON)), + }; +} + diff --git a/packages/management-sdk/src/generated/models/UpsertUser200Response.ts b/packages/management-sdk/src/generated/models/UpsertUser200Response.ts new file mode 100644 index 00000000..6728a41b --- /dev/null +++ b/packages/management-sdk/src/generated/models/UpsertUser200Response.ts @@ -0,0 +1,86 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Reflag Management API + * Feature flag Management API + * + * The version of the OpenAPI document: 3.1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { Schema1 } from './Schema1'; +import { + Schema1FromJSON, + Schema1FromJSONTyped, + Schema1ToJSON, + Schema1ToJSONTyped, +} from './Schema1'; + +/** + * + * @interface UpsertUser200Response + */ +export interface UpsertUser200Response { + /** + * User name. Omit it to preserve an existing name; new users may be unnamed. + * @type {string} + */ + name?: string; + /** + * + * @type {{ [key: string]: Schema1; }} + */ + attributes?: { [key: string]: Schema1; } | null; + /** + * User ID within your application + * @type {string} + */ + id: string; +} + +/** + * Check if a given object implements the UpsertUser200Response interface. + */ +export function instanceOfUpsertUser200Response(value: object): value is UpsertUser200Response { + if (!('id' in value) || value['id'] === undefined) return false; + return true; +} + +export function UpsertUser200ResponseFromJSON(json: any): UpsertUser200Response { + return UpsertUser200ResponseFromJSONTyped(json, false); +} + +export function UpsertUser200ResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): UpsertUser200Response { + if (json == null) { + return json; + } + return { + + 'name': json['name'] == null ? undefined : json['name'], + 'attributes': json['attributes'] == null ? undefined : (mapValues(json['attributes'], Schema1FromJSON)), + 'id': json['id'], + }; +} + +export function UpsertUser200ResponseToJSON(json: any): UpsertUser200Response { + return UpsertUser200ResponseToJSONTyped(json, false); +} + +export function UpsertUser200ResponseToJSONTyped(value?: UpsertUser200Response | null, ignoreDiscriminator: boolean = false): any { + if (value == null) { + return value; + } + + return { + + 'name': value['name'], + 'attributes': value['attributes'] == null ? undefined : (mapValues(value['attributes'], Schema1ToJSON)), + 'id': value['id'], + }; +} + diff --git a/packages/management-sdk/src/generated/models/UpsertUserRequest.ts b/packages/management-sdk/src/generated/models/UpsertUserRequest.ts new file mode 100644 index 00000000..56a33aa3 --- /dev/null +++ b/packages/management-sdk/src/generated/models/UpsertUserRequest.ts @@ -0,0 +1,78 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Reflag Management API + * Feature flag Management API + * + * The version of the OpenAPI document: 3.1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { Schema0 } from './Schema0'; +import { + Schema0FromJSON, + Schema0FromJSONTyped, + Schema0ToJSON, + Schema0ToJSONTyped, +} from './Schema0'; + +/** + * + * @interface UpsertUserRequest + */ +export interface UpsertUserRequest { + /** + * User name. Omit it to preserve an existing name; new users may be unnamed. + * @type {string} + */ + name?: string; + /** + * + * @type {{ [key: string]: Schema0; }} + */ + attributes?: { [key: string]: Schema0; } | null; +} + +/** + * Check if a given object implements the UpsertUserRequest interface. + */ +export function instanceOfUpsertUserRequest(value: object): value is UpsertUserRequest { + return true; +} + +export function UpsertUserRequestFromJSON(json: any): UpsertUserRequest { + return UpsertUserRequestFromJSONTyped(json, false); +} + +export function UpsertUserRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): UpsertUserRequest { + if (json == null) { + return json; + } + return { + + 'name': json['name'] == null ? undefined : json['name'], + 'attributes': json['attributes'] == null ? undefined : (mapValues(json['attributes'], Schema0FromJSON)), + }; +} + +export function UpsertUserRequestToJSON(json: any): UpsertUserRequest { + return UpsertUserRequestToJSONTyped(json, false); +} + +export function UpsertUserRequestToJSONTyped(value?: UpsertUserRequest | null, ignoreDiscriminator: boolean = false): any { + if (value == null) { + return value; + } + + return { + + 'name': value['name'], + 'attributes': value['attributes'] == null ? undefined : (mapValues(value['attributes'], Schema0ToJSON)), + }; +} + diff --git a/packages/management-sdk/src/generated/models/index.ts b/packages/management-sdk/src/generated/models/index.ts index 1c4b59e4..dbac38ed 100644 --- a/packages/management-sdk/src/generated/models/index.ts +++ b/packages/management-sdk/src/generated/models/index.ts @@ -6,6 +6,7 @@ export * from './AppHeaderCollection'; export * from './CreateFlag200Response'; export * from './CreateFlag200ResponseFlag'; export * from './CreateFlagRequest'; +export * from './DeleteCompanyRequest'; export * from './EntityFlag'; export * from './EntityFlagUpdate'; export * from './EntityFlagsResponse'; @@ -24,9 +25,16 @@ export * from './FlagValue'; export * from './FlagValueTargeting'; export * from './OrgHeader'; export * from './ReflagUserHeader'; +export * from './Schema0'; +export * from './Schema1'; export * from './SegmentHeader'; export * from './SegmentType'; export * from './SortOrder'; export * from './StageHeader'; export * from './UpdateEntityFlagsBody'; +export * from './UpdateEntityFlagsResponse'; export * from './UpdateFlagRequest'; +export * from './UpsertCompany200Response'; +export * from './UpsertCompanyRequest'; +export * from './UpsertUser200Response'; +export * from './UpsertUserRequest'; diff --git a/packages/management-sdk/src/generated/runtime.ts b/packages/management-sdk/src/generated/runtime.ts index 0c33658c..df2ab78b 100644 --- a/packages/management-sdk/src/generated/runtime.ts +++ b/packages/management-sdk/src/generated/runtime.ts @@ -4,7 +4,7 @@ * Reflag Management API * Feature flag Management API * - * The version of the OpenAPI document: 3.0.1 + * The version of the OpenAPI document: 3.1.0 * * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). diff --git a/packages/management-sdk/test/createAppClient.test.ts b/packages/management-sdk/test/createAppClient.test.ts index bad23f57..8fe71fac 100644 --- a/packages/management-sdk/test/createAppClient.test.ts +++ b/packages/management-sdk/test/createAppClient.test.ts @@ -72,6 +72,67 @@ describe("createAppClient", () => { ); }); + it("scopes entity management methods and serializes request bodies", async () => { + const fetchApi = vi.fn( + async (_input: RequestInfo | URL, init?: RequestInit) => + new Response( + init?.method === "PUT" + ? JSON.stringify({ + id: "company-1", + name: "Acme, Inc.", + attributes: { plan: "enterprise", seats: 50 }, + }) + : JSON.stringify({}), + { + status: 200, + headers: { "Content-Type": "application/json" }, + }, + ), + ); + const client = createAppClient("app-123", { + basePath: "https://example.test", + fetchApi, + }); + + await expect( + client.upsertCompany({ + envId: "env-456", + companyId: "company-1", + name: "Acme, Inc.", + attributes: { plan: "enterprise", seats: 50 }, + }), + ).resolves.toEqual({ + id: "company-1", + name: "Acme, Inc.", + attributes: { plan: "enterprise", seats: 50 }, + }); + expect(String(fetchApi.mock.calls[0]?.[0])).toBe( + "https://example.test/apps/app-123/envs/env-456/companies/company-1", + ); + expect(fetchApi.mock.calls[0]?.[1]).toMatchObject({ + method: "PUT", + body: JSON.stringify({ + name: "Acme, Inc.", + attributes: { plan: "enterprise", seats: 50 }, + }), + }); + + await expect( + client.deleteCompany({ + envId: "env-456", + companyId: "company-1", + deleteUsers: false, + }), + ).resolves.toEqual({}); + expect(String(fetchApi.mock.calls[1]?.[0])).toBe( + "https://example.test/apps/app-123/envs/env-456/companies/company-1", + ); + expect(fetchApi.mock.calls[1]?.[1]).toMatchObject({ + method: "DELETE", + body: JSON.stringify({ deleteUsers: false }), + }); + }); + it("preserves class-based middleware hooks after withMiddleware", async () => { const fetchApi = vi.fn( async (_input: RequestInfo | URL, _init?: RequestInit) => From f8849a271ccbdf727eec77e2c3b06f8b89563217 Mon Sep 17 00:00:00 2001 From: Ron Cohen Date: Thu, 10 Sep 2026 13:57:51 +0200 Subject: [PATCH 2/5] docs(management-sdk): explain version-targeted Node SDK refresh --- packages/management-sdk/README.md | 42 +++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/packages/management-sdk/README.md b/packages/management-sdk/README.md index 569326e6..8c5a1603 100644 --- a/packages/management-sdk/README.md +++ b/packages/management-sdk/README.md @@ -330,6 +330,48 @@ console.log(updatedCompanyFlags.data); // ] ``` +## Waiting for flag changes to reach an SDK + +Flag changes can take a few seconds to propagate to evaluation SDKs. +`updateUserFlags` and `updateCompanyFlags` return a `flagStateVersion` identifying +the environment version containing the completed change. `createFlag` and +`updateFlag` return `flagStateVersions`, keyed by environment ID. + +With `@reflag/node-sdk`, pass this number to `client.refreshFlags(version)` before +evaluating flags to request that version or newer, rather than waiting for the +next automatic refresh. Use a client configured for the same app and environment. + +```typescript +// Server-side: `api` is the Management SDK client and `client` is an +// initialized @reflag/node-sdk ReflagClient. +const { flagStateVersion } = await api.updateCompanyFlags({ + appId: "app-123", + envId: "env-456", + companyId: "company-1", + updates: [{ flagKey: "new-checkout", specificTargetValue: true }], +}); + +await client.refreshFlags(flagStateVersion); +const flag = client.getFlag("new-checkout", { + user: { id: "user-1" }, + company: { id: "company-1" }, +}); +``` + +For `createFlag` or `updateFlag`, pass `result.flagStateVersions[envId]` instead. +The version is a minimum: a successful refresh may receive a newer version that +also includes subsequent changes. + +The Node SDK retains its graceful fallback behavior on refresh failures, so a +resolved promise alone is not proof of successful synchronization. Offline mode +does not refresh, and throttled calls in `in-request` mode (including `EdgeClient`) +may resolve before the queued fetch runs. + +React's `useClient()` exposes the browser SDK client, but its public `refresh()` +method currently takes no version argument. Neither SDK exposes a method named +`refreshWaitFor`; version-targeted refresh is currently public only through the +Node SDK's `refreshFlags(version)`. Keep Management API keys on the server. + ## Error handling The SDK throws `ReflagApiError` for non-2xx API responses. From d5558672027da2ee2c3cd241d0c19e272210e737 Mon Sep 17 00:00:00 2001 From: Ron Cohen Date: Thu, 10 Sep 2026 14:01:59 +0200 Subject: [PATCH 3/5] docs(management-sdk): remove React refresh mention --- packages/management-sdk/README.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/management-sdk/README.md b/packages/management-sdk/README.md index 8c5a1603..32ac0a57 100644 --- a/packages/management-sdk/README.md +++ b/packages/management-sdk/README.md @@ -367,10 +367,7 @@ resolved promise alone is not proof of successful synchronization. Offline mode does not refresh, and throttled calls in `in-request` mode (including `EdgeClient`) may resolve before the queued fetch runs. -React's `useClient()` exposes the browser SDK client, but its public `refresh()` -method currently takes no version argument. Neither SDK exposes a method named -`refreshWaitFor`; version-targeted refresh is currently public only through the -Node SDK's `refreshFlags(version)`. Keep Management API keys on the server. +Keep Management API keys on the server. ## Error handling From 44243ba0f89f86cbe4c14fb18d54f8be4eab0376 Mon Sep 17 00:00:00 2001 From: Ron Cohen Date: Thu, 10 Sep 2026 14:02:50 +0200 Subject: [PATCH 4/5] docs(management-sdk): simplify refresh caveats --- packages/management-sdk/README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/management-sdk/README.md b/packages/management-sdk/README.md index 32ac0a57..e19d67fd 100644 --- a/packages/management-sdk/README.md +++ b/packages/management-sdk/README.md @@ -362,10 +362,8 @@ For `createFlag` or `updateFlag`, pass `result.flagStateVersions[envId]` instead The version is a minimum: a successful refresh may receive a newer version that also includes subsequent changes. -The Node SDK retains its graceful fallback behavior on refresh failures, so a -resolved promise alone is not proof of successful synchronization. Offline mode -does not refresh, and throttled calls in `in-request` mode (including `EdgeClient`) -may resolve before the queued fetch runs. +If the refresh fails, the Node SDK keeps its cached or fallback flags rather than +throwing, so awaiting the call does not guarantee synchronization on failure. Keep Management API keys on the server. From b07912f240f7d45baa96d92ca63d1969f5f62674 Mon Sep 17 00:00:00 2001 From: Ron Cohen Date: Thu, 10 Sep 2026 14:04:03 +0200 Subject: [PATCH 5/5] docs(management-sdk): remove redundant API key note --- packages/management-sdk/README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/management-sdk/README.md b/packages/management-sdk/README.md index e19d67fd..ebe759f4 100644 --- a/packages/management-sdk/README.md +++ b/packages/management-sdk/README.md @@ -365,8 +365,6 @@ also includes subsequent changes. If the refresh fails, the Node SDK keeps its cached or fallback flags rather than throwing, so awaiting the call does not guarantee synchronization on failure. -Keep Management API keys on the server. - ## Error handling The SDK throws `ReflagApiError` for non-2xx API responses.