MineSec API Docs6Enabler (base)

Enabler (base) models

Generated from components.schemas. Type? is nullable; = null marks an optional field that may be omitted. Click a type name to jump to its definition.

Generated from components.schemas. ? marks an optional field, | null a nullable one. Click a type name to jump to its definition.

typealias Instant = String
type Instant = string;
typealias Currency = String
type Currency = string;
typealias BigDecimal = String
type BigDecimal = string;
data class CursorPaginated-TransactionExtract(
    val cursorEnding: String? = null,
    val cursorStarting: String? = null,
    val data: List<TransactionExtract>,
    val dataSize: Int,
    val hasMore: Boolean,
    val requestPath: String,
    val requestSize: Int,
    val totalSize: Int,
)
interface CursorPaginated-TransactionExtract {
  cursorEnding?: string | null;
  cursorStarting?: string | null;
  data: TransactionExtract[];
  dataSize: number;  // int32
  hasMore: boolean;
  requestPath: string;
  requestSize: number;  // int32
  totalSize: number;  // int32
}
data class TransactionExtract(
    val accountBin: String? = null,
    val accountLast4: String? = null,
    val acptId: String,
    val amount: Amount,
    val approvalCode: String? = null,
    val batchId: String,
    val batchNo: String,
    val consumerPaymentDevice: String? = null,
    val createdAt: String,  // date-time
    val cvmPerformed: CvmPerformed,
    val description: String? = null,
    val entryMode: EntryMode,
    val hostMessageFormat: HostMessageFormat,
    val installmentPlan: Int? = null,
    val installments: Installment? = null,
    val linkedTranId: String? = null,
    val mcc: String? = null,
    val merchantName: String,
    val paymentMethod: PaymentMethod,
    val posReference: String? = null,
    val extOrderId: String? = null,
    val primaryMid: String,
    val primaryTid: String,
    val profileId: String,
    val providerMchId: String? = null,
    val providerReference: String? = null,
    val rrn: String? = null,
    val sdkId: String? = null,
    val srsTranId: String? = null,
    val subMid: String? = null,
    val subTid: String? = null,
    val trace: String,
    val tranId: String,
    val tranStatus: TranStatus,
    val tranType: TranType,
    val refundedAmount: Amount? = null,
    val availableRefundAmount: Amount? = null,
    val completedAmount: Amount? = null,
    val availableCompletionAmount: Amount? = null,
    val allowedActions: AllowedActions? = null,
    val updatedAt: String? = null,  // date-time
)
interface TransactionExtract {
  accountBin?: string | null;
  accountLast4?: string | null;
  acptId: string;
  amount: Amount;
  approvalCode?: string | null;
  batchId: string;
  batchNo: string;
  consumerPaymentDevice?: string | null;
  createdAt: string;  // date-time
  cvmPerformed: CvmPerformed;
  description?: string | null;
  entryMode: EntryMode;
  hostMessageFormat: HostMessageFormat;
  installmentPlan?: number | null;  // int32
  installments?: Installment | null;
  linkedTranId?: string | null;
  mcc?: string | null;
  merchantName: string;
  paymentMethod: PaymentMethod;
  posReference?: string | null;
  extOrderId?: string | null;
  primaryMid: string;
  primaryTid: string;
  profileId: string;
  providerMchId?: string | null;
  providerReference?: string | null;
  rrn?: string | null;
  sdkId?: string | null;
  srsTranId?: string | null;
  subMid?: string | null;
  subTid?: string | null;
  trace: string;
  tranId: string;
  tranStatus: TranStatus;
  tranType: TranType;
  refundedAmount?: Amount | null;
  availableRefundAmount?: Amount | null;
  completedAmount?: Amount | null;
  availableCompletionAmount?: Amount | null;
  allowedActions?: AllowedActions | null;
  updatedAt?: string | null;  // date-time
}
/**
 * Cardholder's DCC choice and the accepted terms, on every transaction that carried a dcc
 * choice (the 201, a resend and every lookup); absent otherwise. The terms come from the offer
 * DCC stored, never from the request, and are present only for an ACCEPTED offer that was
 * reserved; a term the stored offer lacks is left out.
 */
data class TransactionDcc(
    val offerId: String,
    val decision: Decision,
    val cardholderAmount: Amount? = null,
    /** Exact decimal string. */
    val exchangeRate: String? = null,
    /**
     * Signed exact decimal string; negative when the DCC rate is better than the ECB reference
     * rate. Absent when the provider gave none.
     */
    val markupPercentage: String? = null,
    /** Disclosure text to print on the receipt. */
    val receiptText: String? = null,
) {
    enum class Decision {
        ACCEPTED, DECLINED, NOT_APPLICABLE
    }
}
/**
 * Cardholder's DCC choice and the accepted terms, on every transaction that carried a dcc
 * choice (the 201, a resend and every lookup); absent otherwise. The terms come from the offer
 * DCC stored, never from the request, and are present only for an ACCEPTED offer that was
 * reserved; a term the stored offer lacks is left out.
 */
interface TransactionDcc {
  offerId: string;
  decision: "ACCEPTED" | "DECLINED" | "NOT_APPLICABLE";
  cardholderAmount?: Amount;
  /** Exact decimal string. */
  exchangeRate?: string;
  /**
   * Signed exact decimal string; negative when the DCC rate is better than the ECB reference
   * rate. Absent when the provider gave none.
   */
  markupPercentage?: string;
  /** Disclosure text to print on the receipt. */
  receiptText?: string;
}
data class Amount(
    val currency: String,
    val value: String,
)
interface Amount {
  currency: string;
  value: string;
}
/**
 * Backend-calculated hints for which derived operations a transaction currently permits. These
 * are UX hints for enabling/disabling buttons; the Backend still validates on submit.
 */
data class AllowedActions(
    /**
     * True when a refund is currently permitted: the transaction type/status is refundable, some
     * refundable balance remains (availableRefundAmount > 0), and its batch is SETTLED (before
     * settlement the correction is a void, not a refund). Acquirers that accept a refund before
     * settlement (EZPAY, PAY_STORE, ALTO, VAULTSPAY) skip the SETTLED condition.
     */
    val refund: Boolean? = null,
    /**
     * True when a completion is currently permitted: the transaction is an open pre-authorization
     * and some completion balance remains (availableCompletionAmount > 0).
     */
    val completion: Boolean? = null,
    /**
     * True when an incremental authorization is currently permitted: the transaction is an open
     * pre-authorization that has not yet been completed (no approved completion).
     */
    val incrementalAuth: Boolean? = null,
)
/**
 * Backend-calculated hints for which derived operations a transaction currently permits. These
 * are UX hints for enabling/disabling buttons; the Backend still validates on submit.
 */
