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

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


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

В системе реализован 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 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"
        }
      }
    }
  }
}