/* Options:
Date: 2025-05-20 12:34:50
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: PatchUser.*
//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 IPatch
{
}

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 Update the specified login */
// @Route("/users/{userId}", "PATCH")
// @Api(Description="Update the specified login")
export class PatchUser implements IReturn<UserInfo>, IPatch
{
    /** @description The account IDs that this user has access to */
    // @ApiMember(Description="The account IDs that this user has access to")
    public accountIds: string[];

    /** @description The ID of the user */
    // @ApiMember(Description="The ID of the user")
    public userId: 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 new password for the user (leave null to not change) */
    // @ApiMember(Description="The new password for the user (leave null to not change)")
    public newPassword: string;

    /** @description The roles to associate with the login. Can only specify if system admin */
    // @ApiMember(Description="The roles to associate with the login. Can only specify if system admin")
    public roles: string[];

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