interface AllowedActions {
  /**
   * True when a refund is currently permitted: the transaction type/status is refundable, some
   * refundable balance remains (availableRefundAmount > 0), and its batch is SETTLED (before
   * settlement the correction is a void, not a refund). Acquirers that accept a refund before
   * settlement (EZPAY, PAY_STORE, ALTO, VAULTSPAY) skip the SETTLED condition.
   */
  refund?: boolean;
  /**
   * True when a completion is currently permitted: the transaction is an open pre-authorization
   * and some completion balance remains (availableCompletionAmount > 0).
   */
  completion?: boolean;
  /**
   * True when an incremental authorization is currently permitted: the transaction is an open
   * pre-authorization that has not yet been completed (no approved completion).
   */
  incrementalAuth?: boolean;
}
data class HistoryTree(
    val selectedTransactionId: String,
    val treeComplete: Boolean,
    val root: HistoryTreeNode,
)
interface HistoryTree {
  selectedTransactionId: string;
  treeComplete: boolean;
  root: HistoryTreeNode;
}
data class HistoryTreeNode(
    val tranId: String,
    val srsTranId: String? = null,
    val linkedTranId: String? = null,
    val linkedSrsTranId: String? = null,
    val tranType: TranType,
    val tranStatus: TranStatus,
    val amount: Amount,
    val createdAt: String,  // date-time
    val updatedAt: String? = null,  // date-time
    val children: List<HistoryTreeNode>,
)
interface HistoryTreeNode {
  tranId: string;
  srsTranId?: string | null;
  linkedTranId?: string | null;
  linkedSrsTranId?: string | null;
  tranType: TranType;
  tranStatus: TranStatus;
  amount: Amount;
  createdAt: string;  // date-time
  updatedAt?: string | null;  // date-time
  children: HistoryTreeNode[];
}
enum class CvmPerformed {
    NO_CVM, SIGNATURE, PIN, OFFLINE_PIN, CDCVM
}
type CvmPerformed = "NO_CVM" | "SIGNATURE" | "PIN" | "OFFLINE_PIN" | "CDCVM";
enum class EntryMode {
    NFC, SWIPE, CHIP, FALLBACK, MANUAL_KEYED, MERCHANT_PRESENT, 
    CONSUMER_PRESENT, RETRIEVE, UNKNOWN
}
type EntryMode =
  | "NFC" | "SWIPE" | "CHIP" | "FALLBACK" | "MANUAL_KEYED"
  | "MERCHANT_PRESENT" | "CONSUMER_PRESENT" | "RETRIEVE" | "UNKNOWN";
enum class HostMessageFormat {
    MOCK, MPGS_AP, CARD_NOW, TWOC2P, CARDWORKS, SHIFT4, PAY_STORE, POMELO, 
    EFT_PAY, EZPAY, BANKNBOX, IULINK, RAZER, WALLYT, GCAG, POSTBRIDGE, 
    RENDEZVOUS, STD_JSON, S2M_SELECT, VAULTSPAY, SMART_VISTA, SADAD, AIRWALLEX, 
    APS
}
type HostMessageFormat =
  | "MOCK" | "MPGS_AP" | "CARD_NOW" | "TWOC2P" | "CARDWORKS" | "SHIFT4"
  | "PAY_STORE" | "POMELO" | "EFT_PAY" | "EZPAY" | "BANKNBOX" | "IULINK"
  | "RAZER" | "WALLYT" | "GCAG" | "POSTBRIDGE" | "RENDEZVOUS" | "STD_JSON"
  | "S2M_SELECT" | "VAULTSPAY" | "SMART_VISTA" | "SADAD" | "AIRWALLEX"
  | "APS";
enum class PaymentMethod {
    VISA, MASTERCARD, UNIONPAY, AMEX, JCB, DISCOVER, DINERS, MY_DEBIT, ALIPAY, 
    WECHAT, VISA_QR, MASTERCARD_QR, UNIONPAY_QR, SHOPEE_PAY_QR, GRAB_PAY_QR, 
    ALIPAY_PLUS_QR, DUIT_NOW_QR, PAY_NOW, UNKNOWN
}
type PaymentMethod =
  | "VISA" | "MASTERCARD" | "UNIONPAY" | "AMEX" | "JCB" | "DISCOVER"
  | "DINERS" | "MY_DEBIT" | "ALIPAY" | "WECHAT" | "VISA_QR"
  | "MASTERCARD_QR" | "UNIONPAY_QR" | "SHOPEE_PAY_QR" | "GRAB_PAY_QR"
  | "ALIPAY_PLUS_QR" | "DUIT_NOW_QR" | "PAY_NOW" | "UNKNOWN";
enum class TranStatus {
    PROCESSING, APPROVED, DECLINED, VOIDED, REVERSED, AUTH_ONLY, ADJUSTED
}
type TranStatus =
  | "PROCESSING" | "APPROVED" | "DECLINED" | "VOIDED" | "REVERSED"
  | "AUTH_ONLY" | "ADJUSTED";
enum class TranType {
    SALE, REFUND, AUTH, AUTH_COMP, DEFERRED_AUTH, INSTALL
}
type TranType =
  | "SALE" | "REFUND" | "AUTH" | "AUTH_COMP" | "DEFERRED_AUTH" | "INSTALL";
