{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/hint-health/main/json-schema/hint-health-product-overview-sanitizer-schema.json",
  "title": "ProductOverviewSanitizer",
  "x-generated": "2026-10-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/hint-health-partnerproductoverview-api-openapi.yml#/components/schemas/ProductOverviewSanitizer",
  "type": "object",
  "properties": {
    "description": {
      "type": "string",
      "description": "Overview body. Renders on the marketplace listing. **Length:** ~500 chars is recommended (the marketplace listing card truncates longer copy in display). hint-api does not currently enforce a hard cap, but partners should treat 500 as the design target."
    },
    "images": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/ProductOverviewSanitizer.ImageSanitizer"
      },
      "description": "Overview images. The array is reconciled by `id`: entries with a matching `id` are edited in place, entries without an `id` are created, and any existing images not represented in the array are deleted. Omitting the `images` key entirely leaves images unchanged."
    }
  },
  "$defs": {
    "ProductOverviewSanitizer.ImageSanitizer": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Public id of an existing image (e.g. `\"ptrimg-...\"`). Include to edit; omit to create a new image."
        },
        "url": {
          "type": "string",
          "description": "Image as a base64 data URI (e.g. `\"data:image/png;base64,...\"`). Required when creating a new image; ignored when editing. **Note: the field name differs across listing sections.** Overview images use `url`; highlights (`ProductHighlightSanitizer`) use `image`. Both take the same data-URI payload — only the key differs."
        },
        "alt": {
          "type": "string",
          "description": "Alt text used for accessibility."
        }
      }
    }
  }
}