Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 25 Next »

В данный момент находиться в процессе разработки

API может (и будет) дополняться и изменяться в будущем


Версия

Доступно с версии 0.84 и выше

Версия

Чтобы включить API нужно прописать $conf{API_ENABLE} в файле config.pl

В системе реализован RESTfull интерфейс управления услугами и абонентами. Интерфейс находит по адресу api.cgi. Оправка, получение данных производится по протоколу HTTP POST/GET/PUT/DELETE. Все взаимодействие по интерфейсу выполняется по принципам REST (ресурс определяться по средствам задания имени в URL).

Для сохранение совместимости с стандартом REST все ключи автоматически переводятся в camelCase, но поскольку несоответствие названий в Базе Данных может усложнить разработку – существует возможность отключить такое превращение используя несколько вариантов:

  1. Параметр $conf{API_FILDS_CAMELIZE} в конфигурационном файле
  2. Задать в заголовках запроса CAMELIZE в соответствующие значение (имеет приоритет над значением в конфигурационном файле)
ЗначениеРезультат
1Все ключи превращаются в camelCase
0Ключи в исходном виде, как в базе данных (snake_case)

Авторизация

Для подтверждения личности при выполнении запросов, некоторые пути требуют соответствующий привилегии:

  • Авторизация администратора выполняется через API_KEY (можно задать в веб-интерфейсе). Ключ нужно передать в заголовке запроса KEY в значении API_KEY.
  • Пользователям нужно использовать идентификатор сессии (sid), передавая его значение в заголовке USERSID. Для получения sid можно
    воспользоваться авторизацией через API используя маршрут авторизация абонента (/users/login).

swagger: '2.0'
info:
  version: 1.0.0
  title: Abills admins API
host: demo.abills.net.ua:9443
basePath: /api.cgi
tags:
  - name: users
    description: Работа с пользователями
  - name: groups
    description: Группы пользователей
  - name: tp
    description: Тарифные планы
  - name: msgs
    description: Msgs
  - name: internet
    description: Internet
  - name: iptv
    description: Iptv
  - name: abon
    description: Abon
  - name: districts
    description: Районы
  - name: streets
    description: Улицы
  - name: builds
    description: Дома
  - name: payments
    description: Оплаты
  - name: fees
    description: Списания
  - name: online
    description: Сессии пользователя
  - name: version
    description: Версии
schemes:
  - https
