(* Options:
Date: 2025-05-18 18:47:04
Version: 8.71
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://team.evovoice.io

//GlobalNamespace: 
//MakeDataContractsExtensible: False
//AddReturnMarker: True
//AddDescriptionAsComments: True
//AddDataContractAttributes: False
//AddIndexesToDataMembers: False
//AddGeneratedCodeAttributes: False
//AddResponseStatus: False
//AddImplicitVersion: 
//ExportValueTypes: False
IncludeTypes: ResendNotification.*
//ExcludeTypes: 
//InitializeCollections: False
//AddNamespaces: 
*)

namespace Voice.Api

open System
open System.IO
open System.Collections
open System.Collections.Generic
open System.Runtime.Serialization
open ServiceStack
open ServiceStack.DataAnnotations

    type NotificationTypes =
        | Email = 0
        | Sms = 1
        | Push = 2
        | IncomingCall = 3
        | OutgoingCall = 4

    [<AllowNullLiteral>]
    type EntityInfo() = 
        ///<summary>
        ///The ID of the object
        ///</summary>
        [<ApiMember(Description="The ID of the object")>]
        member val Id:String = null with get,set

        ///<summary>
        ///The date the object was created
        ///</summary>
        [<ApiMember(Description="The date the object was created")>]
        member val DateCreated:String = null with get,set

        ///<summary>
        ///The date the object was last modified
        ///</summary>
        [<ApiMember(Description="The date the object was last modified")>]
        member val DateLastModified:String = null with get,set

        ///<summary>
        ///The user that created this object
        ///</summary>
        [<ApiMember(Description="The user that created this object")>]
        member val CreatedBy:String = null with get,set

        ///<summary>
        ///The user that last modified this object
        ///</summary>
        [<ApiMember(Description="The user that last modified this object")>]
        member val LastModifiedBy:String = null with get,set

    [<AllowNullLiteral>]
    type CustomerBreadcrumb() = 
        member val Id:String = null with get,set
        member val Name:String = null with get,set

    [<AllowNullLiteral>]
    type NotificationRecipientInfo() = 
        ///<summary>
        ///The address of the recipient
        ///</summary>
        [<ApiMember(Description="The address of the recipient")>]
        member val Address:String = null with get,set

        ///<summary>
        ///Extra info about the recipient e.g. CC, BCC
        ///</summary>
        [<ApiMember(Description="Extra info about the recipient e.g. CC, BCC")>]
        member val Extra:String = null with get,set

        ///<summary>
        ///The name of the recipient
        ///</summary>
        [<ApiMember(Description="The name of the recipient")>]
        member val Name:String = null with get,set

    [<AllowNullLiteral>]
    type FileInfo() = 
        inherit EntityInfo()
        ///<summary>
        ///The type of file this is
        ///</summary>
        [<ApiMember(Description="The type of file this is")>]
        member val Type:FileTypes = new FileTypes() with get,set

        ///<summary>
        ///The account ID this file is associated with
        ///</summary>
        [<ApiMember(Description="The account ID this file is associated with")>]
        member val AccountId:String = null with get,set

        ///<summary>
        ///The name of the account this file is associated with
        ///</summary>
        [<ApiMember(Description="The name of the account this file is associated with")>]
        member val AccountName:String = null with get,set

        ///<summary>
        ///The ID of the customer this file is associated with
        ///</summary>
        [<ApiMember(Description="The ID of the customer this file is associated with")>]
        member val CustomerId:String = null with get,set

        ///<summary>
        ///The name of the customer this file is associated with
        ///</summary>
        [<ApiMember(Description="The name of the customer this file is associated with")>]
        member val CustomerName:String = null with get,set

        ///<summary>
        ///The breadcrumb to the customer for this file
        ///</summary>
        [<ApiMember(Description="The breadcrumb to the customer for this file")>]
        member val CustomerBreadcrumb:ResizeArray<CustomerBreadcrumb> = null with get,set

        ///<summary>
        ///The ID of the user this file is assocaited with
        ///</summary>
        [<ApiMember(Description="The ID of the user this file is assocaited with")>]
        member val UserId:String = null with get,set

        ///<summary>
        ///The name of the user this file is associated with
        ///</summary>
        [<ApiMember(Description="The name of the user this file is associated with")>]
        member val UserName:String = null with get,set

        ///<summary>
        ///The original file name for the file
        ///</summary>
        [<ApiMember(Description="The original file name for the file")>]
        member val FileName:String = null with get,set

        ///<summary>
        ///The URI of the file
        ///</summary>
        [<ApiMember(Description="The URI of the file")>]
        member val Uri:String = null with get,set

        ///<summary>
        ///The Content type of the file
        ///</summary>
        [<ApiMember(Description="The Content type of the file")>]
        member val ContentType:String = null with get,set

        ///<summary>
        ///The size of the file
        ///</summary>
        [<ApiMember(Description="The size of the file")>]
        member val ContentLength:Int64 = new Int64() with get,set

        ///<summary>
        ///The Twilio ID of the recording
        ///</summary>
        [<ApiMember(Description="The Twilio ID of the recording")>]
        member val RecordingSid:String = null with get,set

        ///<summary>
        ///The duration of the recording in seconds
        ///</summary>
        [<ApiMember(Description="The duration of the recording in seconds")>]
        member val RecordingDuration:Int32 = new Int32() with get,set

        ///<summary>
        ///Who is the recording from?
        ///</summary>
        [<ApiMember(Description="Who is the recording from?")>]
        member val RecordingFrom:String = null with get,set

        ///<summary>
        ///Transcription (if available)
        ///</summary>
        [<ApiMember(Description="Transcription (if available)")>]
        member val Transcription:String = null with get,set

        ///<summary>
        ///From Address (e.g. caller ID) for incoming calls
        ///</summary>
        [<ApiMember(Description="From Address (e.g. caller ID) for incoming calls")>]
        member val FromAddress:String = null with get,set

        ///<summary>
        ///To Address (e.g. dialed number) for outgoing calls
        ///</summary>
        [<ApiMember(Description="To Address (e.g. dialed number) for outgoing calls")>]
        member val ToAddress:String = null with get,set

        ///<summary>
        ///The AI transcription for this call
        ///</summary>
        [<ApiMember(Description="The AI transcription for this call")>]
        member val AITranscription:String = null with get,set

    [<AllowNullLiteral>]
    type NotificationInfo() = 
        inherit EntityInfo()
        ///<summary>
        ///The account ID this endpoint is associated with
        ///</summary>
        [<ApiMember(Description="The account ID this endpoint is associated with")>]
        member val AccountId:String = null with get,set

        ///<summary>
        ///The name of the account this endpoint is associated with
        ///</summary>
        [<ApiMember(Description="The name of the account this endpoint is associated with")>]
        member val AccountName:String = null with get,set

        ///<summary>
        ///The ID of the customer this endpoint is associated with
        ///</summary>
        [<ApiMember(Description="The ID of the customer this endpoint is associated with")>]
        member val CustomerId:String = null with get,set

        ///<summary>
        ///The name of the customer this endpoint is associated with
        ///</summary>
        [<ApiMember(Description="The name of the customer this endpoint is associated with")>]
        member val CustomerName:String = null with get,set

        ///<summary>
        ///The breadcrumb to the customer for this endpoint
        ///</summary>
        [<ApiMember(Description="The breadcrumb to the customer for this endpoint")>]
        member val CustomerBreadcrumb:ResizeArray<CustomerBreadcrumb> = null with get,set

        ///<summary>
        ///The type of notification
        ///</summary>
        [<ApiMember(Description="The type of notification")>]
        member val Type:NotificationTypes = new NotificationTypes() with get,set

        ///<summary>
        ///The subject of the notification
        ///</summary>
        [<ApiMember(Description="The subject of the notification")>]
        member val Subject:String = null with get,set

        ///<summary>
        ///The body of the notification
        ///</summary>
        [<ApiMember(Description="The body of the notification")>]
        member val Body:String = null with get,set

        ///<summary>
        ///The recipients of this notification
        ///</summary>
        [<ApiMember(Description="The recipients of this notification")>]
        member val Recipients:ResizeArray<NotificationRecipientInfo> = null with get,set

        ///<summary>
        ///The list of attachments
        ///</summary>
        [<ApiMember(Description="The list of attachments")>]
        member val Attachments:ResizeArray<FileInfo> = null with get,set

        ///<summary>
        ///The original from for the session
        ///</summary>
        [<ApiMember(Description="The original from for the session")>]
        member val From:String = null with get,set

        ///<summary>
        ///The original To for the session
        ///</summary>
        [<ApiMember(Description="The original To for the session")>]
        member val To:String = null with get,set

        ///<summary>
        ///Was there an error?
        ///</summary>
        [<ApiMember(Description="Was there an error?")>]
        member val Error:Boolean = new Boolean() with get,set

        ///<summary>
        ///The error message
        ///</summary>
        [<ApiMember(Description="The error message")>]
        member val ErrorMessage:String = null with get,set

    [<Route("/notifications/{notificationId}/resend", "POST")>]
    [<AllowNullLiteral>]
    type ResendNotification() = 
        interface IReturn<NotificationInfo>
        ///<summary>
        ///The ID of the notification to resend
        ///</summary>
        [<ApiMember(Description="The ID of the notification to resend")>]
        member val NotificationId:String = null with get,set