/* Options:
Date: 2025-07-14 19:23:48
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: AppPatchFile.*
//ExcludeTypes: 
//InitializeCollections: False
//TreatTypesAsStrings: 
//DefaultImports: java.math.*,java.util.*,java.io.InputStream,net.servicestack.client.*,com.google.gson.annotations.*,com.google.gson.reflect.*
*/

import java.math.*
import java.util.*
import java.io.InputStream
import net.servicestack.client.*
import com.google.gson.annotations.*
import com.google.gson.reflect.*


/**
* Updates metadata for the specific file
*/
@Route(Path="/portal/files/{fileId}", Verbs="PATCH")
@Api(Description="Updates metadata for the specific file")
open class AppPatchFile : IReturn<FileInfo>, IPatch
{
    open var accountId:String? = null
    open var fileId:String? = null
    open var fileName:String? = null
    open var customerId:String? = null
    open var userId:String? = null
    companion object { private val responseType = FileInfo::class.java }
    override fun getResponseType(): Any? = AppPatchFile.responseType
}

open class FileInfo : EntityInfo()
{
    /**
    * The type of file this is
    */
    @ApiMember(Description="The type of file this is")
    @SerializedName("type") open var Type:FileTypes? = null

    /**
    * The account ID this file is associated with
    */
    @ApiMember(Description="The account ID this file is associated with")
    open var accountId:String? = null

    /**
    * The name of the account this file is associated with
    */
    @ApiMember(Description="The name of the account this file is associated with")
    open var accountName:String? = null

    /**
    * The ID of the customer this file is associated with
    */
    @ApiMember(Description="The ID of the customer this file is associated with")
    open var customerId:String? = null

    /**
    * The name of the customer this file is associated with
    */
    @ApiMember(Description="The name of the customer this file is associated with")
    open var customerName:String? = null

    /**
    * The breadcrumb to the customer for this file
    */
    @ApiMember(Description="The breadcrumb to the customer for this file")
    open var customerBreadcrumb:ArrayList<CustomerBreadcrumb>? = null

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

    /**
    * The name of the user this file is associated with
    */
    @ApiMember(Description="The name of the user this file is associated with")
    open var userName:String? = null

    /**
    * The original file name for the file
    */
    @ApiMember(Description="The original file name for the file")
    open var fileName:String? = null

    /**
    * The URI of the file
    */
    @ApiMember(Description="The URI of the file")
    open var uri:String? = null

    /**
    * The Content type of the file
    */
    @ApiMember(Description="The Content type of the file")
    open var contentType:String? = null

    /**
    * The size of the file
    */
    @ApiMember(Description="The size of the file")
    open var contentLength:Long? = null

    /**
    * The Twilio ID of the recording
    */
    @ApiMember(Description="The Twilio ID of the recording")
    open var recordingSid:String? = null

    /**
    * The duration of the recording in seconds
    */
    @ApiMember(Description="The duration of the recording in seconds")
    open var recordingDuration:Int? = null

    /**
    * Who is the recording from?
    */
    @ApiMember(Description="Who is the recording from?")
    open var recordingFrom:String? = null

    /**
    * Transcription (if available)
    */
    @ApiMember(Description="Transcription (if available)")
    open var transcription:String? = null

    /**
    * From Address (e.g. caller ID) for incoming calls
    */
    @ApiMember(Description="From Address (e.g. caller ID) for incoming calls")
    open var fromAddress:String? = null

    /**
    * To Address (e.g. dialed number) for outgoing calls
    */
    @ApiMember(Description="To Address (e.g. dialed number) for outgoing calls")
    open var toAddress:String? = null

    /**
    * The AI transcription for this call
    */
    @ApiMember(Description="The AI transcription for this call")
    open var aiTranscription:String? = null
}

enum class FileTypes
{
    Upload,
    VoiceMessage,
    CallRecording,
    Fax,
    Attachment,
    FaxOutgoing,
}

open class EntityInfo
{
    /**
    * The ID of the object
    */
    @ApiMember(Description="The ID of the object")
    open var id:String? = null

    /**
    * The date the object was created
    */
    @ApiMember(Description="The date the object was created")
    open var dateCreated:String? = null

    /**
    * The date the object was last modified
    */
    @ApiMember(Description="The date the object was last modified")
    open var dateLastModified:String? = null

    /**
    * The user that created this object
    */
    @ApiMember(Description="The user that created this object")
    open var createdBy:String? = null

    /**
    * The user that last modified this object
    */
    @ApiMember(Description="The user that last modified this object")
    open var lastModifiedBy:String? = null
}

open class CustomerBreadcrumb
{
    open var id:String? = null
    open var name:String? = null
}