forked from cardosofelipe/fast-next-template
Add adminGetStats API and extend statistics types for admin dashboard
- Introduced `adminGetStats` API endpoint for fetching aggregated admin dashboard statistics. - Expanded `AdminStatsResponse` to include `registration_activity` and new type definitions for `UserGrowthData`, `OrgDistributionData`, and `UserStatusData`. - Added `AdminGetStatsData` and `AdminGetStatsResponses` types to improve API integration consistency. - Updated client generation and type annotations to support the new endpoint structure.
This commit is contained in:
@@ -12,6 +12,11 @@ export interface OrgDistributionData {
|
||||
value: number;
|
||||
}
|
||||
|
||||
export interface RegistrationActivityData {
|
||||
date: string;
|
||||
registrations: number;
|
||||
}
|
||||
|
||||
export interface UserStatusData {
|
||||
name: string;
|
||||
value: number;
|
||||
@@ -20,6 +25,7 @@ export interface UserStatusData {
|
||||
export interface AdminStatsResponse {
|
||||
user_growth: UserGrowthData[];
|
||||
organization_distribution: OrgDistributionData[];
|
||||
registration_activity: RegistrationActivityData[];
|
||||
user_status: UserStatusData[];
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import { type Client, type Options as Options2, type TDataShape, urlSearchParamsBodySerializer } from './client';
|
||||
import { client } from './client.gen';
|
||||
import type { AdminActivateUserData, AdminActivateUserErrors, AdminActivateUserResponses, AdminAddOrganizationMemberData, AdminAddOrganizationMemberErrors, AdminAddOrganizationMemberResponses, AdminBulkUserActionData, AdminBulkUserActionErrors, AdminBulkUserActionResponses, AdminCreateOrganizationData, AdminCreateOrganizationErrors, AdminCreateOrganizationResponses, AdminCreateUserData, AdminCreateUserErrors, AdminCreateUserResponses, AdminDeactivateUserData, AdminDeactivateUserErrors, AdminDeactivateUserResponses, AdminDeleteOrganizationData, AdminDeleteOrganizationErrors, AdminDeleteOrganizationResponses, AdminDeleteUserData, AdminDeleteUserErrors, AdminDeleteUserResponses, AdminGetOrganizationData, AdminGetOrganizationErrors, AdminGetOrganizationResponses, AdminGetUserData, AdminGetUserErrors, AdminGetUserResponses, AdminListOrganizationMembersData, AdminListOrganizationMembersErrors, AdminListOrganizationMembersResponses, AdminListOrganizationsData, AdminListOrganizationsErrors, AdminListOrganizationsResponses, AdminListSessionsData, AdminListSessionsErrors, AdminListSessionsResponses, AdminListUsersData, AdminListUsersErrors, AdminListUsersResponses, AdminRemoveOrganizationMemberData, AdminRemoveOrganizationMemberErrors, AdminRemoveOrganizationMemberResponses, AdminUpdateOrganizationData, AdminUpdateOrganizationErrors, AdminUpdateOrganizationResponses, AdminUpdateUserData, AdminUpdateUserErrors, AdminUpdateUserResponses, ChangeCurrentUserPasswordData, ChangeCurrentUserPasswordErrors, ChangeCurrentUserPasswordResponses, CleanupExpiredSessionsData, CleanupExpiredSessionsResponses, ConfirmPasswordResetData, ConfirmPasswordResetErrors, ConfirmPasswordResetResponses, DeleteUserData, DeleteUserErrors, DeleteUserResponses, GetCurrentUserProfileData, GetCurrentUserProfileResponses, GetMyOrganizationsData, GetMyOrganizationsErrors, GetMyOrganizationsResponses, GetOrganizationData, GetOrganizationErrors, GetOrganizationMembersData, GetOrganizationMembersErrors, GetOrganizationMembersResponses, GetOrganizationResponses, GetUserByIdData, GetUserByIdErrors, GetUserByIdResponses, HealthCheckData, HealthCheckResponses, ListMySessionsData, ListMySessionsResponses, ListUsersData, ListUsersErrors, ListUsersResponses, LoginData, LoginErrors, LoginOauthData, LoginOauthErrors, LoginOauthResponses, LoginResponses, LogoutAllData, LogoutAllResponses, LogoutData, LogoutErrors, LogoutResponses, RefreshTokenData, RefreshTokenErrors, RefreshTokenResponses, RegisterData, RegisterErrors, RegisterResponses, RequestPasswordResetData, RequestPasswordResetErrors, RequestPasswordResetResponses, RevokeSessionData, RevokeSessionErrors, RevokeSessionResponses, RootGetData, RootGetResponses, UpdateCurrentUserData, UpdateCurrentUserErrors, UpdateCurrentUserResponses, UpdateOrganizationData, UpdateOrganizationErrors, UpdateOrganizationResponses, UpdateUserData, UpdateUserErrors, UpdateUserResponses } from './types.gen';
|
||||
import type { AdminActivateUserData, AdminActivateUserErrors, AdminActivateUserResponses, AdminAddOrganizationMemberData, AdminAddOrganizationMemberErrors, AdminAddOrganizationMemberResponses, AdminBulkUserActionData, AdminBulkUserActionErrors, AdminBulkUserActionResponses, AdminCreateOrganizationData, AdminCreateOrganizationErrors, AdminCreateOrganizationResponses, AdminCreateUserData, AdminCreateUserErrors, AdminCreateUserResponses, AdminDeactivateUserData, AdminDeactivateUserErrors, AdminDeactivateUserResponses, AdminDeleteOrganizationData, AdminDeleteOrganizationErrors, AdminDeleteOrganizationResponses, AdminDeleteUserData, AdminDeleteUserErrors, AdminDeleteUserResponses, AdminGetOrganizationData, AdminGetOrganizationErrors, AdminGetOrganizationResponses, AdminGetStatsData, AdminGetStatsResponses, AdminGetUserData, AdminGetUserErrors, AdminGetUserResponses, AdminListOrganizationMembersData, AdminListOrganizationMembersErrors, AdminListOrganizationMembersResponses, AdminListOrganizationsData, AdminListOrganizationsErrors, AdminListOrganizationsResponses, AdminListSessionsData, AdminListSessionsErrors, AdminListSessionsResponses, AdminListUsersData, AdminListUsersErrors, AdminListUsersResponses, AdminRemoveOrganizationMemberData, AdminRemoveOrganizationMemberErrors, AdminRemoveOrganizationMemberResponses, AdminUpdateOrganizationData, AdminUpdateOrganizationErrors, AdminUpdateOrganizationResponses, AdminUpdateUserData, AdminUpdateUserErrors, AdminUpdateUserResponses, ChangeCurrentUserPasswordData, ChangeCurrentUserPasswordErrors, ChangeCurrentUserPasswordResponses, CleanupExpiredSessionsData, CleanupExpiredSessionsResponses, ConfirmPasswordResetData, ConfirmPasswordResetErrors, ConfirmPasswordResetResponses, DeleteUserData, DeleteUserErrors, DeleteUserResponses, GetCurrentUserProfileData, GetCurrentUserProfileResponses, GetMyOrganizationsData, GetMyOrganizationsErrors, GetMyOrganizationsResponses, GetOrganizationData, GetOrganizationErrors, GetOrganizationMembersData, GetOrganizationMembersErrors, GetOrganizationMembersResponses, GetOrganizationResponses, GetUserByIdData, GetUserByIdErrors, GetUserByIdResponses, HealthCheckData, HealthCheckResponses, ListMySessionsData, ListMySessionsResponses, ListUsersData, ListUsersErrors, ListUsersResponses, LoginData, LoginErrors, LoginOauthData, LoginOauthErrors, LoginOauthResponses, LoginResponses, LogoutAllData, LogoutAllResponses, LogoutData, LogoutErrors, LogoutResponses, RefreshTokenData, RefreshTokenErrors, RefreshTokenResponses, RegisterData, RegisterErrors, RegisterResponses, RequestPasswordResetData, RequestPasswordResetErrors, RequestPasswordResetResponses, RevokeSessionData, RevokeSessionErrors, RevokeSessionResponses, RootGetData, RootGetResponses, UpdateCurrentUserData, UpdateCurrentUserErrors, UpdateCurrentUserResponses, UpdateOrganizationData, UpdateOrganizationErrors, UpdateOrganizationResponses, UpdateUserData, UpdateUserErrors, UpdateUserResponses } from './types.gen';
|
||||
|
||||
export type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean> = Options2<TData, ThrowOnError> & {
|
||||
/**
|
||||
@@ -484,6 +484,25 @@ export const cleanupExpiredSessions = <ThrowOnError extends boolean = false>(opt
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Admin: Get Dashboard Stats
|
||||
*
|
||||
* Get aggregated statistics for the admin dashboard (admin only)
|
||||
*/
|
||||
export const adminGetStats = <ThrowOnError extends boolean = false>(options?: Options<AdminGetStatsData, ThrowOnError>) => {
|
||||
return (options?.client ?? client).get<AdminGetStatsResponses, unknown, ThrowOnError>({
|
||||
responseType: 'json',
|
||||
security: [
|
||||
{
|
||||
scheme: 'bearer',
|
||||
type: 'http'
|
||||
}
|
||||
],
|
||||
url: '/api/v1/admin/stats',
|
||||
...options
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Admin: List All Users
|
||||
*
|
||||
|
||||
@@ -93,6 +93,28 @@ export type AdminSessionResponse = {
|
||||
is_active: boolean;
|
||||
};
|
||||
|
||||
/**
|
||||
* AdminStatsResponse
|
||||
*/
|
||||
export type AdminStatsResponse = {
|
||||
/**
|
||||
* User Growth
|
||||
*/
|
||||
user_growth: Array<UserGrowthData>;
|
||||
/**
|
||||
* Organization Distribution
|
||||
*/
|
||||
organization_distribution: Array<OrgDistributionData>;
|
||||
/**
|
||||
* Registration Activity
|
||||
*/
|
||||
registration_activity: Array<RegistrationActivityData>;
|
||||
/**
|
||||
* User Status
|
||||
*/
|
||||
user_status: Array<UserStatusData>;
|
||||
};
|
||||
|
||||
/**
|
||||
* Body_login_oauth
|
||||
*/
|
||||
@@ -234,6 +256,20 @@ export type MessageResponse = {
|
||||
message: string;
|
||||
};
|
||||
|
||||
/**
|
||||
* OrgDistributionData
|
||||
*/
|
||||
export type OrgDistributionData = {
|
||||
/**
|
||||
* Name
|
||||
*/
|
||||
name: string;
|
||||
/**
|
||||
* Value
|
||||
*/
|
||||
value: number;
|
||||
};
|
||||
|
||||
/**
|
||||
* OrganizationCreate
|
||||
*
|
||||
@@ -550,6 +586,20 @@ export type RefreshTokenRequest = {
|
||||
refresh_token: string;
|
||||
};
|
||||
|
||||
/**
|
||||
* RegistrationActivityData
|
||||
*/
|
||||
export type RegistrationActivityData = {
|
||||
/**
|
||||
* Date
|
||||
*/
|
||||
date: string;
|
||||
/**
|
||||
* Registrations
|
||||
*/
|
||||
registrations: number;
|
||||
};
|
||||
|
||||
/**
|
||||
* SessionListResponse
|
||||
*
|
||||
@@ -682,6 +732,28 @@ export type UserCreate = {
|
||||
* Is Superuser
|
||||
*/
|
||||
is_superuser?: boolean;
|
||||
/**
|
||||
* Is Active
|
||||
*/
|
||||
is_active?: boolean;
|
||||
};
|
||||
|
||||
/**
|
||||
* UserGrowthData
|
||||
*/
|
||||
export type UserGrowthData = {
|
||||
/**
|
||||
* Date
|
||||
*/
|
||||
date: string;
|
||||
/**
|
||||
* Total Users
|
||||
*/
|
||||
total_users: number;
|
||||
/**
|
||||
* Active Users
|
||||
*/
|
||||
active_users: number;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -724,6 +796,24 @@ export type UserResponse = {
|
||||
* Updated At
|
||||
*/
|
||||
updated_at?: string | null;
|
||||
/**
|
||||
* Locale
|
||||
*/
|
||||
locale?: string | null;
|
||||
};
|
||||
|
||||
/**
|
||||
* UserStatusData
|
||||
*/
|
||||
export type UserStatusData = {
|
||||
/**
|
||||
* Name
|
||||
*/
|
||||
name: string;
|
||||
/**
|
||||
* Value
|
||||
*/
|
||||
value: number;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -752,6 +842,12 @@ export type UserUpdate = {
|
||||
preferences?: {
|
||||
[key: string]: unknown;
|
||||
} | null;
|
||||
/**
|
||||
* Locale
|
||||
*
|
||||
* User's preferred locale (BCP 47 format: en, it, en-US, it-IT)
|
||||
*/
|
||||
locale?: string | null;
|
||||
/**
|
||||
* Is Active
|
||||
*/
|
||||
@@ -1270,6 +1366,22 @@ export type CleanupExpiredSessionsResponses = {
|
||||
|
||||
export type CleanupExpiredSessionsResponse = CleanupExpiredSessionsResponses[keyof CleanupExpiredSessionsResponses];
|
||||
|
||||
export type AdminGetStatsData = {
|
||||
body?: never;
|
||||
path?: never;
|
||||
query?: never;
|
||||
url: '/api/v1/admin/stats';
|
||||
};
|
||||
|
||||
export type AdminGetStatsResponses = {
|
||||
/**
|
||||
* Successful Response
|
||||
*/
|
||||
200: AdminStatsResponse;
|
||||
};
|
||||
|
||||
export type AdminGetStatsResponse = AdminGetStatsResponses[keyof AdminGetStatsResponses];
|
||||
|
||||
export type AdminListUsersData = {
|
||||
body?: never;
|
||||
path?: never;
|
||||
|
||||
Reference in New Issue
Block a user