feat: added openapi doc
All checks were successful
Test / lint-frontend (pull_request) Successful in 45s
Test / test-frontend (pull_request) Successful in 44s
Test / frontend-build (pull_request) Successful in 47s
Verify / verify-generated-agent-code (pull_request) Successful in 1m15s
Verify / verify-openapi-spec (pull_request) Successful in 2m29s
Verify / verify-generated-database-code (pull_request) Successful in 2m35s
Verify / verify-frontend-api-client (pull_request) Successful in 19s
Test / lint-crates (pull_request) Successful in 59s
Test / test-crates (pull_request) Successful in 2m44s
All checks were successful
Test / lint-frontend (pull_request) Successful in 45s
Test / test-frontend (pull_request) Successful in 44s
Test / frontend-build (pull_request) Successful in 47s
Verify / verify-generated-agent-code (pull_request) Successful in 1m15s
Verify / verify-openapi-spec (pull_request) Successful in 2m29s
Verify / verify-generated-database-code (pull_request) Successful in 2m35s
Verify / verify-frontend-api-client (pull_request) Successful in 19s
Test / lint-crates (pull_request) Successful in 59s
Test / test-crates (pull_request) Successful in 2m44s
This commit is contained in:
@@ -1,6 +1,42 @@
|
||||
export namespace Schemas {
|
||||
// <Schemas>
|
||||
export type AdminInitRequest = { password: string; setup_secret: string; username: string };
|
||||
export type UpstreamBasicInfo = {
|
||||
created_at: string;
|
||||
id: string;
|
||||
name: string;
|
||||
protocol: string;
|
||||
updated_at: string;
|
||||
};
|
||||
export type UpstreamTargetInfo = {
|
||||
created_at: string;
|
||||
enabled: boolean;
|
||||
id: string;
|
||||
is_backup: boolean;
|
||||
target_host: string;
|
||||
target_port: number;
|
||||
updated_at: string;
|
||||
upstream?: (null | UpstreamBasicInfo) | undefined;
|
||||
upstream_id: string;
|
||||
weight: number;
|
||||
};
|
||||
export type CreateUpstreamRequestBody = {
|
||||
algorithm?: (string | null) | undefined;
|
||||
name: string;
|
||||
protocol: string;
|
||||
sticky_session?: (boolean | null) | undefined;
|
||||
upstream_targets: Array<UpstreamTargetInfo>;
|
||||
};
|
||||
export type CreateUpstreamTargetInfo = {
|
||||
enabled?: (boolean | null) | undefined;
|
||||
host: string;
|
||||
is_backup?: (boolean | null) | undefined;
|
||||
port: number;
|
||||
upstream_id: string;
|
||||
weight?: (number | null) | undefined;
|
||||
};
|
||||
export type GetUpstreamParams = Partial<{ include_targets: boolean | null }>;
|
||||
export type GetUpstreamTargetsParams = Partial<{ include_upstream: boolean | null }>;
|
||||
export type HealthInfo = {
|
||||
errors?: (Array<string> | null) | undefined;
|
||||
is_initialized: boolean;
|
||||
@@ -9,6 +45,77 @@ export namespace Schemas {
|
||||
version: string;
|
||||
};
|
||||
export type LoginRequest = { password: string; username: string };
|
||||
export type PaginationInfo = { current_page: number; per_page: number; total_items: number; total_pages: number };
|
||||
export type UpstreamTargetBasicInfo = {
|
||||
created_at: string;
|
||||
enabled: boolean;
|
||||
id: string;
|
||||
is_backup: boolean;
|
||||
target_host: string;
|
||||
target_port: number;
|
||||
updated_at: string;
|
||||
weight: number;
|
||||
};
|
||||
export type UpdateUpstreamInfoResponse = {
|
||||
algorithm: string;
|
||||
created_at: string;
|
||||
created_by?: (string | null) | undefined;
|
||||
id: string;
|
||||
name: string;
|
||||
protocol: string;
|
||||
sticky_session: boolean;
|
||||
updated_at: string;
|
||||
upstream_targets: Array<UpstreamTargetBasicInfo>;
|
||||
};
|
||||
export type UpdateUpstreamRequestBody = Partial<{
|
||||
algorithm: string | null;
|
||||
name: string | null;
|
||||
protocol: string | null;
|
||||
sticky_session: boolean | null;
|
||||
upstream_targets: Array<UpstreamTargetBasicUpdateInfo> | null;
|
||||
}>;
|
||||
export type UpdateUpstreamTargetInfoResponse = {
|
||||
created_at: string;
|
||||
enabled: boolean;
|
||||
host: string;
|
||||
id: string;
|
||||
is_backup: boolean;
|
||||
port: number;
|
||||
updated_at: string;
|
||||
upstream_id: string;
|
||||
weight: number;
|
||||
};
|
||||
export type UpdateUpstreamTargetRequestBody = Partial<{
|
||||
enabled: boolean | null;
|
||||
host: string | null;
|
||||
is_backup: boolean | null;
|
||||
port: number | null;
|
||||
weight: number | null;
|
||||
}>;
|
||||
export type UpstreamInfoResponse = {
|
||||
algorithm: string;
|
||||
created_at: string;
|
||||
created_by?: (string | null) | undefined;
|
||||
id: string;
|
||||
name: string;
|
||||
protocol: string;
|
||||
sticky_session: boolean;
|
||||
updated_at: string;
|
||||
upstream_targets: Array<UpstreamTargetBasicInfo>;
|
||||
};
|
||||
export type UpstreamListResponse = { items: Array<UpstreamInfoResponse>; pagination: PaginationInfo };
|
||||
export type UpstreamTargetBasicUpdateInfo = { enabled: boolean; id: number };
|
||||
export type UpstreamTargetInfoResponse = {
|
||||
created_at: string;
|
||||
enabled: boolean;
|
||||
host: string;
|
||||
id: string;
|
||||
is_backup: boolean;
|
||||
port: number;
|
||||
updated_at: string;
|
||||
upstream_id: string;
|
||||
weight: number;
|
||||
};
|
||||
export type UserInfo = { id: string; username: string };
|
||||
|
||||
// </Schemas>
|
||||
@@ -42,6 +149,95 @@ export namespace Endpoints {
|
||||
parameters: never;
|
||||
responses: { 200: Schemas.HealthInfo; 404: unknown };
|
||||
};
|
||||
export type get_Get_upstream_target = {
|
||||
method: "GET";
|
||||
path: "/api/upstream_targets/{upstream_target_id}";
|
||||
requestFormat: "json";
|
||||
parameters: {
|
||||
path: { upstream_target_id: string };
|
||||
};
|
||||
responses: { 200: Schemas.UpstreamTargetInfo; 404: unknown; 500: unknown };
|
||||
};
|
||||
export type delete_Remove_upstream_target = {
|
||||
method: "DELETE";
|
||||
path: "/api/upstream_targets/{upstream_target_id}";
|
||||
requestFormat: "json";
|
||||
parameters: {
|
||||
path: { upstream_target_id: string };
|
||||
};
|
||||
responses: { 200: unknown; 401: unknown; 404: unknown; 500: unknown };
|
||||
};
|
||||
export type patch_Update_upstream_target = {
|
||||
method: "PATCH";
|
||||
path: "/api/upstream_targets/{upstream_target_id}";
|
||||
requestFormat: "json";
|
||||
parameters: {
|
||||
path: { upstream_target_id: string };
|
||||
|
||||
body: Schemas.UpdateUpstreamTargetRequestBody;
|
||||
};
|
||||
responses: {
|
||||
200: Schemas.UpdateUpstreamTargetInfoResponse;
|
||||
401: unknown;
|
||||
404: unknown;
|
||||
422: unknown;
|
||||
500: unknown;
|
||||
};
|
||||
};
|
||||
export type get_Get_upstream_list = {
|
||||
method: "GET";
|
||||
path: "/api/upstreams";
|
||||
requestFormat: "json";
|
||||
parameters: never;
|
||||
responses: { 200: Schemas.UpstreamListResponse; 500: unknown };
|
||||
};
|
||||
export type post_Create_upstream = {
|
||||
method: "POST";
|
||||
path: "/api/upstreams";
|
||||
requestFormat: "json";
|
||||
parameters: {
|
||||
body: Schemas.CreateUpstreamRequestBody;
|
||||
};
|
||||
responses: { 200: Schemas.UpstreamInfoResponse; 401: unknown; 422: unknown; 500: unknown };
|
||||
};
|
||||
export type get_Get_upstream = {
|
||||
method: "GET";
|
||||
path: "/api/upstreams/{upstream_id}";
|
||||
requestFormat: "json";
|
||||
parameters: {
|
||||
path: { upstream_id: string };
|
||||
};
|
||||
responses: { 200: Schemas.UpstreamInfoResponse; 404: unknown; 500: unknown };
|
||||
};
|
||||
export type delete_Remove_upstream = {
|
||||
method: "DELETE";
|
||||
path: "/api/upstreams/{upstream_id}";
|
||||
requestFormat: "json";
|
||||
parameters: {
|
||||
path: { upstream_id: string };
|
||||
};
|
||||
responses: { 200: unknown; 401: unknown; 404: unknown; 500: unknown };
|
||||
};
|
||||
export type patch_Update_upstream = {
|
||||
method: "PATCH";
|
||||
path: "/api/upstreams/{upstream_id}";
|
||||
requestFormat: "json";
|
||||
parameters: {
|
||||
path: { upstream_id: string };
|
||||
|
||||
body: Schemas.UpdateUpstreamRequestBody;
|
||||
};
|
||||
responses: { 200: Schemas.UpdateUpstreamInfoResponse; 401: unknown; 404: unknown; 422: unknown; 500: unknown };
|
||||
};
|
||||
export type post_Add_upstream_target = {
|
||||
method: "POST";
|
||||
path: "/api/upstreams/{upstream_id}/targets";
|
||||
requestFormat: "json";
|
||||
parameters: {
|
||||
body: Schemas.CreateUpstreamTargetInfo;
|
||||
};
|
||||
responses: { 200: Schemas.UpstreamTargetInfoResponse; 401: unknown; 422: unknown; 500: unknown };
|
||||
};
|
||||
export type get_Get_user_info = {
|
||||
method: "GET";
|
||||
path: "/api/user/me";
|
||||
@@ -58,11 +254,24 @@ export type EndpointByMethod = {
|
||||
post: {
|
||||
"/api/auth/init_admin": Endpoints.post_Init_admin;
|
||||
"/api/auth/login": Endpoints.post_Login;
|
||||
"/api/upstreams": Endpoints.post_Create_upstream;
|
||||
"/api/upstreams/{upstream_id}/targets": Endpoints.post_Add_upstream_target;
|
||||
};
|
||||
get: {
|
||||
"/api/health/info": Endpoints.get_Get_health_info;
|
||||
"/api/upstream_targets/{upstream_target_id}": Endpoints.get_Get_upstream_target;
|
||||
"/api/upstreams": Endpoints.get_Get_upstream_list;
|
||||
"/api/upstreams/{upstream_id}": Endpoints.get_Get_upstream;
|
||||
"/api/user/me": Endpoints.get_Get_user_info;
|
||||
};
|
||||
delete: {
|
||||
"/api/upstream_targets/{upstream_target_id}": Endpoints.delete_Remove_upstream_target;
|
||||
"/api/upstreams/{upstream_id}": Endpoints.delete_Remove_upstream;
|
||||
};
|
||||
patch: {
|
||||
"/api/upstream_targets/{upstream_target_id}": Endpoints.patch_Update_upstream_target;
|
||||
"/api/upstreams/{upstream_id}": Endpoints.patch_Update_upstream;
|
||||
};
|
||||
};
|
||||
|
||||
// </EndpointByMethod>
|
||||
@@ -70,6 +279,8 @@ export type EndpointByMethod = {
|
||||
// <EndpointByMethod.Shorthands>
|
||||
export type PostEndpoints = EndpointByMethod["post"];
|
||||
export type GetEndpoints = EndpointByMethod["get"];
|
||||
export type DeleteEndpoints = EndpointByMethod["delete"];
|
||||
export type PatchEndpoints = EndpointByMethod["patch"];
|
||||
// </EndpointByMethod.Shorthands>
|
||||
|
||||
// <ApiClientTypes>
|
||||
@@ -364,6 +575,68 @@ export class ApiClient {
|
||||
}
|
||||
// </ApiClient.get>
|
||||
|
||||
// <ApiClient.delete>
|
||||
delete<Path extends keyof DeleteEndpoints, TEndpoint extends DeleteEndpoints[Path]>(
|
||||
path: Path,
|
||||
...params: MaybeOptionalArg<
|
||||
TEndpoint extends { parameters: infer UParams }
|
||||
? NotNever<UParams> extends true
|
||||
? UParams & { overrides?: RequestInit; withResponse?: false; throwOnStatusError?: boolean }
|
||||
: { overrides?: RequestInit; withResponse?: false; throwOnStatusError?: boolean }
|
||||
: { overrides?: RequestInit; withResponse?: false; throwOnStatusError?: boolean }
|
||||
>
|
||||
): Promise<Extract<InferResponseByStatus<TEndpoint, SuccessStatusCode>, { data: {} }>["data"]>;
|
||||
|
||||
delete<Path extends keyof DeleteEndpoints, TEndpoint extends DeleteEndpoints[Path]>(
|
||||
path: Path,
|
||||
...params: MaybeOptionalArg<
|
||||
TEndpoint extends { parameters: infer UParams }
|
||||
? NotNever<UParams> extends true
|
||||
? UParams & { overrides?: RequestInit; withResponse?: true; throwOnStatusError?: boolean }
|
||||
: { overrides?: RequestInit; withResponse?: true; throwOnStatusError?: boolean }
|
||||
: { overrides?: RequestInit; withResponse?: true; throwOnStatusError?: boolean }
|
||||
>
|
||||
): Promise<SafeApiResponse<TEndpoint>>;
|
||||
|
||||
delete<Path extends keyof DeleteEndpoints, _TEndpoint extends DeleteEndpoints[Path]>(
|
||||
path: Path,
|
||||
...params: MaybeOptionalArg<any>
|
||||
): Promise<any> {
|
||||
return this.request("delete", path, ...params);
|
||||
}
|
||||
// </ApiClient.delete>
|
||||
|
||||
// <ApiClient.patch>
|
||||
patch<Path extends keyof PatchEndpoints, TEndpoint extends PatchEndpoints[Path]>(
|
||||
path: Path,
|
||||
...params: MaybeOptionalArg<
|
||||
TEndpoint extends { parameters: infer UParams }
|
||||
? NotNever<UParams> extends true
|
||||
? UParams & { overrides?: RequestInit; withResponse?: false; throwOnStatusError?: boolean }
|
||||
: { overrides?: RequestInit; withResponse?: false; throwOnStatusError?: boolean }
|
||||
: { overrides?: RequestInit; withResponse?: false; throwOnStatusError?: boolean }
|
||||
>
|
||||
): Promise<Extract<InferResponseByStatus<TEndpoint, SuccessStatusCode>, { data: {} }>["data"]>;
|
||||
|
||||
patch<Path extends keyof PatchEndpoints, TEndpoint extends PatchEndpoints[Path]>(
|
||||
path: Path,
|
||||
...params: MaybeOptionalArg<
|
||||
TEndpoint extends { parameters: infer UParams }
|
||||
? NotNever<UParams> extends true
|
||||
? UParams & { overrides?: RequestInit; withResponse?: true; throwOnStatusError?: boolean }
|
||||
: { overrides?: RequestInit; withResponse?: true; throwOnStatusError?: boolean }
|
||||
: { overrides?: RequestInit; withResponse?: true; throwOnStatusError?: boolean }
|
||||
>
|
||||
): Promise<SafeApiResponse<TEndpoint>>;
|
||||
|
||||
patch<Path extends keyof PatchEndpoints, _TEndpoint extends PatchEndpoints[Path]>(
|
||||
path: Path,
|
||||
...params: MaybeOptionalArg<any>
|
||||
): Promise<any> {
|
||||
return this.request("patch", path, ...params);
|
||||
}
|
||||
// </ApiClient.patch>
|
||||
|
||||
// <ApiClient.request>
|
||||
/**
|
||||
* Generic request method with full type-safety for any endpoint
|
||||
|
||||
Reference in New Issue
Block a user