> For the complete documentation index, see [llms.txt](https://docs.nerovasystems.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.nerovasystems.com/guides/verticals/beauty-and-nails/manifest-and-services.md).

# Declare the catalog

Declare a salon manifest and service catalog: the core nine plus the salon vertical capabilities, and services with light intake schemas.

## The manifest

A salon platform declares the core nine booking capabilities, the salon vertical set, and `IntakeForms`. It declares no subject capabilities, so `subjectVocabulary` and `subjectFields` stay absent.

```json
{
  "contractVersion": "2026-08-01",
  "providerName": "Polish & Co",
  "capabilities": [
    "ReadServices",
    "ReadStaff",
    "ReadSchedules",
    "ReadClients",
    "ReadAvailability",
    "ReadAppointments",
    "CreateAppointments",
    "RescheduleAppointments",
    "CancelAppointments",
    "CreateClients",
    "ReadSales",
    "ReadLoyalty",
    "RedeemLoyalty",
    "ReadGiftCards",
    "IssueGiftCards",
    "IntakeForms"
  ]
}
```

Declare only what you implement. Checks for undeclared optional capabilities are recorded `Excluded` and never block certification, so a salon platform without gift cards simply drops `ReadGiftCards` and `IssueGiftCards` from the list. The full capability vocabulary and its coherence rules are on the [manifest reference](https://docs.nerovasystems.com/documentation/provider-api/operations/manifest).

## The service catalog

Each service that wants intake publishes its own `intakeFields` schema. Different services ask different questions: a full set asks more than an infill.

```json
[
  {
    "externalServiceId": "svc_gel_full",
    "name": "Gel manicure, full set",
    "durationMinutes": 75,
    "price": { "amountCents": 45000, "currency": "ZAR" },
    "category": "Nails",
    "description": "Includes prep, gel application, and finish.",
    "intakeFields": [
      { "key": "nail_shape", "label": "Preferred nail shape", "kind": "choice", "required": true, "options": ["square", "round", "almond", "coffin"], "sensitivity": "standard" },
      { "key": "color_preference", "label": "Color or design preference", "kind": "text", "required": false, "options": null, "sensitivity": "standard" },
      { "key": "gel_removal_needed", "label": "Do you have gel on now that needs removal?", "kind": "boolean", "required": true, "options": null, "sensitivity": "standard" }
    ]
  },
  {
    "externalServiceId": "svc_infill",
    "name": "Gel infill",
    "durationMinutes": 45,
    "price": { "amountCents": 30000, "currency": "ZAR" },
    "category": "Nails",
    "description": "Infill on an existing gel set.",
    "intakeFields": []
  }
]
```

Two things to notice:

* Every field is explicitly labeled `"sensitivity": "standard"`. The contract treats an omitted label as `sensitive`, which would silently pull the question out of the WhatsApp conversation. The [next page](/guides/verticals/beauty-and-nails/intake.md) covers why.
* A service with nothing to ask publishes an empty schema. Declaring `IntakeForms` while no service publishes a well-formed schema fails setup validation with `intake_fields_missing`.

Next: [Intake without sensitive data](/guides/verticals/beauty-and-nails/intake.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.nerovasystems.com/guides/verticals/beauty-and-nails/manifest-and-services.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
