Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/modern-pears-manage.md
Original file line number Diff line number Diff line change
@@ -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.
74 changes: 73 additions & 1 deletion packages/management-sdk/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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.

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -293,6 +330,41 @@ 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.

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.

## Error handling

The SDK throws `ReflagApiError` for non-2xx API responses.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
421 changes: 394 additions & 27 deletions packages/management-sdk/src/generated/apis/DefaultApi.ts

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion packages/management-sdk/src/generated/models/App.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
2 changes: 1 addition & 1 deletion packages/management-sdk/src/generated/models/AppHeader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand All @@ -31,13 +31,19 @@ export interface CreateFlag200Response {
* @type {CreateFlag200ResponseFlag}
*/
flag: CreateFlag200ResponseFlag;
/**
* Current flag-state version keyed by environment ID
* @type {{ [key: string]: number; }}
*/
flagStateVersions: { [key: string]: number; };
}

/**
* Check if a given object implements the CreateFlag200Response interface.
*/
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;
}

Expand All @@ -52,6 +58,7 @@ export function CreateFlag200ResponseFromJSONTyped(json: any, ignoreDiscriminato
return {

'flag': CreateFlag200ResponseFlagFromJSON(json['flag']),
'flagStateVersions': json['flagStateVersions'],
};
}

Expand All @@ -67,6 +74,7 @@ export function CreateFlag200ResponseToJSONTyped(value?: CreateFlag200Response |
return {

'flag': CreateFlag200ResponseFlagToJSON(value['flag']),
'flagStateVersions': value['flagStateVersions'],
};
}

Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
Original file line number Diff line number Diff line change
@@ -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'],
};
}

2 changes: 1 addition & 1 deletion packages/management-sdk/src/generated/models/EntityFlag.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
2 changes: 1 addition & 1 deletion packages/management-sdk/src/generated/models/FlagHeader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Expand Down
Loading
Loading