paths:
  /users/login:
    post:
      tags:
        - users
      summary: Авторизация пользователя
      operationId: loginUser
      produces:
        - application/json
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/UserLogin'
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/inline_response_200'
  /users/:
    post:
      tags:
        - users
      summary: Добавить нового пользователя
      operationId: addUser
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: body
          description: Параметры, которые нужно указать
          required: true
          schema:
            $ref: '#/definitions/User'
      responses:
        '200':
          description: успешное выполнение
          schema:
            $ref: '#/definitions/UserCreated'
      security:
        - KEY: []
  /users/all:
    get:
      tags:
        - users
      summary: Получить всех пользователей
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: query
          name: fio
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: fio2
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: fio3
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: deposit
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: extDeposit
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: extBillId
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: credit
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: creditDate
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: loginStatus
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: phone
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: email
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: floor
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: entrance
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: addressFlat
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: pasportDate
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: pasportNum
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: pasportGrant
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: city
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: zip
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: gid
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: companyId
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: companyName
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: contractId
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: contractSufix
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: contractDate
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: expire
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: reduction
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: lastPayment
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: lastFees
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: registration
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: reductionDate
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: comments
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: billId
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: activate
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: acceptRules
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: password
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: birthDate
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: taxNumber
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: pageRows
          description: Количество записей
          type: integer
          default: 100000
        - in: query
          name: sort
          description: Сортировка по одному параметру выше
          type: string
      responses:
        '200':
          description: успешное выполнение
          schema:
            $ref: '#/definitions/UserList'
      security:
        - KEY: []
  /users/{UID}:
    get:
      tags:
        - users
      summary: Получить пользователя по UID
      description: Возвращает пользователя
      operationId: getUserByUID
      produces:
        - application/json
      parameters:
        - name: UID
          in: path
          description: UID пользователя в биллинге
          required: true
          type: integer
          format: int64
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/User'
        '404':
          description: Пользователь не найден
          schema:
            $ref: '#/definitions/ApiResponse'
      security:
        - KEY: []
    put:
      tags:
        - users
      summary: Обновить информацию о пользователе
      operationId: updateUser
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: UID
          in: path
          description: UID пользователь
          required: true
          type: integer
          format: int64
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/User'
      responses:
        '400':
          description: Invalid ID supplied
      security:
        - KEY: []
    delete:
      tags:
        - users
      summary: Удалить пользователя
      operationId: deleteUser
      produces:
        - application/json
      parameters:
        - name: UID
          in: path
          description: UID пользователя
          required: true
          type: integer
          format: int64
      responses:
        '404':
          description: Пользователь не найден
          schema:
            $ref: '#/definitions/ApiResponse'
      security:
        - KEY: []
  /users/{UID}/pi:
    get:
      tags:
        - users
      summary: Получить персональную информацию о пользователе
      description: Возвращает персональную информацию пользователя
      operationId: getUserPiByUID
      produces:
        - application/json
      parameters:
        - name: UID
          in: path
          description: UID пользователя в биллинге
          required: true
          type: integer
          format: int64
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/UserPi'
        '404':
          description: Пользователь не найден
          schema:
            $ref: '#/definitions/ApiResponse'
      security:
        - KEY: []
    post:
      tags:
        - users
      summary: Добавление персональной информации пользователю
      operationId: addUserPi
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: UID
          in: path
          description: UID пользователь
          required: true
          type: integer
          format: int64
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/UserPi'
      responses:
        '404':
          description: Пользователь не найден
          schema:
            $ref: '#/definitions/ApiResponse'
      security:
        - KEY: []
    put:
      tags:
        - users
      summary: Изменение персональной информации пользователю
      operationId: changeUserPi
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: UID
          in: path
          description: UID пользователь
          required: true
          type: integer
          format: int64
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/UserPi'
      responses:
        '404':
          description: Пользователь не найден
          schema:
            $ref: '#/definitions/ApiResponse'
      security:
        - KEY: []
  /users/{UID}/contacts:
    get:
      tags:
        - users
      summary: Получить контакты пользователя по UID
      description: Возвращает контакты пользователя
      operationId: getUserContactsByUID
      produces:
        - application/json
      parameters:
        - name: UID
          in: path
          description: UID пользователя в биллинге
          required: true
          type: integer
          format: int64
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/ContactsArray'
        '404':
          description: Пользователь не найден
          schema:
            $ref: '#/definitions/ApiResponse'
      security:
        - KEY: []
    post:
      tags:
        - users
      summary: Добавление контакта пользователю
      operationId: updateUserContact
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: UID
          in: path
          description: UID пользователь
          required: true
          type: integer
          format: int64
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/User'
      responses:
        '404':
          description: Пользователь не найден
          schema:
            $ref: '#/definitions/ApiResponse'
      security:
        - KEY: []
  /users/{UID}/contacts/{ID}:
    put:
      tags:
        - users
      summary: Обновить контакт пользователю
      operationId: updateUserConctact
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: UID
          in: path
          description: UID пользователь
          required: true
          type: integer
          format: int64
        - name: ID
          in: path
          description: ID контакта
          required: true
          type: integer
          format: int64
      responses:
        '404':
          description: Пользователь не найден
          schema:
            $ref: '#/definitions/ApiResponse'
      security:
        - KEY: []
    delete:
      tags:
        - users
      summary: Удалить контакт пользователя
      operationId: deleteUserContact
      produces:
        - application/json
      parameters:
        - name: UID
          in: path
          description: UID пользователя
          required: true
          type: integer
          format: int64
        - name: ID
          in: path
          description: ID контакта
          required: true
          type: integer
          format: int64
      responses:
        '404':
          description: Пользователь не найден
          schema:
            $ref: '#/definitions/ApiResponse'
      security:
        - KEY: []
  /users/contacts:
    post:
      tags:
        - users
      summary: Получить контакты
      description: Возвращает контакты пользователей
      operationId: getContacts
      produces:
        - application/json
      parameters:
        - in: body
          name: body
          description: Параметры для фильтрации контактов
          required: true
          schema:
            $ref: '#/definitions/Contacts'
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/ContactsArray'
      security:
        - KEY: []
  /users/internet/all:
    get:
      tags:
        - internet
      summary: Получить всех пользователей
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: query
          name: cid
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: cpe_mac
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: vlan
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: server_vlan
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0


        - in: query
          name: joinService
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: simultaneonsly
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: speed
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: nasId
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: port
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: allFilterId
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: filterId
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: tpId
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: tpNum
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: tpName
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: monthFee
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: abonDistribution
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: dayFee
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: personalTp
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: paymentType
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: disable
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: ipnActivate
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: dayTrafLimit
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: weekTrafLimit
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: totalTrafLimit
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: feesMethod
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: nasIp
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: fio
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: fio2
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: fio3
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: deposit
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: extDeposit
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: extBillId
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: credit
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: creditDate
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: loginStatus
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: phone
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: email
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: floor
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: entrance
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: addressFlat
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: pasportDate
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: pasportNum
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: pasportGrant
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: city
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: zip
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: gid
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: companyId
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: companyName
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: contractId
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: contractSufix
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: contractDate
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: expire
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: reduction
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: lastPayment
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: lastFees
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: registration
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: reductionDate
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: comments
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: billId
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: activate
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: acceptRules
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: password
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: birthDate
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: taxNumber
          description: Параметр который возвращает биллинг
          type: boolean
          default: 0
        - in: query
          name: pageRows
          description: Количество записей
          type: integer
          default: 100000
        - in: query
          name: sort
          description: Сортировка по одному параметру выше
          type: string
      responses:
        '200':
          description: успешное выполнение
          schema:
            $ref: '#/definitions/UserInternetList'
      security:
        - KEY: [ ]
  /users/{UID}/internet:
    get:
      tags:
        - internet
      summary: Получить список ТП Internet пользователя
      description: Возвращает ТП интернет пользователя
      operationId: getUserInternetByUID
      produces:
        - application/json
      parameters:
        - name: UID
          in: path
          description: UID пользователя в биллинге
          required: true
          type: integer
          format: int64
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/UserInternetList'
        '404':
          description: Пользователь не найден
          schema:
            $ref: '#/definitions/ApiResponse'
      security:
        - KEY: []
    post:
      tags:
        - internet
      summary: Добавление ТП Internet пользователю
      operationId: addUserInternet
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: UID
          in: path
          description: UID пользователь
          required: true
          type: integer
          format: int64
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/UserInternet'
      responses:
        '404':
          description: Пользователь не найден
          schema:
            $ref: '#/definitions/ApiResponse'
      security:
        - KEY: []
  /users/{UID}/internet/{ID}:
    get:
      tags:
        - internet
      summary: Информация об интернет услуге пользователя по ID услуги
      operationId: internetInfoUser
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: UID
          in: path
          description: UID пользователь
          required: true
          type: integer
          format: int64
        - name: ID
          in: path
          description: ID услуги
          required: true
          type: integer
          format: int64
      responses:
        '404':
          description: Пользователь не найден
          schema:
            $ref: '#/definitions/ApiResponse'
      security:
        - KEY: []
  /users/{UID}/iptv:
    get:
      tags:
        - iptv
      summary: Получить список ТП Iptv пользователя
      description: Возвращает ТП Iptv пользователя
      operationId: getUserIptvByUID
      produces:
        - application/json
      parameters:
        - name: UID
          in: path
          description: UID пользователя в биллинге
          required: true
          type: integer
          format: int64
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/UserIptvList'
        '404':
          description: Пользователь не найден
          schema:
            $ref: '#/definitions/ApiResponse'
      security:
        - KEY: []
  /users/{UID}/iptv/{ID}:
    get:
      tags:
        - iptv
      summary: Информация об Iptv услуге пользователя по ID услуги
      operationId: iptvInfoUser
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: UID
          in: path
          description: UID пользователь
          required: true
          type: integer
          format: int64
        - name: ID
          in: path
          description: ID услуги
          required: true
          type: integer
          format: int64
      responses:
        '404':
          description: Пользователь не найден
          schema:
            $ref: '#/definitions/ApiResponse'
      security:
        - KEY: []
  /msgs/:
    post:
      tags:
        - msgs
      summary: Добавить сообщение
      operationId: addMsgs
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: body
          description: Параметры, которые нужно указать
          required: true
          schema:
            $ref: '#/definitions/Msgs'
      responses:
        '200':
          description: успешное выполнение
          schema:
            $ref: '#/definitions/ApiSuccessAddResponse'
      security:
        - KEY: []
  /msgs/{ID}:
    get:
      tags:
        - msgs
      summary: Получить сообщение по ID
      description: Возвращает сообщение
      operationId: getMsgsInfoByID
      produces:
        - application/json
      parameters:
        - name: ID
          in: path
          description: ID сообщения
          required: true
          type: integer
          format: int64
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/Msgs'
        '404':
          description: Сообщение не найден
          schema:
            $ref: '#/definitions/ApiResponse'
      security:
        - KEY: []
  /msgs/list:
    post:
      tags:
        - msgs
      summary: Получить список сообщений
      operationId: msgsList
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: body
          description: Параметры, по которым можно фильтровать сообщения
          required: true
          schema:
            $ref: '#/definitions/Msgs'
      responses:
        '200':
          description: успешное выполнение
          schema:
            $ref: '#/definitions/ApiSuccessAddResponse'
      security:
        - KEY: []
  /msgs/{ID}/reply:
    get:
      tags:
        - msgs
      summary: Ответы на сообщение
      operationId: repliesListToMsgs
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: ID
          in: path
          description: ID сообщения
          required: true
          type: integer
          format: int64
      responses:
        '200':
          description: успешное выполнение
          schema:
            $ref: '#/definitions/MsgsRepliesList'
      security:
        - KEY: []
    post:
      tags:
        - msgs
      summary: Ответить на сообщение
      operationId: addReplyToMsgs
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: ID
          in: path
          description: ID сообщения
          required: true
          type: integer
          format: int64
        - in: body
          name: body
          description: Параметры, которые нужно указать
          required: true
          schema:
            $ref: '#/definitions/MsgsReply'
      responses:
        '200':
          description: успешное выполнение
          schema:
            $ref: '#/definitions/ApiSuccessAddResponse'
      security:
        - KEY: []
  /msgs/reply/{REPLY_ID}/attachment:
    post:
      tags:
        - msgs
      summary: Прикрепление файла к ответу
      operationId: addAttachmentToReply
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: REPLY_ID
          in: path
          description: ID ответа на сообщение
          required: true
          type: integer
          format: int64
        - in: body
          name: body
          description: Параметры, которые нужно указать
          required: true
          schema:
            $ref: '#/definitions/MsgsReplyAttachment'
      responses:
        '200':
          description: успешное выполнение
          schema:
            $ref: '#/definitions/ApiSuccessAddResponse'
      security:
        - KEY: []
  /msgs/chapters:
    get:
      tags:
        - msgs
      summary: Получить список разделов
      operationId: chaptersList
      consumes:
        - application/json
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: успешное выполнение
          schema:
            $ref: '#/definitions/MsgsChapter'
      security:
        - KEY: []
  /groups:
    get:
      tags:
        - groups
      summary: Получить группы пользователей
      description: Возвращает группы пользователей
      operationId: getGroupsList
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/Groups'
      security:
        - KEY: []
  /tp/{tpID}:
    get:
      tags:
        - tp
      summary: Получить информацию по тарифному плану
      description: Возвращает тарифный план
      operationId: getTpInfo
      produces:
        - application/json
      parameters:
        - name: tpID
          in: path
          description: tpID тарифного плана
          required: true
          type: integer
          format: int64
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/Tp'
        '404':
          description: Тарифный план не найден
          schema:
            $ref: '#/definitions/ApiResponse'
      security:
        - KEY: []
  /tp/{tpID}/intervals/:
    get:
      tags:
        - tp
      summary: Получить информацию по интервалам ТП
      description: Возвращает интервалы ТП
      operationId: getTpIntervalsInfo
      produces:
        - application/json
      parameters:
        - name: tpID
          in: path
          description: tpID тарифного плана
          required: true
          type: integer
          format: int64
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/TpIntervals'
        '404':
          description: Тарифный план не найден
          schema:
            $ref: '#/definitions/ApiResponse'
      security:
        - KEY: []
  /districts:
    get:
      tags:
        - districts
      summary: Получить районы
      description: Возвращает список районов
      operationId: getDistricts
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/DistrictsArray'
      security:
        - KEY: []
    post:
      tags:
        - districts
      summary: Добавление района
      operationId: addDistrict
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/Districts'
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/ApiSuccessAddResponse'
      security:
        - KEY: []
  /districts/{ID}:
    get:
      tags:
        - districts
      summary: Получить информацию о районе
      operationId: getDistrictInfo
      produces:
        - application/json
      parameters:
        - name: ID
          in: path
          description: ID района
          required: true
          type: integer
          format: int64
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/Districts'
      security:
        - KEY: []
    put:
      tags:
        - districts
      summary: Обновить информацию о районе
      operationId: updateDistrict
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: ID
          in: path
          description: ID района
          required: true
          type: integer
          format: int64
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/Districts'
      responses:
        '400':
          description: Invalid ID supplied
      security:
        - KEY: []
  /streets:
    get:
      tags:
        - streets
      summary: Получить улицы
      description: Возвращает список улиц
      operationId: getStreets
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/StreetsArray'
      security:
        - KEY: []
    post:
      tags:
        - streets
      summary: Добавление района
      operationId: addStreet
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/Streets'
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/ApiSuccessAddResponse'
      security:
        - KEY: []
  /streets/{ID}:
    get:
      tags:
        - streets
      summary: Получить информацию о улице
      description: Возвращает улицу
      operationId: getStreetInfo
      produces:
        - application/json
      parameters:
        - name: ID
          in: path
          description: ID улицы
          required: true
          type: integer
          format: int64
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/Streets'
      security:
        - KEY: []
    put:
      tags:
        - streets
      summary: Обновить информацию о улице
      operationId: updateStreet
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: ID
          in: path
          description: ID улицы
          required: true
          type: integer
          format: int64
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/Streets'
      responses:
        '400':
          description: Invalid ID supplied
      security:
        - KEY: []
  /builds:
    get:
      tags:
        - builds
      summary: Получить дома
      description: Возвращает список домов
      operationId: getBuilds
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/BuildsArray'
      security:
        - KEY: []
    post:
      tags:
        - builds
      summary: Добавление дома
      operationId: addBuild
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/Builds'
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/ApiSuccessAddResponse'
      security:
        - KEY: []
  /builds/{ID}:
    get:
      tags:
        - builds
      summary: Получить информацию о доме
      description: Возвращает дом
      operationId: getBuildInfo
      produces:
        - application/json
      parameters:
        - name: ID
          in: path
          description: ID дома
          required: true
          type: integer
          format: int64
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/Builds'
      security:
        - KEY: []
    put:
      tags:
        - builds
      summary: Обновить информацию о доме
      operationId: updateBuild
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: ID
          in: path
          description: ID дома
          required: true
          type: integer
          format: int64
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/Builds'
      responses:
        '400':
          description: Invalid ID supplied
      security:
        - KEY: []
  /payments/types:
    get:
      tags:
        - payments
      summary: Получить список типов оплат
      description: Возвращает список типов оплат
      operationId: getPaymentTypesList
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/PaymentTypesArray'
      security:
        - KEY: []
  /payments/users/{UID}:
    get:
      tags:
        - payments
      summary: Получить список оплат пользователя
      description: Возвращает список оплат пользователя
      operationId: getUserPayments
      produces:
        - application/json
      parameters:
        - name: UID
          in: path
          description: UID пользователя
          required: true
          type: integer
          format: int64
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/UserPaymentsArray'
      security:
        - KEY: []
    post:
      tags:
        - payments
      summary: Добавление оплаты пользователю
      operationId: addUserPayment
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: UID
          in: path
          description: UID пользователя
          required: true
          type: integer
          format: int64
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/UserPaymentAdd'
      responses:
        '400':
          description: Invalid ID supplied
      security:
        - KEY: []
  /fees/types:
    get:
      tags:
        - fees
      summary: Получить список типов списания
      description: Возвращает список типов списания
      operationId: getFeesTypesList
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/FeesTypesArray'
      security:
        - KEY: []
  /fees/users/{UID}:
    get:
      tags:
        - fees
      summary: Получить список списаний пользователя
      description: Возвращает список списаний пользователя
      operationId: getUserFees
      produces:
        - application/json
      parameters:
        - name: UID
          in: path
          description: UID пользователя
          required: true
          type: integer
          format: int64
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/UserFeesArray'
      security:
        - KEY: []
  /fees/users/{UID}/{SUM}:
    post:
      tags:
        - fees
      summary: Добавление списания пользователю
      operationId: addUserFee
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: UID
          in: path
          description: UID пользователя
          required: true
          type: integer
          format: int64
        - name: SUM
          in: path
          description: Сумма списания
          required: true
          type: integer
          format: int64
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/UserFeeAdd'
      responses:
        '400':
          description: Invalid ID supplied
      security:
        - KEY: []
  /abon/tariffs:
    get:
      tags:
        - abon
      summary: Получить список ТП
      description: Возвращает список ТП
      operationId: getAbonTps
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/AbonTpsArray'
      security:
        - KEY: []
    post:
      tags:
        - abon
      summary: Добавление ТП
      operationId: addAbonTp
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - in: body
          name: body
          required: true
          schema:
            $ref: '#/definitions/AbonAddTp'
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/ApiSuccessAddResponse'
      security:
        - KEY: []
  /abon/tariffs/{ID}:
    get:
      tags:
        - abon
      summary: Получить информацию о ТП
      description: Возвращает информацию о ТП
      operationId: getAbonTp
      produces:
        - application/json
      parameters:
        - name: ID
          in: path
          description: ID ТП
          required: true
          type: integer
          format: int64
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/AbonTp'
      security:
        - KEY: []
  /abon/tariffs/{ID}/users/{UID}:
    post:
      tags:
        - abon
      summary: Добавление ТП пользователю
      operationId: addAbonTpToUser
      consumes:
        - application/json
      produces:
        - application/json
      parameters:
        - name: ID
          in: path
          description: ID ТП
          required: true
          type: integer
          format: int64
        - name: UID
          in: path
          description: UID пользователя
          required: true
          type: integer
          format: int64
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/ApiSuccessAddResponse'
      security:
        - KEY: []
    delete:
      tags:
        - abon
      summary: Удаление ТП пользователя
      description: Удаление ТП пользователя
      operationId: getUserAbonTps
      produces:
        - application/json
      parameters:
        - name: ID
          in: path
          description: ID ТП
          required: true
          type: integer
          format: int64
        - name: UID
          in: path
          description: UID пользователя
          required: true
          type: integer
          format: int64
      responses:
        '200':
          description: Успешное выполнение
      security:
        - KEY: []
  /abon/users:
    get:
      tags:
        - abon
      summary: Получить список пользователей Abon
      description: Возвращает список пользователей Abon
      operationId: getUsersAbon
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/AbonUsersArray'
      security:
        - KEY: []
  /online/{UID}:
    get:
      tags:
        - online
      summary: Получить сессии пользователя по UID
      description: Возвращает сессии пользователя
      operationId: getUserSessions
      produces:
        - application/json
      parameters:
        - name: UID
          in: path
          description: UID пользователя в биллинге
          required: true
          type: integer
          format: int64
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/OnlineSessionsArray'
        '404':
          description: Пользователь не найден
          schema:
            $ref: '#/definitions/ApiResponse'
      security:
        - KEY: []
  /version:
    get:
      tags:
        - version
      summary: Получить версии биллинга и API
      operationId: getVersion
      produces:
        - application/json
      parameters: []
      responses:
        '200':
          description: Успешное выполнение
          schema:
            $ref: '#/definitions/Version'
      security:
        - KEY: []
