# Editable property highlights

> Show manager-edited highlights and selling points separately from property amenities.


A property drawer can feature the manager's own highlights using the existing
[`getVacationRental`](https://developers.kismet.travel/api/reference/get-vacation-rental.md) detail read. The fields
are additive in the 0.7.38 contract. Use an API deployment and SDK release that
include that contract; older responses may omit them.

```ts
import { createKismetClient } from '@kismet-tech/sdk/server';

const client = createKismetClient({
  apiKey: process.env.KISMET_DEVELOPER_API_KEY!,
  baseUrl: process.env.KISMET_API_BASE!,
  collection: process.env.KISMET_COLLECTION!,
});
const property = await client.vacationRental.get('your-property-slug');
const highlights = property.highlights ?? [];
const sellingPoints = property.uniqueSellingPoints ?? [];
```

The same fields are returned by `GET /v1/developer/vacation-rentals/{vacationRental}`
with the existing `vacation_rentals.read` grant and normal collection, publication
and TEST staging restrictions. There is no extra request or grant.

| Field | Meaning |
| --- | --- |
| `highlights` | Up to 12 saved objects in editorial order: required `title`, optional `description` and `icon`. |
| `uniqueSellingPoints` | Up to 12 saved short strings in editorial order. |
| `amenityHighlights` | The existing compact amenity list. Its behavior is unchanged; it is not curated editorial copy. |

An empty array means no usable values are stored. An absent field means the API
response predates this addition. Neither means the home lacks attractive features.
Hide an empty highlights section; do not manufacture highlights from amenity order.

Managers edit the canonical property's **Highlights & selling points** in Kismet's
storefront editor. The website reads those same saved fields; it does not maintain
another copy in its page CMS. These are current catalog fields, not CMS channel
revisions, so editing them is not a staging-only draft workflow. This endpoint is
read-only: it does not trigger import/enrichment, generate copy, or write edits.

Render titles, descriptions and selling points as text. Treat `icon` as an optional
identifier: map known values to local icons and fall back to text for unknown
values. Never interpret it as HTML, a remote asset URL or executable markup.

```tsx
{highlights.length > 0 && <section aria-label="Highlights">
  {highlights.map((highlight, index) => <article key={`${index}:${highlight.title}`}>
    <h3>{highlight.title}</h3>
    {highlight.description && <p>{highlight.description}</p>}
  </article>)}
</section>}
```

This works for an apartment drawer or a standalone cabin detail page. Keep its
amenities section separate, and include the same editorial copy in the page's
Markdown representation when it appears in HTML.
