---
# System prepended metadata

title: SNACK MasterCard API implementation

---

# SNACK MasterCard API implementation

## POST {{ HOST }}/product/addTriggerCard
Request:
```jsonld=
{
    "cardType": "MasterCard", // "MasterCard", "Visa"
    "cardAlias": "5412871ddMA5d9V9827"
}
```
Response - Success:
```jsonld=
{
    "success": true,
    "message": "Enrolled successfully."
}
```
Response - Failure:
```jsonld=
{
    "success": false,
    "errors": [
        {
            "code": "-1001",
            "message": "Card already enrolled"
        }
    ]
}
```
Response - Failure - Generic:
```jsonld=
{
    "success": false,
    "errors": [
        {
            "code": "<Generic Error Code>",
            "message": "<Generic Error message>"
        }
    ]
}
```

## POST {{ HOST }}/product/removeTriggerCard
Request:
```jsonld=
{
    "cardType": "MasterCard", // "MasterCard", "Visa"
    "cardAlias": "5412871ddMA5d9V9827"
}
```
Response - Success:
```jsonld=
{
    "success": true,
    "message": "Removed successfully."
}
```

## GET {{ HOST }}/user/triggerCards?cardType=MasterCard

cardType is optional, if it not specified, response will contain all cardType informations with active cards.

Response - Success:
```jsonld=
{
    "success": true,
    "data": [
        {
            "cardType": "MasterCard",
            "cardAlias": "5412871ddMA5d9V9827",
            "status": 1, 
            "referenceID": "<>",
            "userID": "<>",
            "cardID": "<>",
            "last4Digits": "9827"
        }
    ]
}
```

## ZA:

{{ HOST }}snack/query/dataSourceList
- ZA need to returm MasterCard DataSource.

dataSourceCode": "DS0013",
"dataSourceName": "MasterCard",


## DB update:
trigger_category_datasource
datasources


## ML Logic in BE
### addTriggerCard

1. getCustomerAccounts - MasterCard Service.

```javascript
success: [accountStatusId= 1 (enroled)or 3 (cancel)]
{
    "data": {
        "belongsToLoggedInCustomer": true,
        "accountStatusId": 3
    }
}

if(accountStatusId == 1) {
    // card is already enrolled.
    // return an error message
} else {
    if (accountStatusId == 3) {
        // updateCustmerAccount
        // set the accountStatusId=1
        // Update ML DB card status as active.
        // API call addMasterCard to ZA.
    } else {
        // Enrol API to Enrol:
        // { referenceId, customerId }
        // Insert to ML DB
        // API call addMasterCard to ZA.
    }
}

Error:
return an error message
```

### removeTriggerCard

```javascript
updateCustomerAccount API Mastercard. 
accountStatusId=3
Update ML DB card status as inactive.
// API call removeMasterCard to ZA.
Return the response.
```

### `mastercard_cards`
```json
{
    "id": 0,
    "cardAlias": "5412871ddMA5d9V9827",
    "status": 1, 
    "referenceID": "<>",
    "userId": "<>",
    "cardId": "<>",
    "last4Digits": "9827",
    "channelUserId": 123223,
    "createdAt": "<>",
    "updatedAt": "<>"
    
}
```