securityDefinitions:
  KEY:
    type: apiKey
    name: KEY
    in: header
definitions:
  User:
    type: object
    properties:
      login:
        type: string
        example: testUser
      password:
        type: string
        example: '123456'
      createBill:
        type: integer
  UserPi:
    type: object
    properties:
      fio:
        type: string
        example: Петренко
        description: Фамилия
      fio2:
        type: string
        example: Иван
        description: Имя
      fio3:
        type: string
        example: Петрович
        description: Отчество
      comments:
        type: string
      email:
        type: string
      phone:
        type: string
  UserCreated:
    type: object
    properties:
      preAdd:
        type: integer
        example: 1
      total:
        type: integer
        example: 0
      insertId:
        type: string
        example: '17'
      uid:
        type: string
        example: '32'
      affected:
        type: integer
        example: 1
      login:
        type: string
        example: testUser
  UserInternetList:
    type: array
    items:
      $ref: '#/definitions/UserInternetList_inner'
  UserInternet:
    type: object
    properties:
      tpId:
        type: integer
        example: 41
      cid:
        type: string
        example: 14:11:11:11:11:c1
      activate:
        type: string
        example: '0000-00-00'
      expire:
        type: string
        example: '0000-00-00'
  UserIptvList:
    type: array
    items:
      $ref: '#/definitions/UserIptvList_inner'
  Contacts:
    type: object
    properties:
      value:
        type: string
        example: test@gmail.com
      type:
        type: string
        example: _SHOW
        description: _SHOW - отобразить поле
      typeName:
        type: string
        example: _SHOW
  ContactsArray:
    type: array
    items:
      $ref: '#/definitions/ContactsArray_inner'
  Tp:
    type: object
    properties:
      id:
        type: integer
        example: 2
      tpId:
        type: integer
        example: 83
      dayFee:
        type: integer
      monthFee:
        type: integer
      module:
        type: string
        example: Internet
      changePrice:
        type: integer
      activPrice:
        type: integer
      serviceId:
        type: integer
      status:
        type: integer
  TpIntervals:
    type: array
    items:
      $ref: '#/definitions/TpIntervals_inner'
  Groups:
    type: array
    items:
      $ref: '#/definitions/Groups_inner'
  Msgs:
    type: object
    properties:
      uid:
        type: integer
        example: 11135
      chapter:
        type: integer
        example: 2
      message:
        type: string
        example: Test message
      state:
        type: integer
        example: 0
      subject:
        type: string
        example: Message subject
      priority:
        type: integer
        example: 2
  MsgsReply:
    type: object
    properties:
      aid:
        type: integer
        example: 2
      reply_text:
        type: string
        example: Reply text
  MsgsRepliesList:
    type: array
    items:
      $ref: '#/definitions/MsgsRepliesList_inner'
  MsgsReplyAttachment:
    type: object
    properties:
      filename:
        type: string
        example: Test.txt
      filesize:
        type: integer
        example: 12
      content:
        type: string
        example: '  Test content'
      content_type:
        type: string
        example: text/plain
      message_type:
        type: integer
        example: 1
  MsgsChapter:
    type: array
    items:
      $ref: '#/definitions/MsgsChapter_inner'
  Districts:
    type: object
    properties:
      name:
        type: string
        example: пос.Зуевка
      city:
        type: string
        example: Харцызск
      zip:
        type: string
  DistrictsArray:
    type: array
    items:
      $ref: '#/definitions/DistrictsArray_inner'
  Streets:
    type: object
    properties:
      name:
        type: string
        example: ул.Цэемовская
      district_id:
        type: integer
        example: 2
      second_name:
        type: string
  StreetsArray:
    type: array
    items:
      $ref: '#/definitions/StreetsArray_inner'
  Builds:
    type: object
    properties:
      street_id:
        type: integer
        example: 2
      number:
        type: string
  BuildsArray:
    type: array
    items:
      $ref: '#/definitions/BuildsArray_inner'
  PaymentTypesArray:
    type: array
    items:
      $ref: '#/definitions/PaymentTypesArray_inner'
  UserPaymentsArray:
    type: array
    items:
      $ref: '#/definitions/UserPaymentsArray_inner'
  UserPaymentAdd:
    type: object
    properties:
      sum:
        type: integer
        example: 500
      method:
        type: integer
        example: 6
      bill_id:
        type: integer
        example: 10
  FeesTypesArray:
    type: array
    items:
      $ref: '#/definitions/FeesTypesArray_inner'
  UserFeesArray:
    type: array
    items:
      $ref: '#/definitions/UserFeesArray_inner'
  UserFeeAdd:
    type: object
    properties:
      method:
        type: integer
        example: 6
      bill_id:
        type: integer
        example: 10
      describe:
        type: string
  AbonTpsArray:
    type: array
    items:
      $ref: '#/definitions/AbonTpsArray_inner'
  AbonAddTp:
    type: object
    properties:
      price:
        type: integer
        example: 100
      period:
        type: integer
        example: 1
      name:
        type: string
        example: Test abon TP
      description:
        type: string
        example: Test description
  AbonTp:
    type: object
    properties:
      id:
        type: integer
        example: 1
      name:
        type: string
        example: Test abon TP
      price:
        type: integer
        example: 100
      userPortal:
        type: integer
        example: 0
      userCount:
        type: integer
        example: 10
      discount:
        type: integer
        example: 0
      paymentType:
        type: integer
        example: 0
      periodAlignment:
        type: integer
        example: 1
      nextAbonDate:
        type: string
        example: '2021-10-01'
      description:
        type: string
  AbonUsersArray:
    type: array
    items:
      $ref: '#/definitions/AbonUsersArray_inner'
  OnlineSessionsArray:
    type: array
    items:
      $ref: '#/definitions/OnlineSessionsArray_inner'
  Version:
    type: object
    properties:
      version:
        type: string
        example: 0.91.0
      apiVersion:
        type: string
        example: '0.01'
      billing:
        type: string
        example: Abills
  ApiResponse:
    type: object
    properties:
      errstr:
        type: string
        example: ERROR_NOT_EXIST
      errno:
        type: integer
        example: 2
  ApiSuccessAddResponse:
    type: object
    properties:
      total:
        type: integer
        example: 0
      affected:
        type: integer
        example: 1
      insertId:
        type: integer
        example: 37
  UserLogin:
    type: object
    properties:
      login:
        type: string
        example: testuser
      password:
        type: string
        example: testuser
  inline_response_200:
    type: object
    properties:
      login:
        type: string
        example: testuser
      sid:
        type: string
        example: sW44EJZLyWDMeXAV
      uid:
        type: string
        example: '5690'
  UserInternetList_inner:
    type: object
    properties:
      id:
        type: integer
        example: 2
      tpName:
        type: string
        example: Премиум до 100м
      tpId:
        type: integer
        example: 41
      internetStatus:
        type: integer
        example: 0
      cid:
        type: string
        example: 14:11:11:11:11:c1
      monthFee:
        type: integer
        example: 250
      dayFee:
        type: integer
        example: 0
  UserIptvList_inner:
    type: object
    properties:
      id:
        type: integer
        example: 2
      tpName:
        type: string
        example: Премиум Iptvportal
      tpId:
        type: integer
        example: 41
      serviceStatus:
        type: integer
        example: 0
      monthFee:
        type: integer
        example: 250
      dayFee:
        type: integer
        example: 0
      serviceId:
        type: integer
        example: 0
      subscribeId:
        type: integer
        example: 0
      filterId:
        type: integer
        example: 0
  ContactsArray_inner:
    type: object
    properties:
      id:
        type: integer
        example: 1
      uid:
        type: string
        example: '132'
      value:
        type: string
        example: test@gmail.com
      typeName:
        type: string
        example: Email
  TpIntervals_inner:
    type: object
    properties:
      begin:
        type: string
        example: '00:00:00'
      end:
        type: string
        example: '23:59:59'
      id:
        type: integer
        example: 2
      tarif:
        type: string
      trafficClasses:
        type: string
      day:
        type: integer
  Groups_inner:
    type: object
    properties:
      id:
        type: integer
        example: 53
      name:
        type: string
        example: Должники
      descr:
        type: string
      domainId:
        type: integer
      disableChgTp:
        type: integer
        example: 1
  MsgsRepliesList_inner:
    type: object
    properties:
      id:
        type: integer
        example: 2
      text:
        type: string
        example: Reply text
      aid:
        type: integer
        example: 2
      admin:
        type: string
        example: abills
      datetime:
        type: string
        example: '2021-08-09 13:25:41'
      mainMsg:
        type: integer
        example: 40
  MsgsChapter_inner:
    type: object
    properties:
      id:
        type: integer
        example: 2
      name:
        type: string
        example: Первый раздел
      responsible:
        type: integer
        example: 1
      innerChapter:
        type: integer
        example: 0
      autoclose:
        type: integer
        example: 50
  DistrictsArray_inner:
    type: object
    properties:
      id:
        type: integer
        example: 10
      name:
        type: string
        example: пос.Зуевка
      city:
        type: string
        example: Харцызск
      zip:
        type: string
      streetCount:
        type: integer
        example: 31
  StreetsArray_inner:
    type: object
    properties:
      id:
        type: integer
        example: 10
      streetName:
        type: string
        example: ул.Цэемовская
      districtId:
        type: integer
        example: 2
      buildCount:
        type: integer
        example: 31
  BuildsArray_inner:
    type: object
    properties:
      id:
        type: integer
        example: 10
      streetName:
        type: string
        example: ул.Цэемовская
      streetId:
        type: integer
        example: 2
      number:
        type: string
        example: '31'
  PaymentTypesArray_inner:
    type: object
    properties:
      id:
        type: integer
        example: 10
      name:
        type: string
        example: Credit card
      feesType:
        type: integer
        example: 0
      color:
        type: string
  UserPaymentsArray_inner:
    type: object
    properties:
      id:
        type: integer
        example: 10
      sum:
        type: integer
        example: 500
      regDate:
        type: string
        example: '2021-07-02 07:46:01'
      method:
        type: integer
        example: 6
      innerDescribe:
        type: string
  FeesTypesArray_inner:
    type: object
    properties:
      id:
        type: integer
        example: 10
      name:
        type: string
        example: Пеня
      sum:
        type: integer
        example: 500
      defaultDescribe:
        type: string
  UserFeesArray_inner:
    type: object
    properties:
      id:
        type: integer
        example: 10
      sum:
        type: integer
        example: 500
      regDate:
        type: string
        example: '2021-07-02 07:46:01'
      method:
        type: integer
        example: 2
      dsc:
        type: string
        example: 'Internet: М/А Премиум до 100м (41) - Распределение абонплаты'
  AbonTpsArray_inner:
    type: object
    properties:
      tpId:
        type: integer
        example: 1
      name:
        type: string
        example: Test abon TP
      price:
        type: integer
        example: 100
      userPortal:
        type: integer
        example: 0
      userCount:
        type: integer
        example: 10
      discount:
        type: integer
        example: 0
      paymentType:
        type: integer
        example: 0
      periodAlignment:
        type: integer
        example: 1
      nextAbonDate:
        type: string
        example: '2021-10-01'
      description:
        type: string
  AbonUsersArray_inner:
    type: object
    properties:
      tpId:
        type: integer
        example: 1
      tpName:
        type: string
        example: Test abon TP
      price:
        type: integer
        example: 100
      serviceCount:
        type: integer
        example: 1
      date:
        type: string
        example: '2021-08-11'
      nextAbon:
        type: string
        example: '2021-09-01'
      uid:
        type: integer
        example: 11135
      login:
        type: string
        example: '3433'
  OnlineSessionsArray_inner:
    type: object
    properties:
      clientIpNum:
        type: integer
        example: 3232238092
      nasId:
        type: integer
        example: 12
      duration:
        type: string
        example: '838:59:59'
      status:
        type: integer
        example: 10
      userName:
        type: string
        example: userName
      clientIp:
        type: string
        example: 192.168.10.12
      acctSessionId:
        type: string
        example: Akie6VpiYU
  UserList:
    type: array
    items:
      type: object
      properties:
        deposit:
          type: number
          example: 36579.21
        fio:
          type: string
          example: Иванов Иван
        uid:
          type: integer
          example: 1
        gid:
          type: integer
          example: 1
        login:
            type: string
            example: testuser
        billId:
          type: integer
          example: 12

