/* Options:
Date: 2025-04-17 19:57:56
Version: 8.23
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://testapi.bokamera.se

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

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


@Route(Path="/messages/templates/test", Verbs="POST")
@ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
@ValidateRequest(Validator="IsAuthenticated")
open class TestSendMessageTemplate : IReturn<MessageLogQueryResponse>, ICompany
{
    /**
    * The company id, if empty will use the company id for the user you are logged in with.
    */
    @ApiMember(Description="The company id, if empty will use the company id for the user you are logged in with.")
    var CompanyId:UUID? = null

    /**
    * The email recepient to receive the newsletter. For templates with send method SMS you need to enter a valid mobile phone number and send method Email a valid Email must be provided.
    */
    @ApiMember(Description="The email recepient to receive the newsletter. For templates with send method SMS you need to enter a valid mobile phone number and send method Email a valid Email must be provided.", IsRequired=true)
    var Receiver:String? = null

    /**
    * The message template title.
    */
    @ApiMember(Description="The message template title.")
    var Title:String? = null

    /**
    * The newsletter template body.
    */
    @ApiMember(Description="The newsletter template body.", IsRequired=true)
    var Body:String? = null

    /**
    * The message type id. See GET /messages/templates/types 
    */
    @ApiMember(Description="The message type id. See GET /messages/templates/types ", IsRequired=true)
    var TypeId:Int? = null

    /**
    * Message template lanugage
    */
    @ApiMember(Description="Message template lanugage", IsRequired=true)
    var Language:String? = null

    /**
    * The services that is connected to the message. If null it will be connected to all services.
    */
    @ApiMember(Description="The services that is connected to the message. If null it will be connected to all services.")
    var Services:ArrayList<Int>? = null
    companion object { private val responseType = MessageLogQueryResponse::class.java }
    override fun getResponseType(): Any? = TestSendMessageTemplate.responseType
}

open class MessageLogQueryResponse
{
    /**
    * The message log id
    */
    @ApiMember(Description="The message log id")
    var Id:Int? = null

    /**
    * The booking id for the message (if connected to a booking).
    */
    @ApiMember(Description="The booking id for the message (if connected to a booking).")
    var BookingId:Int? = null

    /**
    * The message receiver. Either a email or a mobile phone number.
    */
    @ApiMember(Description="The message receiver. Either a email or a mobile phone number.")
    var Receiver:String? = null

    /**
    * Message Title.
    */
    @ApiMember(Description="Message Title.")
    var MessageTitle:String? = null

    /**
    * Message Storage Url.
    */
    @ApiMember(Description="Message Storage Url.")
    var StorageUrl:String? = null

    /**
    * Message Body.
    */
    @ApiMember(Description="Message Body.")
    var MessageBody:String? = null

    /**
    * When message was created.
    */
    @ApiMember(Description="When message was created.")
    var Created:Date? = null

    /**
    * When the message will be sent.
    */
    @ApiMember(Description="When the message will be sent.")
    var ToSendDate:Date? = null

    /**
    * When the message was sent.
    */
    @ApiMember(Description="When the message was sent.")
    var SentDate:Date? = null

    /**
    * If Message is sent
    */
    @ApiMember(Description="If Message is sent")
    var Sent:Boolean? = null

    /**
    * Number of retries to send the message
    */
    @ApiMember(Description="Number of retries to send the message")
    var MessageRetries:Int? = null

    /**
    * Send Method. 1 = Email, 2 = SMS
    */
    @ApiMember(Description="Send Method. 1 = Email, 2 = SMS")
    var SendMethodId:Int? = null
}

open interface ICompany
{
    var CompanyId:UUID?
}