wiki:API

Version 13 (modified by komm, 9 years ago) (diff)

--

Описание API

+-------------Общий вид запросов протокола-----------------------

Работа идет POST запросами в JSON формате.
Общий вид POST запроса:

        { 
        "action":ACTION,
        "params":{PARAM1,...,PARAMN}
        }

Далее в описании притокола для запроса будут описываться только значения _ACTION и {PARAM1,...,PARAMN}

Ответ сервера может быть следущих видов:

  1. Положительный:
        {
                "response":"ok",
                "result":{RESUL1,...,RESULT2}
        }

Далее в описании притокола для ответа будут описываться только значения {RESUL1,...RESULT2}

  1. Отрицательный:
        {
                "response":"error",
                "reason":"REASON"
        }

Далее в описании протокола для ответа будут описываться только значения REASON

  1. Ошибка сервера.
        {
                "response":"system error"
        }

Все запросы и ответы должны являть собой синтаксически корректные JSON-структуры.

|
+-------------Протокол-----------------------
|

1.1) Регистрация

Запрос на создание нового пользователя: 1. Создание нового пользователя хостинга:

                ACTION: "adduser"
                PARAM:
                        "login":"_LOGIN",
                        "password":["_PASSWORD1","_PASSWORD2"],
                        "email":["_MAIL1","_MAIL2",".."]

Ответы сервера:

  1. В случае удачной регистрации.
                        "uniqcode":"Уникальный код"

  1. Неудачная регистрация.
                        "bad_login",
                        "bad_password",
                        "bad_email"

Пример: SEND:

{"action":"adduser",
"params":{
"login":"test",
"password":"re",
"session":"yes",
"email":"test@example.com"
}}


RECEIVE:

{"response":"ok","result":"ok"}

2. Восстановление пароля:

                ACTION: "restore_password",
                PARAM:
                        "email":"_EMAIL"

Ответы сервера: а.

                        "ok"

b.

                        "error"

Пример:

SEND:

{"action":"restore_password",
"params":{
"email":"test@example.org"
}}

RECEIVE:

{"response":"ok","result":"ok"}

3. Смена пароля:

                ACTION":"change_password",
                PARAM:
                        "login":"_LOGIN",
                        "oldpassword":"_OLDPASSWORD",
                        "newpassword":"_NEWPASSWORD"

Ответы сервера: a.

                        "ok"

b.

                        "no",
                        либо
                        "error"

Пример SEND:

{"action":"change_password",
"cookie":"60a08d16-dfd9-472f-82fe-e4261ee91a96",
"params":{
"login":"test",
"oldpassword":"oldpass",
"newpassword":"newpass"
}}

RECEIVE:

{"response":"ok","result":"ok"}

1.2) Авторизация

1.Запрос серверу:

                ACTION: "authorization",
                PARAM:
                        "login":"_LOGIN",
                        "password":"_PASSWORD",
                        "uniqcode":"_UNIQCODE",
                        "session":"yes|no"

Где "session" показывает надо ли на стороне командной машины вести сессию соединения. "uniqcode" -- не обязательный параметр, может применяться вместо пароля(например передавать сертификат)

Ответ сервера: a.

                        "userid":"_USERID",
                        "cookie":"_COOKIE"

где "cookie" отдается в том случае, если был установлен флаг "session":"ok"

b.

                        "bad_login",
                        "bad_password"

Пример SEND:

{"action":"authorization",
"params":{
"login":"test",
"password":"pass",
"session":"yes"
}}

RECEIVE:
{"response":"ok","result":
{"cookie":"110b718b-1ca6-461c-bf96-dd768371ca01",
"userid":"110b718b-1ca6-461c-bf96-dd768371ca01",
"login":"test"
}}


1.3 Закрытие сессии. Logout

1.Запрос серверу:

                ACTION: "logout",
                PARAM:
                        "login":"_LOGIN",

Ответ сервера: a.

                        "ok"

Пример

SEND:

{"action":"logout", "cookie":"b368a923-4adf-4d1b-9119-3e32cd1e6569", "params":{ "login":"test" }}

==

RECEIVE:

{"response":"ok","result":"ok"}

==


2.1) Получение списка сайтов

Запрос серверу:

               ACTION: "get_list_site",
                PARAM:  "nodeid"

ответ сервера: а.

                       [
                        "nodeid":"_NODEID",
                        "site":[{
                                "sitenum":"_NUM         %%формат site1,site2..siteX,
                                "docroot":"_DOCROOT",
                                "servername":["_DOMAINNAME1","_DOMAINNAME2"...]
                                },
                                {...}
                                ]
                        ]

b.

                       "error"

2.2) Создание нового сайта (дефолтное)

Запрос серверу:

                ACTION  "create_site",
                PARAM:
                        "nodeid":"_NODEID",
                        "properties":"default"
                }

ответ сервера: a.

                        ok

b.

                        no

4.x Управление доменами

4.1) Список доменов для сайта

Запрос серверу

                ACTION  "get_list_domain"
                PARAM:
                        "nodeid":"_NODEID",
                        "siteid":"_SITEID",
                        "userid":"_USERID"
                }
                где _USERID и _SITEID могут быть пустыми ""

ответ сервера:

a.

                       "domainlist":["_DOMAIN1","..","_DOMAINN"]

b.

                        "no"

ПРИМЕР SEND

{"action":"get_list_domain",
"cookie":"62a755ab-77e5-4ace-8ac4-20c74b793drr",
"params":{
"nodeid":99999,
"siteid":2
}}

RECEIVE:

{"response":"ok","result":{"domainlist":["example.ru","test.example.ru"]}}

5.х Управление нодами

5.1) Получение списка нод

Запрос серверу

                ACTION  "get_node_list",
                PARAM:
                        "userid":"_USERID",
                }

Ответ сервера: а.

"nodeid":[_NODE1,..,_NODEX]

"status":"error"

ПРИМЕР

SEND:
{"action":"get_node_list",
"cookie":"c82a9f46-c365-455b-8b2d-7b469cc86196",
"params":{
"userid":"test"
}}

RECEIVE:
{"response":"ok","result":{"nodeid":[99998,99999]}}