MENU navbar-image

Обзор

Программный комплекс Rently.B4B представляет собой многофункциональную платформу-агрегатор, предназначенную для автоматизации процессов:

через интерфейс программирования приложений (API) и административную панель.

Решение ориентировано на интеграцию с различными поставщиками (партнёрами) и обеспечивает унифицированный интерфейс для конечных пользователей и корпоративных клиентов.

Ключевые функции комплекса

Технические требования

Для корректной интеграции с API программного комплекса Rently.B4B необходимо соблюдение следующих технических условий:

1. Поддержка HTTPS

Все запросы к API выполняются по защищённому протоколу https://.

2. Формат обмена данными

3. Поддержка HTTP-методов

Интеграционный клиент должен поддерживать следующие HTTP-методы:

4. Стандарты форматов данных

5. Обработка процесса поиска

После отправки запроса поиска (POST /v2/search), необходимо:

  1. Проверить статус через GET /v2/search/status/?hash={hash}
  2. Только после получения статуса completed запрашивать результаты через GET /v2/search/quotes?hash={hash}

6. Идентификаторы ресурсов

Ключевые действия выполняются с использованием uuid-идентификаторов:

Эти значения передаются в URL при получении информации или выполнении действий.

7. Обработка ошибок

API может возвращать следующие коды ответа:

Ответы содержат поле message с описанием ошибки. Клиент должен обрабатывать эти случаи и при необходимости повторять запрос.

8. Webhook уведомления

Для получения уведомления о создании нового заказа необходимо реализовать собственный endpoint:

9. Ограничения по скорости

Для некоторых методов API реализована защита от частых запросов. В связи с этим рекомендуется:

10. Тестирование и отладка

Рекомендуется использовать Postman или OpenAPI спецификацию, предоставляемую вместе с документацией, для ручного тестирования интеграции.

11. Возможности интеграции

Аутентификация

Чтобы аутентифицировать запросы, добавьте заголовок Authorization со значением "Bearer {YOUR_AUTH_TOKEN}".

Все защищённые конечные точки помечены в документации ниже значком требуется аутентификация.

API v1 (Legacy)

Поиск доступных локаций

Возвращает коллекцию доступных локаций на основе подстроки поиска из запроса.

Пример запроса:
curl --request GET \
    --get "https://admin.rently.travel/api/locations?s=%D0%94%D1%83%D0%B1" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/locations"
);