{ "swagger": "2.0", "info": { "version": "1.0.0", "title": "Abills user API" }, "host": "demo.abills.net.ua:9443", "basePath": "/api.cgi", "tags": [ { "name": "user", "description": "Работа с пользователем" }, { "name": "internet", "description": "Работа с услугой Интернет" }, { "name": "msgs", "description": "Работа с заявками пользователя" }, { "name": "abon", "description": "Работа с периодическими списаниями" } ], "schemes": [ "https" ], "paths": { "/user/{UID}": { "get": { "tags": [ "user" ], "summary": "Информация о пользователе", "operationId": "userInfo", "produces": [ "application/json" ], "parameters": [ { "name": "UID", "in": "path", "description": "UID пользователя", "required": true, "type": "string" } ], "responses": { "200": { "description": "Успешное выполнение", "schema": { "$ref": "#/definitions/User" } } }, "security": [ { "USER_SID": [] } ] } }, "/user/{UID}/pi": { "get": { "tags": [ "user" ], "summary": "Персональная информация пользователя", "operationId": "userPersonalInfo", "produces": [ "application/json" ], "parameters": [ { "name": "UID", "in": "path", "description": "UID пользователя", "required": true, "type": "string" } ], "responses": { "200": { "description": "Успешное выполнение", "schema": { "$ref": "#/definitions/UserPi" } } }, "security": [ { "USER_SID": [] } ] } }, "/user/{UID}/credit": { "get": { "tags": [ "user" ], "summary": "Информация об установке кредита", "operationId": "userCreditInfo", "produces": [ "application/json" ], "parameters": [ { "name": "UID", "in": "path", "description": "UID пользователя", "required": true, "type": "string" } ], "responses": { "200": { "description": "Успешное выполнение", "schema": { "$ref": "#/definitions/UserCreditInfo" } } }, "security": [ { "USER_SID": [] } ] }, "post": { "tags": [ "user" ], "summary": "Установка кредита пользователю", "operationId": "userSetCredit", "produces": [ "application/json" ], "parameters": [ { "name": "UID", "in": "path", "description": "UID пользователя", "required": true, "type": "string" } ], "responses": { "200": { "description": "Успешное выполнение", "schema": { "$ref": "#/definitions/UserCredit" } } }, "security": [ { "USER_SID": [] } ] } }, "/user/{UID}/internet": { "get": { "tags": [ "internet" ], "summary": "Информация об интернет услугах пользователя", "operationId": "userInternetInfo", "produces": [ "application/json" ], "parameters": [ { "name": "UID", "in": "path", "description": "UID пользователя", "required": true, "type": "string" } ], "responses": { "200": { "description": "Успешное выполнение", "schema": { "$ref": "#/definitions/UserInternet" } } }, "security": [ { "USER_SID": [] } ] } }, "/user/{UID}/internet/{ID}": { "put": { "tags": [ "internet" ], "summary": "Смена ТП", "operationId": "userChangeInternetTP", "produces": [ "application/json" ], "parameters": [ { "name": "UID", "in": "path", "description": "UID пользователя", "required": true, "type": "string" }, { "name": "ID", "in": "path", "description": "ID услуги Интернет", "required": true, "type": "string" }, { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/body" } } ], "responses": { "200": { "description": "Успешное выполнение", "schema": { "$ref": "#/definitions/InternetChangeTPSuccess" } }, "400": { "description": "Ошибка", "schema": { "$ref": "#/definitions/InternetChangeTPError" } } }, "security": [ { "USER_SID": [] } ] } }, "/user/{UID}/internet/{ID}/speed": { "get": { "tags": [ "internet" ], "summary": "Скорость ТП", "operationId": "userTpSpeed", "produces": [ "application/json" ], "parameters": [ { "name": "UID", "in": "path", "description": "UID пользователя", "required": true, "type": "string" }, { "name": "ID", "in": "path", "description": "ID услуги Интернет", "required": true, "type": "string" } ], "responses": { "200": { "description": "Успешное выполнение", "schema": { "$ref": "#/definitions/InternetSpeed" } } }, "security": [ { "USER_SID": [] } ] } }, "/user/{UID}/internet/{ID}/holdup": { "post": { "tags": [ "internet" ], "summary": "Приостановление услуги Интернет", "operationId": "userInternetHoldup", "produces": [ "application/json" ], "parameters": [ { "name": "UID", "in": "path", "description": "UID пользователя", "required": true, "type": "string" }, { "name": "ID", "in": "path", "description": "ID услуги Интернет", "required": true, "type": "string" }, { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/body_1" } } ], "responses": { "200": { "description": "Успешное выполнение", "schema": { "$ref": "#/definitions/HoldupReply" } } }, "security": [ { "USER_SID": [] } ] }, "delete": { "tags": [ "internet" ], "summary": "Удаление рассписания на приостановление услуги Интернет", "operationId": "userDeleteInternetHoldup", "produces": [ "application/json" ], "parameters": [ { "name": "UID", "in": "path", "description": "UID пользователя", "required": true, "type": "string" }, { "name": "ID", "in": "path", "description": "ID услуги Интернет", "required": true, "type": "string" } ], "responses": { "200": { "description": "Успешное выполнение", "schema": { "$ref": "#/definitions/HoldupReply" } } }, "security": [ { "USER_SID": [] } ] } }, "/user/{UID}/internet/tariffs": { "get": { "tags": [ "internet" ], "summary": "Доступные для изменения ТП, на которые хватает денег", "operationId": "userInternetAvailableToChangeTariffs", "produces": [ "application/json" ], "parameters": [ { "name": "UID", "in": "path", "description": "UID пользователя", "required": true, "type": "string" } ], "responses": { "200": { "description": "Успешное выполнение", "schema": { "$ref": "#/definitions/UserAvailableTariffs" } } }, "security": [ { "USER_SID": [] } ] } }, "/user/{UID}/internet/tariffs/all": { "get": { "tags": [ "internet" ], "summary": "Все доступные для изменения ТП", "operationId": "userInternetAvailableToChangeTariffsAll", "produces": [ "application/json" ], "parameters": [ { "name": "UID", "in": "path", "description": "UID пользователя", "required": true, "type": "string" } ], "responses": { "200": { "description": "Успешное выполнение", "schema": { "$ref": "#/definitions/UserAvailableTariffs" } } }, "security": [ { "USER_SID": [] } ] } }, "/user/{UID}/internet/{ID}/warnings": { "get": { "tags": [ "internet" ], "summary": "Информация о списаниях", "operationId": "userInternetWarnings", "produces": [ "application/json" ], "parameters": [ { "name": "UID", "in": "path", "description": "UID пользователя", "required": true, "type": "string" }, { "name": "ID", "in": "path", "description": "ID услуги", "required": true, "type": "string" } ], "responses": { "200": { "description": "Успешное выполнение", "schema": { "$ref": "#/definitions/InternetWarnings" } } }, "security": [ { "USER_SID": [] } ] } }, "/user/{UID}/abon": { "get": { "tags": [ "abon" ], "summary": "Информация об периодических списаниях пользователя", "operationId": "userAbonInfo", "produces": [ "application/json" ], "parameters": [ { "name": "UID", "in": "path", "description": "UID пользователя", "required": true, "type": "string" } ], "responses": { "200": { "description": "Успешное выполнение", "schema": { "$ref": "#/definitions/UserAbon" } } }, "security": [ { "USER_SID": [] } ] } }, "/user/{UID}/msgs": { "get": { "tags": [ "msgs" ], "summary": "Список заявок пользователя", "operationId": "userMsgsList", "produces": [ "application/json" ], "parameters": [ { "name": "UID", "in": "path", "description": "UID пользователя", "required": true, "type": "string" } ], "responses": { "200": { "description": "Успешное выполнение", "schema": { "$ref": "#/definitions/MsgsArray" } } }, "security": [ { "USER_SID": [] } ] }, "post": { "tags": [ "msgs" ], "summary": "Создание заявки", "operationId": "userAddMessage", "produces": [ "application/json" ], "parameters": [ { "name": "UID", "in": "path", "description": "UID пользователя", "required": true, "type": "string" }, { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/MsgsAdd" } } ], "responses": { "200": { "description": "Успешное выполнение", "schema": { "$ref": "#/definitions/MsgsAdded" } } }, "security": [ { "USER_SID": [] } ] } }, "/user/{UID}/msgs/{ID}": { "get": { "tags": [ "msgs" ], "summary": "Информация о заявке пользователя", "operationId": "userMsgs", "produces": [ "application/json" ], "parameters": [ { "name": "UID", "in": "path", "description": "UID пользователя", "required": true, "type": "string" }, { "name": "ID", "in": "path", "description": "ID заявки", "required": true, "type": "string" } ], "responses": { "200": { "description": "Успешное выполнение", "schema": { "$ref": "#/definitions/MsgsInfo" } } }, "security": [ { "USER_SID": [] } ] } }, "/user/{UID}/msgs/{ID}/reply": { "get": { "tags": [ "msgs" ], "summary": "Список заявок пользователя", "operationId": "userMsgReplyList", "produces": [ "application/json" ], "parameters": [ { "name": "UID", "in": "path", "description": "UID пользователя", "required": true, "type": "string" }, { "name": "ID", "in": "path", "description": "ID заявки", "required": true, "type": "string" } ], "responses": { "200": { "description": "Успешное выполнение", "schema": { "$ref": "#/definitions/MsgsReplyArray" } } }, "security": [ { "USER_SID": [] } ] }, "post": { "tags": [ "msgs" ], "summary": "Создание заявки", "operationId": "userAddReply", "produces": [ "application/json" ], "parameters": [ { "name": "UID", "in": "path", "description": "UID пользователя", "required": true, "type": "string" }, { "name": "ID", "in": "path", "description": "ID заявки", "required": true, "type": "string" }, { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/MsgsReplyAdd" } } ], "responses": { "200": { "description": "Успешное выполнение" } }, "security": [ { "USER_SID": [] } ] } } }, "securityDefinitions": { "USER_SID": { "type": "apiKey", "name": "USERSID", "in": "header" } }, "definitions": { "User": { "properties": { "login": { "type": "string", "example": "3433" }, "deposit": { "type": "integer", "example": 1600 }, "credit": { "type": "integer", "example": 100 }, "creditDate": { "type": "string", "example": "2021-08-13" }, "billId": { "type": "integer", "example": 12 }, "gid": { "type": "integer", "example": 57 }, "disable": { "type": "integer", "example": 0 }, "deleted": { "type": "integer", "example": 0 } } }, "UserPi": { "properties": { "fio": { "type": "string", "example": "Иванов Иван Иванович" }, "addressFull": { "type": "string", "example": "ул.Адамца, 121, 3" }, "age": { "type": "integer", "example": 33 }, "locationId": { "type": "integer", "example": 1444 }, "contractId": { "type": "string", "example": "575493" }, "email": { "type": "array", "items": { "type": "string", "example": "test@gmail.com" } }, "phone": { "type": "array", "items": { "type": "string", "example": "380976574568" } } } }, "UserInternet": { "type": "array", "items": { "$ref": "#/definitions/UserInternet_inner" } }, "InternetSpeed": { "type": "array", "items": { "$ref": "#/definitions/InternetSpeed_inner" } }, "UserAbon": { "type": "array", "items": { "$ref": "#/definitions/UserAbon_inner" } }, "UserCredit": { "properties": { "creditSum": { "type": "integer", "example": 500 }, "creditChangePrice": { "type": "integer", "example": 100 }, "uid": { "type": "integer", "example": 11135 }, "creditDays": { "type": "string", "example": "3" }, "creditMonthChanges": { "type": "string", "example": "1" } } }, "UserCreditInfo": { "properties": { "creditChgPrice": { "type": "string", "example": "500" }, "creditMonthChanges": { "type": "string", "example": "1" }, "creditSum": { "type": "string", "example": "800" }, "creditDays": { "type": "string", "example": "3" } } }, "UserAvailableTariffs": { "type": "array", "items": { "$ref": "#/definitions/UserAvailableTariffs_inner" } }, "HoldupReply": { "properties": { "success": { "type": "integer", "example": 1 }, "msg": { "type": "string" } } }, "InternetWarnings": { "properties": { "messageType": { "type": "string", "example": "success" }, "warning": { "type": "string", "example": "следующее списание через 7 дней" }, "daysToFee": { "type": "string", "example": "2" }, "sum": { "type": "integer", "example": 150 }, "abonDate": { "type": "string", "example": "2021-10-01" } } }, "InternetChangeTPSuccess": { "properties": { "success": { "type": "integer", "example": 1 }, "uid": { "type": "integer" } } }, "InternetChangeTPError": { "properties": { "error": { "type": "integer", "example": 145 }, "message": { "type": "string" }, "messageType": { "type": "string" }, "messageTitle": { "type": "string" } } }, "MsgsAdd": { "properties": { "chapter": { "type": "integer", "example": 3 }, "message": { "type": "string", "example": "Some message" }, "subject": { "type": "string", "example": "Message subject" }, "priority": { "type": "integer", "example": 2 } } }, "MsgsAdded": { "properties": { "insertId": { "type": "integer", "example": 43 }, "msgId": { "type": "integer", "example": 43 }, "affected": { "type": "integer", "example": 1 } } }, "MsgsInfo": { "properties": { "subject": { "type": "string", "example": "Message user api subject" }, "message": { "type": "string", "example": "Test message from user api" }, "chapterName": { "type": "string", "example": "Второй раздел" }, "chapter": { "type": "integer", "example": 3 }, "priority": { "type": "integer", "example": 2 }, "state": { "type": "integer", "example": 0 }, "date": { "type": "string", "example": "2021-09-02 13:20:37" } } }, "MsgsArray": { "type": "array", "items": { "$ref": "#/definitions/MsgsInfo" } }, "MsgsReply": { "properties": { "uid": { "type": "integer", "example": 0 }, "aid": { "type": "integer", "example": 2 }, "id": { "type": "integer", "example": 54 }, "text": { "type": "string", "example": "some reply text" }, "datetime": { "type": "string", "example": "2021-09-02 12:50:47" } } }, "MsgsReplyAdd": { "properties": { "reply_text": { "type": "string", "example": "Some reply text" }, "reply_subject": { "type": "string", "example": "Subject" } } }, "MsgsReplyArray": { "type": "array", "items": { "$ref": "#/definitions/MsgsReply" } }, "body": { "properties": { "tp_id": { "type": "integer", "example": 4 }, "date": { "type": "string", "example": "2021-09-17" }, "period": { "type": "integer", "example": "2 (0 - моментальное изменение ТП, если разрешено, 1 - изменение ТП в след. учётный период, 2 - изменение ТП по указаной дате)" } } }, "body_1": { "properties": { "from_date": { "type": "string", "example": "2021-08-14" }, "to_date": { "type": "string", "example": "2021-08-17" } } }, "UserInternet_inner": { "type": "object", "properties": { "id": { "type": "integer", "example": 2 }, "tpName": { "type": "string", "example": "Премиум до 100м" }, "tpId": { "type": "integer", "example": 41 }, "internetStatus": { "type": "integer", "example": 0 }, "cid": { "type": "string", "example": "14:11:11:11:11:c1" }, "monthFee": { "type": "integer", "example": 250 }, "dayFee": { "type": "integer", "example": 0 } } }, "InternetSpeed_inner": { "type": "object", "properties": { "inSpeed": { "type": "integer", "example": 2999 }, "outSpeed": { "type": "integer", "example": 3000 }, "tpNum": { "type": "integer", "example": 155 } } }, "UserAbon_inner": { "type": "object", "properties": { "id": { "type": "integer", "example": 2 }, "name": { "type": "string", "example": "Test abon TP" }, "price": { "type": "integer", "example": 100 }, "period": { "type": "integer", "example": 1 }, "nextAbon": { "type": "string", "example": "2021-09-01" }, "comments": { "type": "string" }, "description": { "type": "string", "example": "Test description" } } }, "UserAvailableTariffs_inner": { "type": "object", "properties": { "id": { "type": "integer", "example": 2 }, "name": { "type": "string", "example": "Премиум до 100м" }, "tpId": { "type": "integer", "example": 41 }, "monthFee": { "type": "integer", "example": 250 }, "dayFee": { "type": "integer", "example": 0 }, "comments": { "type": "string" } } } } }
  • No labels