Members APIDiscover
Get Bonus Status
Check if a specific easter egg bonus has already been claimed
GET
/members/me/features/discover/bonuses/{code}/statusOverview
Check if a specific easter egg bonus has already been claimed by the authenticated member. Easter eggs are special promotional bonuses that can be discovered and claimed once per member.
Authentication
Requires a valid Clerk JWT token in the Authorization header.
Path Parameters
codepathstringrequiredThe easter egg bonus code to check
Request
curl -X GET "http://localhost:3000/v1/members/me/features/discover/bonuses/WELCOME2024/status" \
-H "Authorization: Bearer YOUR_CLERK_JWT"Response
Returns the claim status for the specified bonus code.
claimedbooleanrequiredWhether the bonus has already been claimed by this member
Response
{
"claimed": false
}Use Cases
Pre-Claim Validation
const validateBonusEligibility = async (code: string) => {
const status = await getBonusStatus(code);
if (status.claimed) {
return {
eligible: false,
reason: 'Bonus already claimed'
};
}
return {
eligible: true,
reason: 'Ready to claim'
};
};UI State Management
const BonusCard = ({ bonusCode, displayName, pointValue }) => {
const [status, setStatus] = useState(null);
const [loading, setLoading] = useState(true);
useEffect(() => {
const checkStatus = async () => {
try {
const result = await getBonusStatus(bonusCode);
setStatus(result);
} catch (error) {
setStatus({ claimed: false, error: true });
} finally {
setLoading(false);
}
};
checkStatus();
}, [bonusCode]);
if (loading) return <Spinner />;
return (
<div className="bonus-card">
<h3>{displayName}</h3>
<p>{pointValue.toLocaleString()} points</p>
{status.claimed ? (
<div className="claimed-badge">✓ Already Claimed</div>
) : (
<button
onClick={() => claimBonus(bonusCode)}
className="claim-button"
>
Claim Bonus
</button>
)}
</div>
);
};Error Handling
Invalid Bonus Code
When the bonus code doesn't exist or is inactive, the endpoint returns a 404 error. The service only checks active easter eggs.
Network Error Handling
const safeGetBonusStatus = async (code: string) => {
try {
const status = await getBonusStatus(code);
return { ...status, error: false };
} catch (error) {
if (error.status === 404) {
return { claimed: false, error: true, message: 'Bonus code not found' };
}
return { claimed: false, error: true, message: 'Unable to check status' };
}
};Related Endpoints
- Claim Bonus - Claim an easter egg bonus
- Get Earn More Gallery - Properties with bonus campaigns
- Get Wallet Activity - View claimed bonus transactions