Client API


Current version of REST API:

https://api.web20site.com/v1


Getting data

Data cat by retrieved from server by GET requests.

GET request in general looks like this:

https://api.web20site.com/v1/entities/метод?client_id=ид-приложения&root=имя-сайта&path=путь/до/элементу&параметр1=значение1&параметр2=значение2


Example of GET request:

https://api.web20site.com/v1/entities/get?client_id=adaa7639-7f7d-6060-9831-4432d004045f&root=hello-world&path=

This request returns info by website hello-world.


Updating data

To change data on the server, 3 types of requests are used:

  • PUT - change item
  • POST - new item
  • DELETE - delete item.

POST, PUT or DELETE request looks like:

https://api.web20site.com/v1/entities/метод?client_id=application-id

Parameters are passed in request body as JSON:

{
    "root": "site-name",
    "path": "path/to/item",
    "field1": "value1",
    "field2": "value2"
}

Запрос должен иметь заголовок Authorization с токеном полученным через OAuth:

Authorization: Barear токен-авторизации


Пример POST запроса в cURL:

curl -XPOST https://api.web20site.com/v1/entities/get?client_id=adaa7639-7f7d-6060-9831-4432d004045f -H 'Authorization: Barear ***' -d '{
  "root": "hello-world",
  "path": "translations",
  "fields": [
    "name": "english",
    "value": "Hello, World!",
    "type": "s"
  ]
}'

Этот запрос обновляет поле english элемента данных translations сайта hello-world.


Авторизация

Загружать и изменять данные могут только авторизированные пользователи. Поддерживается OAuth-авторизация через следующие соцсети:

  • VK
  • GitHub
  • Google
  • Facebook

Чтобы подключить авторизацию на вашем сайте нужно создать приложение через админпанель и указать с кагого IP или хоста разршена авторизация.

После этого вы можете использовать SDK для авторизации:

<script src="https://fastlix.com/js/dist/sdk-2.1.js"></script>
var demo = new MDSClient({
  clientId: 'ключ_api_вашего_приложения',
  useLocalStorage: false // не хранить authToken в кеше браузреза
});

demo.login('google').then(function(args) {
  $.ajax({
    url: 'https://api.web20site.com/getMyRoots',
    beforeSend: function(xhr) { xhr.setRequestHeader('Authorization', 'Bearer ' + args.authToken) }
  }).then(function(data) {
    // Ваш код
  });
});

По-умолчанию, каждый сайт имеет объект MDSWebsite который уже инициализирован нужным ключём API. Подробнее от этом вы можете узнать в разделе SDK.


Методы API


GET  /get
Получить элемент
str root
Имя корня
str path
Путь к элементу
bool children
Загрузить дочерние элементы
str search
Полнотектовый поиск дочерних элементов
int offset
Полнотектовый поиск дочерних элементов
int limit
Максимальное количество загружаемых дочерних элементов
str orderChildrenBy
Сортировка дочерних элементов по значению поля
PUT /change

Создать элемент

str root
Имя корня
str path
Путь к новому элементу
arr fields

Поля нового элемента. Пример:

[
  {
    "name": "field1",
    "type": "s",
    "value": "Hello, World!"
  },
  {
    "name": "field2",
    "type": "i",
    "value": "123"
  },
  ...
]

Допустимые типы:

s — строка
i — целое число
r — дробное число
b — булево значение

Пример:

curl -XPOST https://api.web20site.com/v1/entities -d '{
  "root": "example",
  "path": "data/entity1",
  "fields": []
}'
PUT /create

Изменить элемент

str root
Имя корня
str path
Путь к элементу
arr fields
Поля элемента
DELETE /create

Удалить элемент

str root
Имя корня
str path
Путь к элементу