/* Options:
Date: 2025-05-31 12:13:16
Version: 8.71
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://team.evovoice.io

//GlobalNamespace: 
//MakePropertiesOptional: False
//AddServiceStackTypes: True
//AddResponseStatus: False
//AddImplicitVersion: 
//AddDescriptionAsComments: True
IncludeTypes: NewUser.*
//ExcludeTypes: 
//DefaultImports: 
*/



export class NodeParameterMap
{
    [key:string] : NodeParameter;

    public constructor(init?: Partial<NodeParameterMap>) { (Object as any).assign(this, init); }
}


export interface IReturn<T>
{
    createResponse(): T;
}

export interface IPost
{
}

export enum DashboardPermissions
{
    ViewFiles = 'ViewFiles',
    ViewNotifications = 'ViewNotifications',
    ViewSessions = 'ViewSessions',
    ViewEndpoints = 'ViewEndpoints',
    ViewReports = 'ViewReports',
    ViewCustomers = 'ViewCustomers',
    ViewFlows = 'ViewFlows',
}

export class UserInfo
{
    public id: string;
    public isAuthenticated: boolean;
    public firstName: string;
    public lastName: string;
    public name: string;
    public avatarUrl: string;
    public emailAddress: string;
    public roles: string[];
    public accountIds: string[];
    public accountNames: string[];
    public dashboardPermissions: DashboardPermissions[];

    public constructor(init?: Partial<UserInfo>) { (Object as any).assign(this, init); }
}

/** @description Creates a new login with the specified email address and password. Note: Any given email address can only exist once in the entire Evo Voice system. */
// @Route("/users", "POST")
// @Api(Description="Creates a new login with the specified email address and password. Note: Any given email address can only exist once in the entire Evo Voice system.")
export class NewUser implements IReturn<UserInfo>, IPost
{
    /** @description The account ID you want to create this user under */
    // @ApiMember(Description="The account ID you want to create this user under")
    public accountId: string;

    /** @description The email address of the new user */
    // @ApiMember(Description="The email address of the new user")
    public emailAddress: string;

    /** @description The user's first name */
    // @ApiMember(Description="The user's first name")
    public firstName: string;

    /** @description The user's last name */
    // @ApiMember(Description="The user's last name")
    public lastName: string;

    /** @description The password for the new user */
    // @ApiMember(Description="The password for the new user")
    public password: string;

    public constructor(init?: Partial<NewUser>) { (Object as any).assign(this, init); }
    public getTypeName() { return 'NewUser'; }
    public getMethod() { return 'POST'; }
    public createResponse() { return new UserInfo(); }
}