Terminal SDK Models

classes reference

Purchase Response


@Serializable
data class PurchaseResponse(
    
    @SerialName("amount") 
    val amount: String? = null,
    
    @SerialName("completedAt") 
    val completedAt: String? = null,
    
    @SerialName("createdAt") 
    val createdAt: String? = null,
    
    @SerialName("intentId") 
    val intentId: String,
    
    @SerialName("pinRequired") 
    val pinRequired: Boolean,
    
    @SerialName("receiptsUrl") 
    val receiptsUrl: String? = null,
    
    @SerialName("referenceId") 
    val referenceId: String? = null,
    
    @SerialName("status") 
    val status: String? = null,
    
    @SerialName("type") 
    val type: String,
    
    @SerialName("transactions") 
    val transactions: List<TransactionResponse>,
    
)


Transaction Response


@Serializable
data class TransactionResponse(
    
    @SerialName("id") 
    val id: String,
    
    @SerialName("status") 
    val status: Status? = null,
    
    @SerialName("amount") 
    val amount: String? = null,
    
    @SerialName("currency") 
    val currency: Currency? = null,
    
    @SerialName("createdAt") 
    val createdAt: String? = null,
    
    @SerialName("completedAt") 
    val completedAt: String? = null,
    
    @SerialName("canceledAt") 
    val canceledAt: String? = null,
    
    @SerialName("cancelReason") 
    val cancelReason: String? = null,
    
    @SerialName("referenceId") 
    val referenceId: String? = null,
    
    @SerialName("orderId") 
    val orderId: String? = null,
    
    @SerialName("pinRequired") 
    val pinRequired: Boolean? = null,
    
    @SerialName("card") 
    val card: Card,
    
    @SerialName("events") 
    val events: List<Event>,
    
    @SerialName("amountOther") 
    val amountOther: String? = null,
    
    @SerialName("performance") 
    val performance: List<Performance> = emptyList()
)

@Serializable
data class Card(
    
    @SerialName("pan") 
    val pan: String? = null,
    
    @SerialName("exp") 
    val exp: String? = null
)

@Serializable
data class Event(
    
    @SerialName("rrn") 
    val rrn: String,
    
    @SerialName("stan") 
    val stan: String? = null,
    
    @SerialName("type") 
    val type: String? = null,
    
    @SerialName("status") 
    val status: Status,
    
    @SerialName("receipt") 
    val receipt: Receipt
)

@Serializable
data class Receipt(
    
    @SerialName("type") 
    val type: String,
    
    @SerialName("id") 
    val id: String,
    
    @SerialName("data") 
    val data: String
)

@Serializable
data class ReceiptData(
    
    @SerialName("id") 
    val id: String,
    
    @SerialName("merchant") 
    val merchant: Merchant,
    
    @SerialName("cardScheme") 
    val cardScheme: CardScheme,
    
    @SerialName("cardSchemeSponsor") 
    val cardSchemeSponsor: String,
    
    @SerialName("startDate") 
    val startDate: String,
    
    @SerialName("startTime") 
    val startTime: String,
    
    @SerialName("endDate") 
    val endDate: String,
    
    @SerialName("endTime") 
    val endTime: String,
    
    @SerialName("terminalId") 
    val terminalId: String,
    
    @SerialName("systemTraceAuditNumber") 
    val systemTraceAuditNumber: String,
    
    @SerialName("posSoftwareVersion") 
    val posSoftwareVersion: String,
    
    @SerialName("retrievalReferenceNumber") 
    val retrievalReferenceNumber: String,
    
    @SerialName("transactionType") 
    val transactionType: TransactionType,
    
    @SerialName("isApproved") 
    val isApproved: Boolean,
    
    @SerialName("isRefunded") 
    val isRefunded: Boolean,
    
    @SerialName("isReversed") 
    val isReversed: Boolean,
    
    @SerialName("approvalCode") 
    
    val approvalCode: ApprovalCode? = null,
    
    @SerialName("actionCode") 
    val actionCode: String,
    
    @SerialName("statusMessage") 
    val statusMessage: Currency,
    
    @SerialName("pan") 
    val pan: String,
    
    @SerialName("cardExpiration") 
    val cardExpiration: String,
    
    @SerialName("amountAuthorized") 
    val amountAuthorized: LabelField<String>,
    
    @SerialName("amountOther") 
    val amountOther: LabelField<String>,
    
    @SerialName("currency") 
    val currency: Currency,
    
    @SerialName("verificationMethod") 
    val verificationMethod: Currency,
    
    @SerialName("receiptLineOne") 
    val receiptLineOne: Currency,
    
    @SerialName("receiptLineTwo") 
    val receiptLineTwo: Currency,
    
    @SerialName("thanksMessage") 
    val thanksMessage: Currency,
    
    @SerialName("saveReceiptMessage") 
    val saveReceiptMessage: Currency,
    
    @SerialName("entryMode") 
    val entryMode: String,
    
    @SerialName("applicationIdentifier") 
    val applicationIdentifier: String,
    
    @SerialName("terminalVerificationResult") 
    val terminalVerificationResult: String,
    
    @SerialName("transactionStateInformation") 
    val transactionStateInformation: String,
    
    @SerialName("cardholderVerificationResult") 
    val cardholderVerificationResult: String,
    
    @SerialName("cryptogramInformationData") 
    val cryptogramInformationData: String,
    
    @SerialName("applicationCryptogram") 
    val applicationCryptogram: String,
    
    @SerialName("kernelId") 
    val kernelId: String,
    
    @SerialName("paymentAccountReference") 
    val paymentAccountReference: String? = null,
    
    @SerialName("panSuffix") 
    val panSuffix: String? = null,
    
    @SerialName("customerReferenceNumber") 
    val customerReferenceNumber: String? = null,
    
    @SerialName("qrCode") 
    val qrCode: String,
    
    @SerialName("transactionUuid") 
    val transactionUuid: String,
    
    @SerialName("vasData") 
    val vasData: String? = null
)

