/* tslint:disable */
/* eslint-disable */
/**
 * Indexea OpenAPI
 * 这是 Indexea 搜索服务平台的 OpenAPI，用于描述平台的所有接口信息，你可以通过这个页面来了解和在线验证平台的所有接口信息。  ### Errors  本 API 使用标准的 HTTP 状态码来指示操作成功或者失败，如果失败将会在 body 中以 JSON 格式提供详细的错误信息，如下所示：  ``` {   \"error\": 404,   \"message\": \"page not found\" } ``` 
 *
 * The version of the OpenAPI document: 1.0.0
 * Contact: indexea.com@gmail.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */


import * as runtime from '../runtime';
import type {
  AccountBean,
  Bulletin,
  OpenidBean,
} from '../models';
import {
    AccountBeanFromJSON,
    AccountBeanToJSON,
    BulletinFromJSON,
    BulletinToJSON,
    OpenidBeanFromJSON,
    OpenidBeanToJSON,
} from '../models';

export interface AccountDeleteRequest {
    pwd: string;
    vcode: string;
}

export interface AccountDeleteOpenidRequest {
    type: string;
    openid: string;
}

export interface AccountPasswdRequest {
    password: string;
    newPassword: string;
}

export interface AccountPortraitRequest {
    portrait?: Blob;
}

export interface AccountProfileRequest {
    account?: string;
}

export interface AccountResetPwdRequest {
    account: string;
    verifyCode: string;
    pwd: string;
}

export interface AccountSendVerifyCodeRequest {
    account: string;
    purpose: string;
}

export interface AccountSigninRequest {
    account: string;
    pwd: string;
    keepLogin?: boolean;
}

export interface AccountSignupRequest {
    account: string;
    pwd: string;
    name: string;
    activateCode: string;
}

export interface AccountUpdateRequest {
    accountBean: AccountBean;
}

export interface AccountUpdateSettingsRequest {
    key: string;
    type: AccountUpdateSettingsTypeEnum;
    value: string;
    vcode?: string;
}

/**
 * 
 */
export class AccountApi extends runtime.BaseAPI {

