/** * @example * { * pid: "pid", * amount: 1.1, * balanceDefinitionId: "balanceDefinitionId" * } */ export interface BeginTransactionRequest { /** Loyalty Program Id */ pid: string; /** Transaction amount. A positive value creates a credit transaction and a negative value creates a debit transaction (unless transactionType is explicitly provided). */ amount: number; /** Explicit transaction type. If not provided, the type is inferred from the sign of the amount (positive = credit, negative = debit). */ transactionType?: BeginTransactionRequest.TransactionType; /** Unique identifier (UUID) of the associated balance definition. */ balanceDefinitionId: string; /** Unique identifier of the contact involved in the transaction. Required unless `LoyaltySubscriptionId` is provided. */ contactId?: number; /** Unique identifier for the loyalty subscription. Required unless `contactId` is provided. */ LoyaltySubscriptionId?: string; /** Optional metadata associated with the transaction. */ meta?: Record; /** Time-to-live for the transaction in seconds. Must be at least 10 seconds if provided. */ ttl?: number; /** Timestamp specifying when the transaction event occurred (ISO 8601 / RFC 3339 format). */ eventTime?: string; /** Whether the transaction should be automatically completed. */ autoComplete?: boolean; /** Expiry time for the balance in minutes. Must be greater than 0 if provided. Only applicable when autoComplete is true. */ balanceExpiryInMinutes?: number; } export declare namespace BeginTransactionRequest { /** Explicit transaction type. If not provided, the type is inferred from the sign of the amount (positive = credit, negative = debit). */ const TransactionType: { readonly Credit: "credit"; readonly Debit: "debit"; }; type TransactionType = (typeof TransactionType)[keyof typeof TransactionType]; }