---
title: "Доступність і ціни"
description: "Перевіряйте доступність на дати та розраховуйте типізовану вартість оренди."
canonical_url: "https://requiply.com/docs/uk/developers/typescript-sdk/availability-and-pricing"
---
# Доступність і ціни

> Перевіряйте доступність на дати та розраховуйте типізовану вартість оренди.

Усі три методи працюють із публічним ключем, тож вітрина може викликати їх просто з браузера.

<note>

Сценарії доступності та розрахунку ціни з публічним ключем не показують і не приймають товарів суборенди від постачальників. Якщо в організації ввімкнено функцію суборенди, а вашій інтеграції потрібні ці товари, використовуйте секретний ключ на довіреному сервері.

</note>

## `availability.calendar()`

```ts
availability.calendar(
  input: AvailabilityCalendarInput,
  options?: RequiplyRequestOptions,
): Promise<AvailabilityCalendarResponse>
```

Обовʼязкові: `startDate` і `endDate` як звичайні дати (`YYYY-MM-DD`), щонайбільше за 366 днів одна від одної. Значення з часом перетворюється на дату в UTC, що може зсунути його на день. Необовʼязковий `groupIds` обмежує календар до 200 товарів.

```ts
const { days } = await requiply.availability.calendar({
  startDate: '2026-07-01',
  endDate: '2026-07-07',
  groupIds: [cameraKitId],
});
```

Кожен день містить групу, загальну кількість, заброньовану кількість і `availabilityStatus`, який може бути `null`.

## `availability.items()`

```ts
availability.items(
  input: AvailabilityItemsInput,
  options?: RequiplyRequestOptions,
): Promise<AvailabilityItemsResponse>
```

Обовʼязкові: `startDate` і `endDate`; `endDate` не може бути раніше за `startDate`. Дата й час без зсуву читаються в часовому поясі організації. Необовʼязкові: `search`, `limit` (від 1 до 100, за замовчуванням 25), `cursor`.

```ts
const page = await requiply.availability.items({
  startDate: '2026-07-01T10:00:00',
  endDate: '2026-07-03T18:00:00',
  search: 'camera',
  limit: 25,
});

const nextCursor = page.nextCursor;
```

Відповідь має ту саму форму елемента інвентарю, що й `inventory.list()`. Додатково вона повертає `nextCursor: string | null`. Вона перелічує лише товари, у яких хоча б одна одиниця вільна на весь період. Тут `categoryId` завжди `null`. Коли потрібні категорії, використовуйте `inventory.list()` з тими самими датами.

## `pricing.quote()`

```ts
pricing.quote(
  input: PricingQuoteInput,
  options?: RequiplyRequestOptions,
): Promise<PricingQuoteResponse>
```

Обовʼязкові: `startDate`, `endDate`, `items`. Кожен елемент потребує `groupId` (`id` товару) і `quantity`. `items` може бути порожнім, коли ви надсилаєте `bundles`. Необовʼязкові:

<table>
<thead>
  <tr>
    <th>
      Поле
    </th>
    
    <th>
      Що воно робить
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        bundles
      </code>
    </td>
    
    <td>
      Комплекти для бронювання у вигляді <code>
        { bundleId, quantity }
      </code>
      
      , де <code>
        quantity
      </code>
      
       задається в цілих наборах, із <a href="https://requiply.com/docs/uk/developers/typescript-sdk/inventory-and-categories#bundleslist">
        <code>
          bundles.list()
        </code>
      </a>
      
      . Їхні компоненти додаються до елементів. Починаючи з 0.2.1; потребує функції «Комплекти» в організації.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        services
      </code>
    </td>
    
    <td>
      Додаткові послуги за <code>
        serviceId
      </code>
      
       із <code>
        services.list()
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        clientId
      </code>
    </td>
    
    <td>
      Застосовує відсоткову знижку цього клієнта. Призначено для серверних інтеграцій, які вже знають клієнта.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        adjustment
      </code>
    </td>
    
    <td>
      <a href="https://requiply.com/docs/uk/developers/typescript-sdk/bookings#%D0%BA%D0%BE%D1%80%D0%B8%D0%B3%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F-%D0%B2%D0%B0%D1%80%D1%82%D0%BE%D1%81%D1%82%D1%96-%D0%B1%D1%80%D0%BE%D0%BD%D1%8E%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F">
        Коригування вартості бронювання
      </a>
      
      . Лише із секретним ключем.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        saleLines
      </code>
    </td>
    
    <td>
      Товари, продані разом із бронюванням. Див. <a href="https://requiply.com/docs/uk/developers/typescript-sdk/sales#%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%B8-%D0%B2-%D0%B1%D1%80%D0%BE%D0%BD%D1%8E%D0%B2%D0%B0%D0%BD%D0%BD%D1%96">
        Продажі та товари на продаж
      </a>
      
      . Публічний ключ може надсилати їх, лише поки організація <a href="https://requiply.com/docs/uk/developers/typescript-sdk/sales#%D0%B7-%D0%BF%D1%83%D0%B1%D0%BB%D1%96%D1%87%D0%BD%D0%B8%D0%BC-%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BC">
        продає клієнтам
      </a>
      
      .
    </td>
  </tr>
