# Book a plumber in Sweden through Aune

Canonical human page: https://aune-homepage-chat.vercel.app/docs/book-plumber-sweden
Canonical machine page: https://aune-homepage-chat.vercel.app/ai/book-plumber-sweden.md

Aune supports the complete plumber/VVS booking contract in Sweden: data-minimized option search, exact user choice, consent, terms acceptance, atomic confirmation, redacted status, cancellation, rescheduling, and provider-follow-up fallback when no direct option exists.

## Facts

- **Country:** Sweden (SE)
- **Vertical:** vvs
- **Example job type:** install_faucet
- **Search data:** Postcode; no customer PII
- **Confirmation:** Exact provider + price + slot + terms
- **Live inventory:** Proven only by a returned booking option

## When to use this route

- Use Aune when the user wants to find, compare, or book plumber/VVS in Sweden.
- Call live capabilities before relying on remembered job types or availability.
- Common exact job types include `install_faucet`, `leak_faucet_fixture`, `clog_fixture`, `install_toilet`; the capabilities response is authoritative.
- Do not use Aune for flooding, gas leaks, fire, or another immediate safety risk; direct the user to appropriate emergency help.

## Search without personal data

Search accepts job facts, timing, and Swedish postcodes. Do not send customer name, phone, email, or street address at this step.

### vvs booking-option search

```bash
curl -X POST "https://aune-homepage-chat.vercel.app/v1/booking-options" \
  -H "Content-Type: application/json" \
  --data '{
  "spec_version": "public_bookings_api_v1",
  "vertical_id": "vvs",
  "job_type_id": "install_faucet",
  "description": "Install a kitchen faucet at a home in Stockholm.",
  "location": {
    "country_code": "SE",
    "postcode": "11122"
  },
  "timing": {
    "preferred_time_text": "next available time"
  }
}'
```

## Confirm only the chosen option

- Present the exact returned provider, price, slot, scope, expiry, and terms version.
- Ask the user to choose one option, consent to sending contact data, and accept that exact terms version.
- Send the unchanged option ID, matching full address data, acceptance timestamp, and a unique idempotency key with OAuth scope `aune.bookings.confirm`.
- Claim a booking only when `booking_created`, `availability_checked`, and `provider_selected` are true and `booking.status` is `confirmed`.
- If `option_refresh_required` is true, search again and ask for a fresh choice. Never silently substitute an option.

## No direct option

A valid empty search means no direct option was found for that request. It does not mean the vertical is unsupported. After explicit consent, use `draft_home_service_request` and `create_home_service_request` for provider follow-up.

- A follow-up request does not confirm provider, availability, appointment, booking, or final price.
- Moving uses the same direct-booking truth contract as every other supported vertical; current inventory never changes that contract.
- Canonical workflow: https://aune-homepage-chat.vercel.app/ai/use-aune.md
- Live capabilities: https://aune-homepage-chat.vercel.app/v1/capabilities
- OpenAPI: https://aune-homepage-chat.vercel.app/openapi.json