    /**
     * 获取系统公告
     * 获取系统公告
     */
    async accountBulletinRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Bulletin>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/accounts/bulletin`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => BulletinFromJSON(jsonValue));
    }

    /**
     * 获取系统公告
     * 获取系统公告
     */
    async accountBulletin(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Bulletin> {
        const response = await this.accountBulletinRaw(initOverrides);
        return await response.value();
    }

    /**
     * 
     * 注销账号
     */
    async accountDeleteRaw(requestParameters: AccountDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<boolean>> {
        if (requestParameters.pwd === null || requestParameters.pwd === undefined) {
            throw new runtime.RequiredError('pwd','Required parameter requestParameters.pwd was null or undefined when calling accountDelete.');
        }

        if (requestParameters.vcode === null || requestParameters.vcode === undefined) {
            throw new runtime.RequiredError('vcode','Required parameter requestParameters.vcode was null or undefined when calling accountDelete.');
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const consumes: runtime.Consume[] = [
            { contentType: 'application/x-www-form-urlencoded' },
        ];
        // @ts-ignore: canConsumeForm may be unused
        const canConsumeForm = runtime.canConsumeForm(consumes);

        let formParams: { append(param: string, value: any): any };
        let useForm = false;
        if (useForm) {
            formParams = new FormData();
        } else {
            formParams = new URLSearchParams();
        }

        if (requestParameters.pwd !== undefined) {
            formParams.append('pwd', requestParameters.pwd as any);
        }

        if (requestParameters.vcode !== undefined) {
            formParams.append('vcode', requestParameters.vcode as any);
        }

        const response = await this.request({
            path: `/account/profile`,
            method: 'DELETE',
            headers: headerParameters,
            query: queryParameters,
            body: formParams,
        }, initOverrides);

        return new runtime.TextApiResponse(response) as any;
    }

    /**
     * 
     * 注销账号
     */
    async accountDelete(requestParameters: AccountDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<boolean> {
        const response = await this.accountDeleteRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 
     * 解绑三方账号
     */
    async accountDeleteOpenidRaw(requestParameters: AccountDeleteOpenidRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<boolean>> {
        if (requestParameters.type === null || requestParameters.type === undefined) {
            throw new runtime.RequiredError('type','Required parameter requestParameters.type was null or undefined when calling accountDeleteOpenid.');
        }

        if (requestParameters.openid === null || requestParameters.openid === undefined) {
            throw new runtime.RequiredError('openid','Required parameter requestParameters.openid was null or undefined when calling accountDeleteOpenid.');
        }

        const queryParameters: any = {};

        if (requestParameters.type !== undefined) {
            queryParameters['type'] = requestParameters.type;
        }

        if (requestParameters.openid !== undefined) {
            queryParameters['openid'] = requestParameters.openid;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/account/openid`,
            method: 'DELETE',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.TextApiResponse(response) as any;
    }

    /**
     * 
     * 解绑三方账号
     */
    async accountDeleteOpenid(requestParameters: AccountDeleteOpenidRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<boolean> {
        const response = await this.accountDeleteOpenidRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 
     * 获取绑定的所有三方账号
     */
    async accountOpenidRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<OpenidBean>>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/account/openid`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(OpenidBeanFromJSON));
    }

    /**
     * 
     * 获取绑定的所有三方账号
     */
    async accountOpenid(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<OpenidBean>> {
        const response = await this.accountOpenidRaw(initOverrides);
        return await response.value();
    }

    /**
     * 
     * 修改账号密码
     */
    async accountPasswdRaw(requestParameters: AccountPasswdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<boolean>> {
        if (requestParameters.password === null || requestParameters.password === undefined) {
            throw new runtime.RequiredError('password','Required parameter requestParameters.password was null or undefined when calling accountPasswd.');
        }

        if (requestParameters.newPassword === null || requestParameters.newPassword === undefined) {
            throw new runtime.RequiredError('newPassword','Required parameter requestParameters.newPassword was null or undefined when calling accountPasswd.');
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const consumes: runtime.Consume[] = [
            { contentType: 'application/x-www-form-urlencoded' },
        ];
        // @ts-ignore: canConsumeForm may be unused
        const canConsumeForm = runtime.canConsumeForm(consumes);

        let formParams: { append(param: string, value: any): any };
        let useForm = false;
        if (useForm) {
            formParams = new FormData();
        } else {
            formParams = new URLSearchParams();
        }

        if (requestParameters.password !== undefined) {
            formParams.append('password', requestParameters.password as any);
        }

        if (requestParameters.newPassword !== undefined) {
            formParams.append('newPassword', requestParameters.newPassword as any);
        }

        const response = await this.request({
            path: `/account/passwd`,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: formParams,
        }, initOverrides);

        return new runtime.TextApiResponse(response) as any;
    }

    /**
     * 
     * 修改账号密码
     */
    async accountPasswd(requestParameters: AccountPasswdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<boolean> {
        const response = await this.accountPasswdRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 
     * 修改账号头像
     */
    async accountPortraitRaw(requestParameters: AccountPortraitRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<AccountBean>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const consumes: runtime.Consume[] = [
            { contentType: 'multipart/form-data' },
        ];
        // @ts-ignore: canConsumeForm may be unused
        const canConsumeForm = runtime.canConsumeForm(consumes);

        let formParams: { append(param: string, value: any): any };
        let useForm = false;
        // use FormData to transmit files using content-type "multipart/form-data"
        useForm = canConsumeForm;
        if (useForm) {
            formParams = new FormData();
        } else {
            formParams = new URLSearchParams();
        }

        if (requestParameters.portrait !== undefined) {
            formParams.append('portrait', requestParameters.portrait as any);
        }

        const response = await this.request({
            path: `/account/portrait`,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: formParams,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => AccountBeanFromJSON(jsonValue));
    }

    /**
     * 
     * 修改账号头像
     */
    async accountPortrait(requestParameters: AccountPortraitRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<AccountBean> {
        const response = await this.accountPortraitRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 
     * 获取登录账号信息
     */
    async accountProfileRaw(requestParameters: AccountProfileRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<AccountBean>> {
        const queryParameters: any = {};

        if (requestParameters.account !== undefined) {
            queryParameters['account'] = requestParameters.account;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/account/profile`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => AccountBeanFromJSON(jsonValue));
    }

    /**
     * 
     * 获取登录账号信息
     */
    async accountProfile(requestParameters: AccountProfileRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<AccountBean> {
        const response = await this.accountProfileRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 
     * 重置账号密码
     */
    async accountResetPwdRaw(requestParameters: AccountResetPwdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<boolean>> {
        if (requestParameters.account === null || requestParameters.account === undefined) {
            throw new runtime.RequiredError('account','Required parameter requestParameters.account was null or undefined when calling accountResetPwd.');
        }

        if (requestParameters.verifyCode === null || requestParameters.verifyCode === undefined) {
            throw new runtime.RequiredError('verifyCode','Required parameter requestParameters.verifyCode was null or undefined when calling accountResetPwd.');
        }

        if (requestParameters.pwd === null || requestParameters.pwd === undefined) {
            throw new runtime.RequiredError('pwd','Required parameter requestParameters.pwd was null or undefined when calling accountResetPwd.');
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        const consumes: runtime.Consume[] = [
            { contentType: 'application/x-www-form-urlencoded' },
        ];
        // @ts-ignore: canConsumeForm may be unused
        const canConsumeForm = runtime.canConsumeForm(consumes);

        let formParams: { append(param: string, value: any): any };
        let useForm = false;
        if (useForm) {
            formParams = new FormData();
        } else {
            formParams = new URLSearchParams();
        }

        if (requestParameters.account !== undefined) {
            formParams.append('account', requestParameters.account as any);
        }

        if (requestParameters.verifyCode !== undefined) {
            formParams.append('verifyCode', requestParameters.verifyCode as any);
        }

        if (requestParameters.pwd !== undefined) {
            formParams.append('pwd', requestParameters.pwd as any);
        }

        const response = await this.request({
            path: `/account/reset-pwd`,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: formParams,
        }, initOverrides);

        return new runtime.TextApiResponse(response) as any;
    }

    /**
     * 
     * 重置账号密码
     */
    async accountResetPwd(requestParameters: AccountResetPwdRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<boolean> {
        const response = await this.accountResetPwdRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 
     * 发送账号验证码
     */
    async accountSendVerifyCodeRaw(requestParameters: AccountSendVerifyCodeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<boolean>> {
        if (requestParameters.account === null || requestParameters.account === undefined) {
            throw new runtime.RequiredError('account','Required parameter requestParameters.account was null or undefined when calling accountSendVerifyCode.');
        }

        if (requestParameters.purpose === null || requestParameters.purpose === undefined) {
            throw new runtime.RequiredError('purpose','Required parameter requestParameters.purpose was null or undefined when calling accountSendVerifyCode.');
        }

        const queryParameters: any = {};

        if (requestParameters.account !== undefined) {
            queryParameters['account'] = requestParameters.account;
        }

        if (requestParameters.purpose !== undefined) {
            queryParameters['purpose'] = requestParameters.purpose;
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/account/send-verify-code`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.TextApiResponse(response) as any;
    }

    /**
     * 
     * 发送账号验证码
     */
    async accountSendVerifyCode(requestParameters: AccountSendVerifyCodeRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<boolean> {
        const response = await this.accountSendVerifyCodeRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 
     * 登录系统
     */
    async accountSigninRaw(requestParameters: AccountSigninRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<AccountBean>> {
        if (requestParameters.account === null || requestParameters.account === undefined) {
            throw new runtime.RequiredError('account','Required parameter requestParameters.account was null or undefined when calling accountSignin.');
        }

        if (requestParameters.pwd === null || requestParameters.pwd === undefined) {
            throw new runtime.RequiredError('pwd','Required parameter requestParameters.pwd was null or undefined when calling accountSignin.');
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        const consumes: runtime.Consume[] = [
            { contentType: 'application/x-www-form-urlencoded' },
        ];
        // @ts-ignore: canConsumeForm may be unused
        const canConsumeForm = runtime.canConsumeForm(consumes);

        let formParams: { append(param: string, value: any): any };
        let useForm = false;
        if (useForm) {
            formParams = new FormData();
        } else {
            formParams = new URLSearchParams();
        }

        if (requestParameters.account !== undefined) {
            formParams.append('account', requestParameters.account as any);
        }

        if (requestParameters.pwd !== undefined) {
            formParams.append('pwd', requestParameters.pwd as any);
        }

        if (requestParameters.keepLogin !== undefined) {
            formParams.append('keep_login', requestParameters.keepLogin as any);
        }

        const response = await this.request({
            path: `/account/signin`,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: formParams,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => AccountBeanFromJSON(jsonValue));
    }

    /**
     * 
     * 登录系统
     */
    async accountSignin(requestParameters: AccountSigninRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<AccountBean> {
        const response = await this.accountSigninRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 
     * 退出登录状态
     */
    async accountSignoutRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>> {
        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/account/sign-out`,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.VoidApiResponse(response);
    }

    /**
     * 
     * 退出登录状态
     */
    async accountSignout(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void> {
        await this.accountSignoutRaw(initOverrides);
    }

    /**
     * 
     * 注册新账号
     */
    async accountSignupRaw(requestParameters: AccountSignupRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<AccountBean>> {
        if (requestParameters.account === null || requestParameters.account === undefined) {
            throw new runtime.RequiredError('account','Required parameter requestParameters.account was null or undefined when calling accountSignup.');
        }

        if (requestParameters.pwd === null || requestParameters.pwd === undefined) {
            throw new runtime.RequiredError('pwd','Required parameter requestParameters.pwd was null or undefined when calling accountSignup.');
        }

        if (requestParameters.name === null || requestParameters.name === undefined) {
            throw new runtime.RequiredError('name','Required parameter requestParameters.name was null or undefined when calling accountSignup.');
        }

        if (requestParameters.activateCode === null || requestParameters.activateCode === undefined) {
            throw new runtime.RequiredError('activateCode','Required parameter requestParameters.activateCode was null or undefined when calling accountSignup.');
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        const consumes: runtime.Consume[] = [
            { contentType: 'application/x-www-form-urlencoded' },
        ];
        // @ts-ignore: canConsumeForm may be unused
        const canConsumeForm = runtime.canConsumeForm(consumes);

        let formParams: { append(param: string, value: any): any };
        let useForm = false;
        if (useForm) {
            formParams = new FormData();
        } else {
            formParams = new URLSearchParams();
        }

        if (requestParameters.account !== undefined) {
            formParams.append('account', requestParameters.account as any);
        }

        if (requestParameters.pwd !== undefined) {
            formParams.append('pwd', requestParameters.pwd as any);
        }

        if (requestParameters.name !== undefined) {
            formParams.append('name', requestParameters.name as any);
        }

        if (requestParameters.activateCode !== undefined) {
            formParams.append('activate_code', requestParameters.activateCode as any);
        }

        const response = await this.request({
            path: `/account/signup`,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: formParams,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => AccountBeanFromJSON(jsonValue));
    }

    /**
     * 
     * 注册新账号
     */
    async accountSignup(requestParameters: AccountSignupRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<AccountBean> {
        const response = await this.accountSignupRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 
     * 修改账号资料
     */
    async accountUpdateRaw(requestParameters: AccountUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<AccountBean>> {
        if (requestParameters.accountBean === null || requestParameters.accountBean === undefined) {
            throw new runtime.RequiredError('accountBean','Required parameter requestParameters.accountBean was null or undefined when calling accountUpdate.');
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/account/profile`,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: AccountBeanToJSON(requestParameters.accountBean),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => AccountBeanFromJSON(jsonValue));
    }

    /**
     * 
     * 修改账号资料
     */
    async accountUpdate(requestParameters: AccountUpdateRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<AccountBean> {
        const response = await this.accountUpdateRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * 
     * 修改账号设置
     */
    async accountUpdateSettingsRaw(requestParameters: AccountUpdateSettingsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<boolean>> {
        if (requestParameters.key === null || requestParameters.key === undefined) {
            throw new runtime.RequiredError('key','Required parameter requestParameters.key was null or undefined when calling accountUpdateSettings.');
        }

        if (requestParameters.type === null || requestParameters.type === undefined) {
            throw new runtime.RequiredError('type','Required parameter requestParameters.type was null or undefined when calling accountUpdateSettings.');
        }

        if (requestParameters.value === null || requestParameters.value === undefined) {
            throw new runtime.RequiredError('value','Required parameter requestParameters.value was null or undefined when calling accountUpdateSettings.');
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("TokenAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const consumes: runtime.Consume[] = [
            { contentType: 'application/x-www-form-urlencoded' },
        ];
        // @ts-ignore: canConsumeForm may be unused
        const canConsumeForm = runtime.canConsumeForm(consumes);

        let formParams: { append(param: string, value: any): any };
        let useForm = false;
        if (useForm) {
            formParams = new FormData();
        } else {
            formParams = new URLSearchParams();
        }

        if (requestParameters.key !== undefined) {
            formParams.append('key', requestParameters.key as any);
        }

        if (requestParameters.type !== undefined) {
            formParams.append('type', requestParameters.type as any);
        }

        if (requestParameters.value !== undefined) {
            formParams.append('value', requestParameters.value as any);
        }

        if (requestParameters.vcode !== undefined) {
            formParams.append('vcode', requestParameters.vcode as any);
        }

        const response = await this.request({
            path: `/account/settings`,
            method: 'POST',
            headers: headerParameters,
            query: queryParameters,
            body: formParams,
        }, initOverrides);

        return new runtime.TextApiResponse(response) as any;
    }

    /**
     * 
     * 修改账号设置
     */
    async accountUpdateSettings(requestParameters: AccountUpdateSettingsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<boolean> {
        const response = await this.accountUpdateSettingsRaw(requestParameters, initOverrides);
        return await response.value();
    }

}

/**
 * @export
 */
export const AccountUpdateSettingsTypeEnum = {
    Int: 'int',
    Bool: 'bool',
    String: 'string'
} as const;
export type AccountUpdateSettingsTypeEnum = typeof AccountUpdateSettingsTypeEnum[keyof typeof AccountUpdateSettingsTypeEnum];