@Serializable
enum class Status {
    @SerialName("APPROVED") APPROVED,
    @SerialName("DECLINED") DECLINED
}

@Serializable
data class Terminal(
    
    @SerialName("terminalId") 
    val terminalId: String,
    
    @SerialName("bankId") 
    val bankId: String,
    
    @SerialName("merchantId") 
    val merchantId: String,
    
    @SerialName("vendorId") 
    val vendorId: String,
    
    @SerialName("merchantCategoryCode") 
    val merchantCategoryCode: String
)


Reverse Response


@Serializable
data class ReverseResponse(
    
    @SerialName("amount") 
    val amount: String? = null,
    
    @SerialName("completedAt") 
    val completedAt: String? = null,
    
    @SerialName("createdAt") 
    val createdAt: String? = null,
    
    @SerialName("intentId") 
    val intentId: String,
    
    @SerialName("pinRequired") 
    val pinRequired: Boolean,
    
    @SerialName("receiptsUrl") 
    val receiptsUrl: String? = null,
    
    @SerialName("referenceId") 
    val referenceId: String? = null,
    
    @SerialName("status") 
    val status: String? = null,
    
    @SerialName("type") 
    val type: String,
    
    @SerialName("transactions") 
    val transactions: List<TransactionResponse>,
    
)


Refund Response


@Serializable
data class RefundResponse(
    
    @SerialName("amount") 
    val amount: String? = null,
    
    @SerialName("completedAt") 
    val completedAt: String? = null,
    
    @SerialName("createdAt") 
    val createdAt: String? = null,
    
    @SerialName("intentId") 
    val intentId: String,
    
    @SerialName("pinRequired") 
    val pinRequired: Boolean,
    
    @SerialName("receiptsUrl") 
    val receiptsUrl: String? = null,
    
    @SerialName("referenceId") 
    val referenceId: String? = null,
    
    @SerialName("status") 
    val status: String? = null,
    
    @SerialName("type") 
    val type: String,
    
    @SerialName("transactions") 
    val transactions: List<TransactionResponse>,
    
)


Card Scheme

IDNetwork
MC

