Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • ASB ASB
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Issues 5
    • Issues 5
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
  • Monitor
    • Monitor
    • Metrics
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Create a new issue
  • Jobs
  • Issue Boards
Collapse sidebar
  • Pavel Kupreev
  • ASBASB
  • Issues
  • #1

Closed
Open
Created Sep 20, 2022 by Pavel Kupreev@iamkuper👽Maintainer0 of 15 tasks completed0/15 tasks

Документация к API АСБ (обновляется)

20 сентября 2022 16:00

Оглавление:


1. Авторизация и лимиты
2. Обьекты размещения
3. Программы размещения
4. Категории номеров
5. Свойства категорий
6. Список цен по категориям
7. Квоты
8. Заказы
9. Расчет стоимости
10. Услуги
11. Смена статуса

Основное:


Исходный документ

/**
* Переменные
**/
const BASE_PATH = 'http://test.ihmanagement.ru';

1. Авторизация и лимиты


Аутентификация Digest - логин-пароль пользователя пересылаются через сеть в зашифрованом виде по алгоритму MD5

Вопросы:
  • Алгоритм получения хеша? MD5(user:password)
  • Лимиты на количество запросов?

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;
}
Вопросы:
  • Пагинация? Всегда выдает всех?
  • Типизация свойства objid (Уникальный код объекта в АСБ)?
  • Типизация свойства objaddr (Адрес обьекта)?
  • Типизация свойства latitude/longitude (Широта)?
  • Типизация свойства geoobject (Объект геолокации)?
  • Типизация свойства hourin (Время заезда)?

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
}
Вопросы:
  • Как получить все заказы (синхронизация)?
  • В чем разница методов letters/setletter?

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
}
Edited Sep 20, 2022 by Pavel Kupreev
Assignee
Assign to
Time tracking