</tbody>
</table>

```ts
const quote = await requiply.pricing.quote({
  startDate: '2026-07-01T10:00:00',
  endDate: '2026-07-03T18:00:00',
  items: [{ groupId: cameraKitId, quantity: 2 }],
  services: [{ serviceId: deliveryServiceId }],
});

console.log(quote.currency, quote.total);
```

Дата й час без зсуву читаються в часовому поясі організації, як і для [`bookings.create()`](https://requiply.com/docs/uk/developers/typescript-sdk/bookings). Розрахунок ціни виконується точно так само, як для бронювання, тож показаний вами `total` дорівнюватиме сумі бронювання.

### Відповідь розрахунку ціни

<table>
<thead>
  <tr>
    <th>
      Поле
    </th>
    
    <th>
      Що містить
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        itemsSubtotal
      </code>
      
      , <code>
        servicesSubtotal
      </code>
    </td>
    
    <td>
      Товари оренди та послуги до будь-якої знижки чи коригування.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        discountableSubtotal
      </code>
    </td>
    
    <td>
      Частина, до якої застосовується знижка клієнта. Послуги з <code>
        excludedFromDiscount
      </code>
      
       до неї не входять.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        bundleDiscountAmount
      </code>
      
      , <code>
        lineBundles
      </code>
    </td>
    
    <td>
      Скільки економлять комплекти (уже враховано в <code>
        total
      </code>
      
      ; <code>
        0
      </code>
      
       без комплектів) і по одному рядку на комплект із його <code>
        quantity
      </code>
      
      , <code>
        discountPercent
      </code>
      
      , <code>
        grossTotal
      </code>
      
      , <code>
        discountAmount
      </code>
      
      , а також <code>
        components
      </code>
      
       на набір. <code>
        lineItems
      </code>
      
       містять обʼєднані кількості одиниць у комплектах і окремих одиниць. Починаючи з 0.2.1.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        discountPercentage
      </code>
      
      , <code>
        discountAmount
      </code>
    </td>
    
    <td>
      Знижка клієнта і сума, яку вона знімає, після знижки за комплект.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        adjustment
      </code>
      
      , <code>
        adjustmentAmount
      </code>
    </td>
    
    <td>
      <a href="https://requiply.com/docs/uk/developers/typescript-sdk/bookings#%D0%BA%D0%BE%D1%80%D0%B8%D0%B3%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F-%D0%B2%D0%B0%D1%80%D1%82%D0%BE%D1%81%D1%82%D1%96-%D0%B1%D1%80%D0%BE%D0%BD%D1%8E%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F">
        Коригування вартості бронювання
      </a>
      
      , з яким розраховано ціну, або <code>
        null
      </code>
      
      , а також його грошовий вплив зі знаком (<code>
        0
      </code>
      
       для <code>
        units
      </code>
      
      , бо такий тип змінює оплачуваний період).
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        saleSubtotal
      </code>
      
      , <code>
        lineSaleItems
      </code>
    </td>
    
    <td>
      Товари, продані разом із бронюванням, коли ви передаєте <code>
        saleLines
      </code>
      
      . Знижки та коригування до них ніколи не застосовуються. Див. <a href="https://requiply.com/docs/uk/developers/typescript-sdk/sales#%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%B8-%D0%B2-%D0%B1%D1%80%D0%BE%D0%BD%D1%8E%D0%B2%D0%B0%D0%BD%D0%BD%D1%96">
        Продажі та товари на продаж
      </a>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        total
      </code>
    </td>
    
    <td>
      Вартість бронювання разом із товарами на продаж.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        lineItems
      </code>
      
      , <code>
        lineServices
      </code>
    </td>
    
    <td>
      По одному рядку на товар чи послугу з проміжною сумою. <code>
        unitCount
      </code>
      
       є кількістю оплачуваних днів, годин чи місяців.
    </td>
  </tr>
</tbody>
</table>


## Sitemap

See the full [sitemap](https://requiply.com/docs/sitemap.md) for all pages.
