import {z} from 'zod' export type UpdateApiUsersUserIdArgs = {user_id: string | number, body: {username?: string | undefined, user_title?: string | undefined, display_group_id?: number | undefined, display_icon_group_id?: number | undefined, display_banner_id?: number | undefined, conv_welcome_message?: string | undefined, user_dob_day?: number | undefined, user_dob_month?: number | undefined, user_dob_year?: number | undefined, secret_answer?: string | undefined, secret_answer_type?: number | undefined, short_link?: string | undefined, language_id?: (1 | 2) | undefined, gender?: ('' | 'male' | 'female') | undefined, timezone?: ('Pacific/Midway' | 'Pacific/Honolulu' | 'Pacific/Marquesas' | 'America/Anchorage' | 'America/Los_Angeles' | 'America/Santa_Isabel' | 'America/Tijuana' | 'America/Denver' | 'America/Chihuahua' | 'America/Phoenix' | 'America/Chicago' | 'America/Belize' | 'America/Mexico_City' | 'Pacific/Easter' | 'America/New_York' | 'America/Havana' | 'America/Bogota' | 'America/Caracas' | 'America/Halifax' | 'America/Goose_Bay' | 'America/Asuncion' | 'America/Santiago' | 'America/Cuiaba' | 'America/La_Paz' | 'America/St_Johns' | 'America/Argentina/Buenos_Aires' | 'America/Argentina/San_Luis' | 'America/Argentina/Mendoza' | 'Atlantic/Stanley' | 'America/Godthab' | 'America/Montevideo' | 'America/Sao_Paulo' | 'America/Miquelon' | 'America/Noronha' | 'Atlantic/Cape_Verde' | 'Atlantic/Azores' | 'Europe/London' | 'Africa/Casablanca' | 'Atlantic/Reykjavik' | 'Europe/Amsterdam' | 'Africa/Algiers' | 'Africa/Windhoek' | 'Africa/Tunis' | 'Europe/Athens' | 'Africa/Johannesburg' | 'Europe/Kaliningrad' | 'Asia/Amman' | 'Asia/Beirut' | 'Africa/Cairo' | 'Asia/Jerusalem' | 'Asia/Gaza' | 'Asia/Damascus' | 'Europe/Moscow' | 'Europe/Minsk' | 'Africa/Nairobi' | 'Asia/Tehran' | 'Asia/Dubai' | 'Asia/Yerevan' | 'Asia/Baku' | 'Indian/Mauritius' | 'Asia/Kabul' | 'Asia/Yekaterinburg' | 'Asia/Tashkent' | 'Asia/Kolkata' | 'Asia/Kathmandu' | 'Asia/Novosibirsk' | 'Asia/Dhaka' | 'Asia/Almaty' | 'Asia/Rangoon' | 'Asia/Krasnoyarsk' | 'Asia/Bangkok' | 'Asia/Irkutsk' | 'Asia/Hong_Kong' | 'Asia/Singapore' | 'Australia/Perth' | 'Asia/Yakutsk' | 'Asia/Tokyo' | 'Asia/Seoul' | 'Australia/Adelaide' | 'Australia/Darwin' | 'Asia/Vladivostok' | 'Asia/Magadan' | 'Australia/Brisbane' | 'Australia/Sydney' | 'Pacific/Noumea' | 'Pacific/Norfolk' | 'Asia/Anadyr' | 'Pacific/Auckland' | 'Pacific/Fiji' | 'Pacific/Chatham' | 'Pacific/Tongatapu' | 'Pacific/Apia' | 'Pacific/Kiritimati') | undefined, receive_admin_email?: boolean | undefined, activity_visible?: boolean | undefined, show_dob_date?: boolean | undefined, show_dob_year?: boolean | undefined, hide_username_change_logs?: boolean | undefined, allow_view_profile?: ('none' | 'members' | 'followed') | undefined, allow_post_profile?: ('none' | 'members' | 'followed') | undefined, allow_send_personal_conversation?: ('none' | 'members' | 'followed') | undefined, allow_invite_group?: ('none' | 'members' | 'followed') | undefined, allow_receive_news_feed?: ('none' | 'members' | 'followed') | undefined, alert?: {[key: string]: boolean} | undefined, fields?: ({location?: string | undefined, occupation?: string | undefined, homepage?: string | undefined, _4?: string | undefined, lztInnovationLink?: string | undefined, lztInnovation20Link?: string | undefined, lztInnovation30Link?: string | undefined, telegram?: string | undefined, vk?: string | undefined, discord?: string | undefined, steam?: string | undefined, jabber?: string | undefined, github?: string | undefined, matrix?: string | undefined}) | undefined}}; export type UpdateApiUsersUserIdOptions = {baseUrl?: string | undefined, HTTPBearer?: string | undefined, fetch?: typeof fetch | undefined}; export const respSystemInfo = z.object({visitor_id: z.number().int(), time: z.number().int(), log_id: z.number().int()}); export const updateApiUsersUserIdResponse = z.object({status: z.string().optional(), message: z.string().optional(), system_info: respSystemInfo.optional()}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * Edit User * * PUT /users/{user_id} */ export const updateApiUsersUserId = async (args: UpdateApiUsersUserIdArgs, options?: UpdateApiUsersUserIdOptions) => { const {baseUrl = "https://api.lolz.team", fetch: fetchFn = fetch, HTTPBearer} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") headers.set('accept', "application/json") if (HTTPBearer !== undefined) headers.set('authorization', `Bearer ${HTTPBearer}`) const url = `${baseUrl.replace(/\/+$/, '')}/users/${encodeURIComponent(String(args.user_id))}${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "PUT", headers, body: JSON.stringify(args.body)}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(updateApiUsersUserIdResponse, await res.json()) };