La conținut
Type — API pentru site
Secțiuni

Referință API

Toate rutele pornesc de la adresa CRM-ului dvs. (https://<adresa CRM>), doar HTTPS. Cheia — în antetul Authorization: Bearer tk_<key_id>_<secret>, dreptul cheii — rental:site. Mai jos — același conținut ca în fișierul OpenAPI; pachetul @type/site-client oferă metode tipizate pentru aceste rute. Descrierile câmpurilor din schemă sunt deocamdată în rusă.

Versiunea schemei: 0.1.0 · OpenAPI (JSON)

Rute

POST /booking-requests

/api/modules/rental/site/booking-requests

Заявка с формы сайта (ключ проверяется раньше полей: без ключа — 401, а не 422) → сделка-бронь на этапе «Заявка», источник site, с расчётом цены. Повтор request_id — тот же ответ. Занятые даты, блокировка, мин. срок или гостей больше максимума — 422 rental_unavailable.

Cheie API cu dreptul rental:site.

Parametri

NumeUndeTipOblig.Descriere
x-type-visitor-ipantetstring | nullIP посетителя сайта

Corpul cererii

Schemă: SiteBookingRequestIn

Răspunsuri

CodSchemăDescriere
201SiteBookingRequestOut
400api_key_misplaced — ключ в query, cookie или теле
401api_key_invalid — ключ не принят (причина — в журнале сервера)
403scope_missing — нет права rental:site; scope_unavailable — модуль выключен
422rental_unavailable (violations) или ошибка полей
429too_many_attempts, Retry-After

GET /groups

/api/modules/rental/site/groups

Группы (районы) с числом неархивных объектов — фильтр каталога.

Cheie API cu dreptul rental:site.

Parametri

NumeUndeTipOblig.Descriere
x-type-visitor-ipantetstring | nullIP посетителя сайта

Răspunsuri

CodSchemăDescriere
200listă SiteGroup
400api_key_misplaced — ключ в query, cookie или теле
401api_key_invalid — ключ не принят (причина — в журнале сервера)
403scope_missing — нет права rental:site; scope_unavailable — модуль выключен
422HTTPValidationErrorValidation Error
429too_many_attempts, Retry-After

GET /legacy-urls

/api/modules/rental/site/legacy-urls

Старые адреса товаров WooCommerce → объект и его ЧПУ: таблица 301 в плагине.

Cheie API cu dreptul rental:site.

Parametri

NumeUndeTipOblig.Descriere
x-type-visitor-ipantetstring | nullIP посетителя сайта

Răspunsuri

CodSchemăDescriere
200listă SiteLegacyUrl
400api_key_misplaced — ключ в query, cookie или теле
401api_key_invalid — ключ не принят (причина — в журнале сервера)
403scope_missing — нет права rental:site; scope_unavailable — модуль выключен
422HTTPValidationErrorValidation Error
429too_many_attempts, Retry-After

GET /occupancy

/api/modules/rental/site/occupancy

Занятые интервалы по объектам (подтверждённые брони и блокировки), без гостей и сумм; особые даты периода — для подсветки в календаре.

Cheie API cu dreptul rental:site.

Parametri

NumeUndeTipOblig.Descriere
date_fromquerystring (date)da
date_toquerystring (date)daНе включительно; не больше 400 дней
unit_idsquerylistă string (uuid) | null
x-type-visitor-ipantetstring | nullIP посетителя сайта

Răspunsuri

CodSchemăDescriere
200SiteOccupancyOut
400api_key_misplaced — ключ в query, cookie или теле
401api_key_invalid — ключ не принят (причина — в журнале сервера)
403scope_missing — нет права rental:site; scope_unavailable — модуль выключен
422invalid_period — больше 400 дней
429too_many_attempts, Retry-After

GET /photos/{account_id}/{product_id}/{file}

/api/modules/rental/site/photos/{account_id}/{product_id}/{file}

Постоянная публичная ссылка на фото объекта (без ключа, для <img> на сайте): 302 на временную ссылку превью WebP 1920 (без EXIF), Cache-Control: public, max-age=3000. Оригинал наружу не отдаётся: перенесённое фото, у которого превью ещё строится, — 503 с Retry-After: 60. Только фото неархивных объектов аккаунта с включённым модулем; иначе 404.

Cheie API cu dreptul rental:site.

Parametri

NumeUndeTipOblig.Descriere
account_idpathstring (uuid)da
product_idpathstring (uuid)da
filepathstringda

Răspunsuri

CodSchemăDescriere
302На превью WebP в хранилище
404Нет фото
422HTTPValidationErrorValidation Error
503photo_processing — превью ещё строится, Retry-After

GET /ping

/api/modules/rental/site/ping

Проверка подключения плагина: аккаунт, валюта, языки текстов, время заезда и выезда.

Cheie API cu dreptul rental:site.

Parametri

NumeUndeTipOblig.Descriere
x-type-visitor-ipantetstring | nullIP посетителя сайта

Răspunsuri

CodSchemăDescriere
200SiteInfo
400api_key_misplaced — ключ в query, cookie или теле
401api_key_invalid — ключ не принят (причина — в журнале сервера)
403scope_missing — нет права rental:site; scope_unavailable — модуль выключен
422HTTPValidationErrorValidation Error
429too_many_attempts, Retry-After

GET /prices

/api/modules/rental/site/prices

Цена и доступность всех объектов на даты — фильтр каталога «цена за выбранные даты».

Cheie API cu dreptul rental:site.

Parametri

NumeUndeTipOblig.Descriere
check_inquerystring (date)da
check_outquerystring (date)da
guestsqueryinteger
group_idquerystring (uuid) | null
x-type-visitor-ipantetstring | nullIP посетителя сайта

Răspunsuri

CodSchemăDescriere
200SitePricesOut
400api_key_misplaced — ключ в query, cookie или теле
401api_key_invalid — ключ не принят (причина — в журнале сервера)
403scope_missing — нет права rental:site; scope_unavailable — модуль выключен
422HTTPValidationErrorValidation Error
429too_many_attempts, Retry-After

GET /quote

/api/modules/rental/site/quote

Калькулятор: цена каждой ночи, скидки каталога, итог; нарушения (занято, мин. срок, гостей больше максимума). Тот же расчёт, что в CRM.

Cheie API cu dreptul rental:site.

Parametri

NumeUndeTipOblig.Descriere
unit_idquerystring (uuid)da
check_inquerystring (date)da
check_outquerystring (date)da
guestsqueryinteger
x-type-visitor-ipantetstring | nullIP посетителя сайта

Răspunsuri

CodSchemăDescriere
200SiteQuoteOut
400api_key_misplaced — ключ в query, cookie или теле
401api_key_invalid — ключ не принят (причина — в журнале сервера)
403scope_missing — нет права rental:site; scope_unavailable — модуль выключен
422HTTPValidationErrorValidation Error
429too_many_attempts, Retry-After

GET /units

/api/modules/rental/site/units

Все неархивные объекты с текстами на lang, фото по постоянным ссылкам, удобствами и базовой ценой. updated_at — версия для кэша плагина.

Cheie API cu dreptul rental:site.

Parametri

NumeUndeTipOblig.Descriere
langqueryro · en · ruЯзык текстов; нет текста — румынский
x-type-visitor-ipantetstring | nullIP посетителя сайта

Răspunsuri

CodSchemăDescriere
200SiteUnitsOut
400api_key_misplaced — ключ в query, cookie или теле
401api_key_invalid — ключ не принят (причина — в журнале сервера)
403scope_missing — нет права rental:site; scope_unavailable — модуль выключен
422HTTPValidationErrorValidation Error
429too_many_attempts, Retry-After

GET /units/{unit_id}

/api/modules/rental/site/units/{unit_id}

Cheie API cu dreptul rental:site.

Parametri

NumeUndeTipOblig.Descriere
unit_idpathstring (uuid)da
langqueryro · en · ruЯзык текстов; нет текста — румынский
x-type-visitor-ipantetstring | nullIP посетителя сайта

Răspunsuri

CodSchemăDescriere
200SiteUnit
400api_key_misplaced — ключ в query, cookie или теле
401api_key_invalid — ключ не принят (причина — в журнале сервера)
403scope_missing — нет права rental:site; scope_unavailable — модуль выключен
404not_found — нет объекта или он в архиве
422HTTPValidationErrorValidation Error
429too_many_attempts, Retry-After

Scheme

Application

valori: auto · manual

AppliedDiscount

Сработавшая скидка каталога (§19.10): на строку — её доля, в итогах — всего.

CâmpTipOblig.Descriere
amountstringdaНа сколько уменьшила сумму (с TVA, как gross)
applicationApplicationda
discount_idstring (uuid)da
kindDiscountKindda
namestringda

DiscountKind

valori: line · deal

HTTPValidationError

CâmpTipOblig.Descriere
detaillistă ValidationError

I18n3

Тексты на языках сайта: ro (основной), en, ru.

CâmpTipOblig.Descriere
enstring
rostring
rustring

Night

CâmpTipOblig.Descriere
basestringda
datestring (date)da
pricestringda
special_date_idstring (uuid) | null
special_namestring | null

SiteBookingRequestIn

Заявка с формы сайта → сделка-бронь на этапе «Заявка» с расчётом цены. Клиент — по телефону или e-mail (найден — привязывается, нет — создаётся контакт). Нужен телефон или e-mail. Антиспам: hp (скрытое поле-ловушка) непустое или elapsed_ms < 3000 — ответ как при успехе, но сделка не создаётся. Повтор с тем же request_id (досылка из очереди плагина) не создаёт вторую сделку и возвращает тот же ответ.

CâmpTipOblig.Descriere
check_instring (date)da
check_outstring (date)da
consenttruedaСогласие на обработку персональных данных
elapsed_msinteger ≥ 0daСколько форма была открыта до отправки, мс
emailstring (email) | null
guestsinteger ≥ 1, ≤ 100 Implicit: 1.
hpstring ≤ 200Поле-ловушка: скрыто от людей, должно быть пустым
langro · en · ru Implicit: "ro".
messagestring | null
namestring ≥ 1, ≤ 200da
page_urlstring | null
phonestring | null
request_idstring (uuid)daUUID заявки, создаёт плагин — идемпотентность
unit_idstring (uuid)da
utmobject → string | null

SiteBookingRequestOut

CâmpTipOblig.Descriere
currencystringda
nightsintegerda
request_idstring (uuid)da
status"received"da
totalstringda

SiteDiscount

CâmpTipOblig.Descriere
ends_onstring (date) | nulldaПоследний день действия; null — бессрочно
namestringda
valuestringda
value_typepercent · fixeddafixed — сумма за ночь

SiteGroup

CâmpTipOblig.Descriere
idstring (uuid)da
namestringda
units_countintegerda

SiteInfo

CâmpTipOblig.Descriere
account_namestringda
check_in_timestringda
check_out_timestringda
currencystringda
key_namestringda
languageslistă ro · en · rudaЯзыки, на которых есть тексты объектов
timezonestringda

SiteLegacyUrl

CâmpTipOblig.Descriere
gonebooleandaОбъект удалён — ответить 410 Gone
langstringda
pathstringdaПуть старого адреса (/ro/product/<slug>/): товар WooCommerce или прежний слаг объекта — ключ для 301
slugstring | nulldaЧПУ объекта на языке старого адреса; null — объект удалён
unit_idstring (uuid)da
urlstringdaСтарый адрес: товар WooCommerce или путь прежнего слага

SiteOccupancyOut

CâmpTipOblig.Descriere
date_fromstring (date)da
date_tostring (date)da
special_dateslistă SiteSpecialDayda
unitslistă SiteUnitBusyda

SitePhoto

CâmpTipOblig.Descriere
positionintegerda
urlstringdaПостоянная публичная ссылка /api/modules/rental/site/photos/{account_id}/{product_id}/{file} (без ключа)

SitePrice

CâmpTipOblig.Descriere
availablebooleanda
per_nightstring | nulldaСредняя цена ночи с учётом скидок
per_night_beforestring | nulldaСредняя цена ночи до скидок
subtotalstring | nulldaИтог до скидок; null — даты недоступны
totalstring | nulldaИтог после скидок; null — даты недоступны
unit_idstring (uuid)da
violationslistă SiteViolationda

SitePricesOut

CâmpTipOblig.Descriere
check_instring (date)da
check_outstring (date)da
currencystringda
guestsintegerda
nightsintegerda
unitslistă SitePriceda

SiteQuoteOut

CâmpTipOblig.Descriere
availablebooleandaНет блокирующих нарушений — можно отправить заявку
check_instring (date)da
check_outstring (date)da
currencystringda
discountslistă AppliedDiscountda
guestsintegerda
nightsintegerda
per_nightlistă Nightda
subtotalstringda
totalstringda
unit_idstring (uuid)da
violationslistă SiteViolationda

SiteRange

CâmpTipOblig.Descriere
endstring (date)daНе включительно: день выезда свободен для заезда
startstring (date)da

SiteSpecialDay

CâmpTipOblig.Descriere
endstring (date)daВключительно
min_nightsinteger | nullda
namestringda
startstring (date)da
unit_idslistă string (uuid) | nulldanull — все объекты

SiteUnit

CâmpTipOblig.Descriere
addressstring | nullda
amenitieslistă stringdaУдобства на языке lang (нет перевода — румынский), по порядку справочника
area_m2string | nulldaПлощадь, м²
base_pricestringdaЦена ночи без скидок — «старая» при discount
bathroomsintegerda
bedsinteger | nullda
check_in_timestringda
check_out_timestringda
currencystringda
descriptionstringda
discountSiteDiscount | nulldaСкидка в price; null — без скидки
districtstring | nullda
floorinteger | nulldaЭтаж
group_idstring (uuid) | nullda
group_namestring | nullda
has_balconybooleanda
has_livingbooleanda
has_terracebooleanda
idstring (uuid)da
langro · en · rudaЯзык текстов; нет текста на языке — румынский
latnumber | nullda
lngnumber | nullda
max_guestsintegerda
namestringda
namesI18n3da
photoslistă SitePhotoda
positionintegerda
pricestringdaЦена ночи («от») с безусловной скидкой на объект, действующей сегодня; особые даты не входят. Нет скидки — равна base_price
roomsstring | nullda
rooms_countinteger | nulldaКомнат; 0 — студия
slugstringdaЧПУ на языке lang (нет — румынский); хранится, уникален среди объектов, при переименовании не меняется
slugsobject → stringdaЧПУ на всех языках — для hreflang
updated_atstring (date-time)da

SiteUnitBusy

CâmpTipOblig.Descriere
busylistă SiteRangedaПодтверждённые брони и блокировки, слитые в интервалы; без гостей и сумм. Заявки дат не занимают и не показываются
unit_idstring (uuid)da

SiteUnitsOut

CâmpTipOblig.Descriere
langro · en · ruda
unitslistă SiteUnitdaОбъекты без архивных, по порядку
updated_atstring (date-time) | nulldaПоследнее изменение — версия кэша

SiteViolation

Нарушения расчёта для сайта: без tentative_overlap (заявки других гостей не видны).

CâmpTipOblig.Descriere
blockingbooleandaБронь не сохранится (иначе — предупреждение)
codedates_invalid · min_nights · max_guests · occupied · tentative_overlap · blocked · unit_archivedda
paramsobject

ValidationError

CâmpTipOblig.Descriere
ctxobject
inputany
loclistă string | integerda
msgstringda
typestringda