enum class InterestModel {
    WITH_INTEREST, NO_INTEREST
}
type InterestModel = "WITH_INTEREST" | "NO_INTEREST";
enum class InstallmentType {
    REGULAR, REVOLVING
}
type InstallmentType = "REGULAR" | "REVOLVING";
data class RevolvingRequest(
    val initialPaymentAmount: Amount,
)
interface RevolvingRequest {
  initialPaymentAmount: Amount;
}
data class Revolving(
    val initialPaymentAmount: Amount,
    val remainingAmount: Amount,
)
interface Revolving {
  initialPaymentAmount: Amount;
  remainingAmount: Amount;
}
data class InstallmentRequest(
    val planId: String,
    val installmentCount: Int,
    val revolving: RevolvingRequest? = null,
)
interface InstallmentRequest {
  planId: string;
  installmentCount: number;  // int32
  revolving?: RevolvingRequest | null;
}
data class Installment(
    val planId: String,
    val planName: String,
    val installmentCount: Int,
    val interestModel: InterestModel,
    val installmentType: InstallmentType,
    val revolving: Revolving? = null,
    val issuerPreapprovalReference: String? = null,
)
interface Installment {
  planId: string;
  planName: string;
  installmentCount: number;  // int32
  interestModel: InterestModel;
  installmentType: InstallmentType;
  revolving?: Revolving | null;
  issuerPreapprovalReference?: string | null;
}
data class Transaction(
    val acceptanceId: String,
    val accountBin: String? = null,
    val accountLast4: String? = null,
    val accountMasked: String? = null,
    val acptId: String,
    val actions: List<Action>,
    val aid: String? = null,
    val amount: Amount,
    val appName: String? = null,
    val approvalCode: String? = null,
    val atc: String? = null,
    val batchId: String,
    val batchNo: String,
    val callbackUrl: String? = null,
    val consumerPaymentDevice: String? = null,
    val createdAt: String,  // date-time
    val cvmPerformed: CvmPerformed? = null,
    val cvmSignatureBase64: String? = null,
    val cvmSignatureUrl: String? = null,
    val description: String? = null,
    val entryMode: EntryMode,
    val extraData: String? = null,
    val hostMessageFormat: HostMessageFormat,
    val installmentPlan: Int? = null,
    val installments: Installment? = null,
    val issCountryCode: String? = null,
    val linkedTranId: String? = null,
    val mcc: String,
    val merchantAddr: String,
    val merchantName: String,
    val paymentMethod: PaymentMethod,
    val posReference: String? = null,
    val extOrderId: String? = null,
    val preferredAcceptanceTag: String? = null,
    val primaryMid: String,
    val primaryTid: String,
    val profileId: String,
    val providerMchId: String? = null,
    val providerReference: String? = null,
    val rrn: String? = null,
    val sdkId: String? = null,
    val srsTranId: String? = null,
    val subMid: String? = null,
    val subTid: String? = null,
    val tc: String? = null,
    val trace: String,
    val tranId: String,
    val tranStatus: TranStatus,
    val tranType: TranType,
    val tsi: String? = null,
    val tvr: String? = null,
    val updatedAt: String? = null,  // date-time
    val hasChildren: Boolean? = null,
    val refundedAmount: Amount? = null,
    val availableRefundAmount: Amount? = null,
    val completedAmount: Amount? = null,
    val availableCompletionAmount: Amount? = null,
    val allowedActions: AllowedActions? = null,
    val dcc: TransactionDcc? = null,
)
interface Transaction {
  acceptanceId: string;
  accountBin?: string | null;
  accountLast4?: string | null;
  accountMasked?: string | null;
  acptId: string;
  actions: Action[];
  aid?: string | null;
  amount: Amount;
  appName?: string | null;
  approvalCode?: string | null;
  atc?: string | null;
  batchId: string;
  batchNo: string;
  callbackUrl?: string | null;
  consumerPaymentDevice?: string | null;
  createdAt: string;  // date-time
  cvmPerformed?: CvmPerformed;
  cvmSignatureBase64?: string | null;
  cvmSignatureUrl?: string | null;
  description?: string | null;
  entryMode: EntryMode;
  extraData?: string | null;
  hostMessageFormat: HostMessageFormat;
  installmentPlan?: number | null;  // int32
  installments?: Installment | null;
  issCountryCode?: string | null;
  linkedTranId?: string | null;
  mcc: string;
  merchantAddr: string;
  merchantName: string;
  paymentMethod: PaymentMethod;
  posReference?: string | null;
  extOrderId?: string | null;
  preferredAcceptanceTag?: string | null;
  primaryMid: string;
  primaryTid: string;
  profileId: string;
  providerMchId?: string | null;
  providerReference?: string | null;
  rrn?: string | null;
  sdkId?: string | null;
  srsTranId?: string | null;
  subMid?: string | null;
  subTid?: string | null;
  tc?: string | null;
  trace: string;
  tranId: string;
  tranStatus: TranStatus;
  tranType: TranType;
  tsi?: string | null;
  tvr?: string | null;
  updatedAt?: string | null;  // date-time
  hasChildren?: boolean | null;
  refundedAmount?: Amount | null;
  availableRefundAmount?: Amount | null;
  completedAmount?: Amount | null;
  availableCompletionAmount?: Amount | null;
  allowedActions?: AllowedActions | null;
  dcc?: TransactionDcc;
}
data class Action(
    val actionId: String,
    val actionStatus: ActionStatus,
    val actionType: ActionType,
    val amount: Amount? = null,
    val createdAt: String,  // date-time
    val extraData: String? = null,
    val hostRespCode: String? = null,
    val hostRespMessage: String? = null,
    val posReference: String? = null,
    val reason: String? = null,
    val requestId: String,
    val trace: String,
    val tranId: String? = null,
    val updatedAt: String? = null,  // date-time
)
interface Action {
  actionId: string;
  actionStatus: ActionStatus;
  actionType: ActionType;
  amount?: Amount | null;
  createdAt: string;  // date-time
  extraData?: string | null;
  hostRespCode?: string | null;
  hostRespMessage?: string | null;
  posReference?: string | null;
  reason?: string | null;
  requestId: string;
  trace: string;
  tranId?: string | null;
  updatedAt?: string | null;  // date-time
}
enum class ActionStatus {
    PROCESSING, SUCCESS, REJECTED, TIMEOUT, REVERSED, TO_BE_REVERSE
}
type ActionStatus =
  | "PROCESSING" | "SUCCESS" | "REJECTED" | "TIMEOUT" | "REVERSED"
  | "TO_BE_REVERSE";
enum class ActionType {
    NEW, ADJUST, VOID, AUTH_COMP, LINK_REFUND, CONFIRM, MERCHANT_PRESENT_QR, 
    CONSUMER_PRESENT_QR, NOTIFIED, INQUIRY, CLOSE, INCREMENTAL_AUTH
}
type ActionType =
  | "NEW" | "ADJUST" | "VOID" | "AUTH_COMP" | "LINK_REFUND" | "CONFIRM"
  | "MERCHANT_PRESENT_QR" | "CONSUMER_PRESENT_QR" | "NOTIFIED" | "INQUIRY"
  | "CLOSE" | "INCREMENTAL_AUTH";
