Card issuer
Digital cards are issued against a loan and drawn down as they are used. A card is issued, may be cancelled, and carries limits that can be changed while it is active.
The platform issues the card number on both networks. You say which loan the card draws against, who it is for, for how long and for how much. The platform produces a Mastercard number, and allocates a UATP number from its own UATP range, so no create carries a card number.
Which cards you can see follows from which loans you can see: a card has no scope of its own, so loanId on the query is both a filter and the access model.
Card details are handled by the PCI vault: a UATP card's number is allocated there and never reaches this service in the clear.
Reads are redacted. A card comes back with its last four and its brand, never its number, so there is nothing here to decrypt, and the Encryption-Key-Name header is accepted and answered with no key. It is carried because a read that returns card data would need it, and no read does yet: the platform's unredacted call hands back vault tokens for the PAN and the CVV, which is a vault-to-vault exchange rather than something you can use. An unredacted read fit for an integrator is recorded as a platform gap.
/cards/{cardId}Get card/cardsList cards/cardsCreate cards/cards/{cardId}Update card/issuer-transactions/{issuerTransactionId}Get issuer transaction/issuer-transactionsList issuer transactions/issuer-transactions/{issuerTransactionId}Update issuer transaction/issuer-transactionsUpdate issuer transactions/issuer-transactions/{issuerTransactionId}/disputes/{disputeId}Get issuer transaction dispute/issuer-transactions/{issuerTransactionId}/refunds/{refundId}Get issuer transaction refund/issuer-transactions/{issuerTransactionId}/disputesList issuer transaction disputes/issuer-transactions/{issuerTransactionId}/refundsList issuer transaction refunds/issuer-refunds/{issuerRefundId}Get issuer refund/issuer-refundsCreate issuer refunds/issuer-refunds/{issuerRefundId}Update issuer refund/issuer-disputes/{issuerDisputeId}Get issuer dispute/issuer-disputesCreate issuer disputes/issuer-transaction-exceptions/{issuerTransactionExceptionId}Get issuer transaction exception/issuer-transaction-exceptionsList issuer transaction exceptions/issuer-transaction-exceptions/{issuerTransactionExceptionId}Update issuer transaction exception