Active, not expired, and not deletedpointId must be one of the gift's eligible point typesmaxRedeemPerUser is configured, checks the user has not exceeded the limit400 if out of stockcollectCustomerInfo is true on the gift → customerName and customerPhone are requireddeliveryRequired is true on the gift → deliveryName, deliveryPhone, deliveryCity, and deliveryAddress are requiredpointId field is optional. If omitted, the system automatically uses the first eligible point type linked to the gift. If the gift accepts multiple point types and the user wants to choose a specific one, they can provide pointId explicitly.curl --location -g --request POST '/api/v1/marketplace/user/{{user-key}}/redeem' \
--header 'x-api-key: {{api-key}}' \
--header 'Content-Type: application/json' \
--data-raw '{
"giftId": "{{gift-id}}",
"customerName": "Ahmed Mohammed",
"customerPhone": "+966500000001",
"deliveryName": "Ahmed Mohammed",
"deliveryPhone": "+966500000001",
"deliveryCity": "Riyadh",
"deliveryAddress": "123 Main Street, Al Olaya District"
}'{
"id": "c1d2e3f4-5678-9abc-def0-111111111111",
"giftId": "b1c2d3e4-5678-9abc-def0-111111111111",
"userId": "user-001",
"giftName": "Premium Headphones",
"giftImageUrl": "https://example.com/headphones.png",
"pointsSpent": 500,
"sarValue": 50,
"pointId": "68e3ee00d81b74c5fe9ac28c",
"redemptionValue": null,
"orderStatus": "Completed",
"deliveryStatus": "Pending",
"customerName": "Ahmed Mohammed",
"customerPhone": "+966500000001",
"deliveryName": "Ahmed Mohammed",
"deliveryPhone": "+966500000001",
"deliveryCity": "Riyadh",
"deliveryAddress": "123 Main Street, Al Olaya District",
"createdAt": "2026-03-22T16:00:00Z",
"completedAt": "2026-03-22T16:00:01Z",
"cancelledAt": null,
"redemptionMessage": "Enjoy your new headphones!"
}