Add website favicon API and manual favicon profile updates.
Expose GET /tenants/{domain}/website/favicon for storefront tab icons, allow faviconMediaId on profile PATCH, and sync website API docs.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
co-authored by
Cursor
parent
6ce6f959ac
commit
ead16080b8
@@ -176,7 +176,8 @@
|
||||
},
|
||||
"faviconUrl": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
"nullable": true,
|
||||
"description": "Tab icon URL. Dedicated favicon when uploaded; otherwise same as logoUrl."
|
||||
},
|
||||
"specialProductsSource": {
|
||||
"type": "string",
|
||||
@@ -332,7 +333,99 @@
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Business public profile"
|
||||
"description": "Business public profile",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": { "type": "string" },
|
||||
"name": { "type": "string" },
|
||||
"nameFa": { "type": "string" },
|
||||
"about": { "type": "string" },
|
||||
"vision": { "type": "string" },
|
||||
"logoUrl": { "type": "string", "nullable": true },
|
||||
"logoDarkUrl": {
|
||||
"type": "string",
|
||||
"nullable": true,
|
||||
"description": "Logo for dark backgrounds; null when not set."
|
||||
},
|
||||
"faviconUrl": {
|
||||
"type": "string",
|
||||
"nullable": true,
|
||||
"description": "Dedicated favicon when uploaded; otherwise same as logoUrl."
|
||||
},
|
||||
"emails": {
|
||||
"type": "array",
|
||||
"items": { "type": "string" }
|
||||
},
|
||||
"phoneNumbers": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"type": { "type": "string", "enum": ["landline", "cell"] },
|
||||
"number": { "type": "string" }
|
||||
}
|
||||
}
|
||||
},
|
||||
"socialMedia": { "type": "object" },
|
||||
"addresses": { "type": "array", "items": { "type": "object" } }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/tenants/{domain}/website/favicon": {
|
||||
"get": {
|
||||
"tags": [
|
||||
"Homepage"
|
||||
],
|
||||
"summary": "Favicon and logo URLs for site chrome",
|
||||
"description": "Use `faviconUrl` for `<link rel=\"icon\">` or Next.js `metadata.icons`. When no dedicated favicon is uploaded, `faviconUrl` equals `logoUrl`. Prefer this endpoint over tenant resolve when you only need branding assets.",
|
||||
"parameters": [
|
||||
{
|
||||
"$ref": "#/components/parameters/domain"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Branding asset URLs",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"faviconUrl": {
|
||||
"type": "string",
|
||||
"nullable": true,
|
||||
"description": "Use for browser tab icon. Falls back to logoUrl when no dedicated favicon exists."
|
||||
},
|
||||
"logoUrl": {
|
||||
"type": "string",
|
||||
"nullable": true,
|
||||
"description": "Light-theme logo."
|
||||
},
|
||||
"logoDarkUrl": {
|
||||
"type": "string",
|
||||
"nullable": true,
|
||||
"description": "Dark-theme logo; null when not set."
|
||||
},
|
||||
"hasDedicatedFavicon": {
|
||||
"type": "boolean",
|
||||
"description": "True when the business uploaded a separate favicon (not auto-derived from logo)."
|
||||
}
|
||||
},
|
||||
"required": ["faviconUrl", "logoUrl", "logoDarkUrl", "hasDedicatedFavicon"]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"404": {
|
||||
"description": "Unknown domain"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user