Skip to main content

UDA endpoints — cards

How to call the cards routes. The formal schema is the OpenAPI specification (openapi/source/connector/cards/); this page is the call contract. Internal processing is in the architecture reference; caveats in the implementation notes.

All routes require a bearer token and party context (partyId), which the connector uses to resolve the customer in ULTRACS. cardId in the path is the Ark card id.

MethodPathCodePurpose
GET/v1/cards200List the party's cards
GET/v1/cards/{cardId}200Card detail
GET/v1/cards/{cardId}/transaction-settings200Current transaction controls
POST/v1/cards201Order a card
POST/v1/cards/{cardId}/lock204Lock a card
POST/v1/cards/{cardId}/unlock204Unlock a card
POST/v1/cards/{cardId}/activate200Activate a card
POST/v1/cards/{cardId}/cancel200Cancel or replace a card
PATCH/v1/cards/{cardId}/transaction-settings204Update transaction controls

Notes for callers

  • Order (POST /v1/cards) takes accountId (an Ark account id the card links to) and type (PHYSICAL / VIRTUAL / PHYSICAL_AND_VIRTUAL). It always orders a brand-new card; BIN, brand, collection method, and expiry come from the account's configured card product — the caller cannot choose them. The response carries cardId, vendorId, accountId, expiry, and cardHolderName (the embossed line 1).
  • Card type and brand are restricted: the connector emits only VISA / MASTERCARD brands (the contract's DEBIT is never returned), and physical/virtual/hybrid types. The response does not include a card-capability features array even though the schema allows one (see the implementation notes).
  • Activate takes an optional expiry (MM/YY) as proof of possession of a physical card, and returns the refreshed card detail.
  • Lock / unlock / activate only succeed when ULTRACS reports the card supports that action; a card in the wrong state is rejected with 409. The full card state machine is in the lifecycle reference.
  • Cancel (POST /v1/cards/{cardId}/cancel) takes reason: CANCEL stops the card with no replacement; LOST / STOLEN / DAMAGED order a replacement card. Note the response is the original card's refreshed detail, not the replacement, and the original card is not stopped on a replacement (see the implementation notes).
  • Transaction settings are the ten domestic/international controls (online, mobile-wallet, ATM, physical, tap-&-go). PATCH is partial (one or more controls) and only works on an active card (409 otherwise). Enabling a tap-&-go control while the matching physical-purchases control is off is rejected by ULTRACS as 400 CAR000006 (see the implementation notes).
  • Change-PIN is not available — the OpenAPI contract reserves an updatePin operation, but the connector exposes no such route (see the implementation notes).

Errors

HTTPCodeWhen
400GEN000000request body/params fail schema validation
400CAR000004invalid card control (unknown feature, missing field — duplicate controls also collapse to this code; the dedicated CAR000005 DUPLICATE_CONTROL_DEFINED constant exists but is unused)
400CAR000006tap-&-go enabled while the matching physical-purchases control is disabled (ULTRACS-enforced)
401CAR001001order: the linked account isn't owned by the caller
403CAR003003the card isn't owned by the caller; list: a returned card/account has no local mapping
404PAR004001no party mapping for the caller (ClientAuthManager.getClientKeyPARTY_NOT_FOUND)
404CAR004001no card mapping for cardId; order: no card product matches the requested type
404CAR004003transaction settings not found for the card
404CAR004004the card's linked account has no local mapping
409CAR009001lock/unlock/activate/cancel: card is in an invalid state for the action; update settings: card is not ACTIVE
500CAR100001list: a card has no matching card product
500CAR100002unmappable status/type/brand, missing core-banking number, or a failure during cancel
500GEN100001an ULTRACS fault with no mapping (handleUltracsError falls back to DOWNSTREAM_CONNECTOR_ERROR — only the update-settings operation maps faults — see the implementation notes)