User Profile
Authenticated users can manage their profile information via the Profile API.
Get Profile
GET /api/storefront/profile
Authorization: Bearer <token>
Response:
{
"id": "guid",
"email": "user@example.com",
"firstName": "John",
"lastName": "Doe",
"phoneNumber": "+1234567890",
"phoneNumberConfirmed": true,
"emailConfirmed": true
}
Update Profile
PUT /api/storefront/profile
Authorization: Bearer <token>
Content-Type: application/json
{
"firstName": "John",
"lastName": "Doe",
"phoneNumber": "+1234567890"
}
Phone Verification
If phone verification is enabled for the store, users can verify their phone number:
POST /api/storefront/verification/send
Authorization: Bearer <token>
Content-Type: application/json
{
"channel": "sms",
"recipient": "+1234567890"
}
POST /api/storefront/verification/verify
Authorization: Bearer <token>
Content-Type: application/json
{
"recipient": "+1234567890",
"code": "123456"
}
The verification system uses Twilio Verify API when configured, or falls back to local code generation with SMS delivery.
Favourites
The signed-in customer's saved products. The API returns product ids only — load the cards with POST /api/storefront/products/search and productIds, so prices, availability and images follow the same rules as every other list.
GET /api/storefront/favorites → { "productIds": ["…", "…"] } (newest first)
PUT /api/storefront/favorites/{productId} add (idempotent; unknown ids are ignored)
DELETE /api/storefront/favorites/{productId}
POST /api/storefront/favorites/merge { "productIds": ["…"] }
merge is for clients that let customers collect favourites before signing in: send the device's list once after sign-in and use the returned list from then on.