/* Options:
Date: 2025-07-11 13:00:36
Version: 8.71
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://team.evovoice.io

//Package: 
//AddServiceStackTypes: True
//AddResponseStatus: False
//AddImplicitVersion: 
//AddDescriptionAsComments: True
IncludeTypes: PatchUser.*
//ExcludeTypes: 
//InitializeCollections: False
//TreatTypesAsStrings: 
//DefaultImports: java.math.*,java.util.*,java.io.InputStream,net.servicestack.client.*
*/

import java.math.*
import java.util.*
import java.io.InputStream
import net.servicestack.client.*


/**
* Update the specified login
*/
@Route(Path="/users/{userId}", Verbs="PATCH")
@Api(Description="Update the specified login")
open class PatchUser : IReturn<UserInfo>, IPatch
{
    /**
    * The account IDs that this user has access to
    */
    @ApiMember(Description="The account IDs that this user has access to")
    open var accountIds:ArrayList<String>? = null

    /**
    * The ID of the user
    */
    @ApiMember(Description="The ID of the user")
    open var userId:String? = null

    /**
    * The user's first name
    */
    @ApiMember(Description="The user's first name")
    open var firstName:String? = null

    /**
    * The user's last name
    */
    @ApiMember(Description="The user's last name")
    open var lastName:String? = null

    /**
    * The new password for the user (leave null to not change)
    */
    @ApiMember(Description="The new password for the user (leave null to not change)")
    open var newPassword:String? = null

    /**
    * 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")
    open var roles:ArrayList<String>? = null
    companion object { private val responseType = UserInfo::class.java }
    override fun getResponseType(): Any? = PatchUser.responseType
}

open class UserInfo
{
    open var id:String? = null
    open var isAuthenticated:Boolean? = null
    open var firstName:String? = null
    open var lastName:String? = null
    open var name:String? = null
    open var avatarUrl:String? = null
    open var emailAddress:String? = null
    open var roles:ArrayList<String>? = null
    open var accountIds:ArrayList<String>? = null
    open var accountNames:ArrayList<String>? = null
    open var dashboardPermissions:ArrayList<DashboardPermissions>? = null
}

enum class DashboardPermissions
{
    ViewFiles,
    ViewNotifications,
    ViewSessions,
    ViewEndpoints,
    ViewReports,
    ViewCustomers,
    ViewFlows,
}