20 сентября 2022 16:00
Оглавление:
Основное:
Исходный документ
/**
* Переменные
**/
const BASE_PATH = 'http://test.ihmanagement.ru';
1. Авторизация и лимиты
Аутентификация Digest - логин-пароль пользователя пересылаются через сеть в зашифрованом виде по алгоритму MD5
Вопросы:
2. Обьекты размещения:
METHOD |
URL |
Описание |
Параметры |
200 Результат |
GET |
/websrvice/api/res/v1/objects |
Получение списка доступных объектов размещения |
- |
Objects[] |
POST |
/websrvice/api/res/v1/objects |
Получение списка доступных объектов размещения |
- |
Objects[] |
interface Object {
// Уникальный код объекта в АСБ. Если не указан, выдаются все программы для заданного пользователя (формат?)
objid?: any;
// Название объекта размещания
objnam?: string;
// Расчетный час
payhour?: string;
// Список id групп объектов (разделитель ",")
grpid_delim?: string;
// Путь до картинки
img_link?: string;
// Описание обьекта
objnot?: string;
// Адрес обьекта
objaddr?: any;
// (формат?)
latitude?: any;
// Долгота (формат?)
longitude?: any;
// Возраст до которого гость счатется ребенком
child_age?: number;
// Объект геолокации (формат?)
geoobject?: any;
// Время заезда (формат?)
hourin?: any;
// Время выезда
hourout?: время выезда
// Звездность объекта (0 - не задано)
objstars?: number;
// Код типа объекта см endpoint objtyps
objtypid?: number;
}
Вопросы:
3. Программы размещения:
METHOD |
URL |
Описание |
Параметры |
[2xx] Результат |
GET |
/websrvice/api/res/v1/programms |
Получение списка программ объектов размещения |
GetProgrammsParams |
Programm[] |
POST |
/websrvice/api/res/v1/programms |
Получение списка программ объектов размещения |
GetProgrammsParams |
Programm[] |
interface GetProgrammsParams {
// Код объекта размещения (формат?)
objid?: any;
}
interface Programm {
// Код программы (формат?)
pricelistid?: any;
// progid = pricelistid код программы (формат?)
progid?: any;
// Название
prognam?: string;
// Примечание
prognot?: string;
// Код объекта размещения (формат?)
objid?: any;
// Код договора (формат?)
concod?: any;
// Максимально разрешенное кол-во суток в заказе
maxlength?: number;
// Минимально разрешенное кол-во суток в заказе
minlength?: number;
// Дата начала действия программы
datein?: Date;
// Дата окончания действия программы
dateout?: Date;
// Пары дат ограничения действия программы (формат?)
jsonrestriction?: any;
// Кол-во суток от текущей даты с которых начинает работать программа
quotestartdays?: number;
// Массив кодов услуг доступных при бронировании по данной программе
servcods?: any[];
}
Вопросы:
4. Категории номеров
METHOD |
URL |
Описание |
Параметры |
[2xx] Результат |
GET |
/websrvice/api/res/v1/categs |
Получение списка категорий номеров |
GetCategoriesParams |
Category[] |
POST |
/websrvice/api/res/v1/categs |
Получение списка категорий номеров |
GetCategoriesParams |
Category[] |
interface GetCategoriesParams {
// Код объекта размещения (формат?)
objid?: any;
}
interface Category {
// Код категории (формат?)
catcod?: any;
// Возможность размещения 1 гостя во весь номер 1-возможно/0-не возможно
oneplacefl?: number;
// Название
catnam?: string;
// Сокращенное название
catlab?: string;
// Кол-во основных мест
catbednum?: number;
// Кол-во доп мест
catdopnum?: number;
// Примечание
catnot?: string;
// Кол-во картинок в массиве catgalery
imgcount?: number;
// Галерея картинок
catgalery?: CategoryGallery[];
// Массив кодов свойств, описание см интерфейс catprops
catpropids?: any[];
}
interface CategoryGallery {
// Ссылка на файл
href?: string;
// Заголовок
title? string;
}
Вопросы:
5. Свойства категорий:
METHOD |
URL |
Описание |
Параметры |
[2xx] Результат |
GET |
/websrvice/api/res/v1/programms |
Получение списка свойств номеров |
- |
CategoryProperty[] |
POST |
/websrvice/api/res/v1/programms |
Получение списка свойств номеров |
- |
CategoryProperty[] |
type CategoryProperty {
// Код свойства (формат?)
catpropid?: any;
// Название
catpropnam?: string;
}
Вопросы:
6. Список цен по категориям:
METHOD |
URL |
Описание |
Параметры |
[2xx] Результат |
GET |
/websrvice/api/res/v1/prices |
Список цен номеров |
GetPricesDto |
Price[] |
POST |
/websrvice/api/res/v1/prices |
Список цен номеров |
GetPricesDto |
Price[] |
interface GetPricesDto {
// уникальный код объекта в АСБ. Если не указан, выдаются все программы (формат?)
objid?: any;
// кол-во дней на которые запрашиваются цены (например =60 - тогда цены будут выданы на 60 дней вперед)
length?: number;
}
interface Price {
// Дата прейскуранта
datein?: Date;
// Код категории (формат?)
catcod?: any;
// Cтоимость номера целиком
price?: number;
// Cтоимость места
priceplace?: number;
// Cтоимость доп места
pricedop?: number;
// Cтоимость детского места
pricechild?: number;
// Cтоимость детского доп места
pricedopchild?: number;
// Код валюты (формат?)
curintcod?: any;
// Код цены (формат?)
pricelistid?: any;
// progid = pricelistid код цены (формат?)
progid?: any;
// Код услуги (формат?)
servcod?: any;
}
7. Квоты:
METHOD |
URL |
Описание |
Параметры |
Результат |
GET |
/websrvice/api/res/v1/quotes |
Получение квоты доступных номеров |
GetQuotesParams |
Quote[] |
POST |
/websrvice/api/res/v1/quotes |
Получение квоты доступных номеров |
GetQuotesParams |
Quote[] |
interface GetQuotesParams {
// уникальный код объекта в АСБ. Если не указан, выдаются все (формат?)
objid?: any;
// дата с которой выдать квоту. Фомат YYYY-MM-DD. По умолчанию: текущая дата
datein?: Date;
// кол-во дней на которые запрашиваются квоту (например =60 - тогда квота будет выдана на 60 дней вперед datein). По умолчанию: 7
length?: number;
// код категории номера, если не указан то все доступные на объекте (формат?)
catcod?: any;
}
interface Quote {
// Дата ?
resdate?: Date;
// Код категории (формат?)
catcod?: any;
// Кол-во номеров для бронирования
quoteval?: number;
// Кол-во номеров всего (если "0" - значение не задано)
fondval?: number;
// Код объекта размещения (формат?)
objid?: any;
// Код договора с объектом (формат?)
concod?: any;
// № договора с объектом (формат?)
connr?: any;
}
8. Заказы:
METHOD |
URL |
Описание |
Параметры |
[2xx] Результат |
GET |
/websrvice/api/res/v1/letters |
Поиск заказа |
GetLetterParams |
CreatedLetter[] |
POST |
/websrvice/api/res/v1/letters |
Регистрация заказа |
LetterJson |
SetLetterResult |
POST |
/websrvice/api/res/v1/setletter |
Регистрация заказа |
LetterJson |
SetLetterResult |
PUT |
/websrvice/api/res/v1/letters |
Изменение заказа |
LetterJson |
UpdateLetterResult |
DELETE |
/websrvice/api/res/v1/letters |
Аннуляция заказа |
LetterJson |
DeleteLetterResult |
/**
* Параметры запроса (получение заказов)
**/
interface GetLetterParams {
// Регистрационный № заказа в АСБ (формат?)
letregnr?: any;
// Уникальный (числовой) код заказа в АСБ
letcod?: number;
// если задан 1 то выдает только оплаченные заказы
payed_letters?: number;
// дата начала диапазона. Формат даты yyyy-mm-dd
datein?: string;
// дата конца диапазона. Формат даты yyyy-mm-dd
dateout?: string;
}
/**
* Заказ (получение)
**/
interface CreatedLetter {
// Код заказа в АСБ (формат?)
letcod?: any;
// регистрационный № заказа в АСБ (формат?)
letregnr?: any;
// Примечание к заказу
letnot?: string;
// Название статуса
letstnam?: string;
// Код статуса (формат?)
letstcod?: any;
// ФИО плательщика
payer_fio?: string;
// Телефон плательщика
payer_phone?: string;
// Email
payer_mail?: string;
// Дата заезда ??? формат
datein?: string;
// Дата выезда ??? формат
dateout?: string;
// Дата регистрации заказа в АСБ
datereg?: Date;
// Cтоимость
price?: number;
// расчетная сумма предоплаты
prepay?: number;
// Числовой код валюты ISO
curintcod?: number;
// Буквенный код валюты ISO
curintlab?: string;
// № дисконтной карты (формат?)
discardnr?: any;
// % скидки по дисконтной карте
discardprc?: number;
// Код агента АСБ (формат?)
agentcod?: any;
// Уникальный идентификатор плательщика
payer_id?: any;
// Наименование агента продавшего заказ
agentnam?: string;
// Код объекта размещения (формат?)
objid?: any;
// Название объекта размещения
objnam?: string;
// Дата перевода в статус 1 (Забронирован)
letstdate1?: Date;
// Дата перевода в статус 2 (Продан)
letstdate2?: Date;
// Дата перевода в статус 3 (Оплачен)
letstdate3?: Date;
// Дата перевода в статус 4 (Аннулирован)
letstdate4?: Date;
// Примечание по заказу
letnot?: string;
}
/**
* Заказ (создание и обновление)
**/
interface LetterJson {
js_data: Letter;
}
interface Letter {
// Код заказа в АСБ тип BigInt при регистрации заказа ставить 0
letcod: number = 0;
// Дата заезда (yyyy-mm-dd)
datein: string;
// Дата выезда (yyyy-mm-dd)
datein: string;
// Код программы
pricelistid: any;
// Примечание к заказу
letnot: string;
// Признак запроса
queryfl: QueryFlCode;
// Номера
rooms: Room[];
// Стоимость
price: number;
// № дисконтной карты, если нет - пусто
discardnr: string;
// Статус
letstatus: LetterStatus;
// Агент
agent: LetterAgent;
// ???
contract: LetterContract;
// ???
addservices: LetterAddService;
// Плательщик
payer: LetterPayer;
}
/**
* Статус
**/
interface LetterStatus {
// Код статуса
letstcod: number;
// Название статуса
letstlab: string;
// Дата перехода в статус
letstdate: Date;
}
/**
* Агент
**/
interface LetterAgent {
// Код агента
agentcod: number;
// Название агента
agentnam: string;
}
/**
* Договор
**/
interface LetterContract {
// Код
concod: number;
// Название
connr: string;
}
/**
* Дополнительный сервис
**/
interface LetterAddService {
// Код
servcod: number;
// Название
servnam: string;
// Стоимость
servsum: number;
}
/**
* Плательщик
**/
interface LetterPayer {
// Фамилия
lastname: string;
// Имя
firstname: string;
// Отчество
middlename: string;
// Email
email: string;
// Телефон
cellphone: string;
// Дисконтная карта
disCard: string;
}
/**
* Номер
**/
interface Room {
// Код категории
catcod: string;
// ???
catplacefl: number;
// Массив клиентов
clients: Client[];
}
/**
* Клиент
**/
interface Client {
// ID клиента
clientid?: number;
// Код программы
pricelistid?: string;
// Фамилия
clinam1: string;
// Имя
clinam2: string;
// Отчество
clinam3: string;
// Примечание
clinot: string;
// Дата рождения (yyyy-mm-dd)
datebirthday: string;
// Скидка
discount: number;
// Процент агентской скидки
disprc: string;
// Признак дополнительного места
dopplacefl: DopPlaceFlag
// Активность гостя
enablefl: boolean;
// Код страны по ISO (РФ - 643)
countintcod: number;
// Услуги по лечению
heal: ServiceItem[];
// Услуги по питанию
mealType: ServiceItem[];
// Стоимость
price: number;
// Код пола клиента
sexcod: ClientSexCode;
// Код возраста
agecod: ClientAgeCode;
}
/**
* Услуга
**/
interface ServiceItem {
// Код услуги
servcod: string;
// Название
servnam: string;
// Цена
servprice: number;
}
interface UpdateLetterResult {
ref: number;
mes: string;
}
interface DeleteLetterResult {
ref: number;
mes: string;
}
interface SetLetterResult {
// Регистрационный № заказа
mes: any;
// код договора
concod: any;
// код валюты ISO
curintcod: number;
// наименование валюты ISO
curintlab: string;
// url для оплаты (при наличии платежной системы)
paysysurl?: string;
// код платежной системы
paysysid: string;
// признак статуса запрос (0 - заказ, 1- запрос)
queryfl: QueryFlCode
}
enum QueryFlCode {
BOOKING = 0,
REQUEST = 1
}
enum DopPlaceFlag {
MAIN = 0,
ADDITIONAL = 1
}
enum ClientSexCode {
MAN = 1,
WOMEN = 2
}
enum ClientAgeCode {
ADULT = 1,
CHILDREN = 2
}
Вопросы:
9. Расчет стоимости:
METHOD |
URL |
Описание |
Параметры |
[2xx] Результат |
POST |
/websrvice/api/res/v1/calcsum |
Рассчет стоимости |
LetterJson |
LetterJson |
Типизация совпадает с п.6
10. Услуги:
METHOD |
URL |
Описание |
Параметры |
[2xx] Результат |
GET |
/websrvice/api/res/v1/services |
Получение списка доступных услуг по объектам размещения |
GetServicesParams |
GetServicesResponse |
POST |
/websrvice/api/res/v1/services |
Получение списка доступных услуг по объектам размещения |
GetServicesParams |
- |
interface GetServicesParams {
// уникальный код объекта в АСБ
objid: any;
}
/**
* Ответы сервера
* [200]
**/
interface GetServicesResponse {
// Код услуги
ervcod: any;
// Код объекта
objid: any;
// Название услуги
servnam: string;
// описание услуги
servnot: string;
// название группы услуги
servgrpnam: string;
// код группы услуги
servgrpid: any;
// тип услуги
servtypid: any;
// описание типа услуги
servtypnam: string;
}
9. Типы объектов:
METHOD |
URL |
Описание |
Параметры |
[2xx] Результат |
GET |
/websrvice/api/res/v1/objtyps |
Получение списка доступных типов для объектов размещения |
- |
GetObjectTypesResponse |
POST |
/websrvice/api/res/v1/objtyps |
Получение списка доступных типов для объектов размещения |
- |
GetObjectTypesResponse |
/**
* Ответы сервера
* [200]
**/
interface GetObjectTypesResponse {
// Код типа объекта размещения
objtypid: any;
// Название типа объекта размещения
objtypnam: string;
}
11. Смена статуса:
METHOD |
URL |
Описание |
Параметры |
[2xx] Результат |
POST |
/websrvice/api/res/v1/letter_set_status_sold |
Изменение статуса заказа с "Забронирован" на "Продан" |
SetLetterSoldStatusParams |
SetLetterSoldStatusResponse |
interface SetLetterSoldStatusParams {
// Код заказа
letcod: any;
}
/**
* Ответы сервера
* [200]
**/
interface SetLetterSoldStatusResponse {
// 1 - Успешно, (-2) - нет вкоты, (-3) - нет денег на счете агента
ref: ResponseStatus;
// Описание
mes: string;
}
enum ResponseStatus {
OK = 1,
NOT_ROOMS = -2,
NOT_MONEY = -3
}