const params = {
    "s": "Дуб",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/locations';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            's' => 'Дуб',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/locations'
params = {
  's': 'Дуб',
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Пример ответа (200):


{
    "data": [
        {
            "id": 1,
            "ico": "🛩️",
            "title_ru": "Дубай, международный аэропорт",
            "title_en": "Dubai International Airport",
            "details_ru": "DXB, Дубай (ОАЭ)",
            "details_en": "DXB, Dubai (UAE)",
            "location_type": {
                "id": 1,
                "ico": "✈️",
                "name_ru": "Аэропорты",
                "name_en": "Airports",
                "sort_order": 1,
                "created_at": "2025-04-23T12:01:25.000000Z",
                "updated_at": "2025-04-23T12:02:45.000000Z"
            }
        },
        {
            "id": 2,
            "ico": "🌐",
            "title_ru": "Дубай (все локации)",
            "title_en": "Dubai (all locations)",
            "details_ru": "Дубай, ОАЭ",
            "details_en": "Dubai, UAE",
            "location_type": {
                "id": 4,
                "ico": "🏙️",
                "name_ru": "Все локации",
                "name_en": "All locations",
                "sort_order": 2,
                "created_at": "2025-04-24T13:46:37.000000Z",
                "updated_at": "2025-04-24T13:46:37.000000Z"
            }
        },
        {
            "id": 10,
            "ico": "🛩️",
            "title_ru": "Аль-Мактум, международный аэропорт",
            "title_en": "Dubai World Central - Al Maktoum International Airport",
            "details_ru": "DWC, Дубай (ОАЭ)",
            "details_en": "DWC, Dubai (UAE)",
            "location_type": {
                "id": 1,
                "ico": "✈️",
                "name_ru": "Аэропорты",
                "name_en": "Airports",
                "sort_order": 1,
                "created_at": "2025-04-23T12:01:25.000000Z",
                "updated_at": "2025-04-23T12:02:45.000000Z"
            }
        },
        {
            "id": 32,
            "ico": "🛩️",
            "title_ru": "Дублин, международный аэропорт",
            "title_en": "Dublin Airport",
            "details_ru": "DUB, Дублин (Ирландия)",
            "details_en": "DUB, Dublin (Ireland)",
            "location_type": {
                "id": 1,
                "ico": "✈️",
                "name_ru": "Аэропорты",
                "name_en": "Airports",
                "sort_order": 1,
                "created_at": "2025-04-23T12:01:25.000000Z",
                "updated_at": "2025-04-23T12:02:45.000000Z"
            }
        }
    ]
}
 

Запрос      

GET api/locations

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры Query

s   string  optional  

string. Подстрока для поиска локаций по названию. Example: Дуб

Осуществляет поиск ценовых предложений на основе локаций и дат для получения/возврата автомобиля, а также информации об арендаторе. Возвращает hash строку, которая используется в последующих запросах для работы с результатами поиска.

Пример запроса:
curl --request POST \
    "https://admin.rently.travel/api/search" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"pick_up_id\": 16,
    \"drop_off_id\": 16,
    \"pick_up_date\": \"2025-05-22T10:00:00\",
    \"drop_off_date\": \"2025-05-29T10:00:00\",
    \"residence\": \"RU\",
    \"age\": 30
}"
const url = new URL(
    "https://admin.rently.travel/api/search"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "pick_up_id": 16,
    "drop_off_id": 16,
    "pick_up_date": "2025-05-22T10:00:00",
    "drop_off_date": "2025-05-29T10:00:00",
    "residence": "RU",
    "age": 30
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/search';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'pick_up_id' => 16,
            'drop_off_id' => 16,
            'pick_up_date' => '2025-05-22T10:00:00',
            'drop_off_date' => '2025-05-29T10:00:00',
            'residence' => 'RU',
            'age' => 30,
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/search'
payload = {
    "pick_up_id": 16,
    "drop_off_id": 16,
    "pick_up_date": "2025-05-22T10:00:00",
    "drop_off_date": "2025-05-29T10:00:00",
    "residence": "RU",
    "age": 30
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Пример ответа (200):


{
    "data": [
        {
            "hash": "5e630350-b62e-432e-bfba-cc2256db849b"
        }
    ]
}
 

Статус поиска

Получение информации о состоянии поиска ценовых предложений. Возвращает true, если поиск закончен.

Пример запроса:
curl --request GET \
    --get "https://admin.rently.travel/api/search-status/5e630350-b62e-432e-bfba-cc2256db849b" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/search-status/5e630350-b62e-432e-bfba-cc2256db849b"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/search-status/5e630350-b62e-432e-bfba-cc2256db849b';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/search-status/5e630350-b62e-432e-bfba-cc2256db849b'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Пример ответа (200):


{
    "data": [
        {
            "status": true
        }
    ]
}
 

Запрос      

GET api/search-status/{searchRequest_hash}

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры URL

searchRequest_hash   string  optional  

string. Hash строка, которая была получена при запросе ценовых предложений. Example: 5e630350-b62e-432e-bfba-cc2256db849b

Результаты поиска

Получение информации о результатах поиска. Возвращает массив найденных ценовых предложений.

Пример запроса:
curl --request GET \
    --get "https://admin.rently.travel/api/search/5e630350-b62e-432e-bfba-cc2256db849b" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/search/5e630350-b62e-432e-bfba-cc2256db849b"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/search/5e630350-b62e-432e-bfba-cc2256db849b';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/search/5e630350-b62e-432e-bfba-cc2256db849b'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Пример ответа (200):


{
 "data": {
   "id": 174,
   "hash": "5e630350-b62e-432e-bfba-cc2256db849b",
   "pick_up_id": 3,
   "drop_off_id": 3,
   "pick_up_date": "2025-05-29 10:00:00",
   "drop_off_date": "2025-05-30 10:00:00",
   "result": [
     {
       "partner": "hertz",
       "pick_up_id": 142311,
       "drop_off_id": 142311,
       "results": [
         {
           "id": "8b502d20-36ea-11f0-afdf-517aef367613:3219917fd00f41e430bc90c32591bab8:2ed440265c5e4069749409dccff57ff9",
           "vehicle": {
             "name": "VOLKSWAGEN T CROSS 1.5 AUT",
             "acriss": "CCAR",
             "description": "COMPACT 2/4 DOORS,AUTOMATIC,A/C",
             "features": {
               "airconditioning.feature.name": "1",
               "transmission.feature.name": "automatic",
               "doorscount.feature.name": "5",
               "seat.feature.name": "5"
             },
             "image": "https://cdn-partner.hertz.com/vehicles/52/b4597fbbcb2aa6605e632fbdf12baf34.jpeg"
           },
           "on_request": false,
           "supplier_partner": {
             "name": "Europcar",
             "logo": "https://cdn-partner.hertz.com/partners/europcar.png"
           },
           "geo": {
             "pick_up_location": {
               "address": {
                 "airportIATA": "AMS",
                 "address_locality": "SCHIPHOL",
                 "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
               }
             },
             "drop_off_location": {
               "address": {
                 "airportIATA": "AMS",
                 "address_locality": "SCHIPHOL",
                 "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
               }
             }
           },
           "rental_rate": {
             "rate_distance": {
               "dist_unit_name": "km",
               "unlimited": true,
               "quantity": 0,
               "vehicle_period_unit_name": "rentalperiod"
             },
             "fuel_policy": "fullfull",
             "total_charge": {
               "amount": 129.230244,
               "currency": "EUR"
             },
             "advance_charge": {
               "amount": 129.230244,
               "currency": "EUR"
             },
             "deposit_charge": {
               "amount": 800,
               "currency": "EUR",
               "payments_accepted": [
                 {
                   "card": "CREDITCARD",
                   "card_code": "VISA"
                 },
                 {
                   "card": "CREDITCARD",
                   "card_code": "MASTERCARD"
                 },
                 {
                   "card": "CREDITCARD",
                   "card_code": "AMERICAN_EXPRESS"
                 }
               ]
             },
             "conversion_rate": {
               "conversion_rate": 0.0111,
               "from": "RUB",
               "to": "EUR",
               "conversion_time": "2025-05-22T10:55:44+02:00"
             },
             "excesses": {
               "CDW": {
                 "amount": 103428.17,
                 "currency": "RUB"
               },
               "THW": {
                 "amount": 103428.17,
                 "currency": "RUB"
               }
             }
           },
           "total_charge": 12212.26
         },
       ]
     }
   ],
   "created_at": "2025-05-22T08:55:42.000000Z"
 }
}
 

Запрос      

GET api/search/{searchRequest_hash}

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры URL

searchRequest_hash   string  optional  

string. Hash строка, которая была получена при запросе ценовых предложений. Example: 5e630350-b62e-432e-bfba-cc2256db849b

Детали ценового предложения

Получение информации о деталях ценового предложения. Возвращает массив параметров для указанного ценового предложения.

Пример запроса:
curl --request GET \
    --get "https://admin.rently.travel/api/search/5e630350-b62e-432e-bfba-cc2256db849b/cars/8b502d20-36ea-11f0-afdf-517aef367613:3219917fd00f41e430bc90c32591bab8:2ed440265c5e4069749409dccff57ff9" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/search/5e630350-b62e-432e-bfba-cc2256db849b/cars/8b502d20-36ea-11f0-afdf-517aef367613:3219917fd00f41e430bc90c32591bab8:2ed440265c5e4069749409dccff57ff9"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/search/5e630350-b62e-432e-bfba-cc2256db849b/cars/8b502d20-36ea-11f0-afdf-517aef367613:3219917fd00f41e430bc90c32591bab8:2ed440265c5e4069749409dccff57ff9';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/search/5e630350-b62e-432e-bfba-cc2256db849b/cars/8b502d20-36ea-11f0-afdf-517aef367613:3219917fd00f41e430bc90c32591bab8:2ed440265c5e4069749409dccff57ff9'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Пример ответа (200):


{
 {
 "search": {
   "id": 174,
   "hash": "5e630350-b62e-432e-bfba-cc2256db849b",
   "pick_up_id": 3,
   "drop_off_id": 3,
   "pick_up_date": "2025-05-29 10:00:00",
   "drop_off_date": "2025-05-30 10:00:00",
   "result": [
     {
       "partner": "hertz",
       "pick_up_id": 142311,
       "drop_off_id": 142311,
       "results": [
         {
           "id": "8b502d20-36ea-11f0-afdf-517aef367613:3219917fd00f41e430bc90c32591bab8:2ed440265c5e4069749409dccff57ff9",
           "vehicle": {
             "name": "VOLKSWAGEN T CROSS 1.5 AUT",
             "acriss": "CCAR",
             "description": "COMPACT 2/4 DOORS,AUTOMATIC,A/C",
             "features": {
               "airconditioning.feature.name": "1",
               "transmission.feature.name": "automatic",
               "doorscount.feature.name": "5",
               "seat.feature.name": "5"
             },
             "image": "https://cdn-partner.hertz.com/vehicles/52/b4597fbbcb2aa6605e632fbdf12baf34.jpeg"
           },
           "on_request": false,
           "supplier_partner": {
             "name": "Europcar",
             "logo": "https://cdn-partner.hertz.com/partners/europcar.png"
           },
           "geo": {
             "pick_up_location": {
               "address": {
                 "airportIATA": "AMS",
                 "address_locality": "SCHIPHOL",
                 "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
               }
             },
             "drop_off_location": {
               "address": {
                 "airportIATA": "AMS",
                 "address_locality": "SCHIPHOL",
                 "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
               }
             }
           },
           "rental_rate": {
             "rate_distance": {
               "dist_unit_name": "km",
               "unlimited": true,
               "quantity": 0,
               "vehicle_period_unit_name": "rentalperiod"
             },
             "fuel_policy": "fullfull",
             "total_charge": {
               "amount": 129.230244,
               "currency": "EUR"
             },
             "advance_charge": {
               "amount": 129.230244,
               "currency": "EUR"
             },
             "deposit_charge": {
               "amount": 800,
               "currency": "EUR",
               "payments_accepted": [
                 {
                   "card": "CREDITCARD",
                   "card_code": "VISA"
                 },
                 {
                   "card": "CREDITCARD",
                   "card_code": "MASTERCARD"
                 },
                 {
                   "card": "CREDITCARD",
                   "card_code": "AMERICAN_EXPRESS"
                 }
               ]
             },
             "conversion_rate": {
               "conversion_rate": 0.0111,
               "from": "RUB",
               "to": "EUR",
               "conversion_time": "2025-05-22T10:55:44+02:00"
             },
             "excesses": {
               "CDW": {
                 "amount": 103428.17,
                 "currency": "RUB"
               },
               "THW": {
                 "amount": 103428.17,
                 "currency": "RUB"
               }
             }
           },
           "total_charge": 12212.26
         },
         {
           "id": "8b502d20-36ea-11f0-afdf-517aef367613:f46b4a7d5ec0e41ebb07ac56df4587a7:d32646f36b25dc436f8a1985b5e4c5e2",
           "vehicle": {
             "name": "CITROEN C3 1.2",
             "acriss": "ECMR",
             "description": "ECONOMY 2/4 DOORS,MANUAL,A/C",
             "features": {
               "airconditioning.feature.name": "1",
               "transmission.feature.name": "manual",
               "doorscount.feature.name": "5",
               "seat.feature.name": "5"
             },
             "image": "https://cdn-partner.hertz.com/vehicles/52/07d7d06dcb93f04591e96f962cf9e511.jpeg"
           },
           "on_request": false,
           "supplier_partner": {
             "name": "Europcar",
             "logo": "https://cdn-partner.hertz.com/partners/europcar.png"
           },
           "geo": {
             "pick_up_location": {
               "address": {
                 "airportIATA": "AMS",
                 "address_locality": "SCHIPHOL",
                 "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
               }
             },
             "drop_off_location": {
               "address": {
                 "airportIATA": "AMS",
                 "address_locality": "SCHIPHOL",
                 "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
               }
             }
           },
           "rental_rate": {
             "rate_distance": {
               "dist_unit_name": "km",
               "unlimited": true,
               "quantity": 0,
               "vehicle_period_unit_name": "rentalperiod"
             },
             "fuel_policy": "fullfull",
             "total_charge": {
               "amount": 93.678754,
               "currency": "EUR"
             },
             "advance_charge": {
               "amount": 93.678754,
               "currency": "EUR"
             },
             "deposit_charge": {
               "amount": 800,
               "currency": "EUR",
               "payments_accepted": [
                 {
                   "card": "CREDITCARD",
                   "card_code": "VISA"
                 },
                 {
                   "card": "CREDITCARD",
                   "card_code": "MASTERCARD"
                 },
                 {
                   "card": "CREDITCARD",
                   "card_code": "AMERICAN_EXPRESS"
                 }
               ]
             },
             "conversion_rate": {
               "conversion_rate": 0.0111,
               "from": "RUB",
               "to": "EUR",
               "conversion_time": "2025-05-22T10:55:44+02:00"
             },
             "excesses": {
               "CDW": {
                 "amount": 94025.61,
                 "currency": "RUB"
               },
               "THW": {
                 "amount": 94025.61,
                 "currency": "RUB"
               }
             }
           },
           "total_charge": 8852.64
         },
         {
           "id": "8b502d20-36ea-11f0-afdf-517aef367613:ba81b9bd19ee49d34468df80cd0929a3:26920db1a216614281a753a724517fa6",
           "vehicle": {
             "name": "VOLKSWAGEN POLO 1.0 AUT",
             "acriss": "ECAR",
             "description": "ECONOMY 2/4 DOORS,AUTOMATIC,A/C",
             "features": {
               "airconditioning.feature.name": "1",
               "transmission.feature.name": "automatic",
               "doorscount.feature.name": "5",
               "seat.feature.name": "5"
             },
             "image": "https://cdn-partner.hertz.com/vehicles/52/1c00d9d3f572bc1e596e174790e3b6ed.jpeg"
           },
           "on_request": false,
           "supplier_partner": {
             "name": "Europcar",
             "logo": "https://cdn-partner.hertz.com/partners/europcar.png"
           },
           "geo": {
             "pick_up_location": {
               "address": {
                 "airportIATA": "AMS",
                 "address_locality": "SCHIPHOL",
                 "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
               }
             },
             "drop_off_location": {
               "address": {
                 "airportIATA": "AMS",
                 "address_locality": "SCHIPHOL",
                 "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
               }
             }
           },
           "rental_rate": {
             "rate_distance": {
               "dist_unit_name": "km",
               "unlimited": true,
               "quantity": 0,
               "vehicle_period_unit_name": "rentalperiod"
             },
             "fuel_policy": "fullfull",
             "total_charge": {
               "amount": 114.91374,
               "currency": "EUR"
             },
             "advance_charge": {
               "amount": 114.91374,
               "currency": "EUR"
             },
             "deposit_charge": {
               "amount": 800,
               "currency": "EUR",
               "payments_accepted": [
                 {
                   "card": "CREDITCARD",
                   "card_code": "VISA"
                 },
                 {
                   "card": "CREDITCARD",
                   "card_code": "MASTERCARD"
                 },
                 {
                   "card": "CREDITCARD",
                   "card_code": "AMERICAN_EXPRESS"
                 }
               ]
             },
             "conversion_rate": {
               "conversion_rate": 0.0111,
               "from": "RUB",
               "to": "EUR",
               "conversion_time": "2025-05-22T10:55:44+02:00"
             },
             "excesses": {
               "CDW": {
                 "amount": 94025.61,
                 "currency": "RUB"
               },
               "THW": {
                 "amount": 94025.61,
                 "currency": "RUB"
               }
             }
           },
           "total_charge": 10859.35
         },
         {
           "id": "8b502d20-36ea-11f0-afdf-517aef367613:6e2e6e9c629998bcb408ec50a0cfdca0:67c707e05eea4c1fe160ca74483615a8",
           "vehicle": {
             "name": "VOLKSWAGEN T CROSS 1.5",
             "acriss": "CCMR",
             "description": "COMPACT 2/4 DOORS,MANUAL, A/C",
             "features": {
               "airconditioning.feature.name": "1",
               "transmission.feature.name": "manual",
               "doorscount.feature.name": "5",
               "seat.feature.name": "5"
             },
             "image": "https://cdn-partner.hertz.com/vehicles/52/b2d15123775c2728cdcf3831b5e5b116.jpeg"
           },
           "on_request": false,
           "supplier_partner": {
             "name": "Europcar",
             "logo": "https://cdn-partner.hertz.com/partners/europcar.png"
           },
           "geo": {
             "pick_up_location": {
               "address": {
                 "airportIATA": "AMS",
                 "address_locality": "SCHIPHOL",
                 "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
               }
             },
             "drop_off_location": {
               "address": {
                 "airportIATA": "AMS",
                 "address_locality": "SCHIPHOL",
                 "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
               }
             }
           },
           "rental_rate": {
             "rate_distance": {
               "dist_unit_name": "km",
               "unlimited": true,
               "quantity": 0,
               "vehicle_period_unit_name": "rentalperiod"
             },
             "fuel_policy": "fullfull",
             "total_charge": {
               "amount": 102.41592899999999,
               "currency": "EUR"
             },
             "advance_charge": {
               "amount": 102.41592899999999,
               "currency": "EUR"
             },
             "deposit_charge": {
               "amount": 800,
               "currency": "EUR",
               "payments_accepted": [
                 {
                   "card": "CREDITCARD",
                   "card_code": "VISA"
                 },
                 {
                   "card": "CREDITCARD",
                   "card_code": "MASTERCARD"
                 },
                 {
                   "card": "CREDITCARD",
                   "card_code": "AMERICAN_EXPRESS"
                 }
               ]
             },
             "conversion_rate": {
               "conversion_rate": 0.0111,
               "from": "RUB",
               "to": "EUR",
               "conversion_time": "2025-05-22T10:55:44+02:00"
             },
             "excesses": {
               "CDW": {
                 "amount": 103428.17,
                 "currency": "RUB"
               },
               "THW": {
                 "amount": 103428.17,
                 "currency": "RUB"
               }
             }
           },
           "total_charge": 9678.31
         }
       ]
     }
   ],
   "created_at": "2025-05-22T08:55:42.000000Z"
 },
 "car": {
   "id": "8b502d20-36ea-11f0-afdf-517aef367613:3219917fd00f41e430bc90c32591bab8:2ed440265c5e4069749409dccff57ff9",
   "vehicle": {
     "name": "VOLKSWAGEN T CROSS 1.5 AUT",
     "acriss": "CCAR",
     "description": "COMPACT 2/4 DOORS,AUTOMATIC,A/C",
     "features": {
       "airconditioning.feature.name": "1",
       "transmission.feature.name": "automatic",
       "doorscount.feature.name": "5",
       "seat.feature.name": "5"
     },
     "image": "https://cdn-partner.hertz.com/vehicles/52/b4597fbbcb2aa6605e632fbdf12baf34.jpeg"
   },
   "on_request": false,
   "supplier_partner": {
     "name": "Europcar",
     "logo": "https://cdn-partner.hertz.com/partners/europcar.png"
   },
   "geo": {
     "pick_up_location": {
       "address": {
         "airportIATA": "AMS",
         "address_locality": "SCHIPHOL",
         "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
       }
     },
     "drop_off_location": {
       "address": {
         "airportIATA": "AMS",
         "address_locality": "SCHIPHOL",
         "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
       }
     }
   },
   "rental_rate": {
     "rate_distance": {
       "dist_unit_name": "km",
       "unlimited": true,
       "quantity": 0,
       "vehicle_period_unit_name": "rentalperiod"
     },
     "fuel_policy": "fullfull",
     "total_charge": {
       "amount": 129.230244,
       "currency": "EUR"
     },
     "advance_charge": {
       "amount": 129.230244,
       "currency": "EUR"
     },
     "deposit_charge": {
       "amount": 800,
       "currency": "EUR",
       "payments_accepted": [
         {
           "card": "CREDITCARD",
           "card_code": "VISA"
         },
         {
           "card": "CREDITCARD",
           "card_code": "MASTERCARD"
         },
         {
           "card": "CREDITCARD",
           "card_code": "AMERICAN_EXPRESS"
         }
       ]
     },
     "conversion_rate": {
       "conversion_rate": 0.0111,
       "from": "RUB",
       "to": "EUR",
       "conversion_time": "2025-05-22T10:55:44+02:00"
     },
     "excesses": {
       "CDW": {
         "amount": 103428.17,
         "currency": "RUB"
       },
       "THW": {
         "amount": 103428.17,
         "currency": "RUB"
       }
     }
   }
 },
 "additional_car": {
   "id": "8b502d20-36ea-11f0-afdf-517aef367613:3219917fd00f41e430bc90c32591bab8:2ed440265c5e4069749409dccff57ff9",
   "on_request": false,
   "geo": {
     "pick_up_location": {
       "address": {
         "address_locality": "SCHIPHOL",
         "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
       },
       "geo": {
         "properties": {
           "location_type": "INTERMINAL"
         },
         "geometry": {
           "coordinates": [
             52.3081,
             4.7619
           ]
         }
       }
     },
     "drop_off_location": {
       "address": {
         "address_locality": "SCHIPHOL",
         "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
       },
       "geo": {
         "properties": {
           "location_type": "INTERMINAL",
           "key_box": false
         },
         "geometry": {
           "coordinates": [
             52.3081,
             4.7619
           ]
         }
       }
     }
   },
   "rental_rate": {
     "rate_distance": {
       "dist_unit_name": "km",
       "unlimited": true,
       "quantity": 0,
       "vehicle_period_unit_name": "rentalperiod"
     },
     "fuel_policy": "fullfull",
     "cancellation_policies": [
       {
         "amount": 0,
         "currency": "EUR",
         "end_date": "2025-05-27T10:00:00+02:00"
       },
       {
         "amount": 129.230244,
         "currency": "EUR",
         "start_date": "2025-05-27T10:00:00+02:00"
       }
     ],
     "total_charge": {
       "amount": 129.230244,
       "currency": "EUR"
     },
     "advance_charge": {
       "amount": 129.230244,
       "currency": "EUR"
     },
     "deposit_charge": {
       "amount": 800,
       "currency": "EUR",
       "payments_accepted": [
         {
           "card": "CREDITCARD",
           "card_code": "VISA"
         },
         {
           "card": "CREDITCARD",
           "card_code": "MASTERCARD"
         },
         {
           "card": "CREDITCARD",
           "card_code": "AMERICAN_EXPRESS"
         }
       ]
     },
     "conversion_rate": {
       "conversion_rate": 0.0111,
       "from": "RUB",
       "to": "EUR",
       "conversion_time": "2025-05-22T12:16:43+02:00"
     },
     "excesses": {
       "CDW": {
         "amount": 103428.17,
         "currency": "RUB"
       },
       "THW": {
         "amount": 103428.17,
         "currency": "RUB"
       }
     }
   },
   "rental_terms": {
     "language": "en",
     "paragraph": [
       {
         "title": "Driver Age",
         "text": [
           "The minumum age of the driver is 19 years old.",
           "For those drivers between 19 and 24 years old, a \"Young Driver fee\" will be applied.",
           "The \"Young Driver fee\" is not included in the price of the car rental. This must be payed in local currency at the car rental office.",
           "The maximum age of the driver is 70 years old."
         ]
       },
       {
         "title": "Driving license",
         "text": [
           "When picking up the vehicle, the driver must show their own original driving license, which must be at least one-year old and currently valid.",
           "A currently valid International Driving License (IDL) is required, in the event the driving license is not printed in Roman script (for example in Arabic, Greek, Russian, Chinese, etc.).",
           "The International Driving License must be accompanied by the original driver's driving license."
         ]
       },
       {
         "title": "ID card",
         "text": [
           "If the car rental is made in a country belonging to the European Union:",
           "- A valid ID card for the country in which the car is rented, will be required.",
           "- For the citizens of the countries NOT belonging to the European Union, besides an ID card, a currently valid passport will be required as well.",
           "",
           "If the car rental is made in a country NOT belonging to the European Union:",
           "- A valid ID card for the country in which the car is rented, will be required.",
           "- For those citizens NOT having the residence in the country where the car rental is made, besides an ID card, a currently valid passport will be required as well.",
           "The documents must be the original ones, not deteriorated, readable and currently valid."
         ]
       },
       {
         "title": "Inclusive insurances",
         "text": [
           "Collision Damage Waiver (CDW):",
           "This protection will be applied to all the authorized drivers. It partially covers the potential damages to the vehicle and it is subjected to the terms of the car rental contract. Instead of the total cost, the driver will be responsible only for the first fraction, called deductible.",
           "",
           "Theft Protection (TP):",
           "This protection limits driver's responsability for those costs arising from the theft or attempted theft, but it does not cover the loss of personal properties. The responsability will correspond to the amount of the deductible, which is subjected to the terms of the car rental contract.",
           "",
           "Third-party liability insurance:",
           "This insurance covers the damages to third parties following an accident caused by the driver, excluding the rented car itself."
         ]
       },
       {
         "title": "Road Assistance",
         "text": [
           "Road assistance is guaranteed 24/7 and it is included in the price.",
           "In case Road assistance is needed as a result of a breakdown caused by the driver, the cost related to this will be charged to the driver himself."
         ]
       },
       {
         "title": "Taxes included in the price",
         "text": [
           "Value Added Tax (VAT).",
           "Airport/Railway Station Taxes."
         ]
       },
       {
         "title": "Fuel Policy",
         "text": [
           "Full/Full:",
           "The car will be given fully fuelled and it must be returned with the tank full of gas.",
           "In case the driver does not return the car with the tank full of gas, the missing part of the fuel will be charged, plus a penal equal to the cost on Europcar's current list at the moment of the drop off."
         ]
       },
       {
         "title": "Mileage",
         "text": [
           "Цена включает неограниченный пробег."
         ]
       },
       {
         "title": "Crossing borders",
         "text": [
           "Crossing borders is NOT allowed."
         ]
       },
       {
         "title": "Payment Methods",
         "text": [
           "When you pick up the car, you must bring with you a credit card in the name of the main driver with the name and the surname printed on it. This will be used to handle the deposit and the final payment.",
           "",
           "[Credit cards]",
           "Credit cards accepted at the car rental desk: Visa, Mastercard, American Express, Diners.",
           "The credit card must present the embossed numbers and the PIN code may be requested.",
           "",
           "The following cards WILL NOT be accepted: revolving cards, debit cards, prepaid cards of any type (ex. Postepay, PayPal), Visa Dankort cards, Chinese UnionPay, cash and/or checks.",
           "",
           "For safety reasons, the car rental company will ask you to show a currently valid ID card, which must be of the same nationality of the card used.",
           "",
           "Always check your credit card has sufficient credit at the moment of the pick-up. The authorized amount generally corresponds to the deductible/deposit and to the fuel, but it depends on the vehicle dimensions, the driver's age, the car rental agent, the car rental duration and the drop-off point.",
           "In case the credit card is not valid, or there is no sufficient credit, the car rental agent can refuse to give you the car. In these cases, no refeund is provided."
         ]
       },
       {
         "title": "Deposit amount",
         "text": [
           "At the moment of the pick up of the car, you will be asked to deposit an amount as a guarantee. The amount will be blocked on the credit card in the name of the main driver. Cash, checks or any other types of card will NOT be accepted.",
           "For the Premium and Luxury groups, the car rental company Europcar will ask two credit cards in the name of the main driver or one of the following cards: Visa (Gold or Platinum) Mastercard (Gold or Platinum) American Express (Platinum or Black Centurion) always in the name of the main driver.",
           "This amount will be unblocked at the end of the car rental, where all the conditions are met.",
           "The amount will be blocked on the credit card in the name of the main driver, through a pre-authorization request. The amount of the deposit will be equal to € 300.00 (or £ 250.00 or the equivalent in local currency of the country where the car rental is made) plus eventual extras o services purchased and not prepaid online."
         ]
       },
       {
         "title": "Local Taxes",
         "text": [
           "The damages to the car will be charged by the car rental company at the moment of the drop off, as well as a local tax, which has to be added to the amount of the deductible withheld.",
           "In case of tickets/fines, the driver will have to pay a local tax, which has to be added to the amount of the ticket/fine."
         ]
       },
       {
         "title": "Pick up",
         "text": [
           "The vechicle must be picked up at the starting time agreed during the booking process.",
           "After that time, the car rental company will not guarantee the availability of the car at the car rental station.",
           "We invite you to always inform the car rental station in case of delay."
         ]
       },
       {
         "title": "Drop off",
         "text": [
           "The rented car must be dropped off on the day and at the time agreed in the car rental contract.",
           "In case of further delay, the car rental company must be informed and you can ask for the eventual additional costs.",
           "No refund is provided in case the car is returned before the date agreed in the car rental contract.",
           "",
           "The vehicles are delivered externally and internally clean and they must be returned in the same condition. Otherwise the costs related to the washing of the vehicle will be proportionally charged."
         ]
       },
       {
         "title": "Vehicle Group",
         "text": [
           "The vehicle in the image and the models on the list are the most commonly used by our car rental partners.",
           "We cannot guarantee that brand and model of the vehicle will be the same of the vehicle viewed on our website.."
         ]
       },
       {
         "title": "Voucher",
         "text": [
           "At the arrival at the car rental office, you will be asked to show the voucher.",
           "Attention: Rentalup takes no responsability for any surcharges in the case, at the moment of the pick up, the voucher is not shown to the car rental agent. In these cases NO refund of the advance payment will be provided."
         ]
       },
       {
         "title": "Extras",
         "text": [
           "Optional accessories and extras must be requested during the online booking process or directly at the desk of the car rental office. These are not included in the price of car rental and must be paid at the car rental desk.",
           "The prices are directly handled by the car rental company, which reserves its right of modification without forewarning.",
           "Optional accessories and special allocations are subject to availability, which can be confirmed only by the car rental station."
         ]
       },
       {
         "title": "Out of hour surcharge",
         "text": [
           "For the pick-ups and drop-offs during the closing time of the car rental station, it is necessary to contact the car rental office beforehand. If the service is confirmed, this will involve the payment of a surcharge .",
           "We invite you to always inform the car rental station in case of delay, so the staff can wait for your arrival."
         ]
       },
       {
         "title": "Exchange rate",
         "text": [
           "All rates shown in EUR have been converted from the currency RUB; the exchange rate used is the one in effect on 2025-05-22 and is equivalent to 1 RUB = 0.0111 EUR.",
           "All the payments that will be made at the counter will be paid in local currency. As a result of possible monetary fluctuations, these amounts could deviate from what is shown EUR during the booking phase."
         ]
       }
     ]
   },
   "special_equipments": [
     {
       "equipment_type": "equipment",
       "code": "CSB",
       "name": "Child seat (1-3 years old)",
       "amount": 1,
       "total_price": {
         "amount": 1409.44,
         "currency": "RUB"
       },
       "included_in_rate": false,
       "tax_included": true
     },
     {
       "equipment_type": "equipment",
       "code": "CSI",
       "name": "Child seat (0-12 months)",
       "amount": 1,
       "total_price": {
         "amount": 1409.44,
         "currency": "RUB"
       },
       "included_in_rate": false,
       "tax_included": true
     },
     {
       "equipment_type": "equipment",
       "code": "CST",
       "name": "Child seat (4-7 years old)",
       "amount": 1,
       "total_price": {
         "amount": 939.32,
         "currency": "RUB"
       },
       "included_in_rate": false,
       "tax_included": true
     }
   ],
   "services": [
     {
       "equipment_type": "service",
       "code": "ADD",
       "name": "Additional driver",
       "amount": 1,
       "total_price": {
         "amount": 939.32,
         "currency": "RUB"
       },
       "included_in_rate": false,
       "tax_included": true
     },
     {
       "equipment_type": "service",
       "code": "YOU",
       "name": "Young driver",
       "amount": 1,
       "total_price": {
         "amount": 2350.64,
         "currency": "RUB"
       },
       "included_in_rate": false,
       "tax_included": true
     }
   ],
   "insurance": [
     {
       "@type": "Partner\\entity\\equipment\\GenericSpecialEquipment",
       "equipment_type": "insurance",
       "code": "RSA",
       "name": "greenway.RSA.name",
       "description": "greenway.RSA.description",
       "day_price": 0,
       "max_price": 0,
       "amount": 1,
       "max_amount": 0,
       "total_price": {
         "@type": "Partner\\entity\\Charge",
         "amount": 657.24,
         "currency": "RUB"
       },
       "included_in_rate": false,
       "tax_included": true
     },
     {
       "@type": "Partner\\entity\\equipment\\GenericSpecialEquipment",
       "equipment_type": "insurance",
       "code": "PREMIUM",
       "name": "greenway.PREMIUM.name",
       "description": "greenway.PREMIUM.description",
       "day_price": 0,
       "max_price": 0,
       "amount": 1,
       "max_amount": 0,
       "total_price": {
         "@type": "Partner\\entity\\Charge",
         "amount": 3102.85,
         "currency": "RUB"
       },
       "included_in_rate": false,
       "tax_included": true
     },
     {
       "@type": "Partner\\entity\\equipment\\GenericSpecialEquipment",
       "equipment_type": "insurance",
       "code": "MEDIUM",
       "name": "greenway.MEDIUM.name",
       "description": "greenway.MEDIUM.description",
       "day_price": 0,
       "max_price": 0,
       "amount": 1,
       "max_amount": 0,
       "total_price": {
         "@type": "Partner\\entity\\Charge",
         "amount": 2171.99,
         "currency": "RUB"
       },
       "included_in_rate": false,
       "tax_included": true
     }
   ]
 },
 "total_charge": 12212.26
 }
}
 

Запрос      

GET api/search/{searchRequest_hash}/cars/{hash}

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры URL

searchRequest_hash   string  optional  

string. Hash строка, которая была получена при запросе ценовых предложений. Example: 5e630350-b62e-432e-bfba-cc2256db849b

hash   string  optional  

string. Идентификатор (id) ценового предложения из массива результатов поиска ценовых предложений. Example: 8b502d20-36ea-11f0-afdf-517aef367613:3219917fd00f41e430bc90c32591bab8:2ed440265c5e4069749409dccff57ff9

Забронировать автомобиль

Осуществляет бронирование автомобиля на основе ценового предложения. Возвращает массив, который содержит информацию о сделанном бронировании.

Пример запроса:
curl --request POST \
    "https://admin.rently.travel/api/bookings" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"search_id\": \"5e630350-b62e-432e-bfba-cc2256db849b\",
    \"car_id\": \"8b502d20-36ea-11f0-afdf-517aef367613:3219917fd00f41e430bc90c32591bab8:2ed440265c5e4069749409dccff57ff9\",
    \"name\": \"Иван\",
    \"name_en\": \"Ivan\",
    \"surname\": \"Иванов\",
    \"surname_en\": \"Ivanov\",
    \"birth_country\": \"RU\",
    \"residence_city\": \"Москва\",
    \"residence_country\": \"RU\",
    \"residence_address\": \"ул. Тверская, д. 1\",
    \"email\": \"example@mail.com\",
    \"phone\": \"+79001234567\",
    \"birth_date\": \"1990-01-01\"
}"
const url = new URL(
    "https://admin.rently.travel/api/bookings"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "search_id": "5e630350-b62e-432e-bfba-cc2256db849b",
    "car_id": "8b502d20-36ea-11f0-afdf-517aef367613:3219917fd00f41e430bc90c32591bab8:2ed440265c5e4069749409dccff57ff9",
    "name": "Иван",
    "name_en": "Ivan",
    "surname": "Иванов",
    "surname_en": "Ivanov",
    "birth_country": "RU",
    "residence_city": "Москва",
    "residence_country": "RU",
    "residence_address": "ул. Тверская, д. 1",
    "email": "example@mail.com",
    "phone": "+79001234567",
    "birth_date": "1990-01-01"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/bookings';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'search_id' => '5e630350-b62e-432e-bfba-cc2256db849b',
            'car_id' => '8b502d20-36ea-11f0-afdf-517aef367613:3219917fd00f41e430bc90c32591bab8:2ed440265c5e4069749409dccff57ff9',
            'name' => 'Иван',
            'name_en' => 'Ivan',
            'surname' => 'Иванов',
            'surname_en' => 'Ivanov',
            'birth_country' => 'RU',
            'residence_city' => 'Москва',
            'residence_country' => 'RU',
            'residence_address' => 'ул. Тверская, д. 1',
            'email' => 'example@mail.com',
            'phone' => '+79001234567',
            'birth_date' => '1990-01-01',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/bookings'
payload = {
    "search_id": "5e630350-b62e-432e-bfba-cc2256db849b",
    "car_id": "8b502d20-36ea-11f0-afdf-517aef367613:3219917fd00f41e430bc90c32591bab8:2ed440265c5e4069749409dccff57ff9",
    "name": "Иван",
    "name_en": "Ivan",
    "surname": "Иванов",
    "surname_en": "Ivanov",
    "birth_country": "RU",
    "residence_city": "Москва",
    "residence_country": "RU",
    "residence_address": "ул. Тверская, д. 1",
    "email": "example@mail.com",
    "phone": "+79001234567",
    "birth_date": "1990-01-01"
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Пример ответа (200):


{
 "data": {
 "id": 24,
 "search_id": "5e630350-b62e-432e-bfba-cc2256db849b",
 "car_id": "8b502d20-36ea-11f0-afdf-517aef367613:3219917fd00f41e430bc90c32591bab8:2ed440265c5e4069749409dccff57ff9",
 "hash": "46ll3MZwClcOWsnqAh27M2KtCI7ieAYO-682f05579757e",
 "name": "Иван",
 "name_en": "Ivan",
 "surname": "Иванов",
 "surname_en": "Ivanov",
 "birth_country": "RU",
 "residence_city": "Москва",
 "residence_country": "RU",
 "residence_address": "ул. Тверская, д. 1",
 "email": "example@mail.com",
 "phone": "+79001234567",
 "birth_date": "1990-01-01",
 "search": {
   "App\\Http\\Resources\\Api\\SearchRequestResource": {
     "id": 174,
     "hash": "5e630350-b62e-432e-bfba-cc2256db849b",
     "pick_up_id": 3,
     "drop_off_id": 3,
     "pick_up_date": "2025-05-29 10:00:00",
     "drop_off_date": "2025-05-30 10:00:00",
     "result": [
       {
         "partner": "hertz",
         "pick_up_id": 142311,
         "drop_off_id": 142311,
         "results": [
           {
             "id": "bc4e1e20-36fc-11f0-b702-f13f2771c808:293589facc3afce32b26d3b8507d1578:7fd1712226cf3c05096e78a3619215ec",
             "vehicle": {
               "name": "VOLKSWAGEN T CROSS 1.5 AUT",
               "acriss": "CCAR",
               "description": "COMPACT 2/4 DOORS,AUTOMATIC,A/C",
               "features": {
                 "airconditioning.feature.name": "1",
                 "transmission.feature.name": "automatic",
                 "doorscount.feature.name": "5",
                 "seat.feature.name": "5"
               },
               "image": "https://cdn-partner.hertz.com/vehicles/52/b4597fbbcb2aa6605e632fbdf12baf34.jpeg"
             },
             "on_request": false,
             "supplier_partner": {
               "name": "Europcar",
               "logo": "https://cdn-partner.hertz.com/partners/europcar.png"
             },
             "geo": {
               "pick_up_location": {
                 "address": {
                   "airportIATA": "AMS",
                   "address_locality": "SCHIPHOL",
                   "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
                 }
               },
               "drop_off_location": {
                 "address": {
                   "airportIATA": "AMS",
                   "address_locality": "SCHIPHOL",
                   "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
                 }
               }
             },
             "rental_rate": {
               "rate_distance": {
                 "dist_unit_name": "km",
                 "unlimited": true,
                 "quantity": 0,
                 "vehicle_period_unit_name": "rentalperiod"
               },
               "fuel_policy": "fullfull",
               "total_charge": {
                 "amount": 185.182432,
                 "currency": "EUR"
               },
               "advance_charge": {
                 "amount": 185.182432,
                 "currency": "EUR"
               },
               "deposit_charge": {
                 "amount": 800,
                 "currency": "EUR",
                 "payments_accepted": [
                   {
                     "card": "CREDITCARD",
                     "card_code": "VISA"
                   },
                   {
                     "card": "CREDITCARD",
                     "card_code": "MASTERCARD"
                   },
                   {
                     "card": "CREDITCARD",
                     "card_code": "AMERICAN_EXPRESS"
                   }
                 ]
               },
               "conversion_rate": {
                 "conversion_rate": 0.0111,
                 "from": "RUB",
                 "to": "EUR",
                 "conversion_time": "2025-05-22T13:05:57+02:00"
               },
               "excesses": {
                 "CDW": {
                   "amount": 103428.17,
                   "currency": "RUB"
                 },
                 "THW": {
                   "amount": 103428.17,
                   "currency": "RUB"
                 }
               }
             },
             "total_charge": 18018.25
           },
           {
             "id": "bc4e1e20-36fc-11f0-b702-f13f2771c808:afb30c89d7ee484692971253c2e8a0a7:ada461fdb17b979acb28cf0d43b12941",
             "vehicle": {
               "name": "VOLKSWAGEN T CROSS 1.5",
               "acriss": "CCMR",
               "description": "COMPACT 2/4 DOORS,MANUAL, A/C",
               "features": {
                 "airconditioning.feature.name": "1",
                 "transmission.feature.name": "manual",
                 "doorscount.feature.name": "5",
                 "seat.feature.name": "5"
               },
               "image": "https://cdn-partner.hertz.com/vehicles/52/b2d15123775c2728cdcf3831b5e5b116.jpeg"
             },
             "on_request": false,
             "supplier_partner": {
               "name": "Europcar",
               "logo": "https://cdn-partner.hertz.com/partners/europcar.png"
             },
             "geo": {
               "pick_up_location": {
                 "address": {
                   "airportIATA": "AMS",
                   "address_locality": "SCHIPHOL",
                   "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
                 }
               },
               "drop_off_location": {
                 "address": {
                   "airportIATA": "AMS",
                   "address_locality": "SCHIPHOL",
                   "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
                 }
               }
             },
             "rental_rate": {
               "rate_distance": {
                 "dist_unit_name": "km",
                 "unlimited": true,
                 "quantity": 0,
                 "vehicle_period_unit_name": "rentalperiod"
               },
               "fuel_policy": "fullfull",
               "total_charge": {
                 "amount": 142.494369,
                 "currency": "EUR"
               },
               "advance_charge": {
                 "amount": 142.494369,
                 "currency": "EUR"
               },
               "deposit_charge": {
                 "amount": 800,
                 "currency": "EUR",
                 "payments_accepted": [
                   {
                     "card": "CREDITCARD",
                     "card_code": "VISA"
                   },
                   {
                     "card": "CREDITCARD",
                     "card_code": "MASTERCARD"
                   },
                   {
                     "card": "CREDITCARD",
                     "card_code": "AMERICAN_EXPRESS"
                   }
                 ]
               },
               "conversion_rate": {
                 "conversion_rate": 0.0111,
                 "from": "RUB",
                 "to": "EUR",
                 "conversion_time": "2025-05-22T13:05:57+02:00"
               },
               "excesses": {
                 "CDW": {
                   "amount": 103428.17,
                   "currency": "RUB"
                 },
                 "THW": {
                   "amount": 103428.17,
                   "currency": "RUB"
                 }
               }
             },
             "total_charge": 13864.7
           },
           {
             "id": "bc4e1e20-36fc-11f0-b702-f13f2771c808:f8dfd0358b048bc075341dba37013b35:2863f184dfce177ffbb4082d7f6dd517",
             "vehicle": {
               "name": "RENAULT ARKANA 1.3",
               "acriss": "IDAR",
               "description": "INTERMEDIATE,4 DOORS,AUTO,A/C",
               "features": {
                 "airconditioning.feature.name": "1",
                 "transmission.feature.name": "automatic",
                 "doorscount.feature.name": "5",
                 "seat.feature.name": "5"
               },
               "image": "https://cdn-partner.hertz.com/vehicles/52/e71260e0f855e16aeb7c94dcc612891b.jpeg"
             },
             "on_request": false,
             "supplier_partner": {
               "name": "Europcar",
               "logo": "https://cdn-partner.hertz.com/partners/europcar.png"
             },
             "geo": {
               "pick_up_location": {
                 "address": {
                   "airportIATA": "AMS",
                   "address_locality": "SCHIPHOL",
                   "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
                 }
               },
               "drop_off_location": {
                 "address": {
                   "airportIATA": "AMS",
                   "address_locality": "SCHIPHOL",
                   "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
                 }
               }
             },
             "rental_rate": {
               "rate_distance": {
                 "dist_unit_name": "km",
                 "unlimited": true,
                 "quantity": 0,
                 "vehicle_period_unit_name": "rentalperiod"
               },
               "fuel_policy": "fullfull",
               "total_charge": {
                 "amount": 204.44719300000003,
                 "currency": "EUR"
               },
               "advance_charge": {
                 "amount": 204.44719300000003,
                 "currency": "EUR"
               },
               "deposit_charge": {
                 "amount": 800,
                 "currency": "EUR",
                 "payments_accepted": [
                   {
                     "card": "CREDITCARD",
                     "card_code": "VISA"
                   },
                   {
                     "card": "CREDITCARD",
                     "card_code": "MASTERCARD"
                   },
                   {
                     "card": "CREDITCARD",
                     "card_code": "AMERICAN_EXPRESS"
                   }
                 ]
               },
               "conversion_rate": {
                 "conversion_rate": 0.0111,
                 "from": "RUB",
                 "to": "EUR",
                 "conversion_time": "2025-05-22T13:05:57+02:00"
               },
               "excesses": {
                 "CDW": {
                   "amount": 122233.29,
                   "currency": "RUB"
                 },
                 "THW": {
                   "amount": 122233.29,
                   "currency": "RUB"
                 }
               }
             },
             "total_charge": 19892.71
           },
           {
             "id": "bc4e1e20-36fc-11f0-b702-f13f2771c808:c5f08ca69b81da189f380075802060a3:a4151510eb896defa5d6cea582e4e4db",
             "vehicle": {
               "name": "VOLKSWAGEN POLO 1.0 AUT",
               "acriss": "ECAR",
               "description": "ECONOMY 2/4 DOORS,AUTOMATIC,A/C",
               "features": {
                 "airconditioning.feature.name": "1",
                 "transmission.feature.name": "automatic",
                 "doorscount.feature.name": "5",
                 "seat.feature.name": "5"
               },
               "image": "https://cdn-partner.hertz.com/vehicles/52/1c00d9d3f572bc1e596e174790e3b6ed.jpeg"
             },
             "on_request": false,
             "supplier_partner": {
               "name": "Europcar",
               "logo": "https://cdn-partner.hertz.com/partners/europcar.png"
             },
             "geo": {
               "pick_up_location": {
                 "address": {
                   "airportIATA": "AMS",
                   "address_locality": "SCHIPHOL",
                   "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
                 }
               },
               "drop_off_location": {
                 "address": {
                   "airportIATA": "AMS",
                   "address_locality": "SCHIPHOL",
                   "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
                 }
               }
             },
             "rental_rate": {
               "rate_distance": {
                 "dist_unit_name": "km",
                 "unlimited": true,
                 "quantity": 0,
                 "vehicle_period_unit_name": "rentalperiod"
               },
               "fuel_policy": "fullfull",
               "total_charge": {
                 "amount": 167.040425,
                 "currency": "EUR"
               },
               "advance_charge": {
                 "amount": 167.040425,
                 "currency": "EUR"
               },
               "deposit_charge": {
                 "amount": 800,
                 "currency": "EUR",
                 "payments_accepted": [
                   {
                     "card": "CREDITCARD",
                     "card_code": "VISA"
                   },
                   {
                     "card": "CREDITCARD",
                     "card_code": "MASTERCARD"
                   },
                   {
                     "card": "CREDITCARD",
                     "card_code": "AMERICAN_EXPRESS"
                   }
                 ]
               },
               "conversion_rate": {
                 "conversion_rate": 0.0111,
                 "from": "RUB",
                 "to": "EUR",
                 "conversion_time": "2025-05-22T13:05:58+02:00"
               },
               "excesses": {
                 "CDW": {
                   "amount": 94025.61,
                   "currency": "RUB"
                 },
                 "THW": {
                   "amount": 94025.61,
                   "currency": "RUB"
                 }
               }
             },
             "total_charge": 16253.03
           },
           {
             "id": "8b502d20-36ea-11f0-afdf-517aef367613:3219917fd00f41e430bc90c32591bab8:2ed440265c5e4069749409dccff57ff9",
             "vehicle": {
               "name": "CITROEN C3 1.2",
               "acriss": "ECMR",
               "description": "ECONOMY 2/4 DOORS,MANUAL,A/C",
               "features": {
                 "airconditioning.feature.name": "1",
                 "transmission.feature.name": "manual",
                 "doorscount.feature.name": "5",
                 "seat.feature.name": "5"
               },
               "image": "https://cdn-partner.hertz.com/vehicles/52/07d7d06dcb93f04591e96f962cf9e511.jpeg"
             },
             "on_request": false,
             "supplier_partner": {
               "name": "Europcar",
               "logo": "https://cdn-partner.hertz.com/partners/europcar.png"
             },
             "geo": {
               "pick_up_location": {
                 "address": {
                   "airportIATA": "AMS",
                   "address_locality": "SCHIPHOL",
                   "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
                 }
               },
               "drop_off_location": {
                 "address": {
                   "airportIATA": "AMS",
                   "address_locality": "SCHIPHOL",
                   "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
                 }
               }
             },
             "rental_rate": {
               "rate_distance": {
                 "dist_unit_name": "km",
                 "unlimited": true,
                 "quantity": 0,
                 "vehicle_period_unit_name": "rentalperiod"
               },
               "fuel_policy": "fullfull",
               "total_charge": {
                 "amount": 131.858953,
                 "currency": "EUR"
               },
               "advance_charge": {
                 "amount": 131.858953,
                 "currency": "EUR"
               },
               "deposit_charge": {
                 "amount": 800,
                 "currency": "EUR",
                 "payments_accepted": [
                   {
                     "card": "CREDITCARD",
                     "card_code": "VISA"
                   },
                   {
                     "card": "CREDITCARD",
                     "card_code": "MASTERCARD"
                   },
                   {
                     "card": "CREDITCARD",
                     "card_code": "AMERICAN_EXPRESS"
                   }
                 ]
               },
               "conversion_rate": {
                 "conversion_rate": 0.0111,
                 "from": "RUB",
                 "to": "EUR",
                 "conversion_time": "2025-05-22T13:05:58+02:00"
               },
               "excesses": {
                 "CDW": {
                   "amount": 94025.61,
                   "currency": "RUB"
                 },
                 "THW": {
                   "amount": 94025.61,
                   "currency": "RUB"
                 }
               }
             },
             "total_charge": 12829.88
           }
         ]
       }
     ],
     "created_at": "2025-05-22T11:05:53.000000Z"
   }
 },
 "car": {
   "id": "8b502d20-36ea-11f0-afdf-517aef367613:3219917fd00f41e430bc90c32591bab8:2ed440265c5e4069749409dccff57ff9",
   "vehicle": {
     "name": "CITROEN C3 1.2",
     "acriss": "ECMR",
     "description": "ECONOMY 2/4 DOORS,MANUAL,A/C",
     "features": {
       "airconditioning.feature.name": "1",
       "transmission.feature.name": "manual",
       "doorscount.feature.name": "5",
       "seat.feature.name": "5"
     },
     "image": "https://cdn-partner.hertz.com/vehicles/52/07d7d06dcb93f04591e96f962cf9e511.jpeg"
   },
   "on_request": false,
   "supplier_partner": {
     "name": "Europcar",
     "logo": "https://cdn-partner.hertz.com/partners/europcar.png"
   },
   "geo": {
     "pick_up_location": {
       "address": {
         "airportIATA": "AMS",
         "address_locality": "SCHIPHOL",
         "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
       }
     },
     "drop_off_location": {
       "address": {
         "airportIATA": "AMS",
         "address_locality": "SCHIPHOL",
         "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
       }
     }
   },
   "rental_rate": {
     "rate_distance": {
       "dist_unit_name": "km",
       "unlimited": true,
       "quantity": 0,
       "vehicle_period_unit_name": "rentalperiod"
     },
     "fuel_policy": "fullfull",
     "total_charge": {
       "amount": 131.858953,
       "currency": "EUR"
     },
     "advance_charge": {
       "amount": 131.858953,
       "currency": "EUR"
     },
     "deposit_charge": {
       "amount": 800,
       "currency": "EUR",
       "payments_accepted": [
         {
           "card": "CREDITCARD",
           "card_code": "VISA"
         },
         {
           "card": "CREDITCARD",
           "card_code": "MASTERCARD"
         },
         {
           "card": "CREDITCARD",
           "card_code": "AMERICAN_EXPRESS"
         }
       ]
     },
     "conversion_rate": {
       "conversion_rate": 0.0111,
       "from": "RUB",
       "to": "EUR",
       "conversion_time": "2025-05-22T13:05:58+02:00"
     },
     "excesses": {
       "CDW": {
         "amount": 94025.61,
         "currency": "RUB"
       },
       "THW": {
         "amount": 94025.61,
         "currency": "RUB"
       }
     }
   }
 },
 "additional_car": {
   "id": "8b502d20-36ea-11f0-afdf-517aef367613:3219917fd00f41e430bc90c32591bab8:2ed440265c5e4069749409dccff57ff9",
   "on_request": false,
   "geo": {
     "pick_up_location": {
       "address": {
         "address_locality": "SCHIPHOL",
         "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
       },
       "geo": {
         "properties": {
           "location_type": "INTERMINAL"
         },
         "geometry": {
           "coordinates": [
             52.3081,
             4.7619
           ]
         }
       }
     },
     "drop_off_location": {
       "address": {
         "address_locality": "SCHIPHOL",
         "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
       },
       "geo": {
         "properties": {
           "location_type": "INTERMINAL",
           "key_box": false
         },
         "geometry": {
           "coordinates": [
             52.3081,
             4.7619
           ]
         }
       }
     }
   },
   "rental_rate": {
     "rate_distance": {
       "dist_unit_name": "km",
       "unlimited": true,
       "quantity": 0,
       "vehicle_period_unit_name": "rentalperiod"
     },
     "fuel_policy": "fullfull",
     "cancellation_policies": [
       {
         "amount": 0,
         "currency": "EUR",
         "end_date": "2025-05-25T10:00:00+02:00"
       },
       {
         "amount": 131.858953,
         "currency": "EUR",
         "start_date": "2025-05-25T10:00:00+02:00"
       }
     ],
     "total_charge": {
       "amount": 131.858953,
       "currency": "EUR"
     },
     "advance_charge": {
       "amount": 131.858953,
       "currency": "EUR"
     },
     "deposit_charge": {
       "amount": 800,
       "currency": "EUR",
       "payments_accepted": [
         {
           "card": "CREDITCARD",
           "card_code": "VISA"
         },
         {
           "card": "CREDITCARD",
           "card_code": "MASTERCARD"
         },
         {
           "card": "CREDITCARD",
           "card_code": "AMERICAN_EXPRESS"
         }
       ]
     },
     "conversion_rate": {
       "conversion_rate": 0.0111,
       "from": "RUB",
       "to": "EUR",
       "conversion_time": "2025-05-22T13:06:04+02:00"
     },
     "excesses": {
       "CDW": {
         "amount": 94025.61,
         "currency": "RUB"
       },
       "THW": {
         "amount": 94025.61,
         "currency": "RUB"
       }
     }
   },
   "rental_terms": {
     "language": "en",
     "paragraph": [
       {
         "title": "Driver Age",
         "text": [
           "The minumum age of the driver is 19 years old.",
           "For those drivers between 19 and 24 years old, a \"Young Driver fee\" will be applied.",
           "The \"Young Driver fee\" is not included in the price of the car rental. This must be payed in local currency at the car rental office.",
           "The maximum age of the driver is 70 years old."
         ]
       },
       {
         "title": "Driving license",
         "text": [
           "When picking up the vehicle, the driver must show their own original driving license, which must be at least one-year old and currently valid.",
           "A currently valid International Driving License (IDL) is required, in the event the driving license is not printed in Roman script (for example in Arabic, Greek, Russian, Chinese, etc.).",
           "The International Driving License must be accompanied by the original driver's driving license."
         ]
       },
       {
         "title": "ID card",
         "text": [
           "If the car rental is made in a country belonging to the European Union:",
           "- A valid ID card for the country in which the car is rented, will be required.",
           "- For the citizens of the countries NOT belonging to the European Union, besides an ID card, a currently valid passport will be required as well.",
           "",
           "If the car rental is made in a country NOT belonging to the European Union:",
           "- A valid ID card for the country in which the car is rented, will be required.",
           "- For those citizens NOT having the residence in the country where the car rental is made, besides an ID card, a currently valid passport will be required as well.",
           "The documents must be the original ones, not deteriorated, readable and currently valid."
         ]
       },
       {
         "title": "Inclusive insurances",
         "text": [
           "Collision Damage Waiver (CDW):",
           "This protection will be applied to all the authorized drivers. It partially covers the potential damages to the vehicle and it is subjected to the terms of the car rental contract. Instead of the total cost, the driver will be responsible only for the first fraction, called deductible.",
           "",
           "Theft Protection (TP):",
           "This protection limits driver's responsability for those costs arising from the theft or attempted theft, but it does not cover the loss of personal properties. The responsability will correspond to the amount of the deductible, which is subjected to the terms of the car rental contract.",
           "",
           "Third-party liability insurance:",
           "This insurance covers the damages to third parties following an accident caused by the driver, excluding the rented car itself."
         ]
       },
       {
         "title": "Road Assistance",
         "text": [
           "Road assistance is guaranteed 24/7 and it is included in the price.",
           "In case Road assistance is needed as a result of a breakdown caused by the driver, the cost related to this will be charged to the driver himself."
         ]
       },
       {
         "title": "Taxes included in the price",
         "text": [
           "Value Added Tax (VAT).",
           "Airport/Railway Station Taxes."
         ]
       },
       {
         "title": "Fuel Policy",
         "text": [
           "Full/Full:",
           "The car will be given fully fuelled and it must be returned with the tank full of gas.",
           "In case the driver does not return the car with the tank full of gas, the missing part of the fuel will be charged, plus a penal equal to the cost on Europcar's current list at the moment of the drop off."
         ]
       },
       {
         "title": "Mileage",
         "text": [
           "Цена включает неограниченный пробег."
         ]
       },
       {
         "title": "Crossing borders",
         "text": [
           "Crossing borders is NOT allowed."
         ]
       },
       {
         "title": "Payment Methods",
         "text": [
           "When you pick up the car, you must bring with you a credit card in the name of the main driver with the name and the surname printed on it. This will be used to handle the deposit and the final payment.",
           "",
           "[Credit cards]",
           "Credit cards accepted at the car rental desk: Visa, Mastercard, American Express, Diners.",
           "The credit card must present the embossed numbers and the PIN code may be requested.",
           "",
           "The following cards WILL NOT be accepted: revolving cards, debit cards, prepaid cards of any type (ex. Postepay, PayPal), Visa Dankort cards, Chinese UnionPay, cash and/or checks.",
           "",
           "For safety reasons, the car rental company will ask you to show a currently valid ID card, which must be of the same nationality of the card used.",
           "",
           "Always check your credit card has sufficient credit at the moment of the pick-up. The authorized amount generally corresponds to the deductible/deposit and to the fuel, but it depends on the vehicle dimensions, the driver's age, the car rental agent, the car rental duration and the drop-off point.",
           "In case the credit card is not valid, or there is no sufficient credit, the car rental agent can refuse to give you the car. In these cases, no refeund is provided."
         ]
       },
       {
         "title": "Deposit amount",
         "text": [
           "At the moment of the pick up of the car, you will be asked to deposit an amount as a guarantee. The amount will be blocked on the credit card in the name of the main driver. Cash, checks or any other types of card will NOT be accepted.",
           "For the Premium and Luxury groups, the car rental company Europcar will ask two credit cards in the name of the main driver or one of the following cards: Visa (Gold or Platinum) Mastercard (Gold or Platinum) American Express (Platinum or Black Centurion) always in the name of the main driver.",
           "This amount will be unblocked at the end of the car rental, where all the conditions are met.",
           "The amount will be blocked on the credit card in the name of the main driver, through a pre-authorization request. The amount of the deposit will be equal to € 300.00 (or £ 250.00 or the equivalent in local currency of the country where the car rental is made) plus eventual extras o services purchased and not prepaid online."
         ]
       },
       {
         "title": "Local Taxes",
         "text": [
           "The damages to the car will be charged by the car rental company at the moment of the drop off, as well as a local tax, which has to be added to the amount of the deductible withheld.",
           "In case of tickets/fines, the driver will have to pay a local tax, which has to be added to the amount of the ticket/fine."
         ]
       },
       {
         "title": "Pick up",
         "text": [
           "The vechicle must be picked up at the starting time agreed during the booking process.",
           "After that time, the car rental company will not guarantee the availability of the car at the car rental station.",
           "We invite you to always inform the car rental station in case of delay."
         ]
       },
       {
         "title": "Drop off",
         "text": [
           "The rented car must be dropped off on the day and at the time agreed in the car rental contract.",
           "In case of further delay, the car rental company must be informed and you can ask for the eventual additional costs.",
           "No refund is provided in case the car is returned before the date agreed in the car rental contract.",
           "",
           "The vehicles are delivered externally and internally clean and they must be returned in the same condition. Otherwise the costs related to the washing of the vehicle will be proportionally charged."
         ]
       },
       {
         "title": "Vehicle Group",
         "text": [
           "The vehicle in the image and the models on the list are the most commonly used by our car rental partners.",
           "We cannot guarantee that brand and model of the vehicle will be the same of the vehicle viewed on our website.."
         ]
       },
       {
         "title": "Voucher",
         "text": [
           "At the arrival at the car rental office, you will be asked to show the voucher.",
           "Attention: Rentalup takes no responsability for any surcharges in the case, at the moment of the pick up, the voucher is not shown to the car rental agent. In these cases NO refund of the advance payment will be provided."
         ]
       },
       {
         "title": "Extras",
         "text": [
           "Optional accessories and extras must be requested during the online booking process or directly at the desk of the car rental office. These are not included in the price of car rental and must be paid at the car rental desk.",
           "The prices are directly handled by the car rental company, which reserves its right of modification without forewarning.",
           "Optional accessories and special allocations are subject to availability, which can be confirmed only by the car rental station."
         ]
       },
       {
         "title": "Out of hour surcharge",
         "text": [
           "For the pick-ups and drop-offs during the closing time of the car rental station, it is necessary to contact the car rental office beforehand. If the service is confirmed, this will involve the payment of a surcharge .",
           "We invite you to always inform the car rental station in case of delay, so the staff can wait for your arrival."
         ]
       },
       {
         "title": "Exchange rate",
         "text": [
           "All rates shown in EUR have been converted from the currency RUB; the exchange rate used is the one in effect on 2025-05-22 and is equivalent to 1 RUB = 0.0111 EUR.",
           "All the payments that will be made at the counter will be paid in local currency. As a result of possible monetary fluctuations, these amounts could deviate from what is shown EUR during the booking phase."
         ]
       }
     ]
   },
   "special_equipments": [
     {
       "equipment_type": "equipment",
       "code": "CSB",
       "name": "Child seat (1-3 years old)",
       "amount": 1,
       "total_price": {
         "amount": 1409.44,
         "currency": "RUB"
       },
       "included_in_rate": false,
       "tax_included": true
     },
     {
       "equipment_type": "equipment",
       "code": "CSI",
       "name": "Child seat (0-12 months)",
       "amount": 1,
       "total_price": {
         "amount": 1409.44,
         "currency": "RUB"
       },
       "included_in_rate": false,
       "tax_included": true
     },
     {
       "equipment_type": "equipment",
       "code": "CST",
       "name": "Child seat (4-7 years old)",
       "amount": 1,
       "total_price": {
         "amount": 939.32,
         "currency": "RUB"
       },
       "included_in_rate": false,
       "tax_included": true
     }
   ],
   "services": [
     {
       "equipment_type": "service",
       "code": "ADD",
       "name": "Additional driver",
       "amount": 1,
       "total_price": {
         "amount": 939.32,
         "currency": "RUB"
       },
       "included_in_rate": false,
       "tax_included": true
     },
     {
       "equipment_type": "service",
       "code": "YOU",
       "name": "Young driver",
       "amount": 1,
       "total_price": {
         "amount": 2350.64,
         "currency": "RUB"
       },
       "included_in_rate": false,
       "tax_included": true
     }
   ],
   "insurance": [
     {
       "@type": "Partner\\entity\\equipment\\GenericSpecialEquipment",
       "equipment_type": "insurance",
       "code": "RSA",
       "name": "greenway.RSA.name",
       "description": "greenway.RSA.description",
       "day_price": 0,
       "max_price": 0,
       "amount": 1,
       "max_amount": 0,
       "total_price": {
         "@type": "Partner\\entity\\Charge",
         "amount": 657.24,
         "currency": "RUB"
       },
       "included_in_rate": false,
       "tax_included": true
     },
     {
       "@type": "Partner\\entity\\equipment\\GenericSpecialEquipment",
       "equipment_type": "insurance",
       "code": "PREMIUM",
       "name": "greenway.PREMIUM.name",
       "description": "greenway.PREMIUM.description",
       "day_price": 0,
       "max_price": 0,
       "amount": 1,
       "max_amount": 0,
       "total_price": {
         "@type": "Partner\\entity\\Charge",
         "amount": 2999.42,
         "currency": "RUB"
       },
       "included_in_rate": false,
       "tax_included": true
     },
     {
       "@type": "Partner\\entity\\equipment\\GenericSpecialEquipment",
       "equipment_type": "insurance",
       "code": "MEDIUM",
       "name": "greenway.MEDIUM.name",
       "description": "greenway.MEDIUM.description",
       "day_price": 0,
       "max_price": 0,
       "amount": 1,
       "max_amount": 0,
       "total_price": {
         "@type": "Partner\\entity\\Charge",
         "amount": 1965.14,
         "currency": "RUB"
       },
       "included_in_rate": false,
       "tax_included": true
     }
   ]
 },
 "total_charge": 12829.88,
 "details": {
   "id": "8b502d20-36ea-11f0-afdf-517aef367613:3219917fd00f41e430bc90c32591bab8:2ed440265c5e4069749409dccff57ff9",
   "on_request": false,
   "geo": {
     "pick_up_location": {
       "address": {
         "address_locality": "SCHIPHOL",
         "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
       },
       "geo": {
         "properties": {
           "location_type": "INTERMINAL"
         },
         "geometry": {
           "coordinates": [
             52.3081,
             4.7619
           ]
         }
       }
     },
     "drop_off_location": {
       "address": {
         "address_locality": "SCHIPHOL",
         "street_address": "AMSTERDAM AIRPORT SCHIPHOL AANKOMSTPASSAGE 10"
       },
       "geo": {
         "properties": {
           "location_type": "INTERMINAL",
           "key_box": false
         },
         "geometry": {
           "coordinates": [
             52.3081,
             4.7619
           ]
         }
       }
     }
   },
   "rental_rate": {
     "rate_distance": {
       "dist_unit_name": "km",
       "unlimited": true,
       "quantity": 0,
       "vehicle_period_unit_name": "rentalperiod"
     },
     "fuel_policy": "fullfull",
     "cancellation_policies": [
       {
         "amount": 0,
         "currency": "EUR",
         "end_date": "2025-05-25T10:00:00+02:00"
       },
       {
         "amount": 131.858953,
         "currency": "EUR",
         "start_date": "2025-05-25T10:00:00+02:00"
       }
     ],
     "total_charge": {
       "amount": 131.858953,
       "currency": "EUR"
     },
     "advance_charge": {
       "amount": 131.858953,
       "currency": "EUR"
     },
     "deposit_charge": {
       "amount": 800,
       "currency": "EUR",
       "payments_accepted": [
         {
           "card": "CREDITCARD",
           "card_code": "VISA"
         },
         {
           "card": "CREDITCARD",
           "card_code": "MASTERCARD"
         },
         {
           "card": "CREDITCARD",
           "card_code": "AMERICAN_EXPRESS"
         }
       ]
     },
     "conversion_rate": {
       "conversion_rate": 0.0111,
       "from": "RUB",
       "to": "EUR",
       "conversion_time": "2025-05-22T13:06:04+02:00"
     },
     "excesses": {
       "CDW": {
         "amount": 94025.61,
         "currency": "RUB"
       },
       "THW": {
         "amount": 94025.61,
         "currency": "RUB"
       }
     }
   },
   "rental_terms": {
     "language": "en",
     "paragraph": [
       {
         "title": "Driver Age",
         "text": [
           "The minumum age of the driver is 19 years old.",
           "For those drivers between 19 and 24 years old, a \"Young Driver fee\" will be applied.",
           "The \"Young Driver fee\" is not included in the price of the car rental. This must be payed in local currency at the car rental office.",
           "The maximum age of the driver is 70 years old."
         ]
       },
       {
         "title": "Driving license",
         "text": [
           "When picking up the vehicle, the driver must show their own original driving license, which must be at least one-year old and currently valid.",
           "A currently valid International Driving License (IDL) is required, in the event the driving license is not printed in Roman script (for example in Arabic, Greek, Russian, Chinese, etc.).",
           "The International Driving License must be accompanied by the original driver's driving license."
         ]
       },
       {
         "title": "ID card",
         "text": [
           "If the car rental is made in a country belonging to the European Union:",
           "- A valid ID card for the country in which the car is rented, will be required.",
           "- For the citizens of the countries NOT belonging to the European Union, besides an ID card, a currently valid passport will be required as well.",
           "",
           "If the car rental is made in a country NOT belonging to the European Union:",
           "- A valid ID card for the country in which the car is rented, will be required.",
           "- For those citizens NOT having the residence in the country where the car rental is made, besides an ID card, a currently valid passport will be required as well.",
           "The documents must be the original ones, not deteriorated, readable and currently valid."
         ]
       },
       {
         "title": "Inclusive insurances",
         "text": [
           "Collision Damage Waiver (CDW):",
           "This protection will be applied to all the authorized drivers. It partially covers the potential damages to the vehicle and it is subjected to the terms of the car rental contract. Instead of the total cost, the driver will be responsible only for the first fraction, called deductible.",
           "",
           "Theft Protection (TP):",
           "This protection limits driver's responsability for those costs arising from the theft or attempted theft, but it does not cover the loss of personal properties. The responsability will correspond to the amount of the deductible, which is subjected to the terms of the car rental contract.",
           "",
           "Third-party liability insurance:",
           "This insurance covers the damages to third parties following an accident caused by the driver, excluding the rented car itself."
         ]
       },
       {
         "title": "Road Assistance",
         "text": [
           "Road assistance is guaranteed 24/7 and it is included in the price.",
           "In case Road assistance is needed as a result of a breakdown caused by the driver, the cost related to this will be charged to the driver himself."
         ]
       },
       {
         "title": "Taxes included in the price",
         "text": [
           "Value Added Tax (VAT).",
           "Airport/Railway Station Taxes."
         ]
       },
       {
         "title": "Fuel Policy",
         "text": [
           "Full/Full:",
           "The car will be given fully fuelled and it must be returned with the tank full of gas.",
           "In case the driver does not return the car with the tank full of gas, the missing part of the fuel will be charged, plus a penal equal to the cost on Europcar's current list at the moment of the drop off."
         ]
       },
       {
         "title": "Mileage",
         "text": [
           "Цена включает неограниченный пробег."
         ]
       },
       {
         "title": "Crossing borders",
         "text": [
           "Crossing borders is NOT allowed."
         ]
       },
       {
         "title": "Payment Methods",
         "text": [
           "When you pick up the car, you must bring with you a credit card in the name of the main driver with the name and the surname printed on it. This will be used to handle the deposit and the final payment.",
           "",
           "[Credit cards]",
           "Credit cards accepted at the car rental desk: Visa, Mastercard, American Express, Diners.",
           "The credit card must present the embossed numbers and the PIN code may be requested.",
           "",
           "The following cards WILL NOT be accepted: revolving cards, debit cards, prepaid cards of any type (ex. Postepay, PayPal), Visa Dankort cards, Chinese UnionPay, cash and/or checks.",
           "",
           "For safety reasons, the car rental company will ask you to show a currently valid ID card, which must be of the same nationality of the card used.",
           "",
           "Always check your credit card has sufficient credit at the moment of the pick-up. The authorized amount generally corresponds to the deductible/deposit and to the fuel, but it depends on the vehicle dimensions, the driver's age, the car rental agent, the car rental duration and the drop-off point.",
           "In case the credit card is not valid, or there is no sufficient credit, the car rental agent can refuse to give you the car. In these cases, no refeund is provided."
         ]
       },
       {
         "title": "Deposit amount",
         "text": [
           "At the moment of the pick up of the car, you will be asked to deposit an amount as a guarantee. The amount will be blocked on the credit card in the name of the main driver. Cash, checks or any other types of card will NOT be accepted.",
           "For the Premium and Luxury groups, the car rental company Europcar will ask two credit cards in the name of the main driver or one of the following cards: Visa (Gold or Platinum) Mastercard (Gold or Platinum) American Express (Platinum or Black Centurion) always in the name of the main driver.",
           "This amount will be unblocked at the end of the car rental, where all the conditions are met.",
           "The amount will be blocked on the credit card in the name of the main driver, through a pre-authorization request. The amount of the deposit will be equal to € 300.00 (or £ 250.00 or the equivalent in local currency of the country where the car rental is made) plus eventual extras o services purchased and not prepaid online."
         ]
       },
       {
         "title": "Local Taxes",
         "text": [
           "The damages to the car will be charged by the car rental company at the moment of the drop off, as well as a local tax, which has to be added to the amount of the deductible withheld.",
           "In case of tickets/fines, the driver will have to pay a local tax, which has to be added to the amount of the ticket/fine."
         ]
       },
       {
         "title": "Pick up",
         "text": [
           "The vechicle must be picked up at the starting time agreed during the booking process.",
           "After that time, the car rental company will not guarantee the availability of the car at the car rental station.",
           "We invite you to always inform the car rental station in case of delay."
         ]
       },
       {
         "title": "Drop off",
         "text": [
           "The rented car must be dropped off on the day and at the time agreed in the car rental contract.",
           "In case of further delay, the car rental company must be informed and you can ask for the eventual additional costs.",
           "No refund is provided in case the car is returned before the date agreed in the car rental contract.",
           "",
           "The vehicles are delivered externally and internally clean and they must be returned in the same condition. Otherwise the costs related to the washing of the vehicle will be proportionally charged."
         ]
       },
       {
         "title": "Vehicle Group",
         "text": [
           "The vehicle in the image and the models on the list are the most commonly used by our car rental partners.",
           "We cannot guarantee that brand and model of the vehicle will be the same of the vehicle viewed on our website.."
         ]
       },
       {
         "title": "Voucher",
         "text": [
           "At the arrival at the car rental office, you will be asked to show the voucher.",
           "Attention: Rentalup takes no responsability for any surcharges in the case, at the moment of the pick up, the voucher is not shown to the car rental agent. In these cases NO refund of the advance payment will be provided."
         ]
       },
       {
         "title": "Extras",
         "text": [
           "Optional accessories and extras must be requested during the online booking process or directly at the desk of the car rental office. These are not included in the price of car rental and must be paid at the car rental desk.",
           "The prices are directly handled by the car rental company, which reserves its right of modification without forewarning.",
           "Optional accessories and special allocations are subject to availability, which can be confirmed only by the car rental station."
         ]
       },
       {
         "title": "Out of hour surcharge",
         "text": [
           "For the pick-ups and drop-offs during the closing time of the car rental station, it is necessary to contact the car rental office beforehand. If the service is confirmed, this will involve the payment of a surcharge .",
           "We invite you to always inform the car rental station in case of delay, so the staff can wait for your arrival."
         ]
       },
       {
         "title": "Exchange rate",
         "text": [
           "All rates shown in EUR have been converted from the currency RUB; the exchange rate used is the one in effect on 2025-05-22 and is equivalent to 1 RUB = 0.0111 EUR.",
           "All the payments that will be made at the counter will be paid in local currency. As a result of possible monetary fluctuations, these amounts could deviate from what is shown EUR during the booking phase."
         ]
       }
     ]
   },
   "special_equipments": [
     {
       "equipment_type": "equipment",
       "code": "CSB",
       "name": "Child seat (1-3 years old)",
       "amount": 1,
       "total_price": {
         "amount": 1409.44,
         "currency": "RUB"
       },
       "included_in_rate": false,
       "tax_included": true
     },
     {
       "equipment_type": "equipment",
       "code": "CSI",
       "name": "Child seat (0-12 months)",
       "amount": 1,
       "total_price": {
         "amount": 1409.44,
         "currency": "RUB"
       },
       "included_in_rate": false,
       "tax_included": true
     },
     {
       "equipment_type": "equipment",
       "code": "CST",
       "name": "Child seat (4-7 years old)",
       "amount": 1,
       "total_price": {
         "amount": 939.32,
         "currency": "RUB"
       },
       "included_in_rate": false,
       "tax_included": true
     }
   ],
   "services": [
     {
       "equipment_type": "service",
       "code": "ADD",
       "name": "Additional driver",
       "amount": 1,
       "total_price": {
         "amount": 939.32,
         "currency": "RUB"
       },
       "included_in_rate": false,
       "tax_included": true
     },
     {
       "equipment_type": "service",
       "code": "YOU",
       "name": "Young driver",
       "amount": 1,
       "total_price": {
         "amount": 2350.64,
         "currency": "RUB"
       },
       "included_in_rate": false,
       "tax_included": true
     }
   ],
   "insurance": [
     {
       "@type": "Partner\\entity\\equipment\\GenericSpecialEquipment",
       "equipment_type": "insurance",
       "code": "RSA",
       "name": "greenway.RSA.name",
       "description": "greenway.RSA.description",
       "day_price": 0,
       "max_price": 0,
       "amount": 1,
       "max_amount": 0,
       "total_price": {
         "@type": "Partner\\entity\\Charge",
         "amount": 657.24,
         "currency": "RUB"
       },
       "included_in_rate": false,
       "tax_included": true
     },
     {
       "@type": "Partner\\entity\\equipment\\GenericSpecialEquipment",
       "equipment_type": "insurance",
       "code": "PREMIUM",
       "name": "greenway.PREMIUM.name",
       "description": "greenway.PREMIUM.description",
       "day_price": 0,
       "max_price": 0,
       "amount": 1,
       "max_amount": 0,
       "total_price": {
         "@type": "Partner\\entity\\Charge",
         "amount": 2999.42,
         "currency": "RUB"
       },
       "included_in_rate": false,
       "tax_included": true
     },
     {
       "@type": "Partner\\entity\\equipment\\GenericSpecialEquipment",
       "equipment_type": "insurance",
       "code": "MEDIUM",
       "name": "greenway.MEDIUM.name",
       "description": "greenway.MEDIUM.description",
       "day_price": 0,
       "max_price": 0,
       "amount": 1,
       "max_amount": 0,
       "total_price": {
         "@type": "Partner\\entity\\Charge",
         "amount": 1965.14,
         "currency": "RUB"
       },
       "included_in_rate": false,
       "tax_included": true
     }
   ]
 },
 "paid_at": null,
 "paid_log": null,
 "cancel_amount": 0,
 "is_refund": null,
 "amount": 12829.88
}
 

Запрос      

POST api/bookings

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры Body

search_id   string   

Уникальный идентификатор (hash) поискового запроса. Example: 5e630350-b62e-432e-bfba-cc2256db849b

car_id   string   

Идентификатор выбранного ценового предложения. Example: 8b502d20-36ea-11f0-afdf-517aef367613:3219917fd00f41e430bc90c32591bab8:2ed440265c5e4069749409dccff57ff9

name   string   

Имя пользователя (на родном языке). Example: Иван

name_en   string   

Имя пользователя (на английском языке). Example: Ivan

surname   string   

Фамилия пользователя (на родном языке). Example: Иванов

surname_en   string   

Фамилия пользователя (на английском языке). Example: Ivanov

birth_country   string   

Двухбуквенный код страны рождения пользователя. Example: RU

residence_city   string   

Город проживания пользователя. Example: Москва

residence_country   string   

Двухбуквенный код страны проживания пользователя. Example: RU

residence_address   string   

Адрес проживания пользователя. Example: ул. Тверская, д. 1

email   string   

Адрес электронной почты пользователя. Example: example@mail.com

phone   string   

Номер телефона пользователя. Example: +79001234567

birth_date   string   

Дата рождения пользователя в формате yyyy-mm-dd. Example: 1990-01-01

Информация о бронировании

Предоставляет информацию о существующем бронировании на основе hash, полученном при создании бронирования. Возвращает массив, аналогичный тому, что возвращается при создании бронирования.

Пример запроса:
curl --request GET \
    --get "https://admin.rently.travel/api/bookings/46ll3MZwClcOWsnqAh27M2KtCI7ieAYO-682f05579757e" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/bookings/46ll3MZwClcOWsnqAh27M2KtCI7ieAYO-682f05579757e"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/bookings/46ll3MZwClcOWsnqAh27M2KtCI7ieAYO-682f05579757e';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/bookings/46ll3MZwClcOWsnqAh27M2KtCI7ieAYO-682f05579757e'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Пример ответа (404):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "message": "No query results for model [App\\Models\\Booking] 46ll3MZwClcOWsnqAh27M2KtCI7ieAYO-682f05579757e"
}
 

Запрос      

GET api/bookings/{booking_hash}

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры URL

booking_hash   string  optional  

string. Hash строка, которая была получена при создании бронирования. Example: 46ll3MZwClcOWsnqAh27M2KtCI7ieAYO-682f05579757e

Ссылка для оплаты

Метод возвращает ссылку, по которой можно произвести оплату сделанного бронирования.

Пример запроса:
curl --request POST \
    "https://admin.rently.travel/api/bookings/46ll3MZwClcOWsnqAh27M2KtCI7ieAYO-682f05579757e/payments" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/bookings/46ll3MZwClcOWsnqAh27M2KtCI7ieAYO-682f05579757e/payments"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/bookings/46ll3MZwClcOWsnqAh27M2KtCI7ieAYO-682f05579757e/payments';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/bookings/46ll3MZwClcOWsnqAh27M2KtCI7ieAYO-682f05579757e/payments'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()

Пример ответа (200):


{
    "data": [
        {
            "url": "https://securepayments.tinkoff.ru/P3ZblmWJ"
        }
    ]
}
 

Запрос      

POST api/bookings/{booking_hash}/payments

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры URL

booking_hash   string  optional  

string. Hash строка, которая была получена при создании бронирования. Example: 46ll3MZwClcOWsnqAh27M2KtCI7ieAYO-682f05579757e

Информация о бронировании

Предоставляет информацию о существующем бронировании на основе номера ваучера из бронирования. Возвращает массив, аналогичный тому, что возвращается при создании бронирования.

Пример запроса:
curl --request GET \
    --get "https://admin.rently.travel/api/exists-bookings/example@mail.com:A5ET18686201" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/exists-bookings/example@mail.com:A5ET18686201"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/exists-bookings/example@mail.com:A5ET18686201';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/exists-bookings/example@mail.com:A5ET18686201'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Пример ответа (500):

Show headers
cache-control: no-cache, private
content-type: application/json
vary: Origin
 

{
    "message": "Server Error"
}
 

Запрос      

GET api/exists-bookings/{bookingHash}

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры URL

bookingHash   string  optional  

string. Уникальная строка из ваучера бронирования. Example: example@mail.com:A5ET18686201

Отмена бронирования

Осуществляет отмену существующего бронирования на основе номера ваучера из бронирования. Возвращает только код ответа.

Пример запроса:
curl --request DELETE \
    "https://admin.rently.travel/api/exists-bookings/example@mail.com:A5ET18686201" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/exists-bookings/example@mail.com:A5ET18686201"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/exists-bookings/example@mail.com:A5ET18686201';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/exists-bookings/example@mail.com:A5ET18686201'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Запрос      

DELETE api/exists-bookings/{bookingHash}

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры URL

bookingHash   string  optional  

string. Уникальная строка из ваучера бронирования. Example: example@mail.com:A5ET18686201

Регистрация пользователя

Создаёт нового пользователя в системе.

Пример запроса:
curl --request POST \
    "https://admin.rently.travel/api/registration" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"example@mail.com\",
    \"password\": \"mY%Super_SeCret#PassWord!\"
}"
const url = new URL(
    "https://admin.rently.travel/api/registration"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "example@mail.com",
    "password": "mY%Super_SeCret#PassWord!"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/registration';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'email' => 'example@mail.com',
            'password' => 'mY%Super_SeCret#PassWord!',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/registration'
payload = {
    "email": "example@mail.com",
    "password": "mY%Super_SeCret#PassWord!"
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Пример ответа (200):


{
    "data": [
        {
            "status": true
        }
    ]
}
 

Запрос      

POST api/registration

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры Body

email   string   

Адрес электронной почты. Должен быть уникальным и иметь корректный формат. Example: example@mail.com

password   string   

Пароль. Минимум 6 символов. Example: mY%Super_SeCret#PassWord!

Аутентификация пользователя

Аутентифицирует существующего пользователя в системе. Возвращает аутентификационный токен.

Пример запроса:
curl --request POST \
    "https://admin.rently.travel/api/auth" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"example@mail.com\",
    \"password\": \"mY%Super_SeCret#PassWord!\"
}"
const url = new URL(
    "https://admin.rently.travel/api/auth"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "example@mail.com",
    "password": "mY%Super_SeCret#PassWord!"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/auth';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'email' => 'example@mail.com',
            'password' => 'mY%Super_SeCret#PassWord!',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/auth'
payload = {
    "email": "example@mail.com",
    "password": "mY%Super_SeCret#PassWord!"
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Пример ответа (200):


{
    "data": [
        {
            "token": "1|X6qxyuDPCgoP3NhrPx1FJ5zNHskDcZ3XkIyeo9Ro"
        }
    ]
}
 

Запрос      

POST api/auth

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры Body

email   string   

Адрес электронной почты. Example: example@mail.com

password   string   

Пароль. Example: mY%Super_SeCret#PassWord!

Подтверждение электронной почты

Подтверждает адрес электронной почты с помощью аутентификационного токена.

Пример запроса:
curl --request POST \
    "https://admin.rently.travel/api/email-verify" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/email-verify"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/email-verify';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/email-verify'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()

Пример ответа (200):


{
    "data": [
        {
            "status": true
        }
    ]
}
 

Запрос      

POST api/email-verify

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Восстановление пароля

Отправляет пользователю на указанную электронную почту ссылку для восстановления забытого пароля. Возвращаемый результат отсутствует.

Пример запроса:
curl --request POST \
    "https://admin.rently.travel/api/forgot-password" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"example@email.com\"
}"
const url = new URL(
    "https://admin.rently.travel/api/forgot-password"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "example@email.com"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/forgot-password';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'email' => 'example@email.com',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/forgot-password'
payload = {
    "email": "example@email.com"
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Запрос      

POST api/forgot-password

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры Body

email   string   

Адрес электронной почты пользователя, на который будет отправлена ссылка для сброса пароля. Example: example@email.com

Обновление пароля

Обновляет пароль существующего пользователя в системе на основании выданного ранее аутентификационного токена.

Пример запроса:
curl --request POST \
    "https://admin.rently.travel/api/reset-password" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"password\": \"newpassword123\",
    \"token\": \"1f7307c56e1b4a92be768cd1c5c5db79\"
}"
const url = new URL(
    "https://admin.rently.travel/api/reset-password"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "password": "newpassword123",
    "token": "1f7307c56e1b4a92be768cd1c5c5db79"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/reset-password';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'password' => 'newpassword123',
            'token' => '1f7307c56e1b4a92be768cd1c5c5db79',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/reset-password'
payload = {
    "password": "newpassword123",
    "token": "1f7307c56e1b4a92be768cd1c5c5db79"
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Пример ответа (200):


{
    "data": [
        {
            "status": true
        }
    ]
}
 

Запрос      

POST api/reset-password

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры Body

password   string   

Новый пароль. Минимум 6 символов. Example: newpassword123

token   string   

Токен сброса пароля. Указанный токен должен существовать в системе. Example: 1f7307c56e1b4a92be768cd1c5c5db79

Профиль пользователя

Возвращает массив значений из профиля текущего аутентифицированного пользователя.

Пример запроса:
curl --request GET \
    --get "https://admin.rently.travel/api/profile" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/profile"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/profile';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/profile'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Пример ответа (200):


{
 "data": [
     {
           "id": 117,
           "email": "example@email.com",
           "role": "user",
           "first_name": "Иван",
           "first_name_en": "Ivan",
           "last_name": "Иванов",
           "last_name_en": "Ivanov",
           "city": "Москва",
           "address": "ул. Тверская, д. 1",
           "phone": "+79001234567",
           "birthday": "1990-01-01",
     }
 ]
}
 

Запрос      

GET api/profile

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Обновление профиля пользователя

Обновляет данные в профиле текущего аутентифицированного пользователя. Возвращает обновлённый массив значений из профиля текущего аутентифицированного пользователя.

Пример запроса:
curl --request PATCH \
    "https://admin.rently.travel/api/profile" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/profile"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "PATCH",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/profile';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/profile'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PATCH', url, headers=headers)
response.json()

Пример ответа (200):


{
 "data": [
     {
           "id": 117,
           "email": "example@email.com",
           "role": "user",
           "first_name": "Иван",
           "first_name_en": "Ivan",
           "last_name": "Иванов",
           "last_name_en": "Ivanov",
           "city": "Москва",
           "address": "ул. Арбат, д. 12",
           "phone": "+79001234567",
           "birthday": "1990-05-15",
     }
 ]
}
 

Запрос      

PATCH api/profile

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Выход из системы

Завершает сессию пользователя, удаляя аутентификационный токен. Возвращаемый результат отсутствует.

Пример запроса:
curl --request DELETE \
    "https://admin.rently.travel/api/logout" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/logout"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/logout';
$response = $client->delete(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/logout'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('DELETE', url, headers=headers)
response.json()

Запрос      

DELETE api/logout

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Список бронирований

Возвращает список бронирований текущего аутентифицированного пользователя.

Пример запроса:
curl --request GET \
    --get "https://admin.rently.travel/api/bookings" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/bookings"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/bookings';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/bookings'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Пример ответа (200):


{
 "data": [
 {
   "id": 11,
   "link_pathname": "/bookings/example@mail.com:A5ET18671575"
   "partner_number": "A5ET18671575",
   "pick_up_location": "Amsterdam Schiphol Aeroporto (AMS)",
   "drop_off_location": "Amsterdam Schiphol Aeroporto (AMS)",
   "period": {
     "pick_up_date": "2025-06-25T10:00:00+02:00",
     "drop_off_date": "2025-06-27T10:00:00+02:00"
   },
   "vehicle": {
     "id": "e14454eb-e738-41fd-b76d-3f0cc879f3d3",
     "name": "OPEL CORSA",
     "acriss": "ECMR"
   },
   "is_refund": false,
   "created_at": "2025-05-13 14:22:13"
 }
 ]
}
 

Запрос      

GET api/bookings

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

API v2: Пользователи

Требуется авторизация.

Регистрация пользователя

Создаёт нового пользователя в системе и отправляет письмо для подтверждения почты.

Пример запроса:
curl --request POST \
    "https://admin.rently.travel/api/v2/registration" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"example@mail.com\",
    \"password\": \"mY%Super_SeCret#PassWord!\"
}"
const url = new URL(
    "https://admin.rently.travel/api/v2/registration"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "example@mail.com",
    "password": "mY%Super_SeCret#PassWord!"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/v2/registration';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'email' => 'example@mail.com',
            'password' => 'mY%Super_SeCret#PassWord!',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/v2/registration'
payload = {
    "email": "example@mail.com",
    "password": "mY%Super_SeCret#PassWord!"
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Пример ответа (201):


{
    "data": {
        "status": true
    }
}
 

Запрос      

POST api/v2/registration

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры Body

email   string   

Адрес электронной почты. Должен быть уникальным и иметь корректный формат. Example: example@mail.com

password   string   

Пароль. Минимум 8 символов. Example: mY%Super_SeCret#PassWord!

Аутентификация пользователя

Вход в систему и получение токена авторизации.

Пример запроса:
curl --request POST \
    "https://admin.rently.travel/api/v2/auth" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"example@mail.com\",
    \"password\": \"mY%Super_SeCret#PassWord!\"
}"
const url = new URL(
    "https://admin.rently.travel/api/v2/auth"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "example@mail.com",
    "password": "mY%Super_SeCret#PassWord!"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/v2/auth';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'email' => 'example@mail.com',
            'password' => 'mY%Super_SeCret#PassWord!',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/v2/auth'
payload = {
    "email": "example@mail.com",
    "password": "mY%Super_SeCret#PassWord!"
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Пример ответа (200):


{
    "data": {
        "token": "1|sometokenstring123"
    }
}
 

Пример ответа (403):


{
    "errors": {
        "email": [
            "Подтвердите E-Mail адрес."
        ]
    }
}
 

Пример ответа (403):


{
    "errors": {
        "email": [
            "Аккаунт отключён администратором."
        ]
    }
}
 

Пример ответа (422):


{
    "errors": {
        "email": [
            "Некорректные данные."
        ]
    }
}
 

Запрос      

POST api/v2/auth

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры Body

email   string   

Адрес электронной почты. Example: example@mail.com

password   string   

Пароль. Example: mY%Super_SeCret#PassWord!

Подтверждение электронной почты

Подтверждает адрес электронной почты на основе полученного токена.

Пример запроса:
curl --request POST \
    "https://admin.rently.travel/api/v2/verify" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"token\": \"qMF8XUvHSIhf\"
}"
const url = new URL(
    "https://admin.rently.travel/api/v2/verify"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "token": "qMF8XUvHSIhf"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/v2/verify';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'token' => 'qMF8XUvHSIhf',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/v2/verify'
payload = {
    "token": "qMF8XUvHSIhf"
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Пример ответа (200):


{
    "data": {
        "status": true
    }
}
 

Пример ответа (400):


{
    "status": false,
    "message": "Указанная электронная почта уже подтверждена."
}
 

Пример ответа (404):


{
    "status": false,
    "message": "Указан неверный или просроченный токен."
}
 

Запрос      

POST api/v2/verify

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры Body

token   string   

Токен подтверждения. Example: qMF8XUvHSIhf

Смена пароля

requires authentication

Меняет пароль авторизованного пользователя на новый.

Пример запроса:
curl --request POST \
    "https://admin.rently.travel/api/v2/change" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"password\": \"My$New%SuPer&SecrET@Pa$$w0Rd27\"
}"
const url = new URL(
    "https://admin.rently.travel/api/v2/change"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "password": "My$New%SuPer&SecrET@Pa$$w0Rd27"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/v2/change';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'password' => 'My$New%SuPer&SecrET@Pa$$w0Rd27',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/v2/change'
payload = {
    "password": "My$New%SuPer&SecrET@Pa$$w0Rd27"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Пример ответа (200):


{
    "data": {
        "status": true
    }
}
 

Запрос      

POST api/v2/change

Заголовки

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры Body

password   string   

Новый пароль. Минимум 8 символов. Example: My$New%SuPer&SecrET@Pa$$w0Rd27

Восстановление пароля

Отправляет ссылку для сброса пароля на email, если пользователь найден и он не заблокирован.

Пример запроса:
curl --request POST \
    "https://admin.rently.travel/api/v2/forgot" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"email\": \"example@email.com\",
    \"reset_url\": \"https:\\/\\/frontend.example.com\\/reset?token={token}\"
}"
const url = new URL(
    "https://admin.rently.travel/api/v2/forgot"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "email": "example@email.com",
    "reset_url": "https:\/\/frontend.example.com\/reset?token={token}"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/v2/forgot';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'email' => 'example@email.com',
            'reset_url' => 'https://frontend.example.com/reset?token={token}',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/v2/forgot'
payload = {
    "email": "example@email.com",
    "reset_url": "https:\/\/frontend.example.com\/reset?token={token}"
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Пример ответа (204):

Пустой ответ
 

Запрос      

POST api/v2/forgot

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры Body

email   string   

Адрес электронной почты пользователя, на который будет отправлена ссылка для сброса пароля. Example: example@email.com

reset_url   string   

URL-шаблон для frontend-ссылки сброса пароля. Должен содержать плейсхолдер {token}. Example: https://frontend.example.com/reset?token={token}

Сброс пароля

Обновляет пароль пользователя на основе переданного токена.

Пример запроса:
curl --request POST \
    "https://admin.rently.travel/api/v2/reset" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"password\": \"My$New%SuPer&SecrET@Pa$$w0Rd27\",
    \"token\": \"3f2fdf4b-d933-4aab-9d5f-abcde1234567\"
}"
const url = new URL(
    "https://admin.rently.travel/api/v2/reset"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "password": "My$New%SuPer&SecrET@Pa$$w0Rd27",
    "token": "3f2fdf4b-d933-4aab-9d5f-abcde1234567"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/v2/reset';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'password' => 'My$New%SuPer&SecrET@Pa$$w0Rd27',
            'token' => '3f2fdf4b-d933-4aab-9d5f-abcde1234567',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/v2/reset'
payload = {
    "password": "My$New%SuPer&SecrET@Pa$$w0Rd27",
    "token": "3f2fdf4b-d933-4aab-9d5f-abcde1234567"
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Пример ответа (200):


{
    "data": {
        "status": true
    }
}
 

Пример ответа (403):


{
    "status": false,
    "message": "Аккаунт отключен администратором."
}
 

Пример ответа (404):


{
    "status": false,
    "message": "Указан неверный или просроченный токен."
}
 

Запрос      

POST api/v2/reset

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры Body

password   string   

Новый пароль. Минимум 8 символов. Example: My$New%SuPer&SecrET@Pa$$w0Rd27

token   string   

Токен сброса пароля. Указанный токен должен существовать в системе. Example: 3f2fdf4b-d933-4aab-9d5f-abcde1234567

Выход из системы

requires authentication

Удаляет текущий токен доступа пользователя.

Пример запроса:
curl --request POST \
    "https://admin.rently.travel/api/v2/logout" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/v2/logout"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/v2/logout';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/v2/logout'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()

Пример ответа (200):


{
    "data": {
        "status": true
    }
}
 

Запрос      

POST api/v2/logout

Заголовки

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

API v2: Профиль

Профиль пользователя

requires authentication

Возвращает информацию о текущем аутентифицированном пользователе.

Пример запроса:
curl --request GET \
    --get "https://admin.rently.travel/api/v2/profile" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/v2/profile"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/v2/profile';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/v2/profile'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Пример ответа (200):


{
 "data":
  {
     "email": "example@email.com",
     "role": "partner_manager",
     "first_name": "Иван",
     "first_name_en": "Ivan",
     "last_name": "Иванов",
     "last_name_en": "Ivanov",
     "city": "Москва",
     "phone": "+79001234567",
     "birthday": "1990-01-01",
  }
}
 

Запрос      

GET api/v2/profile

Заголовки

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Ответ

Поля ответа

role   string   

Тип пользователя. См. раздел API v2: Enums → UserType

Обновление профиля

requires authentication

Обновляет данные в профиле текущего аутентифицированного пользователя. Возвращает обновлённый массив значений из профиля текущего аутентифицированного пользователя.

Пример запроса:
curl --request PATCH \
    "https://admin.rently.travel/api/v2/profile" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"first_name\": \"Иван\",
    \"first_name_en\": \"Ivan\",
    \"last_name\": \"Иванов\",
    \"last_name_en\": \"Ivanov\",
    \"city\": \"Москва\",
    \"phone\": \"+79001234567\",
    \"birthday\": \"1990-05-15\"
}"
const url = new URL(
    "https://admin.rently.travel/api/v2/profile"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "first_name": "Иван",
    "first_name_en": "Ivan",
    "last_name": "Иванов",
    "last_name_en": "Ivanov",
    "city": "Москва",
    "phone": "+79001234567",
    "birthday": "1990-05-15"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/v2/profile';
$response = $client->patch(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'first_name' => 'Иван',
            'first_name_en' => 'Ivan',
            'last_name' => 'Иванов',
            'last_name_en' => 'Ivanov',
            'city' => 'Москва',
            'phone' => '+79001234567',
            'birthday' => '1990-05-15',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/v2/profile'
payload = {
    "first_name": "Иван",
    "first_name_en": "Ivan",
    "last_name": "Иванов",
    "last_name_en": "Ivanov",
    "city": "Москва",
    "phone": "+79001234567",
    "birthday": "1990-05-15"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('PATCH', url, headers=headers, json=payload)
response.json()

Пример ответа (200):


{
 "data":
  {
     "email": "example@email.com",
     "role": "partner_manager",
     "first_name": "Иван",
     "first_name_en": "Ivan",
     "last_name": "Иванов",
     "last_name_en": "Ivanov",
     "city": "Москва",
     "phone": "+79001234567",
     "birthday": "1990-01-01",
  }
}
 

Запрос      

PATCH api/v2/profile

Заголовки

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры Body

first_name   string  optional  

optional Имя пользователя (на родном языке). Example: Иван

first_name_en   string  optional  

optional Имя пользователя (на английском языке). Example: Ivan

last_name   string  optional  

optional Фамилия пользователя (на родном языке). Example: Иванов

last_name_en   string  optional  

optional Фамилия пользователя (на английском языке). Example: Ivanov

city   string  optional  

optional Город проживания. Example: Москва

phone   string  optional  

optional Номер телефона. Example: +79001234567

birthday   string  optional  

optional Дата рождения в формате yyyy-mm-dd. Example: 1990-05-15

Ответ

Поля ответа

role   string   

Тип пользователя. См. раздел API v2: Enums → UserType

API v2: Тарифы

Список тарифов

Возвращает список доступных тарифных планов (rate plans) для аутентифицированного сотрудника.
1) Если пользователь не аутентифицирован или аутентифицирован, но не является сотрудником партнёра, то возвращается тарифный план по умолчанию.
2) Если пользователь аутентифицирован, является сотрудником партнёра, но UUID не указан, то возвращается тарифный план по умолчанию.
3) Если пользователь аутентифицирован, является сотрудником и относится к тому партнёру, чей UUID он указывает, то возвращается список доступных этому сотруднику тарифных планов.
4) Если пользователь аутентифицирован, является сотрудником и указан UUID партнёра по умолчанию, то возвращается список доступных этому сотруднику тарифных планов.
5) Если пользователь аутентифицирован, является сотрудником, UUID указан, но либо UUID является неверным, либо пользователь не является сотрудником этого партнёра, то возвращается ошибка.

Пример запроса:
curl --request GET \
    --get "https://admin.rently.travel/api/v2/rates?partner_uuid=9c1a16d4-1234-5678-90ab-cdef12345678" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/v2/rates"
);

const params = {
    "partner_uuid": "9c1a16d4-1234-5678-90ab-cdef12345678",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/v2/rates';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'partner_uuid' => '9c1a16d4-1234-5678-90ab-cdef12345678',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/v2/rates'
params = {
  'partner_uuid': '9c1a16d4-1234-5678-90ab-cdef12345678',
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Пример ответа (200, Успешный ответ):


{
    "data": [
        {
            "uuid": "11111111-2222-3333-4444-555555555555",
            "name": "Basic Plan",
            "is_default": true
        },
        {
            "uuid": "66666666-7777-8888-9999-000000000000",
            "name": "Premium Plan",
            "is_default": false
        }
    ]
}
 

Пример ответа (403, Неправильный partner_uuid):


{
    "message": "Access denied for this partner."
}
 

Пример ответа (404, Неправильный partner_uuid):


{
    "message": "Partner not found."
}
 

Запрос      

GET api/v2/rates

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры Query

partner_uuid   string  optional  

optional UUID партнера. Example: 9c1a16d4-1234-5678-90ab-cdef12345678

API v2: Локации

Поиск доступных локаций

Возвращает список локаций, подходящих под строку поиска.

Пример запроса:
curl --request GET \
    --get "https://admin.rently.travel/api/v2/locations?sub=%D0%94%D1%83%D0%B1%D0%B0%D0%B9" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/v2/locations"
);

const params = {
    "sub": "Дубай",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/v2/locations';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'sub' => 'Дубай',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/v2/locations'
params = {
  'sub': 'Дубай',
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Пример ответа (200, Успешный ответ):


{
    "data": [
        {
            "id": 2,
            "ico": "🌐",
            "title_ru": "Дубай (все локации)",
            "title_en": "Dubai (all locations)",
            "details_ru": "Дубай, ОАЭ",
            "details_en": "Dubai, UAE",
            "location_type": {
                "ico": "🏙️",
                "name_ru": "Все локации",
                "name_en": "All locations",
                "sort_order": 2
            }
        },
        {
            "id": 1,
            "ico": "🛩️",
            "title_ru": "Дубай, аэропорт",
            "title_en": "Dubai International Airport",
            "details_ru": "DXB, Дубай (ОАЭ)",
            "details_en": "DXB, Dubai (UAE)",
            "location_type": {
                "ico": "✈️",
                "name_ru": "Аэропорты",
                "name_en": "Airports",
                "sort_order": 1
            }
        },
        {
            "id": 10,
            "ico": "🛩️",
            "title_ru": "Аль-Мактум, аэропорт",
            "title_en": "Dubai World Central - Al Maktoum International Airport",
            "details_ru": "DWC, Дубай (ОАЭ)",
            "details_en": "DWC, Dubai (UAE)",
            "location_type": {
                "ico": "✈️",
                "name_ru": "Аэропорты",
                "name_en": "Airports",
                "sort_order": 1
            }
        },
        {
            "id": 181095,
            "ico": "🏢",
            "title_ru": "Бур Дубай, город",
            "title_en": "Bur Dubai, city",
            "details_ru": "Дубай, Объединённые Арабские Эмираты",
            "details_en": "Dubai, United Arab Emirates",
            "location_type": {
                "ico": "🌆",
                "name_ru": "Города",
                "name_en": "Cities",
                "sort_order": 3
            }
        }
    ]
}
 

Пример ответа (400):


{
    "message": {
        "ru": "Некорректные параметры запроса.",
        "en": "Invalid request parameters."
    }
}
 

Пример ответа (401):


{
    "message": {
        "ru": "Неавторизованный доступ.",
        "en": "Unauthenticated access."
    }
}
 

Пример ответа (403):


{
    "message": {
        "ru": "У вас нет прав для выполнения данного действия.",
        "en": "You are not authorized to perform this action."
    }
}
 

Пример ответа (404):


{
    "message": {
        "ru": "Ресурс не найден.",
        "en": "Resource not found."
    }
}
 

Пример ответа (422):


{
    "message": "Переданы некорректные данные.",
    "errors": {
        "sub": [
            "Подстрока sub обязательна для заполнения."
        ]
    }
}
 

Пример ответа (500):


{
    "message": {
        "ru": "Внутренняя ошибка сервера. Пожалуйста, обратитесь в службу поддержки.",
        "en": "Internal server error. Please contact support."
    }
}
 

Запрос      

GET api/v2/locations

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры Query

sub   string   

Подстрока для поиска. Минимум 3 символа. Example: Дубай

Список типов локаций

Возвращает все доступные типы локаций с их идентификаторами, иконками и названиями на русском и английском языках.

Пример запроса:
curl --request GET \
    --get "https://admin.rently.travel/api/v2/locations/types" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/v2/locations/types"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/v2/locations/types';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/v2/locations/types'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Пример ответа (200, Успешный ответ):


{
    "data": [
        {
            "id": 1,
            "ico": "✈️",
            "name_ru": "Аэропорты",
            "name_en": "Airports"
        },
        {
            "id": 2,
            "ico": "🏨",
            "name_ru": "Отели",
            "name_en": "Hotels"
        },
        {
            "id": 3,
            "ico": "📍",
            "name_ru": "Места",
            "name_en": "Places"
        },
        {
            "id": 4,
            "ico": "🏙️",
            "name_ru": "Все локации",
            "name_en": "All locations"
        },
        {
            "id": 5,
            "ico": "🌆",
            "name_ru": "Города",
            "name_en": "Cities"
        }
    ]
}
 

Запрос      

GET api/v2/locations/types

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Список локаций

Возвращает все локации с поддержкой пагинации и фильтрации по типам (по полю id из запроса locations/types). Если параметр types не указан — вернутся все локации всех типов.

Пример запроса:
curl --request GET \
    --get "https://admin.rently.travel/api/v2/locations/all?types%5B%5D[]=16&per_page=10&page=1389" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/v2/locations/all"
);

const params = {
    "types[][0]": "16",
    "per_page": "10",
    "page": "1389",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/v2/locations/all';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'types[][0]' => '16',
            'per_page' => '10',
            'page' => '1389',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/v2/locations/all'
params = {
  'types[][0]': '16',
  'per_page': '10',
  'page': '1389',
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Пример ответа (200, Успешный ответ):


{
    "data": [
        {
            "id": 197657,
            "ico": "🏢",
            "title_ru": "Персан, город",
            "title_en": "Persan, city",
            "details_ru": "Иль-де-Франс, Франция",
            "details_en": "Ile-de-France, France",
            "location_type_id": 5
        },
        {
            "id": 197658,
            "ico": "🏢",
            "title_ru": "Перруссон, город",
            "title_en": "Perrusson, city",
            "details_ru": "Центр — Долина Луары, Франция",
            "details_en": "Centre, France",
            "location_type_id": 5
        },
        {
            "id": 197659,
            "ico": "🏢",
            "title_ru": "Перрос-Гирек, город",
            "title_en": "Perros-Guirec, city",
            "details_ru": "Бретань, Франция",
            "details_en": "Brittany, France",
            "location_type_id": 5
        },
        {
            "id": 197661,
            "ico": "🌐",
            "title_ru": "Перриганы (все локации)",
            "title_en": "Perrigny (all locations)",
            "details_ru": "Бургундия — Франш-Конте, Франция",
            "details_en": "Bourgogne-Franche-Comté, France",
            "location_type_id": 4
        },
        {
            "id": 197662,
            "ico": "🏢",
            "title_ru": "Перрингнье, город",
            "title_en": "Perrignier, city",
            "details_ru": "Овернь — Рона — Альпы, Франция",
            "details_en": "Auvergne-Rhône-Alpes, France",
            "location_type_id": 5
        },
        {
            "id": 197663,
            "ico": "🏢",
            "title_ru": "Перрьес-сюр-Анделле, город",
            "title_en": "Perriers-sur-Andelle, city",
            "details_ru": "Нормандия, Франция",
            "details_en": "Normandy, France",
            "location_type_id": 5
        },
        {
            "id": 197664,
            "ico": "🌐",
            "title_ru": "Перрёкс (все локации)",
            "title_en": "Perreux (all locations)",
            "details_ru": "Овернь — Рона — Альпы, Франция",
            "details_en": "Auvergne-Rhône-Alpes, France",
            "location_type_id": 4
        },
        {
            "id": 197665,
            "ico": "🏢",
            "title_ru": "Перрецы-лес-Форжес, город",
            "title_en": "Perrecy-les-Forges, city",
            "details_ru": "Бургундия — Франш-Конте, Франция",
            "details_en": "Bourgogne-Franche-Comté, France",
            "location_type_id": 5
        },
        {
            "id": 197666,
            "ico": "🏢",
            "title_ru": "Перпиньян, город",
            "title_en": "Perpignan, city",
            "details_ru": "Оккитания, Франция",
            "details_en": "Occitanie, France",
            "location_type_id": 5
        },
        {
            "id": 197672,
            "ico": "🏢",
            "title_ru": "Пернес, город",
            "title_en": "Pernes, city",
            "details_ru": "О-де-Франс, Франция",
            "details_en": "Hauts-de-France, France",
            "location_type_id": 5
        }
    ],
    "meta": {
        "current_page": 1389,
        "per_page": 10,
        "total": 63814,
        "last_page": 6382
    }
}
 

Пример ответа (422):


{
    "message": "Validation failed.",
    "errors": {
        "types.0": [
            "Значение поля types.0 отсутствует в списке разрешённых."
        ]
    }
}
 

Запрос      

GET api/v2/locations/all

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры Query

types[]   integer[]  optional  

Массив ID типов локаций (id из метода locations/types). Необязательно. Пример: types[]=4&types[]=5

per_page   integer  optional  

Количество элементов на странице. Минимум: 1. Максимум: 500. По умолчанию: 50. Example: 10

page   integer  optional  

Номер страницы пагинации. Необязательно. Минимум: 1. По умолчанию: 1. Example: 1389

Информация о локации

Возвращает список всех связанных с локацией стран, регионов, городов, аэропортов и их координаты.

Пример запроса:
curl --request GET \
    --get "https://admin.rently.travel/api/v2/locations/2/details" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/v2/locations/2/details"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/v2/locations/2/details';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/v2/locations/2/details'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Пример ответа (200, Успешный ответ):


{
    "data": {
        "country": [
            {
                "flag": "🇦🇪",
                "code": "AE",
                "name_ru": "Объединённые Арабские Эмираты",
                "name_en": "United Arab Emirates"
            }
        ],
        "area": [
            {
                "name_ru": "Дубай",
                "name_en": "Dubai"
            }
        ],
        "municipality": [
            {
                "name_ru": "Дубай",
                "name_en": "Dubai"
            }
        ],
        "airport": [
            {
                "iata": "DXB",
                "name_ru": "Дубай",
                "name_en": "Dubai"
            },
            {
                "iata": "DWC",
                "name_ru": "Аль-Мактум",
                "name_en": "Al Maktoum"
            }
        ],
        "coordinates": [
            {
                "latitude": "25.2581700",
                "longitude": "55.3047200"
            },
            {
                "latitude": "24.8978000",
                "longitude": "55.1590500"
            },
            {
                "latitude": "25.2533410",
                "longitude": "55.3657060"
            }
        ]
    }
}
 

Пример ответа (404):


{
    "message": {
        "ru": "Ресурс не найден.",
        "en": "Resource not found."
    }
}
 

Пример ответа (500):


{
    "message": {
        "ru": "Внутренняя ошибка сервера. Пожалуйста, обратитесь в службу поддержки.",
        "en": "Internal server error. Please contact support."
    }
}
 

Запрос      

GET api/v2/locations/{id}/details

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры URL

id   integer   

Идентификатор локации. Example: 2

API v2: Поиск

Осуществляет поиск ценовых предложений в соответствии с указанным тарифом на основе локаций и дат для получения/возврата автомобиля, а также информации об арендаторе. Возвращает уникальный hash-ключ, который используется в последующих запросах для получения результатов поиска.

Пример запроса:
curl --request POST \
    "https://admin.rently.travel/api/v2/search" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"pickup_location_id\": 123,
    \"dropoff_location_id\": 456,
    \"pickup_date\": \"2025-07-10\",
    \"pickup_time\": \"10:00\",
    \"dropoff_date\": \"2025-07-20\",
    \"dropoff_time\": \"15:00\",
    \"residence\": \"RU\",
    \"age\": 35,
    \"rate_plan\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\"
}"
const url = new URL(
    "https://admin.rently.travel/api/v2/search"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "pickup_location_id": 123,
    "dropoff_location_id": 456,
    "pickup_date": "2025-07-10",
    "pickup_time": "10:00",
    "dropoff_date": "2025-07-20",
    "dropoff_time": "15:00",
    "residence": "RU",
    "age": 35,
    "rate_plan": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/v2/search';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'pickup_location_id' => 123,
            'dropoff_location_id' => 456,
            'pickup_date' => '2025-07-10',
            'pickup_time' => '10:00',
            'dropoff_date' => '2025-07-20',
            'dropoff_time' => '15:00',
            'residence' => 'RU',
            'age' => 35,
            'rate_plan' => 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/v2/search'
payload = {
    "pickup_location_id": 123,
    "dropoff_location_id": 456,
    "pickup_date": "2025-07-10",
    "pickup_time": "10:00",
    "dropoff_date": "2025-07-20",
    "dropoff_time": "15:00",
    "residence": "RU",
    "age": 35,
    "rate_plan": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Пример ответа (200, Успешный ответ):


{
    "data": {
        "hash": "5e630350-b62e-432e-bfba-cc2256db849b"
    }
}
 

Пример ответа (403, Доступ к указанному тарифу запрещён):


{
    "message": "У вас нет доступа к данному тарифному плану."
}
 

Пример ответа (404, Указанный тариф не найден):


{
    "message": "Указанный тарифный план не найден."
}
 

Пример ответа (422, Ошибка валидации (например, неверный возраст или несуществующая локация)):


{
    "message": "The given data was invalid.",
    "errors": {
        "age": [
            "The age must be at least 18."
        ],
        "pickup_location_id": [
            "The selected pickup location id is invalid."
        ]
    }
}
 

Пример ответа (500):


{
    "message": {
        "ru": "Внутренняя ошибка сервера. Пожалуйста, обратитесь в службу поддержки.",
        "en": "Internal server error. Please contact support."
    }
}
 

Статус поиска

Получение информации о состоянии поиска ценовых предложений. Возвращает true, если поиск закончен. Если поиск не завершен, то возвращает false.

Пример запроса:
curl --request GET \
    --get "https://admin.rently.travel/api/v2/search/status?hash=5e630350-b62e-432e-bfba-cc2256db849b" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/v2/search/status"
);

const params = {
    "hash": "5e630350-b62e-432e-bfba-cc2256db849b",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/v2/search/status';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'hash' => '5e630350-b62e-432e-bfba-cc2256db849b',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/v2/search/status'
params = {
  'hash': '5e630350-b62e-432e-bfba-cc2256db849b',
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Пример ответа (200, Успешный ответ):


{
    "data": {
        "completed": true
    }
}
 

Пример ответа (404):


{
    "message": "Поиск с таким hash не найден."
}
 

Пример ответа (422):


{
    "message": "Hash параметр обязателен."
}
 

Запрос      

GET api/v2/search/status

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры Query

hash   string   

Hash-ключ, который был получен при запросе ценовых предложений. Example: 5e630350-b62e-432e-bfba-cc2256db849b

Список предложений

Возвращает список найденных ценовых предложений, связанных с указанным поисковым запросом.

Пример запроса:
curl --request GET \
    --get "https://admin.rently.travel/api/v2/search/quotes?hash=5e630350-b62e-432e-bfba-cc2256db849b" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/v2/search/quotes"
);

const params = {
    "hash": "5e630350-b62e-432e-bfba-cc2256db849b",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/v2/search/quotes';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'hash' => '5e630350-b62e-432e-bfba-cc2256db849b',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/v2/search/quotes'
params = {
  'hash': '5e630350-b62e-432e-bfba-cc2256db849b',
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Пример ответа (200, Успешный ответ):


{
    "data": [
        {
            "quote_uuid": "541c33fd-8680-44ed-be4f-f061e020d49d",
            "supplier_name": "Enterprise",
            "supplier_logo": "https://cdn.rently.travel/partners/enterprise.png",
            "vehicle_name": "FIAT PANDA",
            "vehicle_image": "https://cdn.rently.travel/vehicles/114/77a718b172d2340835eca9dd6e778564.png",
            "vehicle_acriss": "MDMR",
            "vehicle_aircondition": true,
            "vehicle_transmission": "manual",
            "vehicle_doors": 4,
            "vehicle_seats": 4,
            "price_amount": 83697.34,
            "price_currency": "RUB",
            "deposit_amount": 1200,
            "deposit_currency": "EUR",
            "deposit_methods": [
                {
                    "card": "credit_card",
                    "code": "american_express"
                },
                {
                    "card": "credit_card",
                    "code": "discover"
                },
                {
                    "card": "credit_card",
                    "code": "mastercard"
                },
                {
                    "card": "credit_card",
                    "code": "visa"
                }
            ],
            "pickup_address": "FCO, FIUMICINO ROMA, FIUMICINO AIRPORT LEONARDO DA VINCI EPUA 2 TOWER",
            "dropoff_address": "FCO, FIUMICINO ROMA, FIUMICINO AIRPORT LEONARDO DA VINCI EPUA 2 TOWER",
            "on_request": false,
            "fuel_policy": "full_full",
            "distance_unlimited": true
        },
        {
            "quote_uuid": "18a99053-5b5d-4576-b15f-12912c260456",
            "supplier_name": "Enterprise",
            "supplier_logo": "https://cdn.rently.travel/partners/enterprise.png",
            "vehicle_name": "OPEL CORSA",
            "vehicle_image": "https://cdn.rently.travel/vehicles/114/58cd41724f013dfcf4b5e7371417c135.png",
            "vehicle_acriss": "EDMR",
            "vehicle_aircondition": true,
            "vehicle_transmission": "manual",
            "vehicle_doors": 4,
            "vehicle_seats": 5,
            "price_amount": 85669.17,
            "price_currency": "RUB",
            "deposit_amount": 1200,
            "deposit_currency": "EUR",
            "deposit_methods": [
                {
                    "card": "credit_card",
                    "code": "american_express"
                },
                {
                    "card": "credit_card",
                    "code": "discover"
                },
                {
                    "card": "credit_card",
                    "code": "mastercard"
                },
                {
                    "card": "credit_card",
                    "code": "visa"
                }
            ],
            "pickup_address": "FCO, FIUMICINO ROMA, FIUMICINO AIRPORT LEONARDO DA VINCI EPUA 2 TOWER",
            "dropoff_address": "FCO, FIUMICINO ROMA, FIUMICINO AIRPORT LEONARDO DA VINCI EPUA 2 TOWER",
            "on_request": false,
            "fuel_policy": "full_full",
            "distance_unlimited": true
        },
        {
            "quote_uuid": "d3bb2df4-c5d9-4b46-9a44-02add31ed62d",
            "supplier_name": "Enterprise",
            "supplier_logo": "https://cdn.rently.travel/partners/enterprise.png",
            "vehicle_name": "VOLKSWAGEN GOLF",
            "vehicle_image": "https://cdn.rently.travel/vehicles/114/3836d8fe7bb1a5ccd3df4be9460ffe7f.png",
            "vehicle_acriss": "CDMR",
            "vehicle_aircondition": true,
            "vehicle_transmission": "manual",
            "vehicle_doors": 4,
            "vehicle_seats": 5,
            "price_amount": 95198.36,
            "price_currency": "RUB",
            "deposit_amount": 1200,
            "deposit_currency": "EUR",
            "deposit_methods": [
                {
                    "card": "credit_card",
                    "code": "american_express"
                },
                {
                    "card": "credit_card",
                    "code": "discover"
                },
                {
                    "card": "credit_card",
                    "code": "mastercard"
                },
                {
                    "card": "credit_card",
                    "code": "visa"
                }
            ],
            "pickup_address": "FCO, FIUMICINO ROMA, FIUMICINO AIRPORT LEONARDO DA VINCI EPUA 2 TOWER",
            "dropoff_address": "FCO, FIUMICINO ROMA, FIUMICINO AIRPORT LEONARDO DA VINCI EPUA 2 TOWER",
            "on_request": false,
            "fuel_policy": "full_full",
            "distance_unlimited": true
        },
        {
            "quote_uuid": "4b91af8b-7653-40c2-b7a5-b752552d05b8",
            "supplier_name": "Enterprise",
            "supplier_logo": "https://cdn.rently.travel/partners/enterprise.png",
            "vehicle_name": "MERCEDES CLASSE A",
            "vehicle_image": "https://cdn.rently.travel/vehicles/125/8273b929ed38cec142ec543c9c90ca3e.png",
            "vehicle_acriss": "IDMR",
            "vehicle_aircondition": true,
            "vehicle_transmission": "manual",
            "vehicle_doors": 4,
            "price_amount": 98484.09,
            "price_currency": "RUB",
            "deposit_amount": 1200,
            "deposit_currency": "EUR",
            "deposit_methods": [
                {
                    "card": "credit_card",
                    "code": "american_express"
                },
                {
                    "card": "credit_card",
                    "code": "discover"
                },
                {
                    "card": "credit_card",
                    "code": "mastercard"
                },
                {
                    "card": "credit_card",
                    "code": "visa"
                }
            ],
            "pickup_address": "FCO, FIUMICINO ROMA, FIUMICINO AIRPORT LEONARDO DA VINCI EPUA 2 TOWER",
            "dropoff_address": "FCO, FIUMICINO ROMA, FIUMICINO AIRPORT LEONARDO DA VINCI EPUA 2 TOWER",
            "on_request": false,
            "fuel_policy": "full_full",
            "distance_unlimited": true
        },
        {
            "quote_uuid": "755990cb-c94e-4684-a82d-3de6beab0ab7",
            "supplier_name": "Enterprise",
            "supplier_logo": "https://cdn.rently.travel/partners/enterprise.png",
            "vehicle_name": "VOLKSWAGEN T-ROC",
            "vehicle_image": "https://cdn.rently.travel/vehicles/114/28525bbd0c18e90be5f984073bc70c3e.png",
            "vehicle_acriss": "IDAR",
            "vehicle_aircondition": true,
            "vehicle_transmission": "automatic",
            "vehicle_doors": 4,
            "vehicle_seats": 5,
            "price_amount": 108341.28,
            "price_currency": "RUB",
            "deposit_amount": 1200,
            "deposit_currency": "EUR",
            "deposit_methods": [
                {
                    "card": "credit_card",
                    "code": "american_express"
                },
                {
                    "card": "credit_card",
                    "code": "discover"
                },
                {
                    "card": "credit_card",
                    "code": "mastercard"
                },
                {
                    "card": "credit_card",
                    "code": "visa"
                }
            ],
            "pickup_address": "FCO, FIUMICINO ROMA, FIUMICINO AIRPORT LEONARDO DA VINCI EPUA 2 TOWER",
            "dropoff_address": "FCO, FIUMICINO ROMA, FIUMICINO AIRPORT LEONARDO DA VINCI EPUA 2 TOWER",
            "on_request": false,
            "fuel_policy": "full_full",
            "distance_unlimited": true
        }
    ]
}
 

Пример ответа (404):


{
    "message": "Поиск с таким hash не найден."
}
 

Пример ответа (422):


{
    "message": "Hash параметр обязателен."
}
 

Запрос      

GET api/v2/search/quotes

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры Query

hash   string   

Hash-ключ, который был получен при запросе ценовых предложений. Example: 5e630350-b62e-432e-bfba-cc2256db849b

Ответ

Поля ответа

card   string   

Способ оплаты. См. раздел API v2: Enums → Card

code   string   

Тип карты. См. раздел API v2: Enums → CardCode

distance_period   string   

Период расчёта расстояния. См. раздел API v2: Enums → DistancePeriod

fuel   string   

Тип топлива. См. раздел API v2: Enums → Fuel

fuel_policy   string   

Политика топлива. См. раздел API v2: Enums → FuelPolicy

Детали предложения

Получает детальную информацию по выбранному предложению.

Пример запроса:
curl --request GET \
    --get "https://admin.rently.travel/api/v2/search/details?hash=5e630350-b62e-432e-bfba-cc2256db849b&quote_uuid=dad38dc4-d340-473c-85f1-3bc7445ed827" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/v2/search/details"
);

const params = {
    "hash": "5e630350-b62e-432e-bfba-cc2256db849b",
    "quote_uuid": "dad38dc4-d340-473c-85f1-3bc7445ed827",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/v2/search/details';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'hash' => '5e630350-b62e-432e-bfba-cc2256db849b',
            'quote_uuid' => 'dad38dc4-d340-473c-85f1-3bc7445ed827',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/v2/search/details'
params = {
  'hash': '5e630350-b62e-432e-bfba-cc2256db849b',
  'quote_uuid': 'dad38dc4-d340-473c-85f1-3bc7445ed827',
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Пример ответа (200, Успешный ответ):


{
    "data": {
        "quote_uuid": "dad38dc4-d340-473c-85f1-3bc7445ed827",
        "supplier_name": "rentsmart24",
        "supplier_logo": "https://cdn.rently.travel/partners/10f8ecf72c7dacf3a694ce4bc3dd86e4.png",
        "vehicle_name": "Volkswagen Polo",
        "vehicle_image": "https://cdn.rently.travel/vehicles/41/36633c7269f221e2fd6eb389bc878e5b.png",
        "vehicle_acriss": "CDMR",
        "vehicle_aircondition": true,
        "vehicle_transmission": "manual",
        "vehicle_doors": 5,
        "vehicle_seats": 5,
        "price_amount": 22572.99,
        "price_currency": "RUB",
        "deposit_amount": 650,
        "deposit_currency": "EUR",
        "deposit_methods": [
            {
                "card": "credit_card",
                "code": "visa"
            },
            {
                "card": "credit_card",
                "code": "mastercard"
            },
            {
                "card": "credit_card",
                "code": "american_express"
            }
        ],
        "cancellation": [
            {
                "currency": "EUR",
                "end_date": "2025-10-08T10:00:00+02:00"
            },
            {
                "amount": 61.07,
                "currency": "EUR",
                "start_date": "2025-10-08T10:00:00+02:00",
                "end_date": "2025-10-10T10:00:00+02:00"
            },
            {
                "amount": 203.55,
                "currency": "EUR",
                "start_date": "2025-10-10T10:00:00+02:00"
            }
        ],
        "pickup_address": "FCO, Fiumicino, Via Portuense, 2385",
        "pickup_instruction": "Navetta gratuita “ParkinGO”. Chiama il +39 3929443894 per richiedere la navetta; punto di ritrovo: Terminal 1, porta 5, area Partenze. // Free Shuttle Bus “ParkinGO”. Call +39 3929443894 to request the shuttle; meeting point: Terminal 1, door 5, Departure area.",
        "pickup_location_type": "free_shuttle_bus",
        "pickup_geo": [
            41.77562959999999,
            12.2455912
        ],
        "dropoff_address": "FCO, Fiumicino, Via Portuense, 2385",
        "dropoff_instruction": "Navetta gratuita “ParkinGO”. Chiama il +39 3929443894 per richiedere la navetta; punto di ritrovo: Terminal 1, porta 5, area Partenze. // Free Shuttle Bus “ParkinGO”. Call +39 3929443894 to request the shuttle; meeting point: Terminal 1, door 5, Departure area.",
        "dropoff_location_type": "free_shuttle_bus",
        "dropoff_geo": [
            41.77562959999999,
            12.2455912
        ],
        "on_request": false,
        "fuel_policy": "full_full",
        "distance_unlimited": true,
        "terms_and_conditions": {
            "language": "en",
            "paragraph": [
                {
                    "title": "Driver age",
                    "text": [
                        "The minumum age of the driver is 19 years old.",
                        "For those drivers between 19 and 24 years old, a \"Young Driver\" extra charge equal to €12.00 a day will be applied, up to a maximum of €180.00 per rental.",
                        "",
                        "Vehicles belonging to the following categories are subject to exceptions:",
                        "- 7 and 9-seater vehicles: minimum age 21 years.",
                        "- Luxury and Extra Luxury vehicles: minimum age 25 years.",
                        "",
                        "The maximum age allowed of the driver is 74 years old.",
                        "For 75 year-old drivers and over a \"Senior Driver\" extra charge equal to €12.00 a day will be applied, up to a maximum of €180.00 per rental.",
                        "The \"Young Driver\" and the \"Senior Driver\" extra charge are not included in the price of the car rental. These must be payed in local currency at the car rental office."
                    ]
                },
                {
                    "title": "Driving licence",
                    "text": [
                        "All drivers must show their original driving licence, issued at least 12 months previously and expiring after the rental period.",
                        "A currently valid International Driving Permit (IDP) is required if the national driver's licence is not in Roman script, for example in Arabic, Greek, Russian, Chinese, etc.",
                        "Furthermore, the International Driving Permit (IDP) will also be required of all drivers holding licences issued in non-EU countries who rent the vehicle in an EU member country.",
                        "The International Driving Permit (IDP) must be accompanied by the original national driver's driving licence.",
                        "The driving licence must be the original ones, not deteriorated, readable and currently valid.",
                        "Driving licence in digital format will NOT be accepted."
                    ]
                },
                {
                    "title": "ID card/Passport",
                    "text": [
                        "A valid ID card for all the citizens of the countries of the European Union, will be required.",
                        "For all those citizens of a country NOT belonging to the European Union, besides an ID card, a currently valid passport will be required as well.",
                        "The documents must be the original ones, not deteriorated, readable and currently valid.",
                        "Documents in digital format will NOT be accepted."
                    ]
                },
                {
                    "title": "Inclusive insurances",
                    "text": [
                        "Third-party liability insurance",
                        "This insurance covers the damages to third parties following an accident caused by the driver, excluding the rented car itself.",
                        "",
                        "[CDW] Collision Damage Waiver",
                        "This is a reduction of the customer's liability that partially covers the damage caused to the rented vehicle. Instead of the total cost, the driver will be responsible only for the first fraction, called deductible.",
                        "The reduction of the customer's liability will be applied up to a maximum chargeable amount specified in the rental agreement.",
                        "This reduction does not include damage to: glass, roof, underbody, wheels, interior and damage caused by acts of vandalism.",
                        "",
                        "[TLW] Theft/Fire Protection",
                        "This is a reduction of the customer's liability in the event of total/partial theft or fire up to a maximum chargeable amount specified in the rental agreement.",
                        "In the event of theft of the rented vehicle, if the vehicle keys are not returned, the customer will be fully liable for reimbursement of the total value of the vehicle.",
                        "This reduction does not include the loss of personal assets."
                    ]
                },
                {
                    "title": "Road Assistance",
                    "text": [
                        "Road assistance is guaranteed 24/7.",
                        "In case road assistance is needed, the cost related to this will be charged to the customer himself."
                    ]
                },
                {
                    "title": "Taxes included in the price",
                    "text": [
                        "Value Added Tax (VAT).",
                        "Airport/Railway Station Taxes."
                    ]
                },
                {
                    "title": "Fuel and Recharging policy",
                    "text": [
                        "[Full-Full]",
                        "The vehicle will be given with a full tank of fuel and it must be returned with a full tank of fuel.",
                        "In case the customer does not return the vehicle with a full tank of fuel, the missing part of the fuel will be charged, as well as a surcharge relating the refuelling operations.",
                        "",
                        "[Electric vehicles]",
                        "The rental center will record the vehicle battery charge at the start of the rental.",
                        "Failure to return the vehicle in the same state of charge as at pick-up will result in a recharging surcharge per missing kW."
                    ]
                },
                {
                    "title": "Mileage",
                    "text": [
                        "The rate includes unlimited mileage."
                    ]
                },
                {
                    "title": "Territorial limits",
                    "text": [
                        "It is NOT permitted to drive the vehicle outside the national territory.",
                        "",
                        "Vehicles are NOT allowed to travel on ferries or any other means of transport."
                    ]
                },
                {
                    "title": "Payment Methods",
                    "text": [
                        "When you pick up the car, you must bring with you a credit card in the name of the main driver with the name and the surname printed on it. This will be used to handle the deposit and the final payment.",
                        "[ATTENTION] The main driver must bring a physical credit card; credit card in digital format will NOT be accepted.",
                        "",
                        "[CREDIT cards]",
                        " Credit cards accepted at the car rental desk: Visa, Mastercard, American Express.",
                        " The credit card must have the embossed numbers, must be valid for at least 3 months from the end date of the rental and the PIN code may be required.",
                        "",
                        "The following payment methods WILL NOT be accepted: Diners Club credit cards; Revolving cards (credit or debit); debit cards; Bancomat cards (ex. Maestro, V-Pay, PagoBancomat); Prepaid/rechargeable and \"Electron\" cards of any type (ex. Postepay, PayPal, Viabuy); cards linked to a digital bank account (e.g. N26, Revolut); cards with the indication \"Electronic use only\"; virtual credit/debit cards; credit/debit cards in digital format; cards saved on mobile devices (smartphone, tablet, smartwatch, etc.); Visa Dankort, Discover, Cirrus, JCB, China UnionPay cards; NON-NOMINATIVE cards; cards NOT in the name of the main driver; Cash and/or checks.",
                        "",
                        "All data on the credit card, for security reasons, must be legible and not deteriorated to allow the rental company to verify its authenticity.",
                        "Always check your credit card has sufficient credit at the moment of the pick-up. The amount blocked usually corresponds to a lump sum (provided subsequently), but it depends on the vehicle dimensions, the driver's age, the car rental agent, the car rental duration and the drop-off point.",
                        "If a valid credit card is not physically presented, or there is no sufficient credit, the car rental agent can refuse to give you the car. In these cases, no refeund is provided."
                    ]
                },
                {
                    "title": "Deposit amount",
                    "text": [
                        "[DAYTIME Hours]",
                        " At the moment of the pick up of the car, you will be asked to deposit an amount as a guarantee.",
                        " The amount will be handle ONLY with a credit card in the name of the main driver with the name and the surname printed on it.",
                        " [ATTENTION] The main driver must bring a physical credit card; credit card in digital format will NOT be accepted.",
                        "",
                        "[NIGHTTIME Hours]",
                        " If the vehicle is picked up between 20:00 and 08:00, it is mandatory to complete the \"Web Check-in\" procedure.",
                        " The customer will be contacted by the staff of the \"RentSmart24\" rental center. An email will be requested to send the \"Web Check-in\" procedure, through which the advance deposit of the security deposit can be made.",
                        " The security deposit can ONLY be managed with a credit card in the name of the main driver, with the name and the surname printed on it.",
                        " IMPORTANT INFORMATION:",
                        "  - The advance security deposit must be paid, via the link, BEFORE 12:00 on the day of vehicle pickup. If this procedure is not completed, the rental center staff may refuse to hand over the vehicle. In such cases, no refunds will be issued.",
                        "  - For security and customer identification reasons, the credit card used for the online payment (always in the name of the main driver) must match the one shown physically at the rental desk. Delegations, photocopies, or similar will not be accepted.",
                        "",
                        "For Luxury and Extra Luxury vehicles, the rental company \"RentSmart24\" will require two credit cards in the name of the main driver.",
                        "",
                        "A value of € 650.00 plus eventual extras or services purchased and not prepaid online will be blocked from the card.",
                        "This amount will be unblocked at the end of the car rental, where all the conditions are met.",
                        "",
                        "Depending on the vehicle group, the amount of the deductible in case of damages or theft, is between € 1000.00 and € 3000.00."
                    ]
                },
                {
                    "title": "Local Taxes",
                    "text": [
                        "The damages to the car will be charged by the car rental company at the moment of the drop off, as well as a local tax, which has to be added to the amount of the deductible withheld.",
                        "In case of tickets/fines, the driver will have to pay a local tax, which has to be added to the amount of the ticket/fine."
                    ]
                },
                {
                    "title": "Pick-up",
                    "text": [
                        "The vehicle must be picked up on the day and time confirmed during the booking process, with a maximum tolerance of 60 minutes from the indicated time. If the customer arrives beyond the allowed tolerance, the rental center will not guarantee the availability of the vehicle and the booking will be considered canceled without prior notice.",
                        "Please always inform the car rental station in case of delay."
                    ]
                },
                {
                    "title": "Drop-off",
                    "text": [
                        "The rented vehicle must be returned by the date and time specified in the rental agreement. A grace period of 59 minutes beyond the agreed return time is allowed. If this grace period is exceeded, an additional charge will be applied by the car rental company.",
                        "No refund is provided in case the car is returned before the date agreed in the car rental contract.",
                        "In case the drop-off is made in a different car rental station from the pick up, a \"One way\" extra charge will be applied. This operation must be authorised beforehand by \"RentSmart24\".",
                        "",
                        "The vehicles are delivered externally and internally clean and they must be returned in the same condition. Otherwise the costs related to the washing of the vehicle will be proportionally charged."
                    ]
                },
                {
                    "title": "Vehicle Group",
                    "text": [
                        "The vehicle in the image and the models on the list are the most commonly used by our car rental partners.",
                        "We cannot guarantee that brand and model of the vehicle will be the same of the vehicle viewed on our website."
                    ]
                },
                {
                    "title": "Voucher",
                    "text": [
                        "At the arrival at the car rental office, you will be asked to show the voucher.",
                        "Attention: TinoRent takes no responsability for any surcharges in the case, at the moment of the pick up, the voucher is not shown to the car rental agent. In these cases no refund of the advance payment will be provided."
                    ]
                },
                {
                    "title": "Extras",
                    "text": [
                        "Optional accessories and extras must be requested during the online booking process or directly at the desk of the car rental office. These are not included in the price of car rental.",
                        "The prices are directly handled by the car rental company, which reserves its right of modification without forewarning.",
                        "Optional accessories and special allocations are subject to availability, which can be confirmed only by the car rental station."
                    ]
                },
                {
                    "title": "Night Surcharge",
                    "text": [
                        "If you pick up the vehicle between 23:00 and 07:00, the car rental company \"RentSmart24\" applies a surcharge of €75.00."
                    ]
                }
            ],
            "pick_up_opening_hours": [
                {
                    "opens": "00:00",
                    "closes": "23:59",
                    "dayOfWeek": "1"
                },
                {
                    "opens": "00:00",
                    "closes": "23:59",
                    "dayOfWeek": "2"
                },
                {
                    "opens": "00:00",
                    "closes": "23:59",
                    "dayOfWeek": "3"
                },
                {
                    "opens": "00:00",
                    "closes": "23:59",
                    "dayOfWeek": "4"
                },
                {
                    "opens": "00:00",
                    "closes": "23:59",
                    "dayOfWeek": "5"
                },
                {
                    "opens": "00:00",
                    "closes": "23:59",
                    "dayOfWeek": "6"
                },
                {
                    "opens": "00:00",
                    "closes": "23:59",
                    "dayOfWeek": "7"
                }
            ]
        },
        "equipment": [
            {
                "equipment_type": "equipment",
                "code": "10",
                "name": "Child seat booster (18+kg)",
                "description": "equipment.CSFT18KGP.description",
                "amount": 0,
                "total_price": {
                    "amount": 48,
                    "currency": "EUR"
                },
                "tax_included": true
            },
            {
                "equipment_type": "equipment",
                "code": "9",
                "name": "Child seat (9-18kg)",
                "description": "equipment.CSFT9KG18KG.description",
                "amount": 0,
                "total_price": {
                    "amount": 48,
                    "currency": "EUR"
                },
                "tax_included": true
            }
        ],
        "services": [
            {
                "equipment_type": "service",
                "code": "4",
                "name": "Young driver",
                "description": "equipment.YOUNGDRIVER.description",
                "amount": 0,
                "total_price": {
                    "amount": 120,
                    "currency": "EUR"
                },
                "tax_included": true
            },
            {
                "equipment_type": "service",
                "code": "1",
                "name": "Additional driver",
                "description": "",
                "amount": 0,
                "total_price": {
                    "amount": 110,
                    "currency": "EUR"
                },
                "tax_included": true
            }
        ],
        "insurances": [],
        "pickup_date": "2025-10-10",
        "pickup_time": "10:00",
        "dropoff_date": "2025-10-20",
        "dropoff_time": "10:00"
    }
}
 

Пример ответа (404, Поиск не найден):


{
    "message": "Поиск с таким hash не найден."
}
 

Пример ответа (422, Ошибка валидации):


{
    "message": "Параметры hash и quote_uuid обязательны."
}
 

Пример ответа (500, Внутренняя ошибка):


{
    "message": "Ошибка получения деталей предложения."
}
 

Запрос      

GET api/v2/search/details

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры Query

hash   string   

Хэш поискового запроса. Example: 5e630350-b62e-432e-bfba-cc2256db849b

quote_uuid   string   

UUID выбранного предложения. Example: dad38dc4-d340-473c-85f1-3bc7445ed827

Ответ

Поля ответа

card   string   

Способ оплаты. См. раздел API v2: Enums → Card

code   string   

Тип карты. См. раздел API v2: Enums → CardCode

distance_period   string   

Период расчёта расстояния. См. раздел API v2: Enums → DistancePeriod

fuel   string   

Тип топлива. См. раздел API v2: Enums → Fuel

fuel_policy   string   

Политика топлива. См. раздел API v2: Enums → FuelPolicy

Перевод Terms & Conditions

Переводит Terms & Conditions поставщика на другой язык.

Пример запроса:
curl --request GET \
    --get "https://admin.rently.travel/api/v2/search/terms?hash=5e630350-b62e-432e-bfba-cc2256db849b&quote_uuid=dad38dc4-d340-473c-85f1-3bc7445ed827&target=ru&source=en" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/v2/search/terms"
);

const params = {
    "hash": "5e630350-b62e-432e-bfba-cc2256db849b",
    "quote_uuid": "dad38dc4-d340-473c-85f1-3bc7445ed827",
    "target": "ru",
    "source": "en",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/v2/search/terms';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'hash' => '5e630350-b62e-432e-bfba-cc2256db849b',
            'quote_uuid' => 'dad38dc4-d340-473c-85f1-3bc7445ed827',
            'target' => 'ru',
            'source' => 'en',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/v2/search/terms'
params = {
  'hash': '5e630350-b62e-432e-bfba-cc2256db849b',
  'quote_uuid': 'dad38dc4-d340-473c-85f1-3bc7445ed827',
  'target': 'ru',
  'source': 'en',
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Пример ответа (200, Успешный ответ):


{
    "data": {
        "language": "ru",
        "paragraph": [
            {
                "title": "Возраст водителя",
                "text": [
                    "Минимальный возраст водителя - 21 год.",
                    "С водителей в возрасте от 21 до 22 лет взимается дополнительная плата за \"молодого водителя\" в размере 20,00 евро в день.",
                    "",
                    "Исключения для определенных групп транспортных средств:",
                    "• Группы B-MCMR, C-EDMR, M1-ECAR (например, Fiat Panda, Peugeot 208, Renault Clio или аналогичные): минимальный возраст - 19 лет.",
                    "  С водителей в возрасте от 19 до 20 лет взимается дополнительная плата за \"Молодого водителя\" в размере 30,00 евро в день.",
                    "• Группы G-FVMR, GW-FVMD, H1-IFAR, HW-IFBR, N1-IDAR, NW-SDAR, U-FVAR, UW-FVAD (например, Ford Tourneo Custom, Jeep Renegade, MG HS, Peugeot 3008 или аналогичные): минимальный возраст - 25 лет.",
                    "",
                    "Максимальный возраст водителя составляет 80 лет."
                ]
            },
            {
                "title": "Водительские права",
                "text": [
                    "Все водители должны предъявить оригинал водительского удостоверения, выданного не менее чем за 12 месяцев до этого и срок действия которого истекает по истечении срока аренды.",
                    "",
                    "Исключения для определенных групп транспортных средств:",
                    "• Группы G-FVMR, GW-FVMD, H1-IFAR, HW-IFBR, J1-IFMR, JW-JGMD, N1-IDAR, NW-SDAR, U-FVAR, UW-FVAD (например, Ford Tourneo Custom, Jeep Renegade, Volkswagen Taigo, MG HS, Peugeot 3008 или аналогично): по крайней мере, 36 месяцами ранее.",
                    "",
                    "Если национальное водительское удостоверение написано не латиницей (например, арабским, китайским, японским шрифтом, кириллицей и т.д.) или было выдано в стране, не входящей в ЕС, которая не имеет международных соглашений со страной, в которой осуществляется аренда, наличие действительного международного водительского удостоверения (IDP) является обязательным. Водитель должен предъявить IDP вместе с оригиналом национального водительского удостоверения.",
                    "ВАЖНО: Арендатор несет ответственность за то, чтобы у него были необходимые документы для управления автомобилем в странах, отличных от страны его проживания.",
                    "Водительское удостоверение должно быть оригинальным, неповрежденным, разборчивым и действительным.",
                    "Цифровые водительские удостоверения приниматься не будут."
                ]
            },
            {
                "title": "Удостоверение личности/паспорт",
                "text": [
                    "Для всех граждан стран Европейского союза потребуется действительное удостоверение личности.",
                    "Для всех граждан стран, не входящих в Европейский союз, помимо удостоверения личности потребуется также действующий в настоящее время паспорт.",
                    "Документы должны быть оригинальными, не испорченными, разборчивыми и действительными.",
                    "Цифровые документы приниматься не будут."
                ]
            },
            {
                "title": "Комплексное страхование",
                "text": [
                    "Страхование гражданской ответственности перед третьими лицами",
                    "Эта страховка покрывает ущерб, причиненный третьим лицам в результате несчастного случая по вине водителя, за исключением самого арендованного автомобиля.",
                    "",
                    "[CDW] Отказ от возмещения ущерба при столкновении",
                    "Это уменьшение ответственности клиента, которое частично покрывает ущерб, причиненный арендованному транспортному средству. Вместо общей стоимости водитель будет нести ответственность только за первую часть, называемую франшизой.",
                    "Уменьшение ответственности клиента будет применяться в пределах максимальной суммы, подлежащей оплате, указанной в договоре аренды.",
                    "Эта скидка не включает повреждения стекол, крыши, днища кузова, колесных дисков, салона, а также повреждения, вызванные актами вандализма.",
                    "",
                    "[TLW] Защита от кражи/пожара",
                    "Это означает уменьшение ответственности клиента в случае полной/частичной кражи или пожара до максимальной суммы, подлежащей оплате, указанной в договоре аренды.",
                    "В случае кражи арендованного транспортного средства, если ключи от него не будут возвращены, клиент будет нести полную ответственность за возмещение общей стоимости транспортного средства.",
                    "Это сокращение не включает потерю личного имущества."
                ]
            },
            {
                "title": "Дорожная помощь",
                "text": [
                    "Дорожная помощь гарантирована в режиме 24/7.",
                    "В случае, если потребуется помощь на дороге, связанные с этим расходы будут оплачены самим клиентом."
                ]
            },
            {
                "title": "Налоги включены в стоимость проживания",
                "text": [
                    "Налог на добавленную стоимость (НДС).",
                    "Сборы в аэропорту/на железнодорожном вокзале."
                ]
            },
            {
                "title": "Политика в отношении топлива и подзарядки",
                "text": [
                    "[Полный-Полный]",
                    "Автомобиль будет предоставлен с полным баком топлива, и его необходимо вернуть с полным баком топлива.",
                    "В случае, если клиент не вернет транспортное средство с полным баком топлива, будет оплачена недостающая часть топлива, а также дополнительная плата, связанная с заправкой.",
                    "",
                    "[Электромобили]",
                    "На момент получения автомобиль будет доставлен с полностью заряженным аккумулятором (100%) и должен быть возвращен с тем же уровнем заряда (100%) или, в качестве альтернативы, с уровнем, зафиксированным на момент получения.",
                    "Если автомобиль будет возвращен с более низкой оплатой, чем при получении, в программе \"Сицилия на автомобиле\" будет применяться скидка в размере 15%. При превышении этого порога за каждый недостающий киловатт (кВт) будет взиматься дополнительная плата."
                ]
            },
            {
                "title": "Пробег",
                "text": [
                    "В стоимость проживания входит неограниченный пробег."
                ]
            },
            {
                "title": "Территориальные границы",
                "text": [
                    "Передвижение транспортных средств за пределами национальных границ разрешено исключительно в следующих странах:",
                    "• Андорра",
                    "• Австрия",
                    "• Бельгия",
                    "• Хорватия",
                    "• Дания",
                    "• Финляндия",
                    "• Франция",
                    "• Германия",
                    "• Ирландия",
                    "• Лихтенштейн",
                    "• Люксембург",
                    "• Нидерланды",
                    "• Норвегия",
                    "• Португалия",
                    "• Княжество Монако",
                    "• Республика Сан-Марино",
                    "• Словения",
                    "• Испания",
                    "• Швеция",
                    "• Швейцария",
                    "• Соединенное Королевство",
                    "• Город Ватикан",
                    "Если вы планируете выехать на автомобиле за пределы национальной территории, вы должны сообщить об этом сотрудникам \"Sicily by Car\" перед отправкой."
                ]
            },
            {
                "title": "Способы оплаты",
                "text": [
                    "При получении автомобиля необходимо будет предъявить кредитную карту на имя основного водителя для внесения залога и оплаты аренды.",
                    "[ВНИМАНИЕ] Основной водитель должен предъявить кредитную карту в физической форме; цифровая версия карты приниматься не будет.",
                    "",
                    "[КРЕДИТНЫЕ карты]",
                    " В пункте проката автомобилей принимаются кредитные карты Visa, Mastercard, American Express.",
                    " На кредитной карте должны быть указаны тисненые данные и цифры; также потребуется ввести PIN-код.",
                    "",
                    "К оплате НЕ принимаются следующие способы: Кредитные карты Diners Club; Возобновляемые карты; дебетовые карты (например, Mastercard Debit, Maestro, Visa Debit, V-Pay); Банковские карты (например, Bancomat). PagoBancomat); Предоплаченные/перезаряжаемые и \"электронные\" карты любого типа (например, Viabuy, PayPal, Green Dot, Postepay); карты, привязанные к цифровому банковскому счету (например, N26, Revolut); карты с пометкой \"Только для электронного использования\"; виртуальные кредитные/дебетовые карты; кредитные/дебетовые дебетовые карты карты в цифровом формате; карты, сохраненные на мобильных устройствах (смартфонах, планшетах, смарт-часах и т.д.); карты Visa Dankort, Discover, Cirrus, JCB, China UnionPay; НЕИМЕНОВАННЫЕ карты; карты НЕ на имя основного водителя; наличные и/или чеки.",
                    "",
                    "По соображениям безопасности вся информация на кредитной карте должна быть четкой и не поврежденной, чтобы прокатная компания могла проверить ее подлинность",
                    "Всегда следите за тем, чтобы на момент аренды на используемой кредитной карте было достаточно средств. Заблокированная сумма соответствует фиксированной сумме (указанной ниже), но может варьироваться в зависимости от размера транспортного средства, возраста водителя, продолжительности аренды и места получения транспортного средства.",
                    "Если не будет предъявлена действительная кредитная карта или если на карте недостаточно средств, продавец может отказать в передаче транспортного средства. В таких случаях возврат денежных средств не производится."
                ]
            },
            {
                "title": "Сумма депозита",
                "text": [
                    "При получении автомобиля потребуется внести залог в качестве гарантии.",
                    "Этой суммой можно распоряжаться только с помощью кредитной карты, оформленной на имя основного водителя.",
                    "[ВНИМАНИЕ] Основной водитель должен предъявить кредитную карту в физическом виде; цифровая версия карты приниматься не будет.",
                    "",
                    "Сумма в размере 200,00 евро плюс возможные дополнительные услуги, приобретенные онлайн без предоплаты, будут заблокированы с вашей карты.",
                    "Эта сумма будет разблокирована в конце срока аренды автомобиля, когда будут выполнены все условия.",
                    "",
                    "Применимая дополнительная плата в случае повреждения или угона транспортного средства составит до 1830,00 евро за ущерб и до 2440,00 евро за угон."
                ]
            },
            {
                "title": "Местные налоги",
                "text": [
                    "Ущерб, причиненный автомобилю, будет возмещен компанией по прокату автомобилей в момент сдачи, а также местным налогом, который должен быть добавлен к сумме удерживаемой франшизы.",
                    "В случае штрафов водителю придется заплатить местный налог, который должен быть добавлен к сумме штрафа."
                ]
            },
            {
                "title": "Пикап",
                "text": [
                    "Транспортное средство должно быть забрано в указанное при бронировании время; по истечении этого времени компания по прокату автомобилей не будет гарантировать наличие автомобиля на пункте проката, и бронирование будет считаться отмененным без предварительного уведомления.",
                    "Пожалуйста, всегда сообщайте об этом в пункт проката автомобилей в случае задержки."
                ]
            },
            {
                "title": "Высадка",
                "text": [
                    "Арендованное транспортное средство должно быть возвращено к дате и времени, указанным в договоре аренды. Допускается отсрочка возврата на 59 минут сверх оговоренного времени возврата. При превышении этого срока компания по прокату автомобилей взимает дополнительную плату.",
                    "Возврат денежных средств не производится, если автомобиль был возвращен до даты, оговоренной в договоре аренды автомобиля.",
                    "В случае, если пункт проката автомобилей отличается от пункта приема, взимается дополнительная плата \"В одну сторону\". Эта операция должна быть предварительно авторизована компанией \"Sicily by Car\".",
                    "[ВНИМАНИЕ] В случае аренды электромобиля транспортное средство должно быть возвращено, без каких-либо исключений или отступлений, в тот же офис \"Sicily by Car\", где оно было получено.",
                    "",
                    "Транспортные средства доставляются в чистоте снаружи и внутри и должны быть возвращены в том же состоянии. В противном случае расходы, связанные с мойкой транспортного средства, будут оплачены пропорционально.",
                    "",
                    "При аренде с возвратом автомобиля в нерабочее время данная услуга доступна исключительно в пунктах проката, оборудованных ящиками для ключей. При получении заказа клиент должен уточнить условия использования услуги. Договор аренды будет расторгнут представителем компании после повторного открытия филиала, и клиент будет нести ответственность за транспортное средство до тех пор, пока оно не будет официально передано представителю."
                ]
            },
            {
                "title": "Группа транспортных средств",
                "text": [
                    "Автомобиль на изображении и модели в списке наиболее часто используются нашими партнерами по прокату автомобилей.",
                    "Мы не можем гарантировать, что марка и модель транспортного средства будут совпадать с автомобилем, представленным на нашем веб-сайте."
                ]
            },
            {
                "title": "Расписка",
                "text": [
                    "По прибытии в пункт проката автомобилей вас попросят предъявить ваучер.",
                    "Внимание: TinoRent не несет ответственности за какие-либо дополнительные расходы в случае, если в момент получения автомобиля агенту по прокату не будет предъявлен ваучер. В этих случаях возврат предоплаты не производится."
                ]
            },
            {
                "title": "Дополнительные аксессуары и надстройки",
                "text": [
                    "Дополнительные аксессуары необходимо заказывать при бронировании или сообщать об этом в центр проката. Они не включены в стоимость аренды и должны быть оплачены при получении.",
                    "Цены на эти аксессуары устанавливаются непосредственно компанией по прокату, которая оставляет за собой право изменять их без предварительного уведомления.",
                    "Дополнительные аксессуары и любое специальное оборудование предоставляются в зависимости от наличия, которое может быть гарантировано только центром проката на момент получения."
                ]
            },
            {
                "title": "Политика отмены бронирования",
                "text": [
                    "Бесплатная отмена бронирования, если вы отмените его в течение 10:00 11.08.2025. Бесплатная отмена бронирования позволяет вернуть сумму, уплаченную в процессе онлайн-бронирования, на ту же карту, которая использовалась.",
                    "В случае отмены бронирования после 10:00 11.08.2025 и в любом случае в течение 10:00 10.11.2025 будет применен административный штраф в размере 232,23 евро. Любые излишки будут возвращены непосредственно на карту, использованную в процессе онлайн-бронирования.",
                    "В случае отмены бронирования после 10:00 11.10.2025 или, в любом случае, если транспортное средство не было получено в оговоренные дату и время или если транспортное средство не было доставлено, будет применен штраф под названием \"Неявка/ утерянный арендный платеж\", равный полной стоимости аренды (774,11 евро). потому что условия аренды, указанные в правилах и положениях, не соблюдаются."
                ]
            },
            {
                "title": "Дополнительная плата за работу в нерабочее время",
                "text": [
                    "Получение и/или возврат транспортного средства в нерабочее время возможно только по предварительному согласованию с арендной компанией.",
                    "Оплата билета в нерабочее время возможна только в пунктах проката в аэропорту и только в том случае, если информация о рейсе была указана правильно. В случае подтверждения бронирования взимается дополнительная плата:",
                    "• 50,00 евро при получении в течение 1 часа после закрытия офиса.;",
                    "• 100,00 евро при получении более чем через 1 час после закрытия.",
                    "",
                    "В случае задержки, пожалуйста, свяжитесь с пунктом проката автомобилей \"Сицилия на машине\" как можно скорее, чтобы сотрудники могли договориться о том, чтобы дождаться вашего прибытия, где это возможно."
                ]
            }
        ]
    }
}
 

Пример ответа (404, Поиск не найден):


{
    "message": "Поиск с таким hash не найден."
}
 

Пример ответа (422, Ошибка валидации):


{
    "message": "Параметры hash и quote_uuid обязательны."
}
 

Пример ответа (500, Внутренняя ошибка):


{
    "message": "Ошибка получения деталей предложения."
}
 

Запрос      

GET api/v2/search/terms

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры Query

hash   string   

Хэш поискового запроса. Example: 5e630350-b62e-432e-bfba-cc2256db849b

quote_uuid   string   

UUID выбранного предложения. Example: dad38dc4-d340-473c-85f1-3bc7445ed827

target   string   

Язык перевода (код, например, ru, en, fr). Example: ru

source   string  optional  

optional Язык оригинального текста (если не указан, определяется автоматически). Example: en

API v2: Заказы

Создание заказа

Создаёт новый заказ на основе ранее полученного предложения (quote), используя идентификатор quote_uuid. Заказ связывается с пользователем, партнёром и тарифным планом, который был указан при поиске ценового предложения. Отправляются уведомления в зависимости от настроек тарифного плана.

Пример запроса:
curl --request POST \
    "https://admin.rently.travel/api/v2/orders" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"hash\": \"5e630350-b62e-432e-bfba-cc2256db849b\",
    \"quote_uuid\": \"ab064054-21b0-4a8a-add1-026591bbc4c9\",
    \"name\": \"Иван\",
    \"name_en\": \"Ivan\",
    \"surname\": \"Иванов\",
    \"surname_en\": \"Ivanov\",
    \"email\": \"ivanov@example.com\",
    \"phone\": \"+79998887766\",
    \"birth_date\": \"1990-01-01\",
    \"residence_country\": \"RU\",
    \"residence_city\": \"Москва\"
}"
const url = new URL(
    "https://admin.rently.travel/api/v2/orders"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "hash": "5e630350-b62e-432e-bfba-cc2256db849b",
    "quote_uuid": "ab064054-21b0-4a8a-add1-026591bbc4c9",
    "name": "Иван",
    "name_en": "Ivan",
    "surname": "Иванов",
    "surname_en": "Ivanov",
    "email": "ivanov@example.com",
    "phone": "+79998887766",
    "birth_date": "1990-01-01",
    "residence_country": "RU",
    "residence_city": "Москва"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/v2/orders';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'hash' => '5e630350-b62e-432e-bfba-cc2256db849b',
            'quote_uuid' => 'ab064054-21b0-4a8a-add1-026591bbc4c9',
            'name' => 'Иван',
            'name_en' => 'Ivan',
            'surname' => 'Иванов',
            'surname_en' => 'Ivanov',
            'email' => 'ivanov@example.com',
            'phone' => '+79998887766',
            'birth_date' => '1990-01-01',
            'residence_country' => 'RU',
            'residence_city' => 'Москва',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/v2/orders'
payload = {
    "hash": "5e630350-b62e-432e-bfba-cc2256db849b",
    "quote_uuid": "ab064054-21b0-4a8a-add1-026591bbc4c9",
    "name": "Иван",
    "name_en": "Ivan",
    "surname": "Иванов",
    "surname_en": "Ivanov",
    "email": "ivanov@example.com",
    "phone": "+79998887766",
    "birth_date": "1990-01-01",
    "residence_country": "RU",
    "residence_city": "Москва"
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Пример ответа (201, успешное):


создание заказа {
  "data": {
    "order_uuid": "82db72d5-7cdc-483d-b097-a14201db8645",
    "order_number": "RENTLY-20250714-XK8Z",
    "status": "draft"
  }
}
 

Пример ответа (404, не):


найден quote {
  "error": "Quote not found"
}
 

Запрос      

POST api/v2/orders

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры Body

hash   string   

Хэш поискового запроса. Example: 5e630350-b62e-432e-bfba-cc2256db849b

quote_uuid   string   

UUID выбранного предложения. Example: ab064054-21b0-4a8a-add1-026591bbc4c9

name   string   

Имя пользователя (на русском языке). Example: Иван

name_en   string   

Имя пользователя (на английском языке, как в загранпаспорте). Example: Ivan

surname   string   

Фамилия пользователя (на русском языке). Example: Иванов

surname_en   string   

Фамилия пользователя (на английском языке, как в загранпаспорте). Example: Ivanov

email   string   

Email пользователя. Example: ivanov@example.com

phone   string   

Телефон пользователя. Example: +79998887766

birth_date   string  optional  

optional Дата рождения. Example: 1990-01-01

residence_country   string  optional  

optional Страна проживания. Example: RU

residence_city   string  optional  

optional Город проживания. Example: Москва

Ответ

Поля ответа

status   string   

Статус заказа. См. раздел API v2: Enums → OrderStatus

Список заказов

requires authentication

Возвращает список заказов, доступных пользователю в зависимости от его роли.

Поддерживаются фильтры по статусу, номеру и UUID заказа, датам создания, а также датам получения и возврата автомобиля.

Пример запроса:
curl --request GET \
    --get "https://admin.rently.travel/api/v2/orders?status=paid&order_uuid=82db72d5-7cdc-483d-b097-a14201db8645&order_number=RENTLY-20250714&created_from=2025-07-01&created_to=2025-07-15&pickup_from=2025-07-10&pickup_to=2025-07-20&dropoff_from=2025-07-15&dropoff_to=2025-07-25&page=1" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/v2/orders"
);

const params = {
    "status": "paid",
    "order_uuid": "82db72d5-7cdc-483d-b097-a14201db8645",
    "order_number": "RENTLY-20250714",
    "created_from": "2025-07-01",
    "created_to": "2025-07-15",
    "pickup_from": "2025-07-10",
    "pickup_to": "2025-07-20",
    "dropoff_from": "2025-07-15",
    "dropoff_to": "2025-07-25",
    "page": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/v2/orders';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'status' => 'paid',
            'order_uuid' => '82db72d5-7cdc-483d-b097-a14201db8645',
            'order_number' => 'RENTLY-20250714',
            'created_from' => '2025-07-01',
            'created_to' => '2025-07-15',
            'pickup_from' => '2025-07-10',
            'pickup_to' => '2025-07-20',
            'dropoff_from' => '2025-07-15',
            'dropoff_to' => '2025-07-25',
            'page' => '1',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/v2/orders'
params = {
  'status': 'paid',
  'order_uuid': '82db72d5-7cdc-483d-b097-a14201db8645',
  'order_number': 'RENTLY-20250714',
  'created_from': '2025-07-01',
  'created_to': '2025-07-15',
  'pickup_from': '2025-07-10',
  'pickup_to': '2025-07-20',
  'dropoff_from': '2025-07-15',
  'dropoff_to': '2025-07-25',
  'page': '1',
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Пример ответа (200, успешный):


ответ {
  "data": {
    "current_page": 1,
    "data": [
      {
        "order_uuid": "da0a500f-863a-44d4-b3c3-f64e327170ca",
        "order_number": "RENTLY-20250716-YLNO",
        "status": "draft",
        "created_at": "2025-07-16 12:30:01",
        "price_total": "45533.63",
        "currency": "RUB",
        "quote": {
          "uuid": "900312ab-9234-4f87-9e6f-b4a41c8974d1",
          "supplier_name": "Keddy",
          "supplier_logo": "https://cdn.rently.travel/partners/keddy_by_europcar.png",
          "vehicle_name": "PEUGEOT 208",
          "vehicle_image": "https://cdn.rently.travel/vehicles/52/2c81a8aee7782f70a9459db8be6aa4b7.jpeg",
          "pickup_address": "FCO, FIUMICINO, LEONARDO DA VINCI APT FIUMICINO INTERNATL. APT",
          "pickup_date": "2025-10-10",
          "pickup_time": "10:00",
          "dropoff_address": "FCO, FIUMICINO, LEONARDO DA VINCI APT FIUMICINO INTERNATL. APT",
          "dropoff_date": "2025-10-20",
          "dropoff_time": "10:00"
        }
      }
    ],
    "first_page_url": "https://admin.rently.travel/api/v2/orders?page=1",
    "from": 1,
    "last_page": 1,
    "last_page_url": "https://admin.rently.travel/api/v2/orders?page=1",
    "links": [
      {
        "url": null,
        "label": "« Назад",
        "active": false
      },
      {
        "url": "https://admin.rently.travel/api/v2/orders?page=1",
        "label": "1",
        "active": true
      },
      {
        "url": null,
        "label": "Вперёд »",
        "active": false
      }
    ],
    "next_page_url": null,
    "path": "https://admin.rently.travel/api/v2/orders",
    "per_page": 15,
    "prev_page_url": null,
    "to": 1,
    "total": 1
  },
  "meta": {
    "current_page": 1,
    "last_page": 1,
    "per_page": 15,
    "total": 1
  }
}
 

Пример ответа (403, нет):


доступа {
  "message": "Партнёр не указан для пользователя"
}
 

Запрос      

GET api/v2/orders

Заголовки

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры Query

status   string  optional  

optional Статус заказа. См. раздел API v2: Enums → OrderStatus Example: paid

order_uuid   string  optional  

optional UUID заказа. Example: 82db72d5-7cdc-483d-b097-a14201db8645

order_number   string  optional  

optional Номер заказа (поддерживает частичное совпадение). Example: RENTLY-20250714

created_from   string  optional  

date optional Начало периода по дате создания заказа (в формате YYYY-MM-DD). Example: 2025-07-01

created_to   string  optional  

date optional Конец периода по дате создания заказа (в формате YYYY-MM-DD). Example: 2025-07-15

pickup_from   string  optional  

date optional Начало периода получения автомобиля (в формате YYYY-MM-DD). Example: 2025-07-10

pickup_to   string  optional  

date optional Конец периода получения автомобиля (в формате YYYY-MM-DD). Example: 2025-07-20

dropoff_from   string  optional  

date optional Начало периода возврата автомобиля (в формате YYYY-MM-DD). Example: 2025-07-15

dropoff_to   string  optional  

date optional Конец периода возврата автомобиля (в формате YYYY-MM-DD). Example: 2025-07-25

page   integer  optional  

optional Номер страницы для пагинации. Example: 1

Подтверждение заказа

requires authentication

Переводит заказ из черновика (draft) в статус ожидания оплаты (awaiting_payment). Обычно вызывается после ввода всех данных и проверки предложения.

Пример запроса:
curl --request POST \
    "https://admin.rently.travel/api/v2/orders/82db72d5-7cdc-483d-b097-a14201db8645/confirm" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/v2/orders/82db72d5-7cdc-483d-b097-a14201db8645/confirm"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/v2/orders/82db72d5-7cdc-483d-b097-a14201db8645/confirm';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/v2/orders/82db72d5-7cdc-483d-b097-a14201db8645/confirm'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()

Пример ответа (200, успешно):


{
    "message": "Заказ подтверждён",
    "status": "awaiting_payment"
}
 

Пример ответа (400, недопустимый):


статус {
  "message": "Заказ не может быть подтверждён в текущем статусе."
}
 

Пример ответа (422, ошибка):


бронирования {
  "message": "Не удалось подтвердить бронирование у поставщика. Попробуйте позже.",
  "supplier_response" => "Service maintenance.",
  "status": "draft"
}
 

Запрос      

POST api/v2/orders/{uuid}/confirm

Заголовки

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры URL

uuid   string   

UUID заказа. Example: 82db72d5-7cdc-483d-b097-a14201db8645

Оплата заказа

requires authentication

В зависимости от тарифного плана партнёра выполняет одно из следующих действий:

Пример запроса:
curl --request POST \
    "https://admin.rently.travel/api/v2/orders/82db72d5-7cdc-483d-b097-a14201db8645/pay" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/v2/orders/82db72d5-7cdc-483d-b097-a14201db8645/pay"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/v2/orders/82db72d5-7cdc-483d-b097-a14201db8645/pay';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/v2/orders/82db72d5-7cdc-483d-b097-a14201db8645/pay'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()

Пример ответа (200, оплата):


через сайт rently.travel {
  "message": "Оплата инициализирована",
  "payment_url": "https://securepay.tinkoff.ru/v2/...",
  "status": "awaiting_payment"
}
 

Пример ответа (200, оплата):


на стороне партнёра {
  "message": "Перейдите на сайт партнёра для оплаты",
  "partner_payment_url": "https://partner.example.com/pay?order=...",
  "status": "awaiting_payment"
}
 

Пример ответа (200, оплата):


партнёром по счёту {
  "message": "Перейдите в личный кабинет партнёра",
  "partner_account_url": "https://admin.rently.travel/admin/orders",
  "status": "awaiting_payment"
}
 

Пример ответа (400, неизвестный):


способ оплаты {
  "message": "Неизвестный способ оплаты"
}
 

Запрос      

POST api/v2/orders/{uuid}/pay

Заголовки

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры URL

uuid   string   

UUID заказа. Example: 82db72d5-7cdc-483d-b097-a14201db8645

Отмена заказа

requires authentication

Отменяет заказ от имени пользователя. Возможна только отмена заказов, которые ещё не были отменены. Статус становится cancelled_by_user.

Пример запроса:
curl --request POST \
    "https://admin.rently.travel/api/v2/orders/82db72d5-7cdc-483d-b097-a14201db8645/cancel" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/v2/orders/82db72d5-7cdc-483d-b097-a14201db8645/cancel"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/v2/orders/82db72d5-7cdc-483d-b097-a14201db8645/cancel';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/v2/orders/82db72d5-7cdc-483d-b097-a14201db8645/cancel'
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers)
response.json()

Пример ответа (200, успешная):


отмена {
  "message": "Заказ отменён",
  "status": "cancelled_by_user"
}
 

Пример ответа (400, уже):


отменён {
  "message": "Заказ уже отменён."
}
 

Пример ответа (422, ошибка):


отмены {
  "message": "Поставщик отклонил отмену бронирования. Попробуйте позже или обратитесь в поддержку.",
  "supplier_response" => "Service maintenance.",
  "status": "paid"
}
 

Запрос      

POST api/v2/orders/{uuid}/cancel

Заголовки

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры URL

uuid   string   

UUID заказа. Example: 82db72d5-7cdc-483d-b097-a14201db8645

API v2: Сервис

Конвертация валюты

Конвертирует сумму из указанной валюты в рубли (RUB) по курсу ЦБ РФ.

Пример запроса:
curl --request GET \
    --get "https://admin.rently.travel/api/v2/services/exchange?amount=100&currency=EUR" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/v2/services/exchange"
);

const params = {
    "amount": "100",
    "currency": "EUR",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/v2/services/exchange';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'query' => [
            'amount' => '100',
            'currency' => 'EUR',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/v2/services/exchange'
params = {
  'amount': '100',
  'currency': 'EUR',
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers, params=params)
response.json()

Пример ответа (200):


{
    "data": {
        "amount": 100,
        "currency": "EUR",
        "converted_amount": 9876.54,
        "converted_currency": "RUB"
    }
}
 

Пример ответа (400):


{
    "error": "Данная валюта не поддерживается"
}
 

Пример ответа (404):


{
    "error": "Курс валюты не найден"
}
 

Запрос      

GET api/v2/services/exchange

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры Query

amount   number   

Сумма для конвертации. Example: 100

currency   string   

Валюта (например, EUR, USD, GBP). См. раздел API v2: Enums → Currency Example: EUR

Перевод текста

Переводит текст с одного языка на другой с помощью Yandex Cloud Translate API. Поддерживает автоматическое определение языка и работу с длинными текстами.

Пример запроса:
curl --request POST \
    "https://admin.rently.travel/api/v2/services/translate" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"text\": \"Hello, how are you?\",
    \"target\": \"ru\",
    \"source\": \"en\"
}"
const url = new URL(
    "https://admin.rently.travel/api/v2/services/translate"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "text": "Hello, how are you?",
    "target": "ru",
    "source": "en"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/v2/services/translate';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'text' => 'Hello, how are you?',
            'target' => 'ru',
            'source' => 'en',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/v2/services/translate'
payload = {
    "text": "Hello, how are you?",
    "target": "ru",
    "source": "en"
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Пример ответа (200):


{
    "data": {
        "original": "Hello, how are you?",
        "translated": "Привет, как дела?",
        "source": "en",
        "target": "ru"
    }
}
 

Запрос      

POST api/v2/services/translate

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры Body

text   string   

Текст, который нужно перевести. Example: Hello, how are you?

target   string   

Язык перевода (код, например, ru, en, fr). Example: ru

source   string  optional  

optional Язык оригинального текста (если не указан, определяется автоматически). Example: en

API v2: Вебхуки

Описание структур webhook-запросов между Rently.travel и системами партнёров.

Вебхук от партнёра об оплате

requires authentication

Этот эндпоинт вызывается платёжной системой партнёра или самим партнёром, чтобы подтвердить успешную или неудачную оплату. Если заказ принадлежит другому партнёру, будет возвращена ошибка 403.

Пример запроса:
curl --request POST \
    "https://admin.rently.travel/api/v2/payments/partner/webhook" \
    --header "Authorization: Bearer {YOUR_AUTH_TOKEN}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"order_number\": \"RENTLY-20250717-XK8Z\",
    \"external_id\": \"PARTNER-123456\",
    \"status\": \"paid\",
    \"paid_at\": \"2025-07-17T13:22:00+03:00\",
    \"message\": \"Оплата прошла успешно\"
}"
const url = new URL(
    "https://admin.rently.travel/api/v2/payments/partner/webhook"
);

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_TOKEN}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "order_number": "RENTLY-20250717-XK8Z",
    "external_id": "PARTNER-123456",
    "status": "paid",
    "paid_at": "2025-07-17T13:22:00+03:00",
    "message": "Оплата прошла успешно"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/v2/payments/partner/webhook';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Authorization' => 'Bearer {YOUR_AUTH_TOKEN}',
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'order_number' => 'RENTLY-20250717-XK8Z',
            'external_id' => 'PARTNER-123456',
            'status' => 'paid',
            'paid_at' => '2025-07-17T13:22:00+03:00',
            'message' => 'Оплата прошла успешно',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/v2/payments/partner/webhook'
payload = {
    "order_number": "RENTLY-20250717-XK8Z",
    "external_id": "PARTNER-123456",
    "status": "paid",
    "paid_at": "2025-07-17T13:22:00+03:00",
    "message": "Оплата прошла успешно"
}
headers = {
  'Authorization': 'Bearer {YOUR_AUTH_TOKEN}',
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Пример ответа (200, успех):


{
    "message": "Webhook processed"
}
 

Пример ответа (403, пользователь):


не имеет доступа {
  "message": "Access denied"
}
 

Пример ответа (404, не):


найден заказ {
  "message": "Order not found"
}
 

Запрос      

POST api/v2/payments/partner/webhook

Заголовки

Authorization      

Example: Bearer {YOUR_AUTH_TOKEN}

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры Body

order_number   string   

Номер заказа в нашей системе. Example: RENTLY-20250717-XK8Z

external_id   string  optional  

optional Идентификатор платежа у партнёра. Example: PARTNER-123456

status   string   

Статус платежа. Полный список доступных статусов можно посмотреть в разделе Enums. Example: paid

paid_at   datetime  optional  

optional Время оплаты (по UTC или ISO 8601). Example: 2025-07-17T13:22:00+03:00

message   string  optional  

optional Комментарий или сообщение об ошибке. Example: Оплата прошла успешно

Пример webhook-запроса на создание заказа

Мы отправим POST-запрос на указанный вами URL, указанный в поле webhook_url в тарифном плане. Параметры передаются в теле запроса в формате JSON.

Пример запроса:
curl --request POST \
    "https://admin.rently.travel/api/_docs/webhook-fake" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --data "{
    \"uuid\": \"82db72d5-7cdc-483d-b097-a14201db8645\",
    \"order_number\": \"RENTLY-20250714-XK8Z\",
    \"status\": \"draft\",
    \"price_total\": 14356.75,
    \"currency\": \"RUB\",
    \"customer_name\": \"Иван Иванов\",
    \"email\": \"ivanov@example.com\",
    \"phone\": \"+79998887766\"
}"
const url = new URL(
    "https://admin.rently.travel/api/_docs/webhook-fake"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

let body = {
    "uuid": "82db72d5-7cdc-483d-b097-a14201db8645",
    "order_number": "RENTLY-20250714-XK8Z",
    "status": "draft",
    "price_total": 14356.75,
    "currency": "RUB",
    "customer_name": "Иван Иванов",
    "email": "ivanov@example.com",
    "phone": "+79998887766"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/_docs/webhook-fake';
$response = $client->post(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
        'json' => [
            'uuid' => '82db72d5-7cdc-483d-b097-a14201db8645',
            'order_number' => 'RENTLY-20250714-XK8Z',
            'status' => 'draft',
            'price_total' => 14356.75,
            'currency' => 'RUB',
            'customer_name' => 'Иван Иванов',
            'email' => 'ivanov@example.com',
            'phone' => '+79998887766',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/_docs/webhook-fake'
payload = {
    "uuid": "82db72d5-7cdc-483d-b097-a14201db8645",
    "order_number": "RENTLY-20250714-XK8Z",
    "status": "draft",
    "price_total": 14356.75,
    "currency": "RUB",
    "customer_name": "Иван Иванов",
    "email": "ivanov@example.com",
    "phone": "+79998887766"
}
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('POST', url, headers=headers, json=payload)
response.json()

Пример ответа (200, Партнёр):


получит вот такой POST-запрос {
  "order_number": "RENTLY-20250714-XK8Z",
  "status": "draft",
  "price_total": 14356.75,
  "currency": "RUB",
  "customer_name": "Иван Иванов",
  "email": "ivanov@example.com",
  "phone": "+79998887766"
}
 

Запрос      

POST api/_docs/webhook-fake

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json

Параметры Body

uuid   string   

UUID заказа. Example: 82db72d5-7cdc-483d-b097-a14201db8645

order_number   string   

Уникальный номер заказа. Example: RENTLY-20250714-XK8Z

status   string   

Текущий статус заказа. Example: draft

price_total   number   

Общая сумма заказа. Example: 14356.75

currency   string   

Валюта заказа. Example: RUB

customer_name   string   

Имя и фамилия клиента. Example: Иван Иванов

email   string   

Email клиента. Example: ivanov@example.com

phone   string   

Телефон клиента. Example: +79998887766

API v2: Enums

Справочник enum-ов

В этой секции приведено описание всех enum-ов, которые используются в API.

Card

Возможные значения:

CardCode

Возможные значения:

Currency

Возможные значения:

DistancePeriod

Возможные значения:

Fuel

Возможные значения:

FuelPolicy

Возможные значения:

LocationType

Возможные значения:

OrderStatus

Возможные значения:

PaymentMethod

Возможные значения:

PaymentStatus

Возможные значения:

UserType

Возможные значения:

Пример запроса:
curl --request GET \
    --get "https://admin.rently.travel/api/_docs/enums" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://admin.rently.travel/api/_docs/enums"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());
$client = new \GuzzleHttp\Client();
$url = 'https://admin.rently.travel/api/_docs/enums';
$response = $client->get(
    $url,
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Accept' => 'application/json',
        ],
    ]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json

url = 'https://admin.rently.travel/api/_docs/enums'
headers = {
  'Content-Type': 'application/json',
  'Accept': 'application/json'
}

response = requests.request('GET', url, headers=headers)
response.json()

Пример ответа (200):


"OK"
 

Запрос      

GET api/_docs/enums

Заголовки

Content-Type      

Example: application/json

Accept      

Example: application/json