data class ErrorResponse(
    val message: String,
    val path: String,
    val requestId: String,
    val status: Int,
    val title: String,
)
interface ErrorResponse {
  message: string;
  path: string;
  requestId: string;
  status: number;  // int32
  title: string;
}
data class TransactionRequest(
    val cardRead: CardReadResultSuccess,
    val poiRequest: PoiRequestActionNew,
    val sdkId: String,
    val dcc: DccSelection? = null,
)
interface TransactionRequest {
  cardRead: CardReadResultSuccess;
  poiRequest: PoiRequestActionNew;
  sdkId: string;
  dcc?: DccSelection;
}
/**
 * Cardholder choice on a DCC quote; SALE only. The offer is reserved with DCC before the host
 * is called. When it cannot be reserved the host is not called and the transaction is returned
 * (201) as DECLINED, its action's hostRespMessage telling why: "DCC offer cannot be used for
 * this payment" (the offer is consumed, expired, cancelled or does not match the payment) or
 * "DCC service unavailable" (ACCEPTED only). A DECLINED or NOT_APPLICABLE choice goes to the
 * host as a normal sale when DCC is unavailable, and DCC is not told its outcome. An SCA
 * second leg continues its first leg's choice; a different choice returns 400. Resending the
 * same DCC payment with the same x-minesec-request-id returns the first attempt's transaction
 * with 200 and never authorises again; while the first attempt is still awaiting the host it
 * returns 409 instead, and the caller should query the transaction.
 */
data class DccSelection(
    val offerId: String,  // pattern ^dcco_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
    val decision: Decision,
) {
    enum class Decision {
        ACCEPTED, DECLINED, NOT_APPLICABLE
    }
}
/**
 * Cardholder choice on a DCC quote; SALE only. The offer is reserved with DCC before the host
 * is called. When it cannot be reserved the host is not called and the transaction is returned
 * (201) as DECLINED, its action's hostRespMessage telling why: "DCC offer cannot be used for
 * this payment" (the offer is consumed, expired, cancelled or does not match the payment) or
 * "DCC service unavailable" (ACCEPTED only). A DECLINED or NOT_APPLICABLE choice goes to the
 * host as a normal sale when DCC is unavailable, and DCC is not told its outcome. An SCA
 * second leg continues its first leg's choice; a different choice returns 400. Resending the
 * same DCC payment with the same x-minesec-request-id returns the first attempt's transaction
 * with 200 and never authorises again; while the first attempt is still awaiting the host it
 * returns 409 instead, and the caller should query the transaction.
 */
