В данный момент находиться в процессе разработки
API может (и будет) дополняться и изменяться в будущем
Версия
Доступно с версии 0.84 и выше
В системе реализован RESTfull интерфейс управления услугами и абонентами. Интерфейс находит по адресу api.cgi. Оправка, получение данных производится по протоколу HTTP POST/GET/PUT/DELETE. Все взаимодействие по интерфейсу выполняется по принципам REST (ресурс определяться по средствам задания имени в URL).
Для сохранение совместимости с стандартом REST все ключи автоматически переводятся в camelCase, но поскольку несоответствие названий в Базе Данных может усложнить разработку – существует возможность отключить такое превращение используя несколько вариантов:
- Параметр $conf{API_FILDS_CAMELIZE} в конфигурационном файле
- Задать в заголовках запроса 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 user API"
},
"host": "demo.abills.net.ua:9443",
"basePath": "/api.cgi",
"tags": [
{
"name": "user",
"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": {
"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": [
"user"
],
"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}/holdup": {
"post": {
"tags": [
"user"
],
"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"
}
}
],
"responses": {
"200": {
"description": "Успешное выполнение",
"schema": {
"$ref": "#/definitions/HoldupReply"
}
}
},
"security": [
{
"USER_SID": []
}
]
},
"delete": {
"tags": [
"user"
],
"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/{ID}/tariffs": {
"get": {
"tags": [
"user"
],
"summary": "Доступные для изменения ТП",
"operationId": "userInternetAvailableToChangeTariffs",
"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/UserAvailableTariffs"
}
}
},
"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"
}
},
"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"
}
}
},
"UserAvailableTariffs": {
"type": "array",
"items": {
"$ref": "#/definitions/UserAvailableTariffs_inner"
}
},
"HoldupReply": {
"properties": {
"success": {
"type": "integer",
"example": 1
},
"msg": {
"type": "string"
}
}
},
"body": {
"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
}
}
},
"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"
}
}
}
}
}