Method: GET
URL: https://le-crown-interiors-backend.onrender.com/image/all
Authentication: None Required
Request Body: Must be empty {} (empty object) or null
Description: Returns all image data grouped by their folder name such as
"offers", "hero", etc.
The response is a JSON object where keys are folder names and values are arrays of image objects.
{
"offers": [
{
"img": {
"public_id": "lecrowninteriors/hsrtfdyvbtp6lvkptsux",
"url": "http://res.cloudinary.com/dflgxymvs/image/upload/v1746063750/lecrowninteriors/hsrtfdyvbtp6lvkptsux.avif",
"dimensions": {
"width": 369,
"height": 553
}
},
"name": "modern-living-room",
"title": "Elegant & Functional Living Spaces",
"content": "Transform your living room into a contemporary haven with sleek furniture, layered lighting, and earthy textures.",
"description": "Our modern living room designs blend comfort with luxury, utilizing open layouts, neutral tones, and handpicked decor accents to elevate your space."
},
{
"img": {
"public_id": "lecrowninteriors/zelf1fjtfx9greltub3y",
"url": "http://res.cloudinary.com/dflgxymvs/image/upload/v1746063707/lecrowninteriors/zelf1fjtfx9greltub3y.avif",
"dimensions": {
"width": 930,
"height": 1316
}
},
"name": "luxury-bedroom",
"title": "Serene Bedroom Interiors",
"content": "Create a peaceful retreat with custom-designed wardrobes, warm lighting, and plush textures.",
"description": "Designed for comfort and style, our luxury bedrooms feature soft color palettes, smart storage, and inviting ambiance to ensure restful nights."
},
{
"img": {
"public_id": "lecrowninteriors/x2dwiec2g48ugg0sdmmm",
"url": "http://res.cloudinary.com/dflgxymvs/image/upload/v1746041229/lecrowninteriors/x2dwiec2g48ugg0sdmmm.avif",
"dimensions": {
"width": 4480,
"height": 2520
}
},
"name": "open-concept-kitchen",
"title": "Contemporary Kitchen Designs",
"content": "Maximize space and efficiency with open shelving, clean lines, and modern finishes.",
"description": "Our kitchen interiors are tailored for both form and function, using minimalist aesthetics and durable materials to support your culinary lifestyle."
}
],
"hero": [
{
"img": {
"public_id": "lecrowninteriors/jfqzmfj9xkb2wuoke3zy",
"url": "http://res.cloudinary.com/dflgxymvs/image/upload/v1746062516/lecrowninteriors/jfqzmfj9xkb2wuoke3zy.avif",
"dimensions": {
"width": 1799,
"height": 1200
}
},
"name": "nithya-ganesh-portrait-1",
"title": "Creative Director",
"content": "With a passion for timeless design and innovation, Nithya leads our creative vision with elegance and precision.",
"description": "Nithya Ganesh, our lead designer, brings over a decade of experience crafting bespoke interiors that balance beauty with functionality."
},
{
"img": {
"public_id": "lecrowninteriors/iu5nczfvfhecjqytzmhn",
"url": "http://res.cloudinary.com/dflgxymvs/image/upload/v1746062475/lecrowninteriors/iu5nczfvfhecjqytzmhn.avif",
"dimensions": {
"width": 1920,
"height": 1102
}
},
"name": "nithya-ganesh-portrait-2",
"title": "Founder & Visionary",
"content": "Driven by excellence and innovation, Nithya transforms everyday spaces into works of art.",
"description": "As the founder of LeCrown Interiors, Nithya is committed to delivering personalized design solutions that reflect each client's unique style and story."
}
]
}
{
"img": {
"public_id": "string", // Cloudinary public ID
"url": "string", // Full Cloudinary URL (AVIF)
"dimensions": {
"width": number, // Pixel width
"height": number // Pixel height
}
},
"name": "string", // Uploader-provided or autogenerated
"title": "string", // Custom title
"content": "string", // Content field (short description)
"description": "string" // Full description (up to 5000 chars)
}
"offers" or "hero" which is
the folder name selected when upload.localStorage. Use that cached data across pages to avoid repeated API calls.
POST https://le-crown-interiors-backend.onrender.com/otp/sendotp
β Send OTP to userβs phonePOST https://le-crown-interiors-backend.onrender.com/otp/verifyotp
β Verify submitted OTPGET https://le-crown-interiors-backend.onrender.com/otp/deleteall
β (Dev only) Delete all OTP and user session dataBrowserData = { userAgent: navigator.userAgent,
language: navigator.language }ClientId = { const fp = await
FingerprintJS.load(); const res = await fp.get(); return res.visitorId; }{ 'Content-Type': 'application/json' }include { userBrowserData, fingerprint, phoneNumber or userOtp }
{
"status": false,
"message": "Invalid headers"
}
{
"status": false,
"message": "Missing browser data"
}
{
"status": false,
"message": "User agent mismatch"
}
{
"status": false,
"message": "Language mismatch"
}
Description: Generates and sends a 6-digit OTP. Sets a secure otpToken cookie
on success.
Request Body:
{
"phone": "9876543210"
}
Success Response:
{
"status": true,
"message": "OTP sent"
}
Failure Cases:
// Invalid or missing phone
{
"status": false,
"message": "Invalid phone number"
}
// Rate limit exceeded
{
"status": false,
"message": "Too many attempts. Try again later"
}
// OTP already pending
{
"status": false,
"message": "OTP already pending"
}
// Retry within a minute
{
"status": false,
"message": "Wait before retrying"
}
// Blocked device or user
{
"status": false,
"message": "Access denied"
}
// Already authorized device
{
"status": true,
"message": "Already Authorized."
}
// Existing registration
{
"status": true,
"message": "Authorized"
}
// Server error
{
"status": false,
"message": "Internal error"
}
Description: Verifies the OTP from the user. On success, returns user session data and
clears otpToken.
Request Body:
{
"otp": "123456"
}
Success Response:
{
"status": true,
"message": "OTP verified",
"user": {
"phone": "9876543210",
...
}
}
Failure Cases:
// Wrong OTP
{
"status": false,
"message": "Invalid or expired OTP"
}
// Missing OTP
{
"status": false,
"message": "OTP is required"
}
// Missing token
{
"status": false,
"message": "Token missing"
}
// Invalid session
{
"status": false,
"message": "Invalid session"
}
// Too many failed attempts
{
"status": false,
"message": "Too many attempts"
}
Description: Deletes all records in VerifiedUser and AuthAttempt
collections. Clears cookies. Use only during testing.
Success Response:
{
"status": true,
"message": "All data deleted"
}
otpToken is stored as a secure HttpOnly cookiefireWall (post-/deleteall)/sendotp before /verifyotp