diff --git a/frontend/README.md b/frontend/README.md index 7cccf5d389..59aebe3357 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -58,10 +58,16 @@ yarn run e2e The frontend uses an OpenAPI client generated from the backend's OpenAPI spec. Whenever there are changes to the backend API, the client should be regenerated: +For now we only use generated types (src/openapi/models). +We will use methods (src/openapi/apis) for new features soon. + ``` -./scripts/generate-openapi.sh +yarn gen:api +rm -rf src/openapi/apis ``` +clean up `src/openapi/index.ts` imports, only keep first line `export * from './models';` + This script assumes that you have a running instance of the enterprise backend at `http://localhost:4242`. The new OpenAPI client will be generated from the runtime schema of this instance. The target URL can be changed by setting the `UNLEASH_OPENAPI_URL` env var. diff --git a/frontend/src/component/application/ApplicationList/ApplicationList.tsx b/frontend/src/component/application/ApplicationList/ApplicationList.tsx index d324e910c3..7ed0f1be30 100644 --- a/frontend/src/component/application/ApplicationList/ApplicationList.tsx +++ b/frontend/src/component/application/ApplicationList/ApplicationList.tsx @@ -1,13 +1,5 @@ import { useMemo } from 'react'; -import { - Avatar, - CircularProgress, - Icon, - Link, - styled, - Typography, - useTheme, -} from '@mui/material'; +import { Avatar, CircularProgress, Icon, Link } from '@mui/material'; import { Warning } from '@mui/icons-material'; import { styles as themeStyles } from 'component/common'; import { PageContent } from 'component/common/PageContent/PageContent'; @@ -27,11 +19,11 @@ import { useGlobalFilter, useSortBy, useTable } from 'react-table'; import { sortTypes } from 'utils/sortTypes'; import { IconCell } from 'component/common/Table/cells/IconCell/IconCell'; import { LinkCell } from 'component/common/Table/cells/LinkCell/LinkCell'; -import { TextCell } from 'component/common/Table/cells/TextCell/TextCell'; +import { ApplicationUsageCell } from './ApplicationUsageCell/ApplicationUsageCell'; +import { ApplicationSchema } from '../../../openapi'; export const ApplicationList = () => { const { applications: data, loading } = useApplications(); - const theme = useTheme(); const renderNoApplications = () => ( <> @@ -100,16 +92,11 @@ export const ApplicationList = () => { Header: 'Project(environment)', accessor: 'usage', width: '50%', - Cell: () => ( - - - not connected - - - ), + Cell: ({ + row: { original }, + }: { + row: { original: ApplicationSchema }; + }) => , sortType: 'alphanumeric', }, { diff --git a/frontend/src/component/application/ApplicationList/ApplicationUsageCell/ApplicationUsageCell.test.tsx b/frontend/src/component/application/ApplicationList/ApplicationUsageCell/ApplicationUsageCell.test.tsx new file mode 100644 index 0000000000..7a72046059 --- /dev/null +++ b/frontend/src/component/application/ApplicationList/ApplicationUsageCell/ApplicationUsageCell.test.tsx @@ -0,0 +1,34 @@ +import { screen } from '@testing-library/react'; +import { render } from 'utils/testRenderer'; +import { ApplicationUsageCell } from './ApplicationUsageCell'; + +test('displays not connected if no usage found', () => { + render(); + + expect(screen.getByText('not connected')).toBeInTheDocument(); +}); + +test('display project and environments in correct manner', () => { + render( + + ); + + const anchor = screen.getByRole('link'); + expect(anchor).toHaveAttribute('href', '/projects/myProject'); + expect(screen.getByText('(dev, production)')).toBeInTheDocument(); +}); + +test('when no specific project is defined, do not create link', () => { + render( + + ); + + const anchor = screen.queryByRole('link'); + expect(anchor).not.toBeInTheDocument(); +}); diff --git a/frontend/src/component/application/ApplicationList/ApplicationUsageCell/ApplicationUsageCell.tsx b/frontend/src/component/application/ApplicationList/ApplicationUsageCell/ApplicationUsageCell.tsx new file mode 100644 index 0000000000..7c5228e313 --- /dev/null +++ b/frontend/src/component/application/ApplicationList/ApplicationUsageCell/ApplicationUsageCell.tsx @@ -0,0 +1,64 @@ +import { TextCell } from 'component/common/Table/cells/TextCell/TextCell'; +import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; +import { styled, Typography, useTheme } from '@mui/material'; +import { Link } from 'react-router-dom'; +import { ApplicationUsageSchema } from '../../../../openapi'; + +export interface IApplicationUsageCellProps { + usage: ApplicationUsageSchema[] | undefined; +} +export interface IApplicationUsage { + project: string; + environments: string[]; +} + +const StyledLink = styled(Link)(() => ({ + overflow: 'hidden', + textOverflow: 'ellipsis', + whiteSpace: 'nowrap', + textDecoration: 'none', + '&:hover, &:focus': { + textDecoration: 'underline', + }, +})); + +const formatProject = (projectInfo: IApplicationUsage, index: number) => { + const separator = index !== 0 ? ', ' : ''; + const projectElement = + projectInfo.project !== '*' ? ( + + {projectInfo.project} + + ) : ( + projectInfo.project + ); + + const environments = ` (${projectInfo.environments.join(', ')})`; + + return [separator, projectElement, environments]; +}; + +export const ApplicationUsageCell = ({ usage }: IApplicationUsageCellProps) => { + const theme = useTheme(); + const formattedProjects = usage?.flatMap((p, index) => + formatProject(p, index) + ); + return ( + + 0} + show={ + {formattedProjects} + } + elseShow={ + + not connected + + } + /> + + ); +}; diff --git a/frontend/src/openapi/models/applicationSchema.ts b/frontend/src/openapi/models/applicationSchema.ts index 844bb61fa5..68ceb10365 100644 --- a/frontend/src/openapi/models/applicationSchema.ts +++ b/frontend/src/openapi/models/applicationSchema.ts @@ -3,6 +3,7 @@ * Do not edit manually. * See `gen:api` script in package.json */ +import type { ApplicationUsageSchema } from './applicationUsageSchema'; /** * Data about an application that's connected to Unleash via an SDK. @@ -22,4 +23,6 @@ export interface ApplicationSchema { color?: string; /** An URL to an icon file to be used for the applications's entry in the application list */ icon?: string; + /** The list of projects the application has been using. */ + usage?: ApplicationUsageSchema[]; } diff --git a/frontend/src/openapi/models/applicationUsageSchema.ts b/frontend/src/openapi/models/applicationUsageSchema.ts new file mode 100644 index 0000000000..c73cff55ad --- /dev/null +++ b/frontend/src/openapi/models/applicationUsageSchema.ts @@ -0,0 +1,15 @@ +/** + * Generated by Orval + * Do not edit manually. + * See `gen:api` script in package.json + */ + +/** + * Data about an project that have been used by applications. + */ +export interface ApplicationUsageSchema { + /** Name of the project */ + project: string; + /** Which environments have been accessed in this project. */ + environments: string[]; +} diff --git a/frontend/src/openapi/models/changeRequestSchema.ts b/frontend/src/openapi/models/changeRequestSchema.ts index 54a35d3064..d2d53e2d18 100644 --- a/frontend/src/openapi/models/changeRequestSchema.ts +++ b/frontend/src/openapi/models/changeRequestSchema.ts @@ -32,6 +32,8 @@ export interface ChangeRequestSchema { segments: ChangeRequestSegmentChangeSchema[]; /** A list of approvals that this change request has received. */ approvals?: ChangeRequestApprovalSchema[]; + /** A list of rejections that this change request has received. */ + rejections?: ChangeRequestApprovalSchema[]; /** All comments that have been made on this change request. */ comments?: ChangeRequestCommentSchema[]; /** The user who created this change request. */ diff --git a/frontend/src/openapi/models/changeRequestSchemaState.ts b/frontend/src/openapi/models/changeRequestSchemaState.ts index 873dea5f19..3283c3a0bd 100644 --- a/frontend/src/openapi/models/changeRequestSchemaState.ts +++ b/frontend/src/openapi/models/changeRequestSchemaState.ts @@ -17,4 +17,5 @@ export const ChangeRequestSchemaState = { Approved: 'Approved', Applied: 'Applied', Cancelled: 'Cancelled', + Rejected: 'Rejected', } as const; diff --git a/frontend/src/openapi/models/changeRequestStateSchemaState.ts b/frontend/src/openapi/models/changeRequestStateSchemaState.ts index c02e77e260..457fa5508b 100644 --- a/frontend/src/openapi/models/changeRequestStateSchemaState.ts +++ b/frontend/src/openapi/models/changeRequestStateSchemaState.ts @@ -17,4 +17,5 @@ export const ChangeRequestStateSchemaState = { Approved: 'Approved', Applied: 'Applied', Cancelled: 'Cancelled', + Rejected: 'Rejected', } as const; diff --git a/frontend/src/openapi/models/clientMetricsEnvSchema.ts b/frontend/src/openapi/models/clientMetricsEnvSchema.ts index 192a99ea50..ef050086bf 100644 --- a/frontend/src/openapi/models/clientMetricsEnvSchema.ts +++ b/frontend/src/openapi/models/clientMetricsEnvSchema.ts @@ -24,5 +24,4 @@ export interface ClientMetricsEnvSchema { no?: number; /** How many times each variant was returned */ variants?: ClientMetricsEnvSchemaVariants; - [key: string]: any; } diff --git a/frontend/src/openapi/models/createApplicationSchema.ts b/frontend/src/openapi/models/createApplicationSchema.ts index b46065fb0e..7ed0757bdf 100644 --- a/frontend/src/openapi/models/createApplicationSchema.ts +++ b/frontend/src/openapi/models/createApplicationSchema.ts @@ -20,5 +20,4 @@ export interface CreateApplicationSchema { color?: string; /** An URL to an icon file to be used for the applications's entry in the application list */ icon?: string; - [key: string]: any; } diff --git a/frontend/src/openapi/models/createGroupSchema.ts b/frontend/src/openapi/models/createGroupSchema.ts index d512282611..5cd2662a0b 100644 --- a/frontend/src/openapi/models/createGroupSchema.ts +++ b/frontend/src/openapi/models/createGroupSchema.ts @@ -19,5 +19,4 @@ export interface CreateGroupSchema { rootRole?: number | null; /** A list of users belonging to this group */ users?: CreateGroupSchemaUsersItem[]; - [key: string]: any; } diff --git a/frontend/src/openapi/models/createStrategyVariantSchema.ts b/frontend/src/openapi/models/createStrategyVariantSchema.ts index 3392198d46..1c69ce80b7 100644 --- a/frontend/src/openapi/models/createStrategyVariantSchema.ts +++ b/frontend/src/openapi/models/createStrategyVariantSchema.ts @@ -20,5 +20,4 @@ export interface CreateStrategyVariantSchema { stickiness: string; /** Extra data configured for this variant */ payload?: CreateStrategyVariantSchemaPayload; - [key: string]: any; } diff --git a/frontend/src/openapi/models/createUserResponseSchema.ts b/frontend/src/openapi/models/createUserResponseSchema.ts index 5a67fc6aa1..44394297ba 100644 --- a/frontend/src/openapi/models/createUserResponseSchema.ts +++ b/frontend/src/openapi/models/createUserResponseSchema.ts @@ -30,7 +30,7 @@ export interface CreateUserResponseSchema { loginAttempts?: number; /** Is the welcome email sent to the user or not */ emailSent?: boolean; - /** Which [root role](https://docs.getunleash.io/reference/rbac#standard-roles) this user is assigned. Usually a numeric role ID, but can be a string when returning newly created user with an explicit string role. */ + /** Which [root role](https://docs.getunleash.io/reference/rbac#predefined-roles) this user is assigned. Usually a numeric role ID, but can be a string when returning newly created user with an explicit string role. */ rootRole?: CreateUserResponseSchemaRootRole; /** The last time this user logged in */ seenAt?: string | null; diff --git a/frontend/src/openapi/models/createUserResponseSchemaRootRole.ts b/frontend/src/openapi/models/createUserResponseSchemaRootRole.ts index a6e0dd3b27..e76d89977b 100644 --- a/frontend/src/openapi/models/createUserResponseSchemaRootRole.ts +++ b/frontend/src/openapi/models/createUserResponseSchemaRootRole.ts @@ -5,7 +5,7 @@ */ /** - * Which [root role](https://docs.getunleash.io/reference/rbac#standard-roles) this user is assigned. Usually a numeric role ID, but can be a string when returning newly created user with an explicit string role. + * Which [root role](https://docs.getunleash.io/reference/rbac#predefined-roles) this user is assigned. Usually a numeric role ID, but can be a string when returning newly created user with an explicit string role. */ export type CreateUserResponseSchemaRootRole = | number diff --git a/frontend/src/openapi/models/eventSchemaData.ts b/frontend/src/openapi/models/eventSchemaData.ts index 68f9997993..ae43894525 100644 --- a/frontend/src/openapi/models/eventSchemaData.ts +++ b/frontend/src/openapi/models/eventSchemaData.ts @@ -7,4 +7,4 @@ /** * Extra associated data related to the event, such as feature toggle state, segment configuration, etc., if applicable. */ -export type EventSchemaData = { [key: string]: any } | null; +export type EventSchemaData = { [key: string]: any }; diff --git a/frontend/src/openapi/models/eventSchemaPreData.ts b/frontend/src/openapi/models/eventSchemaPreData.ts index 81db3960a3..875e7e327a 100644 --- a/frontend/src/openapi/models/eventSchemaPreData.ts +++ b/frontend/src/openapi/models/eventSchemaPreData.ts @@ -7,4 +7,4 @@ /** * Data relating to the previous state of the event's subject. */ -export type EventSchemaPreData = { [key: string]: any } | null; +export type EventSchemaPreData = { [key: string]: any }; diff --git a/frontend/src/openapi/models/eventSchemaType.ts b/frontend/src/openapi/models/eventSchemaType.ts index dfc3848d3d..7b8aa91f99 100644 --- a/frontend/src/openapi/models/eventSchemaType.ts +++ b/frontend/src/openapi/models/eventSchemaType.ts @@ -97,6 +97,7 @@ export const EventSchemaType = { 'change-added': 'change-added', 'change-discarded': 'change-discarded', 'change-edited': 'change-edited', + 'change-request-rejected': 'change-request-rejected', 'change-request-approved': 'change-request-approved', 'change-request-approval-added': 'change-request-approval-added', 'change-request-cancelled': 'change-request-cancelled', diff --git a/frontend/src/openapi/models/exportQuerySchema.ts b/frontend/src/openapi/models/exportQuerySchema.ts index 09874e98fa..625a73e245 100644 --- a/frontend/src/openapi/models/exportQuerySchema.ts +++ b/frontend/src/openapi/models/exportQuerySchema.ts @@ -15,12 +15,10 @@ export type ExportQuerySchema = environment: string; /** Whether to return a downloadable file */ downloadFile?: boolean; - [key: string]: any; }) | (ExportQuerySchemaOneOfTwo & { /** The environment to export from */ environment: string; /** Whether to return a downloadable file */ downloadFile?: boolean; - [key: string]: any; }); diff --git a/frontend/src/openapi/models/featureSchema.ts b/frontend/src/openapi/models/featureSchema.ts index d59a372203..e17720a02b 100644 --- a/frontend/src/openapi/models/featureSchema.ts +++ b/frontend/src/openapi/models/featureSchema.ts @@ -34,7 +34,10 @@ export interface FeatureSchema { createdAt?: string | null; /** The date the feature was archived */ archivedAt?: string | null; - /** The date when metrics where last collected for the feature */ + /** + * The date when metrics where last collected for the feature. This field is deprecated, use the one in featureEnvironmentSchema + * @deprecated + */ lastSeenAt?: string | null; /** The list of environments where the feature can be used */ environments?: FeatureEnvironmentSchema[]; diff --git a/frontend/src/openapi/models/getApiTokensByName401.ts b/frontend/src/openapi/models/getApiTokensByName401.ts new file mode 100644 index 0000000000..2b7f390334 --- /dev/null +++ b/frontend/src/openapi/models/getApiTokensByName401.ts @@ -0,0 +1,14 @@ +/** + * Generated by Orval + * Do not edit manually. + * See `gen:api` script in package.json + */ + +export type GetApiTokensByName401 = { + /** The ID of the error instance */ + id?: string; + /** The name of the error kind */ + name?: string; + /** A description of what went wrong. */ + message?: string; +}; diff --git a/frontend/src/openapi/models/getApiTokensByName403.ts b/frontend/src/openapi/models/getApiTokensByName403.ts new file mode 100644 index 0000000000..6d3b469dde --- /dev/null +++ b/frontend/src/openapi/models/getApiTokensByName403.ts @@ -0,0 +1,14 @@ +/** + * Generated by Orval + * Do not edit manually. + * See `gen:api` script in package.json + */ + +export type GetApiTokensByName403 = { + /** The ID of the error instance */ + id?: string; + /** The name of the error kind */ + name?: string; + /** A description of what went wrong. */ + message?: string; +}; diff --git a/frontend/src/openapi/models/getRoleProjectAccess401.ts b/frontend/src/openapi/models/getRoleProjectAccess401.ts new file mode 100644 index 0000000000..ca46050b91 --- /dev/null +++ b/frontend/src/openapi/models/getRoleProjectAccess401.ts @@ -0,0 +1,14 @@ +/** + * Generated by Orval + * Do not edit manually. + * See `gen:api` script in package.json + */ + +export type GetRoleProjectAccess401 = { + /** The ID of the error instance */ + id?: string; + /** The name of the error kind */ + name?: string; + /** A description of what went wrong. */ + message?: string; +}; diff --git a/frontend/src/openapi/models/getRoleProjectAccess403.ts b/frontend/src/openapi/models/getRoleProjectAccess403.ts new file mode 100644 index 0000000000..70d1d39b4c --- /dev/null +++ b/frontend/src/openapi/models/getRoleProjectAccess403.ts @@ -0,0 +1,14 @@ +/** + * Generated by Orval + * Do not edit manually. + * See `gen:api` script in package.json + */ + +export type GetRoleProjectAccess403 = { + /** The ID of the error instance */ + id?: string; + /** The name of the error kind */ + name?: string; + /** A description of what went wrong. */ + message?: string; +}; diff --git a/frontend/src/openapi/models/index.ts b/frontend/src/openapi/models/index.ts index 866f55f890..044674ada0 100644 --- a/frontend/src/openapi/models/index.ts +++ b/frontend/src/openapi/models/index.ts @@ -69,6 +69,7 @@ export * from './apiTokenSchema'; export * from './apiTokenSchemaType'; export * from './apiTokensSchema'; export * from './applicationSchema'; +export * from './applicationUsageSchema'; export * from './applicationsSchema'; export * from './archiveFeature401'; export * from './archiveFeature403'; @@ -403,6 +404,8 @@ export * from './getAllFeatureTypes401'; export * from './getAllStrategies401'; export * from './getAllToggles401'; export * from './getAllToggles403'; +export * from './getApiTokensByName401'; +export * from './getApiTokensByName403'; export * from './getApplication404'; export * from './getArchivedFeatures401'; export * from './getArchivedFeatures403'; @@ -491,6 +494,8 @@ export * from './getRawFeatureMetrics404'; export * from './getRoleById400'; export * from './getRoleById401'; export * from './getRoleById404'; +export * from './getRoleProjectAccess401'; +export * from './getRoleProjectAccess403'; export * from './getRoles401'; export * from './getRoles403'; export * from './getSamlSettings400'; @@ -637,6 +642,8 @@ export * from './projectCreatedSchemaMode'; export * from './projectEnvironmentSchema'; export * from './projectOverviewSchema'; export * from './projectOverviewSchemaMode'; +export * from './projectRoleSchema'; +export * from './projectRoleUsageSchema'; export * from './projectSchema'; export * from './projectSchemaMode'; export * from './projectSettingsSchema'; diff --git a/frontend/src/openapi/models/projectRoleSchema.ts b/frontend/src/openapi/models/projectRoleSchema.ts new file mode 100644 index 0000000000..6089b04768 --- /dev/null +++ b/frontend/src/openapi/models/projectRoleSchema.ts @@ -0,0 +1,21 @@ +/** + * Generated by Orval + * Do not edit manually. + * See `gen:api` script in package.json + */ + +/** + * An overview of how many users and groups are mapped to the specified project with the specified role. + */ +export interface ProjectRoleSchema { + /** The id of the project user and group count are counted for. */ + project: string; + /** Id of the role the user and group count are counted for. */ + role?: number; + /** Number of users mapped to this project. */ + userCount?: number; + /** Number of service accounts mapped to this project. */ + serviceAccountCount?: number; + /** Number of groups mapped to this project. */ + groupCount?: number; +} diff --git a/frontend/src/openapi/models/projectRoleUsageSchema.ts b/frontend/src/openapi/models/projectRoleUsageSchema.ts new file mode 100644 index 0000000000..cbc903da56 --- /dev/null +++ b/frontend/src/openapi/models/projectRoleUsageSchema.ts @@ -0,0 +1,14 @@ +/** + * Generated by Orval + * Do not edit manually. + * See `gen:api` script in package.json + */ +import type { ProjectRoleSchema } from './projectRoleSchema'; + +/** + * A collection of projects with counts of users and groups mapped to them with specified roles. + */ +export interface ProjectRoleUsageSchema { + /** A collection of projects with counts of users and groups mapped to them with specified roles. */ + projects?: ProjectRoleSchema[]; +} diff --git a/frontend/src/openapi/models/searchEventsSchema.ts b/frontend/src/openapi/models/searchEventsSchema.ts index bb04f902b1..20196ac2d5 100644 --- a/frontend/src/openapi/models/searchEventsSchema.ts +++ b/frontend/src/openapi/models/searchEventsSchema.ts @@ -18,12 +18,7 @@ export interface SearchEventsSchema { project?: string; /** Find events by feature toggle name (case-sensitive). */ feature?: string; - /** - Find events by a free-text search query. - The query will be matched against the event type, - the username or email that created the event (if any), - and the event data payload (if any). - */ + /** Find events by a free-text search query. The query will be matched against the event type, the username or email that created the event (if any), and the event data payload (if any). */ query?: string; /** The maximum amount of events to return in the search result */ limit?: number; diff --git a/frontend/src/openapi/models/searchEventsSchemaType.ts b/frontend/src/openapi/models/searchEventsSchemaType.ts index e454c2da9a..07e8bf0aaa 100644 --- a/frontend/src/openapi/models/searchEventsSchemaType.ts +++ b/frontend/src/openapi/models/searchEventsSchemaType.ts @@ -97,6 +97,7 @@ export const SearchEventsSchemaType = { 'change-added': 'change-added', 'change-discarded': 'change-discarded', 'change-edited': 'change-edited', + 'change-request-rejected': 'change-request-rejected', 'change-request-approved': 'change-request-approved', 'change-request-approval-added': 'change-request-approval-added', 'change-request-cancelled': 'change-request-cancelled', diff --git a/frontend/src/openapi/models/stateSchema.ts b/frontend/src/openapi/models/stateSchema.ts index 4bc74c791b..2e8f0f32ce 100644 --- a/frontend/src/openapi/models/stateSchema.ts +++ b/frontend/src/openapi/models/stateSchema.ts @@ -44,5 +44,4 @@ export interface StateSchema { segments?: SegmentSchema[]; /** A list of segment/strategy pairings */ featureStrategySegments?: FeatureStrategySegmentSchema[]; - [key: string]: any; } diff --git a/frontend/src/openapi/models/tokenStringListSchema.ts b/frontend/src/openapi/models/tokenStringListSchema.ts index c31c07e42d..83f9f5f463 100644 --- a/frontend/src/openapi/models/tokenStringListSchema.ts +++ b/frontend/src/openapi/models/tokenStringListSchema.ts @@ -10,5 +10,4 @@ export interface TokenStringListSchema { /** Tokens that we want to get access information about */ tokens: string[]; - [key: string]: any; } diff --git a/frontend/src/openapi/models/updateUserSchema.ts b/frontend/src/openapi/models/updateUserSchema.ts index 33ec2f0383..f54fdbf964 100644 --- a/frontend/src/openapi/models/updateUserSchema.ts +++ b/frontend/src/openapi/models/updateUserSchema.ts @@ -15,5 +15,4 @@ export interface UpdateUserSchema { name?: string; /** The role to assign to the user. Can be either the role's ID or its unique name. */ rootRole?: UpdateUserSchemaRootRole; - [key: string]: any; } diff --git a/frontend/src/openapi/models/userSchema.ts b/frontend/src/openapi/models/userSchema.ts index ac403849c2..4d0d5bb48b 100644 --- a/frontend/src/openapi/models/userSchema.ts +++ b/frontend/src/openapi/models/userSchema.ts @@ -29,7 +29,7 @@ export interface UserSchema { loginAttempts?: number; /** Is the welcome email sent to the user or not */ emailSent?: boolean; - /** Which [root role](https://docs.getunleash.io/reference/rbac#standard-roles) this user is assigned */ + /** Which [root role](https://docs.getunleash.io/reference/rbac#predefined-roles) this user is assigned */ rootRole?: number; /** The last time this user logged in */ seenAt?: string | null; diff --git a/frontend/src/openapi/models/usersSchema.ts b/frontend/src/openapi/models/usersSchema.ts index 037002236e..e82f7b685d 100644 --- a/frontend/src/openapi/models/usersSchema.ts +++ b/frontend/src/openapi/models/usersSchema.ts @@ -12,6 +12,6 @@ import type { RoleSchema } from './roleSchema'; export interface UsersSchema { /** A list of users in the Unleash instance. */ users: UserSchema[]; - /** A list of [root roles](https://docs.getunleash.io/reference/rbac#standard-roles) in the Unleash instance. */ + /** A list of [root roles](https://docs.getunleash.io/reference/rbac#predefined-roles) in the Unleash instance. */ rootRoles?: RoleSchema[]; }