Skip to main content

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.