Remnawave_Node/libs/contract/commands/handler/add-users.command.ts
kastov 9cd01fce62
Some checks failed
Build & Push Docker Image / Send TG message (push) Has been cancelled
Build & Push Docker Image / Build linux/amd64 (push) Has been cancelled
Build & Push Docker Image / Build linux/arm64 (push) Has been cancelled
Deploy lib / Send Telegram message (push) Has been cancelled
Deploy lib / build (push) Has been cancelled
Build & Push Docker Image / Merge & push manifest (push) Has been cancelled
Build & Push Docker Image / Send TG message-1 (push) Has been cancelled
Build & Push Docker Image / notify-on-error (push) Has been cancelled
Deploy lib / Send Telegram message-1 (push) Has been cancelled
Deploy lib / notify-on-error (push) Has been cancelled
chore: upgrade zod
2026-07-04 17:38:39 +03:00

69 lines
1.8 KiB
TypeScript

import { z } from 'zod';
import { REST_API } from '../../api';
export namespace AddUsersCommand {
export const url = REST_API.HANDLER.ADD_USERS;
const BaseTrojanUser = z.object({
type: z.literal('trojan'),
tag: z.string(),
});
const BaseVlessUser = z.object({
type: z.literal('vless'),
tag: z.string(),
flow: z.enum(['xtls-rprx-vision', '']),
});
const BaseShadowsocksUser = z.object({
type: z.literal('shadowsocks'),
tag: z.string(),
});
const BaseShadowsocks22User = z.object({
type: z.literal('shadowsocks22'),
tag: z.string(),
});
const BaseHysteriaUser = z.object({
type: z.literal('hysteria'),
tag: z.string(),
});
export const RequestSchema = z.object({
affectedInboundTags: z.array(z.string()),
users: z.array(
z.object({
inboundData: z.array(
z.discriminatedUnion('type', [
BaseTrojanUser,
BaseVlessUser,
BaseShadowsocksUser,
BaseShadowsocks22User,
BaseHysteriaUser,
]),
),
userData: z.object({
userId: z.string(),
hashUuid: z.uuid(),
vlessUuid: z.uuid(),
trojanPassword: z.string(),
ssPassword: z.string(),
}),
}),
),
});
export type Request = z.infer<typeof RequestSchema>;
export const ResponseSchema = z.object({
response: z.object({
success: z.boolean(),
error: z.string().nullable(),
}),
});
export type Response = z.infer<typeof ResponseSchema>;
}