wiki:API

Описание 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":"_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"]}}

4.3) Добавление поддержки нового домена(зоны)

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

                ACTION "add_zone",
                PARAM:
                       "domain":"_DOMAIN"

Ответ сервера

                a. "ok"
                б. "error"

Пример

SEND:
{"action":"add_zone",
"cookie":"62a755ab-77e5-4ace-8ac5-20c74b793d55",
"params":{
"domain":"example13.flcl"
}}

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

4.4) Добавление A-записи

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

                ACTION "add_a",
                PARAM:
                       "domain":"example.flcl",
                       "a":"_NAME",
                       "ip":"_IP"
                Где секция "ip" может быть опущена. В этом случае будет подставляться значение по умолчанию для зоны.

Ответ сервера

                a. "ok"
                б. "error"

Пример

SEND:
{"action":"add_a",
"cookie":"62a755ab-77e5-4ace-8ac4-20c74b793dee",
"params":{
"domain":"example13.flcl",
"a":"test"
}}


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

4.5) Добавление CNAME-записи

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

                ACTION "add_cname",
                PARAM:
                       "domain":"example.flcl",
                       "cname":"_CNAME",
                       "name":"_NAME"

Ответ сервера

                a. "ok"
                б. "error"

Пример

SEND:
{"action":"add_cname",
"cookie":"62a755ab-77e5-4ace-8ac4-20c74b793dee",
"params":{
"domain":"example13.flcl",
"cname":"www",
"name":"example13.flcl"
}}
RECEIVE:
{"response":"ok","result":"ok"}

4.6) Добавление MX-записи

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

                ACTION "add_mx",
                PARAM:
                       "domain":"example.flcl",
                       "mx":"_MX",
                       "weigth":_Weigth

Ответ сервера

                a. "ok"
                б. "error"

Пример

SEND:
{"action":"add_mx",
"cookie":"62a755ab-77e5-4ace-8ac4-20c74b793dee",
"params":{
"domain":"example13.flcl",
"mx":"MXXXXX.EXAMPLE.NET",
"weigth":99
}}


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

4.10 Просмотр полей домена(Зоны)

get_domain_field

RECEIVE:
[{name,"example.net"},
 {a,[{"xxx","77.221.141.146"},
     {"@","77.221.141.146"},
     {"www","77.221.141.146"}]},
 {cname,[
         {"test","example.net"},
         {"xxxx","ya.ru"}]},
 {mx,[{"ASPMX.L.GOOGLE.COM.","10"},
      {"ALT1.ASPMX.L.GOOGLE.COM.","20"},
      {"ALT2.ASPMX.L.GOOGLE.COM.","20"},
      {"ASPMX5.GOOGLEMAIL.COM.","30"}]}]

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]}}

5.2) Cоздание ноды

ACTION "set_vds_add" PARAM:

"userid":"_USERID", "template":"_TEMPLATE" "cookie":"_COOKIE"

Где _TEMPLATE описывает тип контейнера (vds,php,python,etc)

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

"ok", "_NODEID"

b.

"error"

5.3) Запуск ноды

ACTION "set_vds_start" PARAM:

"nodeid":"_NODEID", "cookie":"_COOKIE",

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

"status":"started"

b.

"status":"error"

5.4) Останов ноды

ACTION "set_vds_start" PARAM:

"nodeid":"_NODEID", "cookie":"_COOKIE",

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

"stoped"

b.

"error"

5.5) Рестарт ноды

Релизуется вызовом пунктов 5.4 , 5.8 и 5.3

5.8)

		ACTION	"get_vds_status"
		PARAM:
			"nodeid":"_NODEID",
		When _NODEID is:
		1. Integer:  "nodeid":999
		2. List:   "nodeid":[999,9999,99999]

Пример: SEND:

		{"action":"get_vds_status",
		"cookie":"c6eb3301-9289-4398-a14e-6681fabbd90e",
		"params":{
		"nodeid":[999,9999,9999]
		}}

RECEIVE:

a.

		{"response":"ok",
		 "result":{
                           "nodeid":[
 					{"999":"running"},
					{"9999":"stopped"},
					{"99999":"stopped"}]}}

b.

"error"

6.x) Управление почтой

6.1) Получение списка email/jid

		ACTION "get_email_status"
		PARAM:
			"userid":"_USERID"
			"domain":"_DOMAIN",
			"address":"_ADDRESS",
			"type":"_TYPE"
		где _TYPE может быть mail,jid, _DOMAIN,_ADDRESS могут отсутствовать.

Пример: SEND:

{"action":"get_email_status",
"cookie":"cba64b8e-5e5b-48e5-a23b-355bdcfcb1cf",
"params":{
"nodeid":99999
}}


6.2) Добавление email/jid

		ACTION "add_email"
		PARAM:
			"userid":"_USERID"
			"domain":"_DOMAIN",
			"address":"_ADDRESS",
			"password":"_PASSWORD"
			"type":"_TYPE"
		где _TYPE может быть mail,jid
		где _DOMAIN является доменом(часть адреса после @)
		где _ADDRESS является local_part (часть адреса до @)

Пример: SEND:

{"action":"add_email",
"cookie":"cba64b8e-5e5b-48e5-a23b-355bdcfcb1cf",
"params":{
"domain":"exmple.net",
"address":"user",
"password":"pass"
}}


6.3) Удаление email/jid

		ACTION "del_email"
		PARAM:
			"userid":"_USERID"
			"domain":"_DOMAIN",
			"address":"_ADDRESS",
			"type":"_TYPE"
		где _TYPE может быть mail,jid
		где _DOMAIN является доменом(часть адреса после @)
		где _ADDRESS является local_part (часть адреса до @)

Пример: SEND:

{"action":"del_email",
"cookie":"cba64b8e-5e5b-48e5-a23b-355bdcfcb1cf",
"params":{
"domain":"exmple.net",
"address":"user"
}}