interface DccSelection {
  offerId: string;  // pattern ^dcco_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
  decision: "ACCEPTED" | "DECLINED" | "NOT_APPLICABLE";
}
data class CardReadResultSuccess(
    val cardKsn: String? = null,
    val cvmPerformed: CvmPerformed? = null,
    val emvData: Map<String, String>? = null,
    val entryMode: EntryMode,
    val maskedPan: String? = null,
    val needOnline: Boolean? = null,
    val panToken: String? = null,
    val paymentMethod: PaymentMethod,
    val pinKsn: String? = null,
)
interface CardReadResultSuccess {
  cardKsn?: string | null;
  cvmPerformed?: CvmPerformed | null;
  emvData?: Record<string, string>;
  entryMode: EntryMode;
  maskedPan?: string;
  needOnline?: boolean;
  panToken?: string | null;
  paymentMethod: PaymentMethod;
  pinKsn?: string | null;
}
data class PoiRequestActionNew(
    val acptId: String? = null,
    val amount: Amount,
    val cvmSignatureMode: CvmSignatureMode? = null,
    val description: String? = null,
    val extra: Map<String, String>? = null,
    val forceFetchProfile: Boolean? = null,
    val forcePaymentMethod: List<ForcePaymentMethodItem>? = null,
    val installmentPlan: Int? = null,
    val installments: InstallmentRequest? = null,
    val linkedTranId: String? = null,
    val posReference: String? = null,
    val extOrderId: String? = null,
    val preferredAcceptanceTag: String? = null,
    val primaryTid: String? = null,
    val profileId: String,
    val tapToOwnDevice: Boolean? = null,
    val tranType: TranType,
) {
    enum class ForcePaymentMethodItem {
        VISA, MASTERCARD, UNIONPAY, AMEX, JCB, DISCOVER, DINERS, MY_DEBIT, 
        ALIPAY, WECHAT, VISA_QR, MASTERCARD_QR, UNIONPAY_QR, SHOPEE_PAY_QR, 
        GRAB_PAY_QR, ALIPAY_PLUS_QR, DUIT_NOW_QR, PAY_NOW, UNKNOWN
    }
}
interface PoiRequestActionNew {
  acptId?: string | null;
  amount: Amount;
  cvmSignatureMode?: CvmSignatureMode;
  description?: string | null;
  extra?: Record<string, string> | null;
  forceFetchProfile?: boolean;
  forcePaymentMethod?:
    | (
      | "VISA" | "MASTERCARD" | "UNIONPAY" | "AMEX" | "JCB" | "DISCOVER"
      | "DINERS" | "MY_DEBIT" | "ALIPAY" | "WECHAT" | "VISA_QR"
      | "MASTERCARD_QR" | "UNIONPAY_QR" | "SHOPEE_PAY_QR" | "GRAB_PAY_QR"
      | "ALIPAY_PLUS_QR" | "DUIT_NOW_QR" | "PAY_NOW" | "UNKNOWN")[]
    | null;
  installmentPlan?: number | null;  // int32
  installments?: InstallmentRequest | null;
  linkedTranId?: string | null;
  posReference?: string | null;
  extOrderId?: string | null;
  preferredAcceptanceTag?: string | null;
  primaryTid?: string | null;
  profileId: string;
  tapToOwnDevice?: boolean | null;
  tranType: TranType;
}
enum class CvmSignatureMode {
    ELECTRONIC_SIGNATURE, SIGN_ON_PAPER
}
type CvmSignatureMode = "ELECTRONIC_SIGNATURE" | "SIGN_ON_PAPER";
data class TransactionRequestMpQr(
    val callbackUrl: String? = null,
    val paymentMethod: PaymentMethod,
    val poiRequest: PoiRequestActionNew,
    val sdkId: String? = null,
)
interface TransactionRequestMpQr {
  callbackUrl?: string | null;
  paymentMethod: PaymentMethod;
  poiRequest: PoiRequestActionNew;
  sdkId?: string | null;
}
data class ActionRequest(
    val actionType: ActionType,
    val amount: Amount? = null,
    val originalActionId: String? = null,
    val posReference: String? = null,
)
interface ActionRequest {
  actionType: ActionType;
  amount?: Amount | null;
  originalActionId?: string | null;
  posReference?: string | null;
}
typealias String = String
type String = string;
data class CardToken(
    val extra: Map<String, String>? = null,
    val status: TokenStatus,
    val token: String? = null,
)
interface CardToken {
  extra?: Record<string, string> | null;
  status: TokenStatus;
  token?: string | null;
}
enum class TokenStatus {
    SUCCESS, NO_DATA, FAILED
}
type TokenStatus = "SUCCESS" | "NO_DATA" | "FAILED";
data class ReceiptRequest(
    val destination: String,
    val isResend: Boolean? = null,
    val type: ReceiptType,
)
interface ReceiptRequest {
  destination: string;
  isResend?: boolean;
  type: ReceiptType;
}
enum class ReceiptType {
    EMAIL, SMS
}
type ReceiptType = "EMAIL" | "SMS";
data class CursorPaginated-Profile(
    val cursorEnding: String? = null,
    val cursorStarting: String? = null,
    val data: List<Profile>,
    val dataSize: Int,
    val hasMore: Boolean,
    val requestPath: String,
    val requestSize: Int,
    val totalSize: Int,
)
interface CursorPaginated-Profile {
  cursorEnding?: string | null;
  cursorStarting?: string | null;
  data: Profile[];
  dataSize: number;  // int32
  hasMore: boolean;
  requestPath: string;
  requestSize: number;  // int32
  totalSize: number;  // int32
}
data class Profile(
    val countryCode: String,
    val createdAt: String,  // date-time
    val currency: String,
    val entityStatus: EntityStatus,
    val mcc: String,
    val merchantAddr: String,
    val merchantCity: String? = null,
    val merchantEmail: String? = null,
    val merchantName: String,
    val merchantPhone: String? = null,
    val merchantPostalCode: String? = null,
    val profileId: String,
    val profileName: String,
    val providerMchId: String? = null,
    val providerReference: String? = null,
    val updatedAt: String? = null,  // date-time
)
interface Profile {
  countryCode: string;
  createdAt: string;  // date-time
  currency: string;
  entityStatus: EntityStatus;
  mcc: string;
  merchantAddr: string;
  merchantCity?: string | null;
  merchantEmail?: string | null;
  merchantName: string;
  merchantPhone?: string | null;
  merchantPostalCode?: string | null;
  profileId: string;
  profileName: string;
  providerMchId?: string | null;
  providerReference?: string | null;
  updatedAt?: string | null;  // date-time
}
enum class EntityStatus {
    ACTIVE, DISABLED
}
type EntityStatus = "ACTIVE" | "DISABLED";
data class ProfileWithAcpt(
    val acceptances: List<Acceptance>,
    val acptSelection: Map<String, List<AcptSelectionValueItem>>,
    val countryCode: String,
    val createdAt: String,  // date-time
    val currency: String,
    val entityStatus: EntityStatus,
    val mcc: String,
    val merchantAddr: String,
    val merchantCity: String? = null,
    val merchantEmail: String? = null,
    val merchantName: String,
    val merchantPhone: String? = null,
    val merchantPostalCode: String? = null,
    val profileId: String,
    val profileName: String,
    val providerMchId: String? = null,
    val providerReference: String? = null,
    val updatedAt: String? = null,  // date-time
) {
    enum class AcptSelectionValueItem {
        VISA, MASTERCARD, UNIONPAY, AMEX, JCB, DISCOVER, DINERS, MY_DEBIT, 
        ALIPAY, WECHAT, VISA_QR, MASTERCARD_QR, UNIONPAY_QR, SHOPEE_PAY_QR, 
        GRAB_PAY_QR, ALIPAY_PLUS_QR, DUIT_NOW_QR, PAY_NOW, UNKNOWN
    }
}
interface ProfileWithAcpt {
  acceptances: Acceptance[];
  acptSelection: Record<string,
    | (
      | "VISA" | "MASTERCARD" | "UNIONPAY" | "AMEX" | "JCB" | "DISCOVER"
      | "DINERS" | "MY_DEBIT" | "ALIPAY" | "WECHAT" | "VISA_QR"
      | "MASTERCARD_QR" | "UNIONPAY_QR" | "SHOPEE_PAY_QR" | "GRAB_PAY_QR"
      | "ALIPAY_PLUS_QR" | "DUIT_NOW_QR" | "PAY_NOW" | "UNKNOWN")[]>;
  countryCode: string;
  createdAt: string;  // date-time
  currency: string;
  entityStatus: EntityStatus;
  mcc: string;
  merchantAddr: string;
  merchantCity?: string | null;
  merchantEmail?: string | null;
  merchantName: string;
  merchantPhone?: string | null;
  merchantPostalCode?: string | null;
  profileId: string;
  profileName: string;
  providerMchId?: string | null;
  providerReference?: string | null;
  updatedAt?: string | null;  // date-time
}
data class Acceptance(
    val acptId: String,
    val acptName: String? = null,
    val acptReference: String? = null,
    val createdAt: String,  // date-time
    val entityStatus: EntityStatus,
    val extraParams: Map<String, String>,
    val hostMessageFormat: HostMessageFormat,
    val keyId: String? = null,
    val primaryMid: String,
    val primaryTid: String,
    val supportedPayments: List<SupportedPaymentsItem>,
    val tags: List<String>? = null,
    val updatedAt: String? = null,  // date-time
) {
    enum class SupportedPaymentsItem {
        VISA, MASTERCARD, UNIONPAY, AMEX, JCB, DISCOVER, DINERS, MY_DEBIT, 
        ALIPAY, WECHAT, VISA_QR, MASTERCARD_QR, UNIONPAY_QR, SHOPEE_PAY_QR, 
        GRAB_PAY_QR, ALIPAY_PLUS_QR, DUIT_NOW_QR, PAY_NOW, UNKNOWN
    }
}
interface Acceptance {
  acptId: string;
  acptName?: string | null;
  acptReference?: string | null;
  createdAt: string;  // date-time
  entityStatus: EntityStatus;
  extraParams: Record<string, string>;
  hostMessageFormat: HostMessageFormat;
  keyId?: string | null;
  primaryMid: string;
  primaryTid: string;
  supportedPayments:
    | (
      | "VISA" | "MASTERCARD" | "UNIONPAY" | "AMEX" | "JCB" | "DISCOVER"
      | "DINERS" | "MY_DEBIT" | "ALIPAY" | "WECHAT" | "VISA_QR"
      | "MASTERCARD_QR" | "UNIONPAY_QR" | "SHOPEE_PAY_QR" | "GRAB_PAY_QR"
      | "ALIPAY_PLUS_QR" | "DUIT_NOW_QR" | "PAY_NOW" | "UNKNOWN")[];
  tags?: string[] | null;
  updatedAt?: string | null;  // date-time
}
data class ProfileRequest(
    val acceptances: List<AcceptanceUpsertRequest>? = null,
    val countryCode: String,
    val currency: String,
    val mcc: String,
    val merchantAddr: String,
    val merchantCity: String? = null,
    val merchantEmail: String? = null,
    val merchantName: String,
    val merchantPhone: String? = null,
    val merchantPostalCode: String? = null,
    val profileName: String,
    val providerMchId: String? = null,
    val providerReference: String? = null,
)
interface ProfileRequest {
  acceptances?: AcceptanceUpsertRequest[] | null;
  countryCode: string;
  currency: string;
  mcc: string;
  merchantAddr: string;
  merchantCity?: string | null;
  merchantEmail?: string | null;
  merchantName: string;
  merchantPhone?: string | null;
  merchantPostalCode?: string | null;
  profileName: string;
  providerMchId?: string | null;
  providerReference?: string | null;
}
data class AcceptanceUpsertRequest(
    val acptId: String? = null,
    val acptName: String? = null,
    val acptReference: String? = null,
    val acqMid: String? = null,
    val acqTid: String? = null,
    val extraParams: Map<String, String>? = null,
    val hostMessageFormat: HostMessageFormat,
    val primaryMid: String? = null,
    val primaryTid: String? = null,
    val supportedPayments: List<SupportedPaymentsItem>,
    val tags: List<String>? = null,
) {
    enum class SupportedPaymentsItem {
        VISA, MASTERCARD, UNIONPAY, AMEX, JCB, DISCOVER, DINERS, MY_DEBIT, 
        ALIPAY, WECHAT, VISA_QR, MASTERCARD_QR, UNIONPAY_QR, SHOPEE_PAY_QR, 
        GRAB_PAY_QR, ALIPAY_PLUS_QR, DUIT_NOW_QR, PAY_NOW, UNKNOWN
    }
}
interface AcceptanceUpsertRequest {
  acptId?: string | null;
  acptName?: string | null;
  acptReference?: string | null;
  acqMid?: string | null;
  acqTid?: string | null;
  extraParams?: Record<string, string> | null;
  hostMessageFormat: HostMessageFormat;
  primaryMid?: string | null;
  primaryTid?: string | null;
  supportedPayments:
    | (
      | "VISA" | "MASTERCARD" | "UNIONPAY" | "AMEX" | "JCB" | "DISCOVER"
      | "DINERS" | "MY_DEBIT" | "ALIPAY" | "WECHAT" | "VISA_QR"
      | "MASTERCARD_QR" | "UNIONPAY_QR" | "SHOPEE_PAY_QR" | "GRAB_PAY_QR"
      | "ALIPAY_PLUS_QR" | "DUIT_NOW_QR" | "PAY_NOW" | "UNKNOWN")[];
  tags?: string[] | null;
}
data class ProfileSignOn(
    val acptSignOns: List<AcptSignOn>,
    val profileId: String,
    val profileName: String,
)
interface ProfileSignOn {
  acptSignOns: AcptSignOn[];
  profileId: string;
  profileName: string;
}
data class AcptSignOn(
    val acptId: String,
    val acptName: String? = null,
    val acptReference: String? = null,
    val batchId: String,
    val hostMessageFormat: HostMessageFormat,
    val hostRespCode: String? = null,
    val hostRespMessage: String? = null,
    val primaryMid: String,
    val primaryTid: String? = null,
    val reason: String,
    val supportedPayment: List<SupportedPaymentItem>,
) {
    enum class SupportedPaymentItem {
        VISA, MASTERCARD, UNIONPAY, AMEX, JCB, DISCOVER, DINERS, MY_DEBIT, 
        ALIPAY, WECHAT, VISA_QR, MASTERCARD_QR, UNIONPAY_QR, SHOPEE_PAY_QR, 
        GRAB_PAY_QR, ALIPAY_PLUS_QR, DUIT_NOW_QR, PAY_NOW, UNKNOWN
    }
}
interface AcptSignOn {
  acptId: string;
  acptName?: string | null;
  acptReference?: string | null;
  batchId: string;
  hostMessageFormat: HostMessageFormat;
  hostRespCode?: string | null;
  hostRespMessage?: string | null;
  primaryMid: string;
  primaryTid?: string | null;
  reason: string;
  supportedPayment:
    | (
      | "VISA" | "MASTERCARD" | "UNIONPAY" | "AMEX" | "JCB" | "DISCOVER"
      | "DINERS" | "MY_DEBIT" | "ALIPAY" | "WECHAT" | "VISA_QR"
      | "MASTERCARD_QR" | "UNIONPAY_QR" | "SHOPEE_PAY_QR" | "GRAB_PAY_QR"
      | "ALIPAY_PLUS_QR" | "DUIT_NOW_QR" | "PAY_NOW" | "UNKNOWN")[];
}
data class ProfileSignOff(
    val acptSignOffs: List<AcptSignOff>,
    val profileId: String,
    val profileName: String,
)
interface ProfileSignOff {
  acptSignOffs: AcptSignOff[];
  profileId: string;
  profileName: string;
}
data class AcptSignOff(
    val acptId: String,
    val acptName: String? = null,
    val acptReference: String? = null,
    val hostMessageFormat: HostMessageFormat,
    val hostRespCode: String? = null,
    val hostRespMessage: String? = null,
    val primaryMid: String,
    val primaryTid: String? = null,
    val reason: String,
    val supportedPayment: List<SupportedPaymentItem>,
) {
    enum class SupportedPaymentItem {
        VISA, MASTERCARD, UNIONPAY, AMEX, JCB, DISCOVER, DINERS, MY_DEBIT, 
        ALIPAY, WECHAT, VISA_QR, MASTERCARD_QR, UNIONPAY_QR, SHOPEE_PAY_QR, 
        GRAB_PAY_QR, ALIPAY_PLUS_QR, DUIT_NOW_QR, PAY_NOW, UNKNOWN
    }
}
interface AcptSignOff {
  acptId: string;
  acptName?: string | null;
  acptReference?: string | null;
  hostMessageFormat: HostMessageFormat;
  hostRespCode?: string | null;
  hostRespMessage?: string | null;
  primaryMid: string;
  primaryTid?: string | null;
  reason: string;
  supportedPayment:
    | (
      | "VISA" | "MASTERCARD" | "UNIONPAY" | "AMEX" | "JCB" | "DISCOVER"
      | "DINERS" | "MY_DEBIT" | "ALIPAY" | "WECHAT" | "VISA_QR"
      | "MASTERCARD_QR" | "UNIONPAY_QR" | "SHOPEE_PAY_QR" | "GRAB_PAY_QR"
      | "ALIPAY_PLUS_QR" | "DUIT_NOW_QR" | "PAY_NOW" | "UNKNOWN")[];
}
data class DeviceParam(
    val capkParams: List<CapkParam>,
    val emvParams: List<EmvParam>,
    val profileId: String,
    val supportedPayments: List<SupportedPaymentsItem>,
    val terminalParam: TerminalParam,
) {
    enum class SupportedPaymentsItem {
        VISA, MASTERCARD, UNIONPAY, AMEX, JCB, DISCOVER, DINERS, MY_DEBIT, 
        ALIPAY, WECHAT, VISA_QR, MASTERCARD_QR, UNIONPAY_QR, SHOPEE_PAY_QR, 
        GRAB_PAY_QR, ALIPAY_PLUS_QR, DUIT_NOW_QR, PAY_NOW, UNKNOWN
    }
}
interface DeviceParam {
  capkParams: CapkParam[];
  emvParams: EmvParam[];
  profileId: string;
  supportedPayments:
    | (
      | "VISA" | "MASTERCARD" | "UNIONPAY" | "AMEX" | "JCB" | "DISCOVER"
      | "DINERS" | "MY_DEBIT" | "ALIPAY" | "WECHAT" | "VISA_QR"
      | "MASTERCARD_QR" | "UNIONPAY_QR" | "SHOPEE_PAY_QR" | "GRAB_PAY_QR"
      | "ALIPAY_PLUS_QR" | "DUIT_NOW_QR" | "PAY_NOW" | "UNKNOWN")[];
  terminalParam: TerminalParam;
}
data class CapkParam(
    val capkType: CapkType? = null,
    val checksum: String,
    val expiryYyMmDd: String,
    val exponent: String,
    val keyIndex: String,
    val modulus: String,
    val rid: String,
    val scheme: PaymentMethod,
)
interface CapkParam {
  capkType?: CapkType | null;
  checksum: string;
  expiryYyMmDd: string;
  exponent: string;
  keyIndex: string;
  modulus: string;
  rid: string;
  scheme: PaymentMethod;
}
enum class CapkType {
    TEST, LIVE
}
type CapkType = "TEST" | "LIVE";
data class EmvParam(
    val aid: String,
    val appVersion: String,
    val ctlCvmRequiredLimit: String,
    val ctlFloorLimit: String,
    val ctlTranLimit: String,
    val defaultDdol: String,
    val defaultTdol: String,
    val enabledCtlStatusCheck: Boolean? = null,
    val enabledFloorLimitCheck: Boolean,
    val enabledRandomSelect: Boolean,
    val enabledVelocityCheck: Boolean,
    val fullMatchSelect: Boolean,
    val mcKernelConfig: String? = null,
    val randomSelectMaxTargetPercent: Int,
    val randomSelectTargetPercent: Int,
    val randomSelectThreshold: String,
    val riskMgmtData: String? = null,
    val selectionPriority: Int,
    val tacDefault: String,
    val tacDenial: String,
    val tacOnline: String,
    val ttq: String? = null,
)
interface EmvParam {
  aid: string;
  appVersion: string;
  ctlCvmRequiredLimit: string;
  ctlFloorLimit: string;
  ctlTranLimit: string;
  defaultDdol: string;
  defaultTdol: string;
  enabledCtlStatusCheck?: boolean | null;
  enabledFloorLimitCheck: boolean;
  enabledRandomSelect: boolean;
  enabledVelocityCheck: boolean;
  fullMatchSelect: boolean;
  mcKernelConfig?: string | null;
  randomSelectMaxTargetPercent: number;  // int32
  randomSelectTargetPercent: number;  // int32
  randomSelectThreshold: string;
  riskMgmtData?: string | null;
  selectionPriority: number;  // int32
  tacDefault: string;
  tacDenial: string;
  tacOnline: string;
  ttq?: string | null;
}
data class TerminalParam(
    val bMydebitPriority: Boolean? = null,
    val countryCode: String,
    val ctlReaderCapability: String? = null,
    val ctlReaderCapabilityAmex: String? = null,
    val extra: Map<String, String>? = null,
    val merchantCategoryCode: String,
    val merchantName: String? = null,
    val pureAppCapability: String? = null,
    val terminalCapability: String,
    val terminalType: String,
    val tranCurrCode: String,
)
interface TerminalParam {
  bMydebitPriority?: boolean | null;
  countryCode: string;
  ctlReaderCapability?: string | null;
  ctlReaderCapabilityAmex?: string | null;
  extra?: Record<string, string> | null;
  merchantCategoryCode: string;
  merchantName?: string | null;
  pureAppCapability?: string | null;
  terminalCapability: string;
  terminalType: string;
  tranCurrCode: string;
}
data class StatusRequest(
    val status: EntityStatus,
)
interface StatusRequest {
  status: EntityStatus;
}
data class CursorPaginated-Acceptance(
    val cursorEnding: String? = null,
    val cursorStarting: String? = null,
    val data: List<Acceptance>,
    val dataSize: Int,
    val hasMore: Boolean,
    val requestPath: String,
    val requestSize: Int,
    val totalSize: Int,
)
interface CursorPaginated-Acceptance {
  cursorEnding?: string | null;
  cursorStarting?: string | null;
  data: Acceptance[];
  dataSize: number;  // int32
  hasMore: boolean;
  requestPath: string;
  requestSize: number;  // int32
  totalSize: number;  // int32
}
data class AcceptanceRequest(
    val acptName: String? = null,
    val acptReference: String? = null,
    val extraParams: Map<String, String>? = null,
    val hostMessageFormat: HostMessageFormat,
    val primaryMid: String,
    val primaryTid: String? = null,
    val supportedPayments: List<SupportedPaymentsItem>,
    val tags: List<String>? = null,
) {
    enum class SupportedPaymentsItem {
        VISA, MASTERCARD, UNIONPAY, AMEX, JCB, DISCOVER, DINERS, MY_DEBIT, 
        ALIPAY, WECHAT, VISA_QR, MASTERCARD_QR, UNIONPAY_QR, SHOPEE_PAY_QR, 
        GRAB_PAY_QR, ALIPAY_PLUS_QR, DUIT_NOW_QR, PAY_NOW, UNKNOWN
    }
}
interface AcceptanceRequest {
  acptName?: string | null;
  acptReference?: string | null;
  extraParams?: Record<string, string> | null;
  hostMessageFormat: HostMessageFormat;
  primaryMid: string;
  primaryTid?: string | null;
  supportedPayments:
    | (
      | "VISA" | "MASTERCARD" | "UNIONPAY" | "AMEX" | "JCB" | "DISCOVER"
      | "DINERS" | "MY_DEBIT" | "ALIPAY" | "WECHAT" | "VISA_QR"
      | "MASTERCARD_QR" | "UNIONPAY_QR" | "SHOPEE_PAY_QR" | "GRAB_PAY_QR"
      | "ALIPAY_PLUS_QR" | "DUIT_NOW_QR" | "PAY_NOW" | "UNKNOWN")[];
  tags?: string[] | null;
}
data class CursorPaginated-BatchWithTranSummary(
    val cursorEnding: String? = null,
    val cursorStarting: String? = null,
    val data: List<BatchWithTranSummary>,
    val dataSize: Int,
    val hasMore: Boolean,
    val requestPath: String,
    val requestSize: Int,
    val totalSize: Int,
)
interface CursorPaginated-BatchWithTranSummary {
  cursorEnding?: string | null;
  cursorStarting?: string | null;
  data: BatchWithTranSummary[];
  dataSize: number;  // int32
  hasMore: boolean;
  requestPath: string;
  requestSize: number;  // int32
  totalSize: number;  // int32
}
data class BatchWithTranSummary(
    val acptId: String,
    val batchId: String,
    val batchMode: BatchMode? = null,
    val batchNo: String,
    val batchStatus: BatchStatus,
    val batchSummary: BatchSummary,
    val createdAt: String,  // date-time
    val currency: String,
    val hostMessageFormat: HostMessageFormat,
    val merchantName: String? = null,
    val primaryMid: String,
    val primaryTid: String,
    val profileId: String,
    val providerMchId: String? = null,
    val tranSummaries: List<TranTypeSummary>,
    val updatedAt: String? = null,  // date-time
)
interface BatchWithTranSummary {
  acptId: string;
  batchId: string;
  batchMode?: BatchMode | null;
  batchNo: string;
  batchStatus: BatchStatus;
  batchSummary: BatchSummary;
  createdAt: string;  // date-time
  currency: string;
  hostMessageFormat: HostMessageFormat;
  merchantName?: string | null;
  primaryMid: string;
  primaryTid: string;
  profileId: string;
  providerMchId?: string | null;
  tranSummaries: TranTypeSummary[];
  updatedAt?: string | null;  // date-time
}
enum class BatchMode {
    AUTO, MANUAL, NO_NEED, AGGREGATED, MERCHANT_MANUAL
}
type BatchMode =
  | "AUTO" | "MANUAL" | "NO_NEED" | "AGGREGATED" | "MERCHANT_MANUAL";
