# Changelog: 1.22.0

This release adds the shared v10 capabilities required by owner applications for period blocks and
rental-review reporting.

## Added

- `BookingService.blockPeriod` creates a `FREEZE` booking for an owner stay and carries the
  currently selected optional services into the block.
- `FeedbackService.listRentalReviews` returns the guest reviews of one rental an owner may see,
  including per-criterion values and aggregate ratings. The PMS clears feedback as `PRIVATE`,
  `OWNER` or `PUBLIC`, on the response and on each answer; this method returns what is cleared
  `OWNER` or `PUBLIC` on both levels, read through `feedback_listAnswer`. It therefore needs a
  backend token — the website token is refused for that query. It reads only the responses of that
  rental instead of scanning the tenant, selects the customer's publishable `label` but never
  forename or surname, and paces every page through the feedback limiter — a rental with many
  reviews takes one second per page, so callers serving requests should cache the result.
- `RentalReviewsInput.stayPeriods` (optional) restricts the result to reviews of stays inside the
  given periods, with the aggregates computed over that subset. An owner portal passes the owner's
  contract periods for the rental so that reviews from before or after their ownership stay out.
- `InvoiceService.requestFileDownloads` signs download links for several invoice files at once,
  fifty distinct ids per PMS round trip, and returns one link per requested id in request order —
  a repeated id is asked for once and answered at every position. It fails when the PMS leaves an
  id out, so a caller assembling an archive never ships a partial one.
- The new service methods are optional on the service shape, so custom implementations of
  `BookingService`, `FeedbackService` or `InvoiceService` keep compiling. The v10 live layers
  provide them.

## Unchanged

- The website's review rendering (`RentalService.getRentals` / `getDetailsByIds`) keeps its
  tenant-wide `feedback_listPublicAnswer` read and produces the same output; shared rating helpers
  moved into `parser/feedback/answers` without behavioural change.
- `getGuestQuoteSelectedServicesSummary` exposes the selected optional-service total, currency,
  formatted amount and quantities without including the stay price.
