Update existing redemption. Business can only update their own redemptions.
Optional owner business ID. If set, this redemption belongs to a specific business. If null/omitted, the redemption is tenant-owned (system-level).
Whether the redemption is active immediately on creation. Defaults to false.
Terms and conditions for the redemption. Plain text or HTML. Multi-language handling at app level.
Country code restrictions as an array of strings (e.g., ["NOT_ES", "FR"])
[ "NOT_ES", "FR" ]
ERC721 only - Admin-defined dynamic context for AI prompts and trigger-based validity. Always applied to tokens minted from this redemption. Special keys: validityDate, validityEndDate, validityDuration for token expiry.
{ "eventName": "Summer Sale", "validityDuration": 30 }
Required user fields specific to this redemption (beyond type defaults). Can include built-in field keys (email, firstName) or custom field UUIDs.
[ "email", "firstName", "countryOfResidence" ]
Booking requirement for this redemption. If set, defines what type of booking user needs. Omit or null = no booking required.
Optional token units the user must transfer/burn as payment (ERC20, ERC1155, or ERC721). Use resolveByBusiness=true for stamp-token redemptions where the tokenId is resolved per business at redeem time.
[ { "tokenEntityId": "uuid", "tokenMetadataIncrementalId": 1, "amount": 9 } ]
- Mock serverhttps://docs.pers.ninja/_mock/swagger/redemptions/{id}
- https://api.pers.ninja/v2https://api.pers.ninja/v2/redemptions/{id}
curl -i -X PUT \
'https://docs.pers.ninja/_mock/swagger/redemptions/{id}' \
-H 'Authorization: Bearer <YOUR_JWT_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"ownerBusinessId": "string",
"isActive": false,
"creditTokenAmount": 0,
"description": "string",
"name": "string",
"imageUrl": "string",
"logoUrl": "string",
"terms": "string",
"startDate": "2019-08-24T14:15:22Z",
"endDate": "2019-08-24T14:15:22Z",
"redemptionTypeId": 0,
"minUserStatusTypeId": 0,
"maxTotalSupply": 0,
"order": 0,
"maxPerUser": 0,
"countryCodeRestrictions": [
"NOT_ES",
"FR"
],
"tags": [
"rewards",
"partner",
"premium"
],
"context": {
"eventName": "Summer Sale",
"validityDuration": 30
},
"specificRequiredUserFields": [
"email",
"firstName",
"countryOfResidence"
],
"bookingRequirement": "active",
"priceTokenUnits": [
{
"tokenEntityId": "uuid",
"tokenMetadataIncrementalId": 1,
"amount": 9
}
]
}'Redemption updated successfully
Optional owner business ID. If set, this redemption belongs to a specific business. If null, the redemption is tenant-owned (system-level).
Terms and conditions for the redemption. Plain text or HTML. Multi-language handling at app level.
Optional token units the user must transfer/burn as payment (ERC20, ERC1155, or ERC721). When set, these are transferred from user → business in addition to (or instead of) creditTokenAmount.
Computed payment mechanism. Use this for rendering decisions (FREE = no payment, CREDIT = platform credit tokens, TOKEN_PAY = ERC20 transfer, TOKEN_BURN = ERC1155/ERC721 stamp/NFT, MIXED = credit + token). Never stored — derived from creditTokenAmount and priceTokenUnits.
The minimum user status type to redeem the redemption
Country code restrictions as an array of strings (e.g., ["NOT_ES", "FR"])
[ "NOT_ES", "FR" ]
ERC721 only - Admin-defined dynamic context for AI prompts and trigger-based validity. Always applied to tokens minted from this redemption. Special keys: validityDate, validityEndDate, validityDuration for token expiry.
{ "eventName": "Summer Sale", "validityDuration": 30 }
Required user fields specific to this redemption (beyond type defaults). Can include built-in field keys (email, firstName) or custom field UUIDs.
All required fields for this redemption (type baseline + extras, deduplicated). Use this for validation.
Redemption-specific booking requirement override. Set to override type default. Omit or null = use type default.
Effective booking requirement (specific override ?? type default). Use this for validation. Null = no booking required.
{ "id": "string", "ownerBusinessId": "string", "description": "string", "name": "string", "imageUrl": "string", "logoUrl": "string", "terms": "string", "startDate": "2019-08-24T14:15:22Z", "endDate": "2019-08-24T14:15:22Z", "isActive": true, "approval": { "status": "pending_approval", "approvedAt": "2019-08-24T14:15:22Z", "approvedBy": "string", "rejectionReason": "string" }, "creditTokenAmount": 0, "type": { "name": "string", "description": "string", "imageUrl": "string", "baseRequiredUserFields": [], "bookingRequirement": { … }, "id": 0 }, "priceTokenUnits": [], "mechanism": "FREE", "tokenUnits": [ { … } ], "order": 0, "supply": { "available": 0, "total": 0 }, "maxPerUser": 0, "minUserStatusType": { "name": "string", "description": "string", "minTokenBalance": "string", "discountPercentage": 0, "imageUrl": "string", "eligibleTokenAddresses": [ … ], "tags": [ … ], "order": 100, "id": 0 }, "countryCodeRestrictions": [ "NOT_ES", "FR" ], "tags": [], "context": { "eventName": "Summer Sale", "validityDuration": 30 }, "specificRequiredUserFields": [], "requiredUserFields": [], "specificBookingRequirement": { "type": "active", "eligibleBusinessIds": [ … ], "eligibleBusinessTypeIds": [ … ] }, "bookingRequirement": { "type": "active", "eligibleBusinessIds": [ … ], "eligibleBusinessTypeIds": [ … ] }, "included": { "redeemCount": 0, "ownerBusiness": { … }, "requiredUserInfo": { … }, "booking": { … } } }