Activategiftcard
curl --request POST \
--url https://api.loyalty.dog/v2/giftcards/programs/{programId}/cards/{cardId}/activate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"customerEmail": "[email protected]",
"customerPhone": "<string>",
"customerName": "<string>",
"securityCode": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
customerEmail: '[email protected]',
customerPhone: '<string>',
customerName: '<string>',
securityCode: '<string>'
})
};
fetch('https://api.loyalty.dog/v2/giftcards/programs/{programId}/cards/{cardId}/activate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.loyalty.dog/v2/giftcards/programs/{programId}/cards/{cardId}/activate"
payload = {
"customerEmail": "[email protected]",
"customerPhone": "<string>",
"customerName": "<string>",
"securityCode": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"id": "5eb7cf5a86d9755df3a6c593",
"cardNumber": "<string>",
"balance": "<string>",
"initialValue": "<string>",
"status": "pending",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"activatedAt": "2023-11-07T05:31:56Z",
"expiresAt": "2023-11-07T05:31:56Z",
"suspendedReason": "<string>",
"suspendedUntil": "2023-11-07T05:31:56Z",
"suspendedAt": "2023-11-07T05:31:56Z",
"customerId": "5eb7cf5a86d9755df3a6c593",
"customerEmail": "<string>",
"customerPhone": "<string>",
"customerName": "<string>",
"merchantId": "5eb7cf5a86d9755df3a6c593",
"isPhysical": true,
"designTemplate": "<string>",
"customMessage": "<string>",
"lastFourDigits": "<string>",
"programId": "5eb7cf5a86d9755df3a6c593",
"card": {
"serialNumber": "<string>",
"passTypeIdentifier": "<string>",
"url": "<string>"
},
"senderName": "<string>",
"merchantName": "<string>",
"deliverAt": "2023-11-07T05:31:56Z",
"delivered": false
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Gift Cards
Activategiftcard
Activate Gift Card
Activates a pending gift card and loads the initial balance. Creates an ACTIVATION transaction for audit trail.
Business Rules:
- Only PENDING cards can be activated
- Card must not be expired
- Balance is set to initialValue upon activation
- Status changes from PENDING to ACTIVE
- Customer information can be updated during activation
- Activation creates a transaction record
- Authenticated customer session is required
Path Parameters:
programId: MongoDB ObjectId of the loyalty programcardId: MongoDB ObjectId of the gift card
Request Body:
customerEmail: Customer email (optional, updates card if provided)customerName: Customer name (optional, updates card if provided)
Returns:
- Activated gift card details with updated balance and ACTIVE status
- Includes activatedAt timestamp
Status Codes:
- 200: Gift card activated successfully
- 400: Card cannot be activated (already active, expired, or invalid status)
- 404: Gift card not found or doesn’t belong to program
- 409: Activation conflicted with concurrent update
- 401: Unauthorized
Idempotency Scope:
- Idempotency keys are scoped to
programId + activate + cardId - The same key may be reused for different cards or different gift card actions
POST
/
v2
/
giftcards
/
programs
/
{programId}
/
cards
/
{cardId}
/
activate
Activategiftcard
curl --request POST \
--url https://api.loyalty.dog/v2/giftcards/programs/{programId}/cards/{cardId}/activate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"customerEmail": "[email protected]",
"customerPhone": "<string>",
"customerName": "<string>",
"securityCode": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
customerEmail: '[email protected]',
customerPhone: '<string>',
customerName: '<string>',
securityCode: '<string>'
})
};
fetch('https://api.loyalty.dog/v2/giftcards/programs/{programId}/cards/{cardId}/activate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.loyalty.dog/v2/giftcards/programs/{programId}/cards/{cardId}/activate"
payload = {
"customerEmail": "[email protected]",
"customerPhone": "<string>",
"customerName": "<string>",
"securityCode": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"id": "5eb7cf5a86d9755df3a6c593",
"cardNumber": "<string>",
"balance": "<string>",
"initialValue": "<string>",
"status": "pending",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"activatedAt": "2023-11-07T05:31:56Z",
"expiresAt": "2023-11-07T05:31:56Z",
"suspendedReason": "<string>",
"suspendedUntil": "2023-11-07T05:31:56Z",
"suspendedAt": "2023-11-07T05:31:56Z",
"customerId": "5eb7cf5a86d9755df3a6c593",
"customerEmail": "<string>",
"customerPhone": "<string>",
"customerName": "<string>",
"merchantId": "5eb7cf5a86d9755df3a6c593",
"isPhysical": true,
"designTemplate": "<string>",
"customMessage": "<string>",
"lastFourDigits": "<string>",
"programId": "5eb7cf5a86d9755df3a6c593",
"card": {
"serialNumber": "<string>",
"passTypeIdentifier": "<string>",
"url": "<string>"
},
"senderName": "<string>",
"merchantName": "<string>",
"deliverAt": "2023-11-07T05:31:56Z",
"delivered": false
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
JWT access token obtained from POST /v2/token.
Headers
Path Parameters
Required string length:
24Pattern:
^[0-9a-f]{24}$Example:
"5eb7cf5a86d9755df3a6c593"
Required string length:
24Pattern:
^[0-9a-f]{24}$Example:
"5eb7cf5a86d9755df3a6c593"
Body
application/json
Response
Successful Response
Required string length:
24Pattern:
^[0-9a-f]{24}$Example:
"5eb7cf5a86d9755df3a6c593"
Gift card status enumeration.
Available options:
pending, active, suspended, expired, voided, depleted Required string length:
24Pattern:
^[0-9a-f]{24}$Example:
"5eb7cf5a86d9755df3a6c593"
Required string length:
24Pattern:
^[0-9a-f]{24}$Example:
"5eb7cf5a86d9755df3a6c593"
Required string length:
24Pattern:
^[0-9a-f]{24}$Example:
"5eb7cf5a86d9755df3a6c593"
The customer card object
Attributes: serialNumber (str): The serial number of the customer pass passTypeIdentifier (str): The pass type identifier of the customer pass url (str): The shareable URL of the customer pass
Show child attributes
Show child attributes
