Public changelog for the PERS Platform API. Tracking started April 2026.
Current Version: 2.0.17
- Enhanced Platform Detection: Added automatic User-Agent parsing as fallback when SDK doesn't provide platform information (OS, browser, device type)
- Data Quality Tracking: Platform data now includes quality indicator (
platformSource: 'sdk' | 'auto') to distinguish authoritative vs auto-detected information - Mobile Browser Tracking: Mobile browsers (Chrome, Safari on phones/tablets) now correctly tracked as
channel: 'web'- checkplatform.deviceTypeto distinguish mobile vs desktop web users
- Added database-level unique email constraint per tenant to prevent duplicate registrations and race conditions
- Attribution Tracking: New attribution tracking for analytics across all entities (users, claims, redemptions, bookings)
- DataSource Headers: SDK can send
x-source-channel,x-source,x-source-medium,x-source-campaignheaders for campaign tracking
- Auto-detects channel/source from User-Agent and Referer headers when SDK headers not provided
- Standalone serverless function for booking operations
- Users now have
registrationSourcefield for analytics
- Business Ownership: Added
ownerBusinessIdfield to campaigns, redemptions, and token metadata for tracking which business owns/promotes the entity - Owner Business Loading: Added
?include=ownerBusinessquery parameter to load owner business entity details - Owner Business Filtering: Added
?ownerBusinessIdfilter parameter to campaigns, redemptions, and token metadata endpoints
- Deprecated CampaignBusinessEngagement: Use
TriggerSource.businessIdfor business participation tracking instead - Business Loading:
?include=businessesnow extracts business IDs from TriggerSources instead of deprecated CampaignBusinessEngagement
- Booking Terminology: Renamed "reservation" to "booking" throughout the API for clarity
- Simplified Booking Types: Booking requirement values now:
'active','future','past','active_future','any', ornull(removed'none') - Enhanced Redemption Includes: Redemptions now support
?include=userInfo,bookingto load user field validation and booking eligibility data - Booking Query Filters:
GET /bookingsendpoint now supports?userIdand?businessIdquery parameters
- Terminology Change: All "reservation" references changed to "booking" (
reservationRequirement→bookingRequirement) - Removed Endpoint:
GET /users/:id/bookingsremoved - useGET /bookings?userId=:idinstead - Type Change:
BookingRequirementTypevalue'none'removed - usenullinstead
- Transaction Metadata URIs: Added
metadataUrifield to transactions for tracking IPFS/storage URLs of NFT metadata - Structured Auth Errors: Token refresh failures now return specific error codes (
REFRESH_TOKEN_EXPIRED,REFRESH_TOKEN_REVOKED) for programmatic detection - Redemption Type Management: Added
PUT /redemptions/types/:idandDELETE /redemptions/types/:idendpoints for admin management
- DPoP Clock Tolerance: Increased tolerance for corporate environments with clock drift (10 min past, 5 min future)
- Date Range Filtering: Added
dateFromanddateToquery parameters to campaign claims and redemption redeems endpoints - Multi-Tag Filtering: Added
tagsparameter (OR match) on campaigns, redemptions, and businesses for flexible tag-based queries - Business Search: Added
searchparameter toGET /businessesendpoint for name-based searching - Immediate Activation: Added
isActiveoption to activate redemptions and token metadata immediately upon creation
- User Endpoints: Fixed
PUT /users/me,POST /users/info, andPUT /users/:identifierto return virtual wallets in response - Date Validation: Invalid date formats now return proper
400 Bad Requesterrors instead of silently failing
- Custom Field Definitions: Added support for custom user information fields with validation rules
- User Info Validation: New
POST /users/infoendpoint for submitting and validating custom field data - Geocoding v2: Enhanced geocoding with support for address components, place IDs, and improved accuracy
- Analytics Enhancements: Added
totalClaims,totalRedemptions,totalBurnsmetrics to user analytics - Owner Business Filtering: Analytics endpoints now support
ownerBusinessIdfilter for business-specific reporting
- Auto-Enrichment: Analytics results now automatically include campaign/redemption names and owner business IDs
- Transaction Status Filtering: Analytics now filters to
SUCCEEDEDandBROADCASTEDtransactions by default - SQL Query Performance: Fixed PostgreSQL column quoting and JOIN syntax for analytics queries
- OIDC Discovery: Added
/.well-known/openid-configurationendpoint for enterprise SSO integration - Webhook Metadata: Webhook trigger endpoint now returns structured response with
executionId,statusCode,durationMs
- Improved platform stability for high-traffic multi-tenant scenarios