Mastercard - credit

    DM

    Maestro

      P1

      Mada

        VC

        Visa

          UP

          Union Pay

            DC

            Discover

              JC

              JCB

                AX

                American Express

                  GN

                  GCCNET

                    Transaction Type

                    IDType
                    00

                    PURCHASE

                      20

                      REFUND

                        Receipt Data

                        
                        @Serializable
                        data class ReceiptData(
                            
                            @SerialName("id") 
                            val id: String,
                            
                            @SerialName("merchant") 
                            val merchant: Merchant,
                            
                            @SerialName("cardScheme") 
                            val cardScheme: CardScheme,
                            
                            @SerialName("cardSchemeSponsor") 
                            val cardSchemeSponsor: String,
                            
                            @SerialName("startDate") 
                            val startDate: String,
                            
                            @SerialName("startTime") 
                            val startTime: String,
                            
                            @SerialName("endDate") 
                            val endDate: String,
                            
                            @SerialName("endTime") 
                            val endTime: String,
                            
                            @SerialName("terminalId") 
                            val terminalId: String,
                            
                            @SerialName("systemTraceAuditNumber") 
                            val systemTraceAuditNumber: String,
                            
                            @SerialName("posSoftwareVersion") 
                            val posSoftwareVersion: String,
                            
                            @SerialName("retrievalReferenceNumber") 
                            val retrievalReferenceNumber: String,
                            
                            @SerialName("transactionType") 
                            val transactionType: TransactionType,
                            
                            @SerialName("isApproved") 
                            val isApproved: Boolean,
                            
                            @SerialName("isRefunded") 
                            val isRefunded: Boolean,
                            
                            @SerialName("isReversed") 
                            val isReversed: Boolean,
                            
                            @SerialName("approvalCode") 
                            
                            val approvalCode: ApprovalCode? = null,
                            
                            @SerialName("actionCode") 
                            val actionCode: String,
                            
                            @SerialName("statusMessage") 
                            val statusMessage: Currency,
                            
                            @SerialName("pan") 
                            val pan: String,
                            
                            @SerialName("cardExpiration") 
                            val cardExpiration: String,
                            
                            @SerialName("amountAuthorized") 
                            val amountAuthorized: LabelField<String>,
                            
                            @SerialName("amountOther") 
                            val amountOther: LabelField<String>,
                            
                            @SerialName("currency") 
                            val currency: Currency,
                            
                            @SerialName("verificationMethod") 
                            val verificationMethod: Currency,
                            
                            @SerialName("receiptLineOne") 
                            val receiptLineOne: Currency,
                            
                            @SerialName("receiptLineTwo") 
                            val receiptLineTwo: Currency,
                            
                            @SerialName("thanksMessage") 
                            val thanksMessage: Currency,
                            
                            @SerialName("saveReceiptMessage") 
                            val saveReceiptMessage: Currency,
                            
                            @SerialName("entryMode") 
                            val entryMode: String,
                            
                            @SerialName("applicationIdentifier") 
                            val applicationIdentifier: String,
                            
                            @SerialName("terminalVerificationResult") 
                            val terminalVerificationResult: String,
                            
                            @SerialName("transactionStateInformation") 
                            val transactionStateInformation: String,
                            
                            @SerialName("cardholderVerificationResult") 
                            val cardholderVerificationResult: String,
                            
                            @SerialName("cryptogramInformationData") 
                            val cryptogramInformationData: String,
                            
                            @SerialName("applicationCryptogram") 
                            val applicationCryptogram: String,
                            
                            @SerialName("kernelId") 
                            val kernelId: String,
                            
                            @SerialName("paymentAccountReference") 
                            val paymentAccountReference: String? = null,
                            
                            @SerialName("panSuffix") 
                            val panSuffix: String? = null,
                            
                            @SerialName("customerReferenceNumber") 
                            val customerReferenceNumber: String? = null,
                            
                            @SerialName("qrCode") 
                            val qrCode: String,
                            
                            @SerialName("transactionUuid") 
                            val transactionUuid: String,
                            
                            @SerialName("vasData") 
                            val vasData: String? = null
                        )
                        
                        

                        Reconciliation Receipts Response

                        @Serializable 
                        data class ReconciliationReceiptsResponse(
                        
                        @SerialName("receipt")
                        val receipt: ReconciliationReceipt? = null,
                        
                        @SerialName("reconciliationId")
                        val reconciliationId: String? = null
                        
                        )
                        
                        
                        @Serializable
                        data class ReconciliationReceipt(
                        
                            @SerialName("id")
                            val id: String,
                        
                            @SerialName("standard")
                            val standard: String,
                        
                            @SerialName("operationType")
                            val operationType: String,
                        
                            @SerialName("data")
                            val data: ReconciliationReceiptData? = null,
                        
                            @SerialName("reconciliation")
                            val reconciliation: Reconciliation,
                        
                            @SerialName("createdAt")
                            val createdAt: String,
                        
                            @SerialName("updatedAt")
                            val updatedAt: String
                        
                        )
                        
                        @Serializable
                        data class ReconciliationReceiptData(
                        
                            @SerialName("date")
                            val date: String,
                        
                            @SerialName("hour")
                            val hour: String,
                        
                            @SerialName("bankName")
                            val bankName: String,
                        
                            @SerialName("grandTotal")
                            val grandTotal: String,
                        
                            @SerialName("documentRef")
                            val documentRef: String,
                        
                            @SerialName("businessName")
                            val businessName: String,
                        
                            @SerialName("serialNumber")
                            val serialNumber: String,
                        
                            @SerialName("businessNumber")
                            val businessNumber: String,
                        
                            @SerialName("terminalNumber")
                            val terminalNumber: String,
                        
                            @SerialName("endOfDaySummary")
                            val endOfDaySummary: List<EndOfDaySummaryItem>,
                        
                            @SerialName("businessAddressAndTelephone")
                            val businessAddressAndTelephone: String
                        )
                        
                        
                        @Serializable
                        data class Reconciliation(
                        
                            @SerialName("id")
                            val id: String
                        )
                        
                        
                        @Serializable
                        data class EndOfDaySummaryItem(
                        
                            @SerialName("type")
                            val type: String? = null,
                        
                            @SerialName("count")
                            val count: String? = null,
                        
                            @SerialName("amount")
                            val amount: String? = null
                        )
                        
                        
                        

                        Reconcile List Response

                        @Serializable
                        data class ReconciliationListResponse(
                        
                            @SerialName("data")
                            val data: List<ReconciliationItem>,
                        
                            @SerialName("pagination")
                            val pagination: Pagination
                        )
                        
                        @Serializable
                        data class ReconciliationItem(
                        
                            @SerialName("id")
                            val id: String,
                        
                            @SerialName("date")
                            val date: String,
                        
                            @SerialName("time")
                            val time: String,
                        
                            @SerialName("startDate")
                            val startDate: String,
                        
                            @SerialName("startTime")
                            val startTime: String,
                        
                            @SerialName("isBalanced")
                            val isBalanced: LabelValue<Boolean>,
                        
                            @SerialName("total")
                            val total: String,
                        
                            @SerialName("currency")
                            val currency: Currency
                        )
                        
                        @Serializable
                        data class Pagination(
                        
                            @SerialName("total_pages")
                            val total_pages: Int? = null,
                        
                            @SerialName("current_page")
                            val current_page: Int,
                        
                            @SerialName("total_data")
                            val total_data: Int? = null
                        )
                        
                        

                        Reconciliation Response

                        @Serializable
                        data class ReconciliationResponse(
                            @SerialName("id")
                            val id: String,
                        
                            @SerialName("date")
                            val date: String,
                        
                            @SerialName("time")
                            val time: String,
                        
                            @SerialName("startDate")
                            val startDate: String,
                        
                            @SerialName("startTime")
                            val startTime: String,
                        
                            @SerialName("endDate")
                            val endDate: String,
                        
                            @SerialName("endTime")
                            val endTime: String,
                        
                            @SerialName("merchant")
                            val merchant: Merchant,
                        
                            @SerialName("cardAcceptorTerminalId")
                            val cardAcceptorTerminalId: String,
                        
                            @SerialName("posSoftwareVersionNumber")
                            val posSoftwareVersionNumber: String,
                        
                            @SerialName("cardSchemeSponsorId")
                            val cardSchemeSponsorId: String,
                        
                            @SerialName("isBalanced")
                            val isBalanced: LabelValue<Boolean>,
                        
                            @SerialName("schemes")
                            val schemes: List<Scheme>,
                        
                            @SerialName("details")
                            val details: Details,
                        
                            @SerialName("currency")
                            val currency: LanguageContent,
                        
                            @SerialName("systemTraceAuditNumber")
                            val systemTraceAuditNumber: String
                        )
                        
                        @Serializable
                        data class Details(
                            @SerialName("total")
                            val total: DetailItem,
                        
                            @SerialName("purchase")
                            val purchase: DetailItem,
                        
                            @SerialName("purchaseReversal")
                            val purchaseReversal: DetailItem,
                        
                            @SerialName("refund")
                            val refund: DetailItem,
                        
                            @SerialName("refundReversal")
                            val refundReversal: DetailItem
                        )
                        
                        @Serializable
                        data class DetailItem(
                            @SerialName("label")
                            val label: LanguageContent,
                        
                            @SerialName("total")
                            val total: String,
                        
                            @SerialName("count")
                            val count: Int
                        )
                        
                        @Serializable
                        data class LanguageContent(
                            @SerialName("arabic")
                            val arabic: String? = null,
                        
                            @SerialName("english")
                            val english: String? = null,
                        
                            @SerialName("turkish")
                            val turkish: String? = null
                        )
                        
                        
                        

                        Transactions Response

                        @Serializable
                        data class TransactionsResponse(
                            
                            @SerialName("data")
                            val data: List<Transaction>,
                        
                            @SerialName("pagination")
                            val pagination: Pagination
                            
                        ) {
                        
                            @Serializable
                            data class Transaction(
                                
                                @SerialName("uuid")
                                val uuid: String,
                        
                                @SerialName("scheme")
                                val scheme: String,
                        
                                @SerialName("customerReferenceNumber")
                                val customerReferenceNumber: String? = null,
                        
                                @SerialName("pan")
                                val pan: String? = null,
                        
                                @SerialName("amountAuthorized")
                                val amountAuthorized: String,
                        
                                @SerialName("transactionType")
                                val transactionType: String,
                        
                                @SerialName("currency")
                                val currency: Currency,
                        
                                @SerialName("isApproved")
                                val isApproved: Boolean,
                        
                                @SerialName("isReversed")
                                val isReversed: Boolean,
                        
                                @SerialName("isReconciled")
                                val isReconciled: Boolean,
                        
                                @SerialName("startDate")
                                val startDate: String,
                        
                                @SerialName("startTime")
                                val startTime: String,
                        
                                @SerialName("performance")
                                val performance: List<Performance>
                        
                            )
                        }
                        
                        
                        

                        Receipts Response

                        
                        @Serializable
                        data class ReceiptsResponse(
                        
                            @SerialName("receipts")
                            val receipts: List<Receipt>
                        
                        ) {
                        
                            @Serializable
                            data class Receipt(
                        
                                @SerialName("id") 
                                val id: String,
                        
                                @SerialName("operationType") 
                                val operationType: String,
                        
                                @SerialName("standard") 
                                val standard: String,
                        
                                @SerialName("data") 
                                val data: String,
                        
                                @SerialName("transactionUuid") 
                                val transactionUuid: String
                                
                            ) {
                        
                                @Serializable
                                data class ReceiptData(
                                    
                                    @SerialName("id") 
                                    val id: String,
                        
                                    @SerialName("merchant") 
                                    val merchant: Merchant,
                        
                                    @SerialName("type") 
                                    val type: String,
                        
                                    @SerialName("startDate") 
                                    val startDate: String,
                        
                                    @SerialName("startTime") 
                                    val startTime: String,
                        
                                    @SerialName("endDate") 
                                    val endDate: String,
                        
                                    @SerialName("endTime") 
                                    val endTime: String,
                        
                                    @SerialName("cardSchemeSponsor") 
                                    val cardSchemeSponsor: String,
                        
                                    @SerialName("terminalId") 
                                    val terminalId: String,
                        
                                    @SerialName("systemTraceAuditNumber") 
                                    val systemTraceAuditNumber: String,
                        
                                    @SerialName("posSoftwareVersion") 
                                    val posSoftwareVersion: String,
                        
                                    @SerialName("retrievalReferenceNumber") 
                                    val retrievalReferenceNumber: String,
                        
                                    @SerialName("cardScheme") 
                                    val cardScheme: CardScheme,
                        
                                    @SerialName("transactionType") 
                                    val transactionType: TransactionType,
                        
                                    @SerialName("pan") 
                                    val pan: String,
                        
                                    @SerialName("cardExpiration") 
                                    val cardExpiration: String,
                        
                                    @SerialName("amountAuthorized") 
                                    val amountAuthorized: LabelField<String>,
                        
                                    @SerialName("amountOther") 
                                    val amountOther: LabelField<String>,
                        
                                    @SerialName("currency") 
                                    val currency: Currency,
                        
                                    @SerialName("statusMessage") 
                                    val statusMessage: Currency,
                        
                                    @SerialName("isApproved") 
                                    val isApproved: Boolean,
                        
                                    @SerialName("isRefunded") 
                                    val isRefunded: Boolean,
                        
                                    @SerialName("isReversed") 
                                    val isReversed: Boolean,
                        
                                    @SerialName("approvalCode") 
                                    val approvalCode: ApprovalCode? = null,
                        
                                    @SerialName("verificationMethod") 
                                    val verificationMethod: Currency,
                        
                                    @SerialName("receiptLineOne") 
                                    val receiptLineOne: Currency,
                        
                                    @SerialName("receiptLineTwo") 
                                    val receiptLineTwo: Currency,
                        
                                    @SerialName("thanksMessage") 
                                    val thanksMessage: Currency,
                        
                                    @SerialName("saveReceiptMessage") 
                                    val saveReceiptMessage: Currency,
                        
                                    @SerialName("entryMode") 
                                    val entryMode: String,
                        
                                    @SerialName("actionCode") 
                                    val actionCode: String,
                        
                                    @SerialName("applicationIdentifier") 
                                    val applicationIdentifier: String,
                        
                                    @SerialName("terminalVerificationResult") 
                                    val terminalVerificationResult: String,
                        
                                    @SerialName("transactionStateInformation") 
                                    val transactionStateInformation: String,
                        
                                    @SerialName("cardholderVerificationResult") 
                                    val cardholderVerificationResult: String,
                        
                                    @SerialName("cryptogramInformationData") 
                                    val cryptogramInformationData: String,
                        
                                    @SerialName("applicationCryptogram") 
                                    val applicationCryptogram: String,
                        
                                    @SerialName("kernelId") 
                                    val kernelId: String,
                        
                                    @SerialName("paymentAccountReference") 
                                    val paymentAccountReference: String? = null,
                        
                                    @SerialName("panSuffix") 
                                    val panSuffix: String? = null,
                        
                                    @SerialName("qrCode") 
                                    val qrCode: String,
                        
                                    @SerialName("transactionUuid") 
                                    val transactionUuid: String
                        
                                )
                            }
                        }
                        

                        Transaction Response Turkey

                        @Serializable
                        data class TransactionResponseTurkey(
                            
                            @SerialName("id")
                            val id: String,
                        
                            @SerialName("performance")
                            val performance: List<PerformanceDto>? = null,
                        
                            @SerialName("cancelReason")
                            val cancelReason: String? = null,
                        
                            @SerialName("status")
                            val status: String? = null,
                        
                            @SerialName("currency")
                            val currency: Currency? = null,
                        
                            @SerialName("createdAt")
                            val createdAt: String? = null,
                        
                            @SerialName("completedAt")
                            val completedAt: String? = null,
                        
                            @SerialName("referenceId")
                            val referenceId: String? = null,
                        
                            @SerialName("orderId")
                            val orderId: String? = null,
                        
                            @SerialName("pinRequired")
                            val pinRequired: Boolean? = null,
                        
                            @SerialName("card")
                            val card: Map<String, JsonElement> = emptyMap(),
                        
                            @SerialName("events")
                            val events: List<Event>,
                        
                            @SerialName("amountOther")
                            val amountOther: String? = null
                        ) {
                            @Serializable
                            data class Event(
                                
                                @SerialName("receipt")
                                val receipt: Receipt,
                        
                                @SerialName("rrn")
                                val rrn: String,
                        
                                @SerialName("status")
                                val status: String? = null
                            ) {
                                @Serializable
                                data class Receipt(
                                    
                                    @SerialName("standard")
                                    val standard: String,
                        
                                    @SerialName("id")
                                    val id: String,
                        
                                    @SerialName("data")
                                    val data: String
                                )
                        
                                @Serializable
                                data class LocalizedText(
                                    
                                    @SerialName("english")
                                    val english: String,
                        
                                    @SerialName("turkish")
                                    val turkish: String
                                )
                        
                                @Serializable
                                data class Merchant(
                                    
                                    @SerialName("id")
                                    val id: String,
                        
                                    @SerialName("name")
                                    val name: String,
                        
                                    @SerialName("address")
                                    val address: String
                                )
                        
                                @Serializable
                                data class AmountAuthorized(
                                    
                                    @SerialName("label")
                                    val label: LocalizedText,
                        
                                    @SerialName("value")
                                    val value: String
                                )
                        
                                @Serializable
                                data class ReceiptDataTurkey(
                                    
                                    @SerialName("id")
                                    val id: String? = null,
                                    
                                    @SerialName("pan")
                                    val pan: String? = null,
                                    
                                    @SerialName("tid")
                                    val tid: String? = null,
                                    
                                    @SerialName("type")
                                    val type: String? = null,
                                    
                                    @SerialName("date")
                                    val date: String? = null,
                                    
                                    @SerialName("time")
                                    val time: String? = null,
                                    
                                    @SerialName("cardType")
                                    val cardType: String? = null,
                                    
                                    @SerialName("currency")
                                    val currency: Currency? = null,
                                    
                                    @SerialName("merchant")
                                    val merchant: Merchant? = null,
                                    
                                    @SerialName("pinUsed")
                                    val pinUsed: LocalizedText? = null,
                                    
                                    @SerialName("panSuffix")
                                    val panSuffix: String? = null,
                                    
                                    @SerialName("acquirerId")
                                    val acquirerId: String? = null,
                                    
                                    @SerialName("actionCode")
                                    val actionCode: String? = null,
                                    
                                    @SerialName("cardScheme")
                                    val cardScheme: String? = null,
                                    
                                    @SerialName("cardDomain")
                                    val cardDomain: String? = null,
                                    
                                    @SerialName("isApproved")
                                    val isApproved: Boolean? = null,
                                    
                                    @SerialName("batchNumber")
                                    val batchNumber: String? = null,
                                    
                                    @SerialName("acquirerName")
                                    val acquirerName: String? = null,
                                    
                                    @SerialName("approvalCode")
                                    val approvalCode: String? = null,
                                    
                                    @SerialName("serialNumber")
                                    val serialNumber: String? = null,
                                    
                                    @SerialName("bankReference")
                                    val bankReference: String? = null,
                                    
                                    @SerialName("deviceDetails")
                                    val deviceDetails: String? = null,
                                    
                                    @SerialName("statusMessage")
                                    val statusMessage: LocalizedText? = null,
                                    
                                    @SerialName("cardExpiration")
                                    val cardExpiration: String? = null,
                                    
                                    @SerialName("transactionCode")
                                    val transactionCode: String? = null,
                                    
                                    @SerialName("transactionType")
                                    val transactionType: TransactionType? = null,
                                    
                                    @SerialName("transactionUuid")
                                    val transactionUuid: String? = null,
                                    
                                    @SerialName("amountAuthorized")
                                    val amountAuthorized: AmountAuthorized? = null,
                                    
                                    @SerialName("transactionNumber")
                                    val transactionNumber: String? = null,
                                    
                                    @SerialName("actionCodeMessage")
                                    val actionCodeMessage: LocalizedText? = null,
                                    
                                    @SerialName("cardSchemeSponsor")
                                    val cardSchemeSponsor: String? = null,
                                    
                                    @SerialName("transactionDetails")
                                    val transactionDetails: LocalizedText? = null,
                                    
                                    @SerialName("applicationCryptogram")
                                    val applicationCryptogram: String? = null,
                                    
                                    @SerialName("applicationIdentifier")
                                    val applicationIdentifier: String? = null,
                                    
                                    @SerialName("paymentAccountReference")
                                    val paymentAccountReference: String? = null,
                                    
                                    @SerialName("systemTraceAuditNumber")
                                    val systemTraceAuditNumber: String? = null,
                                    
                                    @SerialName("retrievalReferenceNumber")
                                    val retrievalReferenceNumber: String? = null,
                                    
                                    @SerialName("cryptogramInformationData")
                                    val cryptogramInformationData: String? = null,
                                    
                                    @SerialName("posSoftwareVersionNumber")
                                    val posSoftwareVersionNumber: String? = null,
                                    
                                    @SerialName("qrCode")
                                    val qrCode: String? = null,
                                    
                                    @SerialName("transactionStateInformation")
                                    val transactionStateInformation: String? = null,
                                    
                                    @SerialName("cardholderVerificationResult")
                                    val cardholderVerificationResult: String? = null
                                )
                        
                                @Serializable
                                data class TransactionType(
                                    
                                    @SerialName("id")
                                    val id: String,
                        
                                    @SerialName("name")
                                    val name: LocalizedText
                                )
                            }
                        }
                        
                        

                        Terminal

                        @Serializable
                        data class Terminal(
                            @SerialName("networkParams")
                            val networkParams: NetworkParams,
                        
                            @SerialName("terminalSharedPreferences")
                            val terminalSharedPreferences: TerminalSharedPreferences,
                        
                            @SerialName("activity")
                            val activity: Activity,
                        
                            @SerialName("terminalUUID")
                            val terminalUUID: String,
                        
                            @SerialName("readerCoreUI")
                            val readerCoreUI: ReaderCoreUI,
                        
                            @SerialName("tid")
                            val tid: String,
                        
                            @SerialName("name")
                            val name: String? = null,
                        
                            @SerialName("paymentText")
                            val paymentText: PaymentText
                        )
                        
                        
                        

                        User

                        @Serializable
                        data class User(
                            @SerialName("name")
                            val name: String? = null,
                        
                            @SerialName("email")
                            val email: String? = null,
                        
                            @SerialName("mobile")
                            val mobile: String? = null,
                        
                            @SerialName("userUUID")
                            var userUUID: String? = null
                        ) 
                        

                        Void Response

                        @Serializable
                        data class VoidResponse(
                            @SerialName("id")
                            val id: String,
                        
                            @SerialName("amountOther")
                            val amountOther: String? = null,
                        
                            @SerialName("currency")
                            val currency: Currency,
                        
                            @SerialName("createdAt")
                            val createdAt: String? = null,
                        
                            @SerialName("completedAt")
                            val completedAt: String? = null,
                        
                            @SerialName("pinRequired")
                            val pinRequired: Boolean,
                        
                            @SerialName("performance")
                            val performance: List<PerformanceDto>,
                        
                            @SerialName("card")
                            val card: CardDto? = null,
                        
                            @SerialName("events")
                            val events: List<CaptureEventDto>
                        )
                        
                        

                        Authorize Response

                        
                        @Serializable
                        data class AuthorizeResponse(
                            
                            @SerialName("amount") 
                            val amount: String? = null,
                            
                            @SerialName("completedAt") 
                            val completedAt: String? = null,
                            
                            @SerialName("createdAt") 
                            val createdAt: String? = null,
                            
                            @SerialName("intentId") 
                            val intentId: String,
                            
                            @SerialName("pinRequired") 
                            val pinRequired: Boolean,
                            
                            @SerialName("receiptsUrl") 
                            val receiptsUrl: String? = null,
                            
                            @SerialName("referenceId") 
                            val referenceId: String? = null,
                            
                            @SerialName("status") 
                            val status: String? = null,
                            
                            @SerialName("type") 
                            val type: String,
                            
                            @SerialName("transactions") 
                            val transactions: List<AuthorizeReceipt>,
                            
                        )
                        
                        
                        

                        Authorize Receipt

                        @Serializable
                        data class AuthorizeReceipt(
                            @SerialName("id")
                            val id: String,
                        
                            @SerialName("amountOther")
                            val amountOther: String? = null,
                        
                            @SerialName("currency")
                            val currency: Currency,
                        
                            @SerialName("createdAt")
                            val createdAt: String? = null,
                        
                            @SerialName("completedAt")
                            val completedAt: String? = null,
                        
                            @SerialName("pinRequired")
                            val pinRequired: Boolean,
                        
                            @SerialName("performance")
                            val performance: List<PerformanceDto>,
                        
                            @SerialName("card")
                            val card: CardDto? = null,
                        
                            @SerialName("events")
                            val events: List<AuthEventDto>
                        )
                        

                        Capture Response

                        @Serializable
                        data class CaptureResponse(
                            @SerialName("id")
                            val id: String,
                        
                            @SerialName("amountOther")
                            val amountOther: String? = null,
                        
                            @SerialName("currency")
                            val currency: Currency,
                        
                            @SerialName("createdAt")
                            val createdAt: String? = null,
                        
                            @SerialName("completedAt")
                            val completedAt: String? = null,
                        
                            @SerialName("pinRequired")
                            val pinRequired: Boolean,
                        
                            @SerialName("performance")
                            val performance: List<PerformanceDto>,
                        
                            @SerialName("card")
                            val card: CardDto? = null,
                        
                            @SerialName("events")
                            val events: List<CaptureEventDto>
                        )
                        

                        Increment Response

                        @Serializable
                        data class IncrementResponse(
                            @SerialName("id")
                            val id: String,
                        
                            @SerialName("amountOther")
                            val amountOther: String? = null,
                        
                            @SerialName("currency")
                            val currency: Currency,
                        
                            @SerialName("createdAt")
                            val createdAt: String? = null,
                        
                            @SerialName("completedAt")
                            val completedAt: String? = null,
                        
                            @SerialName("pinRequired")
                            val pinRequired: Boolean,
                        
                            @SerialName("performance")
                            val performance: List<PerformanceDto>,
                        
                            @SerialName("card")
                            val card: CardDto? = null,
                        
                            @SerialName("events")
                            val events: List<IncrementEventDto>
                        )
                        

                        Otp Response

                        @Serializable
                        data class OtpResponse(
                            @SerialName("message")
                            val message: String? = null
                        )
                        

                        Canceled State

                        @Serializable
                        data class CanceledState(
                            @SerialName("canceled")
                            val canceled: Boolean
                        )
                        

                        Permission Status

                        @Serializable
                        data class PermissionStatus(
                            @SerialName("permission")
                            val permission: String,
                        
                            @SerialName("isGranted")
                            val isGranted: Boolean
                        )
                        

                        Terminal Connection

                        @Serializable
                        @Parcelize
                        data class TerminalConnection(
                            @SerialName("terminalConnectionData")
                            val terminalConnectionData: TerminalConnectionData,
                        
                            @SerialName("serverSwitcher")
                            val serverSwitcher: ServerSwitcher<PosServiceApi>
                        ) : Parcelable {
                        
                            @Serializable
                            @Parcelize
                            data class TerminalConnectionData(
                                @SerialName("name")
                                val name: String? = null,
                        
                                @SerialName("tid")
                                val tid: String,
                        
                                @SerialName("uuid")
                                val uuid: String = "",
                        
                                @SerialName("busy")
                                val busy: Boolean = false,
                        
                                @SerialName("mode")
                                val mode: String,
                        
                                @SerialName("isLocked")
                                val isLocked: Boolean = false,
                        
                                @SerialName("hasProfile")
                                val hasProfile: Boolean = false,
                        
                                @SerialName("userUUID")
                                val userUUID: String
                            ) : Parcelable
                        }
                        
                        

                        Send Transaction Failure

                        Serializable
                        sealed class SendTransactionFailure {
                            
                            @Serializable
                            data class TransactionFailure(
                                @SerialName("message")
                                val message: String
                            ) : SendTransactionFailure()
                        }
                        

                        Refund Transaction Failure

                        @Serializable
                        sealed class RefundTransactionFailure {
                        
                            @Serializable
                            data class GeneralFailure(
                                @SerialName("message")
                                val message: String
                            ) : RefundTransactionFailure()
                        }
                        

                        Authorize Failure

                        @Serializable
                        sealed class AuthorizeFailure {
                        
                            @Serializable
                            data class Failure(
                                @SerialName("message")
                                val message: String
                            ) : AuthorizeFailure()
                        }
                        

                        Get Transaction Failure

                        @Serializable
                        sealed class GetTransactionFailure {
                        
                            @Serializable
                            data class GeneralFailure(
                                @SerialName("message")
                                val message: String
                            ) : GetTransactionFailure()
                        }
                        

                        Get Transactions List Failure

                        @Serializable
                        sealed class GetTransactionsListFailure {
                        
                            @Serializable
                            data class GeneralFailure(
                                @SerialName("message")
                                val message: String
                            ) : GetTransactionsListFailure()
                        }
                        

                        Increment Authorization Failure

                        @Serializable
                        sealed class IncrementAuthorizationFailure {
                        
                            @Serializable
                            data class Failure(
                                @SerialName("message")
                                val message: String? = null
                            ) : IncrementAuthorizationFailure()
                        }
                        

                        Get Terminals Failure

                        @Serializable
                        sealed class GetTerminalsFailure {
                        
                            @Serializable
                            data class FetchingFailure(
                                @SerialName("message")
                                val message: String? = null
                            ) : GetTerminalsFailure()
                        }
                        

                        OTP Email Failure

                        @Serializable
                        sealed class OTPEmailFailure {
                        
                            @Serializable
                            data class AuthenticationFailure(
                                @SerialName("message")
                                val message: String? = null
                            ) : OTPEmailFailure()
                        }
                        

                        OTP Mobile Failure

                        @Serializable
                        sealed class OTPMobileFailure {
                        
                            @Serializable
                            data class AuthenticationFailure(
                                @SerialName("message")
                                val message: String? = null
                            ) : OTPMobileFailure()
                        }
                        

                        Verify Email Failure

                        @Serializable
                        sealed class VerifyEmailFailure {
                        
                            @Serializable
                            data class GeneralFailure(
                                @SerialName("message")
                                val message: String? = null
                            ) : VerifyEmailFailure()
                        }
                        

                        Verify Mobile Failure

                        @Serializable
                        sealed class VerifyMobileFailure {
                        
                            @Serializable
                            data class VerificationFailure(
                                @SerialName("message")
                                val message: String? = null
                            ) : VerifyMobileFailure()
                        }
                        

                        JWT Login Failure

                        @Serializable
                        sealed class JWTLoginFailure {
                        
                            @Serializable
                            data class LoginFailure(
                                @SerialName("message")
                                val message: String? = null
                            ) : JWTLoginFailure()
                        }
                        

                        Void Failure

                        @Serializable
                        sealed class VoidFailure {
                        
                            @Serializable
                            data class Failure(
                                @SerialName("message")
                                val message: String? = null
                            ) : VoidFailure()
                        }
                        

                        Reverse Transaction Failure

                        @Serializable
                        sealed class ReverseTransactionFailure {
                        
                            @Serializable
                            data class GeneralFailure(
                                @SerialName("message")
                                val message: String
                            ) : ReverseTransactionFailure()
                        }
                        

                        Reconcile Failure

                        @Serializable
                        sealed class ReconcileFailure {
                        
                            @Serializable
                            data class GeneralFailure(
                                @SerialName("message")
                                val message: String
                            ) : ReconcileFailure()
                        }
                        

                        Get Reconciliation List Failure

                        @Serializable
                        sealed class GetReconciliationListFailure {
                        
                            @Serializable
                            data class GeneralFailure(
                                @SerialName("message")
                                val message: String? = null
                            ) : GetReconciliationListFailure()
                        }
                        

                        Get Reconciliation Failure

                        @Serializable
                        sealed class GetReconciliationFailure {
                        
                            @Serializable
                            data class GeneralFailure(
                                @SerialName("message")
                                val message: String? = null
                            ) : GetReconciliationFailure()
                        }
                        

                        Connect Terminal Failure

                        @Serializable
                        sealed class ConnectTerminalFailure {
                        
                            @Serializable
                            data class Failure(
                                @SerialName("message")
                                val message: String? = null
                            ) : ConnectTerminalFailure()
                        }
                        

                        Capture Authorization Failure

                        @Serializable
                        sealed class CaptureAuthorizationFailure {
                        
                            @Serializable
                            data class Failure(
                                @SerialName("message")
                                val message: String? = null
                            ) : CaptureAuthorizationFailure()
                        }
                        

                        Cancel Transaction Failure

                        @Serializable
                        sealed class CancelTransactionFailure {
                        
                            @Serializable
                            data class GeneralFailure(
                                @SerialName("message")
                                val message: String
                            ) : CancelTransactionFailure()
                        }