enum class BatchStatus {
    OPEN, SETTLED, SETTLE_FAILED, SETTLEMENT_IN_PROGRESS
}
type BatchStatus =
  | "OPEN" | "SETTLED" | "SETTLE_FAILED" | "SETTLEMENT_IN_PROGRESS";
data class BatchSummary(
    val currency: String,
    val mchCreditCount: Int,
    val mchCreditTotal: String,
    val mchDebitCount: Int,
    val mchDebitTotal: String,
)
interface BatchSummary {
  currency: string;
  mchCreditCount: number;  // int32
  mchCreditTotal: string;
  mchDebitCount: number;  // int32
  mchDebitTotal: string;
}
data class TranTypeSummary(
    val count: Int,
    val paymentMethod: PaymentMethod? = null,
    val total: Amount,
    val tranStatus: TranStatus,
    val tranType: TranType,
)
interface TranTypeSummary {
  count: number;  // int32
  paymentMethod?: PaymentMethod | null;
  total: Amount;
  tranStatus: TranStatus;
  tranType: TranType;
}
data class BatchesByProfile(
    val batches: List<BatchWithTranSummary>,
    val profileId: String,
)
interface BatchesByProfile {
  batches: BatchWithTranSummary[];
  profileId: string;
}
data class DefaultDeviceParamTyped(
    val capkParams: List<CapkParam>,
    val emvParams: List<EmvParam>,
    val terminalParam: TerminalParam,
)
interface DefaultDeviceParamTyped {
  capkParams: CapkParam[];
  emvParams: EmvParam[];
  terminalParam: TerminalParam;
}
typealias List-EmvParam = List<EmvParam>
type List-EmvParam = EmvParam[];
typealias List-CapkParam = List<CapkParam>
type List-CapkParam = CapkParam[];
data class Any()
interface Any {}
data class EnablerStatus(
    val name: String,
    val version: String,
)
interface EnablerStatus {
  name: string;
  version: string;
}