{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/hint-health/main/json-schema/hint-health-product-sanitizer-schema.json", "title": "ProductSanitizer", "x-generated": "2026-10-12", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/hint-health-product-api-openapi.yml#/components/schemas/ProductSanitizer", "type": "object", "properties": { "name": { "type": "string", "description": "Display name of the marketplace listing." }, "slug": { "type": "string", "description": "URL-safe identifier (e.g. \"my-product\"). Only settable on create — contact Hint support to change it later." }, "type": { "type": "string", "description": "Kind of marketplace listing.", "enum": [ "app", "integration", "solution" ] }, "summary": { "type": "string", "description": "Short tagline shown on the marketplace card (max 80 chars)." }, "built_by_name": { "type": "string", "description": "Display name of the maker, shown under the listing as \"Built by \"." }, "built_by_url": { "type": "string", "description": "Url the \"Built by\" link points to." }, "icon": { "type": "string", "description": "Listing icon as a base64 data URI (e.g. \"data:image/png;base64,...\"). **Note the field-name asymmetry:** the request field is `icon` (data URI input); the GET response surfaces the uploaded image as `icon_url` (hosted URL). Sending `icon_url` as a request field is silently ignored. The listing icon is distinct from the Core Page sidebar icon (`surface.core_page_icon`) — see the surface endpoints for that." } } }