/* Options:
Date: 2025-04-09 01:56:50
Version: 6.110
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://reportfiling.pwc.de

//Package: 
//AddServiceStackTypes: True
//AddResponseStatus: False
//AddImplicitVersion: 
//AddDescriptionAsComments: True
IncludeTypes: ListWebhookSubscriptionsAsync.*
//ExcludeTypes: 
//InitializeCollections: True
//TreatTypesAsStrings: 
//DefaultImports: java.math.*,java.util.*,net.servicestack.client.*,com.google.gson.annotations.*,com.google.gson.reflect.*
*/

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


/**
* Represents a request to retrieve all specified subscriptions in an asynchronous operation.
*/
@Route(Path="/async/webhooks/subscriptions/list", Verbs="POST")
@Api(Description="Represents a request to retrieve all specified subscriptions in an asynchronous operation.")
open class ListWebhookSubscriptionsAsync : ListWebhookSubscriptionsBase(), IReturn<ArrayList<SubscriptionResponse>>
{
    companion object { private val responseType = object : TypeToken<ArrayList<SubscriptionResponse>>(){}.type }
    override fun getResponseType(): Any? = ListWebhookSubscriptionsAsync.responseType
}

open class WebhookSubscription
{
    var id:String? = null
    var name:String? = null
    var event:String? = null
    var isActive:Boolean? = null
    var createdDateUtc:Date? = null
    var createdById:String? = null
    var lastModifiedDateUtc:Date? = null
    var config:SubscriptionConfig? = null
}

/**
* Specifies a request to retrieve all specified subscriptions.
*/
@Api(Description="Specifies a request to retrieve all specified subscriptions.")
open class ListWebhookSubscriptionsBase : IPost
{
    /**
    * The unique identifiers of the subscriptions.
    */
    @ApiMember(Description="The unique identifiers of the subscriptions.", IsRequired=true, Name="Ids")
    var ids:ArrayList<String> = ArrayList<String>()
}

open class SubscriptionDeliveryResult
{
    var attemptedDateUtc:Date? = null
    var statusDescription:String? = null
    var statusCode:HttpStatusCode? = null
    var subscriptionId:String? = null
    var id:String? = null
    var eventId:String? = null
}

open class SubscriptionConfig
{
    var url:String? = null
    var contentType:String? = null
    var secret:String? = null
}

/**
* Represents a service response that encapsulates a webhook subscription.
*/
@Api(Description="Represents a service response that encapsulates a webhook subscription.")
open class SubscriptionResponse
{
    /**
    * The encapsulated webhook subscription of the response. The secret of the webhook subscription is encrypted and can only be decrypted by the owner of the private key.
    */
    @ApiMember(Description="The encapsulated webhook subscription of the response. The secret of the webhook subscription is encrypted and can only be decrypted by the owner of the private key.", Name="Subscription")
    var subscription:WebhookSubscription? = null

    /**
    * The history of the subscription event.
    */
    @ApiMember(Description="The history of the subscription event.", Name="History")
    var history:ArrayList<SubscriptionDeliveryResult> = ArrayList<SubscriptionDeliveryResult>()

    /**
    * The status of the response.
    */
    @ApiMember(Description="The status of the response.", Name="ResponseStatus")
    var responseStatus:ResponseStatus? = null
}