Skip to content

SbWereWolf/easy-up-back

Repository files navigation

How to code

Ниже описаны правила разработки кода. Эти правила можно поменять, но пока правила не изменены их следует выполнять.

Если что то не понятно, то лучше спросить, это приветствуется.

Архитектура

Писать код следует исходя из разработанной архитектуры.

Почему Система разрабатывается не на Laravel, а только с использованием Laravel хорошо объяснено в видео. У Системы есть ядро и оно ни как не зависит от фреймворка. Система имеет несколько способов ввода, и при этом обработчики пользовательского ввода (в том числе вызовов API) не дублируются.

Все классы должны быть разделены на группы по уровню абстракции и по предметной области.

На одном уровне классы могут взаимодействовать друг с другом как угодно. Классы не должны обращаться к классам из других уровней абстракции (спасаемся от лапши).

Взаимодействие между уровнями абстракции происходят через мастер класс.

Взаимодействие между классами различных предметных областей возможно только на соответствующем уровне абстракции.

Пример

Есть классы A, B, C - это один уровень абстракции.

Есть классы A1, A2 - следующий уровень абстракции предметной области A , эти классы образуют отдельную группу. Другая группа B1, B2 - предметная область B.

Здесь A это мастер класс для A1, A2; B для B1, B2.

Если нам по алгоритму необходимо что бы класс A2 получил в работу результат работы класса A1, предварительно обработанный классом B1, то это следует выполнить следующим образом:

  1. мастер класс A выполняет метод класса A1 и получает данные;
  2. передаёт эти данные в обработку мастер классу B;
  3. мастер класс B передаёт данные в обработку классу B1;
  4. класс B1 выполняет обработку и возвращает результат мастер классу B;
  5. мастер класс B возвращает результат мастер классу A;
  6. мастер класс A передаёт данные классу A2 (запускает метод класса A2 и передаёт через параметры данные полученные от мастер класса B);

Таким образом нет лапши в коде, класс A1 не вызывает методы класса B1.

Все вызовы проходят через мастер классы A и B, все взаимодействия примерно одинаковые и их не много, поэтому отрефакторить что класс A, что класс B это вполне обозримая задача, которую можно более менее точно оценить, и последствия этого рефакторинга предсказуемы.

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

Границы использования архитектуры Laravel

Контроллеры используются только для стыковки с эндпоинтами API. Архитектуру предусморенную Laravel не используем, в разработке используем инструментарий Laravel по максимуму.

В контроллере вызывается надлежащий диспетчер. Для веб запросов это \EasyUp\Dispatcher\Http, для вызовов командной строки это \EasyUp\Dispatcher\CommandLine.

Назначение классов с "ролью" диспетчер (\EasyUp\Dispatcher\Http)

В контроллере мы передаём Request как есть в диспетчер:

public function getContext(
    Illuminate\Http\Request $request, string $locale, string $group)
{
    $dispatcher = new EasyUp\Dispatcher\Http($request);
    $response = $dispatcher->getContext($locale, $group);

    return $response;
}

И вызываем метод диспетчера с аргументами полученными при вызове, по идее они все уже есть в Request и можно отдельно аргументы из строки запроса не передавать.

Requestи Response должны использоваться только в диспетчере. Ни каких HTTP запросов и ответов в бизнес логике не должно быть. Ошибки валидации и вообще любые ошибки надо возвращать через эксепшены и эти эксепшены надо перехватывать в диспетчере, в контроллер должно придти уже сформированное описание ошибки с правильным HTTP кодом ответа (400, 404, 422, 500, 401, 403 и т.д)

То есть не смешиваем функционал приложения и среду передачи - веб запросы.

Коды ответов присваиваются в диспетчере на основе результата, полученного из бизнес логики ( 200 - запрос выполнен без сбоев, 201 - данные добавлены, 204 - данные удалены).

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

  • Не хватает прав один эксепшен,
  • Не верные данные - другой,
  • Отсутствует обязательный аргумент - какой то третий эксепшен.

Задача диспетчера выполнить вызов к Системе, и сформировать ответ (для Http это Response).

Пример метода диспетчера:

public function open()
{
    $user = static::getHttpUser();
    $sys = new EasyUp\Dispatcher\System($user);
    $credentials = new LanguageSpecific\ArrayHandler(
        $this->request->only('email', 'password'));
    $token = $sys->open($credentials);

    $response = null;
    if (empty($token)) {
        $response = response()->json(
            ['error' => 'UnAuthorised'], 401);
    }
    if (!empty($token)) {
        $response = response()->json(['token' => $token], 200);
    }

    return $response;
}

Назначение классов с ролью "система" (\EasyUp\Dispatcher\System)

Диспетчер подготовил аргументы вызова и сделал вызов Системы. Задача Системы выполнить необходимые вызовы подсистем (мастер классов), передавать результат работы одной подсистемы в другую, пример:

public function getContext(string $locale, string $group)
{
    $interpreter = new EasyUp\Translate\Interpreter($locale);
    $package = new LanguageSpecific\ArrayHandler(
        $interpreter->askForGetGroup($group));

    $archivist = new EasyUp\Audit\Archivist($this->user);
    $may = $archivist->approveUse('GET_GROUP', $package);
    $context = [];
    if ($may) {
        $context = $interpreter->getGroup($group);

        $result = new LanguageSpecific\ArrayHandler($context);
        $archivist->takeAttention('SUCCESS_GET_GROUP', $result);
    }

    return $context;
}

В этом примере Система коммуницирует данные между мастер классами Interpreter и Archivist.

Пример перехвата исключения Системой:

public function setup(LanguageSpecific\ArrayHandler $params)
{
    $customer = new EasyUp\Customer\Customer($this->user);
    try {
        $result = $customer->setup($params);
    } catch (Rubedite\Common\ValidateException $e) {
        $this->setValidationError($customer->errors());
        throw (new Rubedite\Common\ValidateException());
    }

    return $result;
}

Система и мастер классы - все они передают данные между классами своего уровня абстракции.

Класс бизнес логики может быть мастер классом для собственной группы классов.

Валидация входных параметров

Валидацию данных на входе выполняем как можно ближе к использованию этих данных, не в контроллере, не в диспетчере, не в мастер классе.

Валидацию следует выполнять в классе бизнес логики который эти данные должен обрабатывать или перед вызовом метода класса для обработки данных. Не должно быть разрыва между выполнением валидации и применением валидированных данных.

Если мы будем выполнять валидацию в контроллере, то к тому моменту как мы дойдём до выполнения бизнес логики мы уже забудем какие правила валидации мы применяли.

Валидацию следует выполнять с использованием класса \Illuminate\Validation\Validator, или другого совместимого.

Пример валидации в классе бизнес логики:

public function sendResetLinkEmail(LanguageSpecific\ArrayHandler $params)
{
    // проверили входные параметры 
    $validator = (new EasyUp\Customer\ValidatorFactory($params))
        ->sendResetLinkEmail();
    $isValid = $validator->passes();

    if (!$isValid) {
        $this->setValidationError($validator->errors()->all());
        throw new Rubedite\Common\ValidateException();
    }
    // выполнили обработку 
    $email = $params->get('email')->str();
    /** @noinspection PhpUndefinedMethodInspection */
    $result = Illuminate\Support\Facades\Password::broker()
->sendResetLink($email);

    return $result;
}

Использование акцессоров (гетеров, сеттеров) для Eloquent

Для сохранения возможности рефакторинга имён колонок (свойств моделей), необходимо использовать геттеры и сеттеры.

Поскольку свойства модели не объявлены в классе как свойства, то у нас нет свойства которое мы могли бы переименовать в соответствии с новым именем колонки.

Если мы будем для доступа к колонкам использовать константы, то мы сможем их свободно переименовывать, переименование произойдёт автоматически и везде.

Пример геттера:

    public function getForenameAttribute(): string
    {
        $forename = $this->attributes[static::FORENAME];
        return $forename;
    }

Пример сеттера:

    public function setForenameAttribute(string $forename)
    {
        $this->attributes[static::FORENAME] = $forename;
        return $this;
    }

Использование динамической "генерации" кода

Пример динамического кода:

return new $class($user, $arguments);

Какой класс будет использован не возможно понять без запуска кода на выполнение. Подобного следует избегать.

Использование динамики следует согласовывать.

Использование оператора return

В любом коде (в коде метода или коде скрипта), return должен быть ровно один.

Если надо по какому либо условию преравать выполнение кода, то следует поднять флаг, и дальше в коде проверить этот флаг.

Используем настройки как приложения, так и Laravel

Будет хорошо если мы все магические числа в коде оформим опциями настроек конфигов, например когда нам необходимо получить значение настройки делаем так:

// читаем из конфигов значение
$shortLimit = config('easy-up-online.short-text-limit', 50);

Создаём файл конфига приложения config/easy-up-online.php, добавляем в массив настроек свою опцию:

    /*
     При просмотре переводов строки будут обрезаться до этой длины
     * */

    'short-text-limit' => env('TRANSLATION_SHORT_TEXT_LIMIT', 40),

Задаём опцию конфига собственно Laravel в файле .env:

TRANSLATION_SHORT_TEXT_LIMIT=30

Везде есть fallback значения:

  • в коде, где читаем значение опции
  • в конфиге приложения, когда читаем значение из конфига Laravel

Когда всё настроено как надо, используются значения из файла конфига Laravel который в репозитории не сохраняется и его локальные изменения не поломают работу приложения.

Это значит, что админ проекта может открыть файл и установить там любое значение и поведение приложения поменяется, ни кому не надо лезть в код и менять константы классов.

Правила именования для элементов СУБД

Статья с соглашениями о наименованиях для СУБД.

Как писать описания к камитам

Статья с подробным объяснением почему так

Структура описания камита:

  1. Заголовок камита 50 символов, заголовок должен кратко описывать какой функционал добавился / изменился / починился
  2. Пустая строка, которая отделяет заголовок камита от описания камита
  3. Описание камита, состоит из произвольного количества строк, но каждая длиной максимум 70 символов, в описание можно дать ссылку на задачу в таск трекере, нужно более развёрнуто описать какие изменения делает этот камит не с точки зрения реализации, а с точки зрения решённых проблем, реализацию видно в коде, а смысл этого кода видно только из описания камита.

Пример

Fix bugs of `new-message` endpoint

Fix bugs of `new-message` endpoint
Change `created_at` and `updated_at` of `last_time_read` when needed
Add api route for `new-message` endpoint

Назначение веток в репозиторях

Мастер ветка

Это совершенно рабочая версия кода для демонстрационного сервера, туда ходит Заказчик и радуется всегда работающему функционалу, там Заказчик демонстрирует своему руководству на что ушли деньги.

Ветка разработки

Раскатывается на сервер разработки и служит для отладки интеграции разных фич, для проведения демо для Заказчика, для тестирования перед камитом в мастер ветку.

Ветка функциональности (создания или изменения)

Создаётся отдельная ветка, ветке даётся название в соответствии с функциональностью, таск трекеры приходят и уходят, владельцы кода сменяются, названия веток в репозитории остаются (когда их забывают удалять после слияния).

Осмысленные названия помогают вспомнить историю разработки

Можно назвать ветку номером задачи, но этот контекст легко теряется, мы в таск трекер не смотрим каждый день, поэтому номер задачи вообще ни чего про код не скажет, а если у ветки будет человеческое название, то я пойму для чего этот код пишется.

Банально через пол года приходит другая команда и кто будет разбираться с номерами задач ? Будут читать описания камитов и названия веток, поэтому там должна быть описания в которые можно быстро вникнуть.

Другим программистам будет проще разобраться с тем что до них было сделано, если у камитов и веток будут информативные описания.

Команде будет проще работать с репозиторием если в описаниях камитов обойтись без мало значащих описаний "fix" и "debug commit".

Форматирование кода

Код должен быть отформатрован в соответствии со стандартом PSR12. Для автоматического форматрования на линукс можно использовать:

fixr-code.sh

Для виндоус:

fixr-code.bat

How To Install

Run docker project and log in workspace container:

  • docker-compose up -d nginx postgres workspace nuxtjs
  • docker exec -it laradock_workspace_1 bash
cd /var/www/
composer install
composer dump-autoload
php artisan key:generate

Nova

php artisan nova:install
php artisan migrate

Telescope

php artisan telescope:install
php artisan migrate
php artisan telescope:publish

Laravel Pasport

php artisan migrate
php artisan passport:install

Make storage accessible for web and create property directories

Задать в файле .env опцию расположения хранилища:

FILESYSTEM_DRIVER=public
php artisan storage:link
cd /var/www/public/storage
mkdir profile-avatar
mkdir company-avatar
mkdir project-post-image
chmod 777 profile-avatar
chmod 777 company-avatar
chmod 777 project-post-image

Seed Data

Подготовительные операции

При выполнении посева данных могут быть подобные ошибки:

ReflectionException  : Class DraftPermissionSeeder does not exist

В этом случае надо выполнить обновление автозагрузчка:

composer dump-autoload

Собственно посев данных

php artisan db:seed --class=DatabaseSeeder
php artisan db:seed --class=TrackingBaseTablesSeeder

Seed demo data

Заполняет демо данные профиля, а так же владельца и сотрудника проекта.

php artisan db:seed --class=DemoSeeder

Setup

Приложение конфигурируется через опции, значения задаются в файле .env, в корневой директории.

Пример опции:

USER_API_TOKEN_LENGTH=60

Опции конфигурации

  • APP_URL хост приложения, используется для генерации ссылок на веб ресурсы, локальное разворачивание: APP_URL=http://localhost публичное: APP_URL=https://demo.easyup.rubeditedev.ru
  • TRANSLATION_SHORT_TEXT_LIMIT При просмотре переводов (в админке), строки будут обрезаться до этой длины.
  • USER_TERMINATION_DELAY При удалении учётной записи, она будет удалена из системы через это количество минут.
  • USER_API_TOKEN_LENGTH Количество символов для api_token пользователя.

Приложение Facebook

Для доступа к API Facebook нужно приложение Facebook: http://https://developers.facebook.com/apps/ (нужно залогинится)

Далее в этом приложении зайти в Settings (Настройки).

Из раздела Basic (Основные) взять поля и записать в конфигурацию

  • App ID (Идентификатор приложения) => значение параметра FACEBOOK_APP_ID файла .env
  • App Secret (Секрет приложения) => значение параметра FACEBOOK_APP_SECRET файла .env

В разделе Basic (Основные) в поле App Domains (Домены приложений) нужно прописать домены фронтенд приложений:

  • localhost (для разработки)
  • demo.easyup.rubeditedev.ru (демонстрационный)

How To Update

Обновлять приложение следует из репозитория командой git.

git pull

Если были добавлены зависимости, то необходимо их загрузить или обновить

composer install

API

Общие положения

Корень пути для файлов, если не сказано обратное, это: %WEB_SERVER_HOST%/storage/

User

  • POST api/v1/user/register Зарегистрировать нового пользователя
POST http://localhost/api/v1/user/register
Content-Type: application/x-www-form-urlencoded

email=dummy3%40dummy.dummy&password=123456789&surname=Sdummy&forename=Fdummy&locale_id=en&skin_id=day&timezone_id=YEKT
HTTP/1.1 201 Created
Content-Type: application/json
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59

{
  "success": true
}
  • POST api/v1/user/termination Запланировать удаление пользователя через USER_TERMINATION_DELAY (43200) минут

Пользователь будет удалён при выполнении Laravel-ем по Крону, задач из списка который задаётся в \App\Console\Kernel

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
    protected function schedule(Schedule $schedule)
    {
        $schedule->call(function () {
            // place task here 
        });
    }
}
POST http://localhost/api/v1/user/termination
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImI0NGZiN2E0MTg4NjM4YTVjZmZkMGFiZTZjNjVkMDU2OGRjMWQ0N2ZhYjgwOTBjZGRkYTgzM2QyZjVkYThiNGQ3ZGUxZDEwZjdjMzIxYzY2In0.eyJhdWQiOiIxIiwianRpIjoiYjQ0ZmI3YTQxODg2MzhhNWNmZmQwYWJlNmM2NWQwNTY4ZGMxZDQ3ZmFiODA5MGNkZGRhODMzZDJmNWRhOGI0ZDdkZTFkMTBmN2MzMjFjNjYiLCJpYXQiOjE1OTczNTc2MzUsIm5iZiI6MTU5NzM1NzYzNSwiZXhwIjoxNjI4ODkzNjM1LCJzdWIiOiIxMCIsInNjb3BlcyI6W119.pQRwEVtasYpf8_brWZ2ChWFpw8YutxxNPOxoef7b1McuhaYmAm4SpQ72of0GOzgqIlt5XKPpkgNPq27yIJXKGi1yazJS3RTsfQyyE9e3fBjVK9C-2C9dM5sszebBGYeEUAi-Se4DyURH7HCZc4g6BFHTPSh0fkKeKzgnhNhFS_EnUI2PbBWDCUuVxXAJLcq_sqbYrnGprQiNkYYvYJ5CVH5PBF0hz4HSVbQMbaCtFQKKbZXkuJTjqsPdy_60iQNQrJ797MHedOAZDStzL5L3krs7om3L-_u3PyoX4Pc09e8-24WF4HDQxDrr1plZEKI_T9WNqPFa6caZ3zPG3T9269W0DsNUWmssJRQDX4fxbEJUQmGYe1mAjiLx_DqPzD-9Hyd2n7FMzWuFlEOn-4OTmskerDqE6rZEqbY9TpGU5-KHxSblMtdN93SkplLk4myZtO9PDYJQZ0yNMwzaEpi6TXSmt2t1LIcYk8vWl6nl6z2o9leSyjFkxAM21MFzfzcge_LvgTjJb_rTENIj0BktDbxrStNfYNrM9-SFJGQDS7RsOW6cnVZgKQuNgTW25pFV3s9YeGPXb_XyPM6iL_VMr9sOgVMiZ3TR__VgrOw_4zk9qQ7z-ldmD5Mr3OgLYxQwV25KkRl1HIZdnefI6iIqKKmW6i_BH63OhxR28NSaco8
HTTP/1.1 201 Created
Content-Type: application/json
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59

{
  "success": true
}
  • POST api/v1/user/register Отменить удаление пользователя
DELETE http://localhost/api/v1/user/termination
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjE4YWJjZWUwNzk2YTNiODI3YzZlYzA2ZTRjYzM4OWFmYzQ1ZDE3Y2EwNzk3Y2RjZTg0ZGVhOTk4MDcxNTFiM2VhYWRkNWY2MmZhMzFmNGZmIn0.eyJhdWQiOiIxIiwianRpIjoiMThhYmNlZTA3OTZhM2I4MjdjNmVjMDZlNGNjMzg5YWZjNDVkMTdjYTA3OTdjZGNlODRkZWE5OTgwNzE1MWIzZWFhZGQ1ZjYyZmEzMWY0ZmYiLCJpYXQiOjE1OTc0MDQ0ODAsIm5iZiI6MTU5NzQwNDQ4MCwiZXhwIjoxNjI4OTQwNDc2LCJzdWIiOiI4Iiwic2NvcGVzIjpbXX0.gw3VZCkBZ341jrOyYmcqUpGRGAuq4FK5V6rEhs85aqmiUxs8lFHFhOT3q1KUxpD1QkHdKFHoccqwe5-c2gtZ7nqZwhRZL0FKnKx7IDjj76EIIPxpyWFlLi1n5lxVBoJ9G4QGRMPLXj4sKnuD2Yc0i2Ol4Ep2h72ch4Q226pVi3_T1wivcKwbJLHwrJSp-cBqgfWyt2Gyp73pmukd1HM7cheMm4eDZOepklH3PAW0Rin-SmVNXVDCXFofmyCb9qfaqyMWJ0RpbA1uSfPgS_7_VwZbrPZ47OgXLlS2fUMhCBi7fOU3D-Gp2cFGDxdXL9UWwS1jh7rAeCh19ronWsVJmqXxfHR3UjnjLZ8RWRAx56wiVLenGmxfYs1ts1IwaWkEeVtKtvqnU3QXNptDTrK5QcA3MbqVyZGI1XCKJuc6gyICZ0Lp10xMQqI9Tcrx2KAKPQ2jF1F7o27xTd0b0RTlVT5UVeojRdhnNzUzMEeTJdv4p5LNUJ0xkFKcyHrbO1VXl2Zpg_sJX4vUCLisn47vLIqJ2_ur8SqE1h17aG7wj_T3BwEU03D1wb8TpftpXnLMrMjTn5g17yUHSj-_60h9W4Rzx6VhH4EOiMlT-EjScdtF5CjuhOmz_tQ0mQYg0wot3OF1p18HU4RmZ86Omma6DMuFiBOVYtM9dQWO64bXI0I
HTTP/1.1 204 No Content
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 58

<Response body is empty>
  • GET api/v1/profile/info Получить инфо профиля
GET http://localhost/api/v1/profile/info
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjE3OTI4MjNkYmQ5ZjUyZjkwYjM0NGUxOGIzOThmYTg0OTYwOTQ1YTBkZTM5MWQzODlkZjM5YWNmZTNkZmRmZjVmNzA1ZTM0OTljNjE5YzIyIn0.eyJhdWQiOiIxIiwianRpIjoiMTc5MjgyM2RiZDlmNTJmOTBiMzQ0ZTE4YjM5OGZhODQ5NjA5NDVhMGRlMzkxZDM4OWRmMzlhY2ZlM2RmZGZmNWY3MDVlMzQ5OWM2MTljMjIiLCJpYXQiOjE1OTcxNzUzNDEsIm5iZiI6MTU5NzE3NTM0MSwiZXhwIjoxNjI4NzExMzQwLCJzdWIiOiI4Iiwic2NvcGVzIjpbXX0.SeV1IBlZFnISXUmJbjFOghz0OOI70zN6wL-9IZBEcwbLgONtCVrM6Ve6eTJzI2FGqklyjx7dAlF859KhbqvPogufhL6Q6nqTJbAuuHYCOqRvp1yCavF8qIPERaSYZLdX6uDWq7tWgLsR_-0ij3pjbILEQDs4m-1uTYKZzxwzewMXuBuW7UxBx9a00wdZ6eo5IlkUbh2RBJCPoBnQNH2V81Ji1WKWMDmlg_QHfR3ow6ZJtx0QtQWzgnwThwuVtErrx39zycGINjLxCcHG_5OrFNw1y5_GmWQVMP5iz0lIPIGs4QdPi28eiUlNLSjfrO-1Q9MHht39t3tovjDIieXWlJnp29nsJ_ICiUShhWpoWTcYJcrsc9NGugUEAe4_1fK9W8xcOXLPZ0hvH54kXVli1f3p9nnff1YEMQY0GcDsNHZdG31tEVtOZM_z6pqzEI8x9oMNPea_r_NyG0aoFiU7mFTnQVwybRYJ5s_wMXB6krZItVR1KFEuHcJg8nQBnCzSo2V1zrkYM2m1enNY8suOYOoBb_xOtWetw6KhHZLnVC5PZ5vb6GlaGJSUEX4iT7PJMzDS71SkUnOQW01vA5jvRBdUuzhCe1RxB7VFJkEjP_za37gMaw32y1RYE64Jw0ZWJUYGw1F_0OhO6kk08ymlY3CB_QXSKv61UNanl0yPUto
HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59

[
  {
    "surname": "momy",
    "forename": "son",
    "timezone_id": "YEKT",
    "locale_id": "ru",
    "skin_id": "day",
    "avatar": "profile-avatar\/FHkTMw9rv4MuCB9NwumzggVUP3Tbtm7VsQGGbfPF.jpeg",
    "company_name": "mymy",
    "company_avatar": "company-avatar\/zuKdDmjg6zcAg3BRaxrRHVOTBElUuzmMQFgX6TYn.jpeg",
    "tariff_code": "base",
    "profile_tariff_best_before": "2021-08-11 19:49:39"
  }
]
  • POST api/v1/profile/info Обновить профиль

Аватар профиля надо передавать через параметр avatar

Аватар компании надо передавать через параметр company_avatar

Картинка будет проверена с использованием правил:

  1. mimes:jpeg,png
  2. max:5120 (kb)

Как отправку файла продемонстрировать текстовым HTTP запросом не известно, поэтому поверьте на слово.

POST http://localhost/api/v1/profile/info
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjVlNDcyZTVmYTRjZjZlYTc5YzliNTY2N2I0NDM2OWU1NTNmYTNmNDZiN2YzYzBkNmVkZGUxZjM1NTljNmRlNTU2NmFlY2M4YTZhMzRlYmQwIn0.eyJhdWQiOiIxIiwianRpIjoiNWU0NzJlNWZhNGNmNmVhNzljOWI1NjY3YjQ0MzY5ZTU1M2ZhM2Y0NmI3ZjNjMGQ2ZWRkZTFmMzU1OWM2ZGU1NTY2YWVjYzhhNmEzNGViZDAiLCJpYXQiOjE1OTcwOTc4MTAsIm5iZiI6MTU5NzA5NzgxMCwiZXhwIjoxNjI4NjMzODEwLCJzdWIiOiI1Iiwic2NvcGVzIjpbXX0.IZ6-gZZD9UOnwsOPt09jqEnzEQJ206TiT3p3Pv1YrdRah6nuwjjl92Z3mmXUXahGB_elQ-N_fykQXHDhkjPIsC-8GaZNFjDAKGK3R4E3uYz2oagJvvzoBtgsGTw53rBkOVtRIkDMdjJFQ43eIGg7PgKqD4CVAHwDPoBbW7omH8DiLX1Tx_kuUdgFX_vb2d8z32o2-N-Z1X76eWU5fePgMQtFxHOvLQPO_eTyEeANyGcKcc0fHnb8SX9sF3Rnz9y3KfM6pNM6oL7nS5WwbeuECStpw2B78tytUuZVzxJwJk4VfpPLcRVsSa3Z4SM3-r5xfMDqPTsJ2IglGg4OPJAncR5Gxa6z1MrMbMCY__5CjbdfxeK7MtDa8m0liPTcILY-NsAl26jNyAnFMSHUQfuoGradk4zWiB6uGelGc-X-9MFBc9owM87-7juRYjLX0iJHuprYZpKGkiIfXAabJXoh-GE8NMuf-2d8xsc3r_zlqyGuBqicia2_OCao8NW9DwovWLKRwpqnXBwNYGfmJB6QHsWhuUYWGH5QWJyOD31ibWnHdo6q-gVJ0DFvBehkWZHvsh9fKv1xHf5aqux8Wm17qMefdAIbsh2UY6Gw5dBW5-1fDkMNH9bMRMc8K2EbB9ckeqQ4Wj8Oqq5ubLxC3_4O3SQxHLHqtHVBP305SvH9UHw
Content-Type: application/x-www-form-urlencoded

surname=DUMMY&forename=dummy
&locale_id=ru&skin_id=day&timezone_id=YEKT
&company_name=mymy
HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59

{
  "success": true
}
  • POST api/v1/profile/tariff Сменить тариф
POST http://localhost/api/v1/profile/tariff
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImEyYjc3OGUyMDg2NDljMDgyYWI2MjZlOTkzOTcyN2FlZGVmNzg3OTVjYWFjYzk4MjA3MDIxOTZlMWI4NzZjMDUzM2ExNmY3Yjk2NTNlZjhmIn0.eyJhdWQiOiIxIiwianRpIjoiYTJiNzc4ZTIwODY0OWMwODJhYjYyNmU5OTM5NzI3YWVkZWY3ODc5NWNhYWNjOTgyMDcwMjE5NmUxYjg3NmMwNTMzYTE2ZjdiOTY1M2VmOGYiLCJpYXQiOjE1OTcxNTkyMjcsIm5iZiI6MTU5NzE1OTIyNywiZXhwIjoxNjI4Njk1MjI3LCJzdWIiOiI3Iiwic2NvcGVzIjpbXX0.qay7h8XtnpD_MZrScONHhHTHDuQobs-vh08rX_EF8qAkJT6kq64i2tTdCmJQLE3JRr9LU8mueDdFvT2KASNZXmMIoc1BoPm1Y3A2aUWqjzcfOS8VIZgnvm-BKHBO3oTgurl8v1AEy4X0T4x5xZG22JWC55vQJ2Ddfhb9vwRj0jFo2mbx_wnCW7QaZ_p3dMagWyCh7eyXSTh7gIxzrE67aP-I3gq0rtGMcVOkLsxtOvTG5g3vqMwPe5efJShU7wrhCbeJl4MS1ZP0leFPSMPbHf8d60JR0_kaNxnwTczfj_0_uvYwclyY6wv_aiPGrp_aA4mM09Sj-35iqECOy4GpbTI3Ds7oLOPXITXiZZ0BFEgSH-NTWIo9pwQtdOLA-A9zkwPw1qsJ938g0v_ehz69hkaS0BBZO0nj_F2aOIv9CQGwWkoMYfO1VUtYCkzpsbUfXTgjg5HTpS3cPpEJGUx4sKdP_s2-ADWIovOlpz8dzN9RLmeIA_W7GDYJevC91VK16qUdyxUK4zXb8FHEtcgXHWZYdGzXCdfaJ5J3RrTdIbWa12ePwK8ejdmpxE5P5uevC3vKQ6iVc9y1fXcOGKJbRYuSyV3iqDZ3agU7z_sIHR2WzC3AxnUGpUTByvBBruvIE9j70QijYWoRzXfB3w-fEUawgrxFT2nxzh0Zo0-VdcE
Content-Type: application/x-www-form-urlencoded

code=plan_a&duration=yearly
HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 60

{
  "success": true
}

Session

  • POST api/v1/session/open Открыть сессию - получить токен авторизации
POST http://localhost/api/v1/session/open
Content-Type: application/x-www-form-urlencoded

email=tinc%40sudims.corp&password=123456789
HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59

{
  "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImUyMmJjNDRjYTVhNTZmYzJjZDViZGM3ZGRkZGVmODRlZjRiODJlZDkxNzU2MmJiMDRjYzA2MzgyODUyYmI3MmZjYmM2YmYwOTIzODA4Y2Q1In0.eyJhdWQiOiIxIiwianRpIjoiZTIyYmM0NGNhNWE1NmZjMmNkNWJkYzdkZGRkZWY4NGVmNGI4MmVkOTE3NTYyYmIwNGNjMDYzODI4NTJiYjcyZmNiYzZiZjA5MjM4MDhjZDUiLCJpYXQiOjE1OTU5MjQxNjQsIm5iZiI6MTU5NTkyNDE2NCwiZXhwIjoxNjI3NDYwMTY0LCJzdWIiOiIzIiwic2NvcGVzIjpbXX0.Y2bxruGr3oumXl2vA9kBvwpl_-HvEGbyDbLPuS77B5NP_KGFjE3BH2DE8l1L9jdom_jyYOYicxfbpk_YlBcE5Y-Pas4OtoGSNatVhb9RFnYoFZJGU8rl8zDUC_3t7pXxMfe2LK40IPy-TJAf1a1MdlbvACIVtXMjYUW_3qZeFV8-WyIugT8hlGddhoMqdmXSqVW7GP57MoMfmepEhSHqs95vinxJZYx0Gy3agbRnTaz9l2tQcQOTWI-ZVNhH4yDX2Abyzzz5cOaF5cCn9ldA9Q7mQyWKqbfLlBoYfyIXdiYFw__s6PG1ArkkoU3oEb3gdFiDTJmTLr1omux7dzG01ylW6-4idP47uV83RH30vz9IkBzKCLZWC7RbEveZeT0EamPq_jdevFbNbyEimSy-zRKEVVRVWjxc_0-BxjsmmbnB1vfqu8hMpYwHMDIdCJStr9cfkMO0xjo3Y5KB24dCIYcmazak9_oG3JUPRZVunM-XmAnDnT9pXB4E_dPZfmES3GTHn4mbKKeQgRMyYqtmd77iYcn5HnJiJFotbeFTWUMOZUDKOKzMpWrSGDyAci8NJoMmFh5lJ0r-w8wfCUYVDTTRE12-EammahtsH2J_SBST7gduWDh-92OVO15xpkkHs7m1Q_QrbdJBKIS6iXJkS5lW47of8A9XCW29f5HSsEU"
}
  • DELETE api/v1/session/close Закрыть сессию
DELETE http://localhost/api/v1/session/close
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImUyMmJjNDRjYTVhNTZmYzJjZDViZGM3ZGRkZGVmODRlZjRiODJlZDkxNzU2MmJiMDRjYzA2MzgyODUyYmI3MmZjYmM2YmYwOTIzODA4Y2Q1In0.eyJhdWQiOiIxIiwianRpIjoiZTIyYmM0NGNhNWE1NmZjMmNkNWJkYzdkZGRkZWY4NGVmNGI4MmVkOTE3NTYyYmIwNGNjMDYzODI4NTJiYjcyZmNiYzZiZjA5MjM4MDhjZDUiLCJpYXQiOjE1OTU5MjQxNjQsIm5iZiI6MTU5NTkyNDE2NCwiZXhwIjoxNjI3NDYwMTY0LCJzdWIiOiIzIiwic2NvcGVzIjpbXX0.Y2bxruGr3oumXl2vA9kBvwpl_-HvEGbyDbLPuS77B5NP_KGFjE3BH2DE8l1L9jdom_jyYOYicxfbpk_YlBcE5Y-Pas4OtoGSNatVhb9RFnYoFZJGU8rl8zDUC_3t7pXxMfe2LK40IPy-TJAf1a1MdlbvACIVtXMjYUW_3qZeFV8-WyIugT8hlGddhoMqdmXSqVW7GP57MoMfmepEhSHqs95vinxJZYx0Gy3agbRnTaz9l2tQcQOTWI-ZVNhH4yDX2Abyzzz5cOaF5cCn9ldA9Q7mQyWKqbfLlBoYfyIXdiYFw__s6PG1ArkkoU3oEb3gdFiDTJmTLr1omux7dzG01ylW6-4idP47uV83RH30vz9IkBzKCLZWC7RbEveZeT0EamPq_jdevFbNbyEimSy-zRKEVVRVWjxc_0-BxjsmmbnB1vfqu8hMpYwHMDIdCJStr9cfkMO0xjo3Y5KB24dCIYcmazak9_oG3JUPRZVunM-XmAnDnT9pXB4E_dPZfmES3GTHn4mbKKeQgRMyYqtmd77iYcn5HnJiJFotbeFTWUMOZUDKOKzMpWrSGDyAci8NJoMmFh5lJ0r-w8wfCUYVDTTRE12-EammahtsH2J_SBST7gduWDh-92OVO15xpkkHs7m1Q_QrbdJBKIS6iXJkS5lW47of8A9XCW29f5HSsEU
HTTP/1.1 204 No Content
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59

Password

  • POST api/v1/password/reset - Запросить письмо на сброс пароля
POST http://localhost/api/v1/password/reset
Content-Type: application/x-www-form-urlencoded

email=tinc%40sudims.corp
HTTP/1.1 201 Created
Content-Type: application/json
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 58

{
  "status": "We have e-mailed your password reset link!"
}
  • POST api/v1/password/setup - Установить новый пароль
POST http://localhost/api/v1/password/setup
Content-Type: application/x-www-form-urlencoded

password=123456789&password_confirmation=123456789&email=tinc%40sudims.corp&token=9eda3ac19f81786e7bfbe519790380af40907190839808e0e21ce4875f39f076
HTTP/1.1 201 Created
Content-Type: application/json
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59

{
  "status": "Your password has been reset!"
}
  • POST api/v1/password/change - Изменить пароль для входа в систему
POST http://localhost/api/v1/password/change
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImUyMmJjNDRjYTVhNTZmYzJjZDViZGM3ZGRkZGVmODRlZjRiODJlZDkxNzU2MmJiMDRjYzA2MzgyODUyYmI3MmZjYmM2YmYwOTIzODA4Y2Q1In0.eyJhdWQiOiIxIiwianRpIjoiZTIyYmM0NGNhNWE1NmZjMmNkNWJkYzdkZGRkZWY4NGVmNGI4MmVkOTE3NTYyYmIwNGNjMDYzODI4NTJiYjcyZmNiYzZiZjA5MjM4MDhjZDUiLCJpYXQiOjE1OTU5MjQxNjQsIm5iZiI6MTU5NTkyNDE2NCwiZXhwIjoxNjI3NDYwMTY0LCJzdWIiOiIzIiwic2NvcGVzIjpbXX0.Y2bxruGr3oumXl2vA9kBvwpl_-HvEGbyDbLPuS77B5NP_KGFjE3BH2DE8l1L9jdom_jyYOYicxfbpk_YlBcE5Y-Pas4OtoGSNatVhb9RFnYoFZJGU8rl8zDUC_3t7pXxMfe2LK40IPy-TJAf1a1MdlbvACIVtXMjYUW_3qZeFV8-WyIugT8hlGddhoMqdmXSqVW7GP57MoMfmepEhSHqs95vinxJZYx0Gy3agbRnTaz9l2tQcQOTWI-ZVNhH4yDX2Abyzzz5cOaF5cCn9ldA9Q7mQyWKqbfLlBoYfyIXdiYFw__s6PG1ArkkoU3oEb3gdFiDTJmTLr1omux7dzG01ylW6-4idP47uV83RH30vz9IkBzKCLZWC7RbEveZeT0EamPq_jdevFbNbyEimSy-zRKEVVRVWjxc_0-BxjsmmbnB1vfqu8hMpYwHMDIdCJStr9cfkMO0xjo3Y5KB24dCIYcmazak9_oG3JUPRZVunM-XmAnDnT9pXB4E_dPZfmES3GTHn4mbKKeQgRMyYqtmd77iYcn5HnJiJFotbeFTWUMOZUDKOKzMpWrSGDyAci8NJoMmFh5lJ0r-w8wfCUYVDTTRE12-EammahtsH2J_SBST7gduWDh-92OVO15xpkkHs7m1Q_QrbdJBKIS6iXJkS5lW47of8A9XCW29f5HSsEU
Content-Type: application/x-www-form-urlencoded

current=123456789&future=123456
HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59

{
  "success": true
}
  • GET api/v1/password/email - Получить почту учётной записи
GET http://localhost/api/v1/password/email
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjA3MjBlZDljOGIwOGNlMDgwZWM5ZjM1MjRhNzc5MjIzNWQ2OTM4YWIwODU4NjJhNmY3MWNiYmI4ZjkyOGFhNTk1MDQzYzJiN2Q4NjU0MWZiIn0.eyJhdWQiOiIxIiwianRpIjoiMDcyMGVkOWM4YjA4Y2UwODBlYzlmMzUyNGE3NzkyMjM1ZDY5MzhhYjA4NTg2MmE2ZjcxY2JiYjhmOTI4YWE1OTUwNDNjMmI3ZDg2NTQxZmIiLCJpYXQiOjE1OTcxNDEyNTYsIm5iZiI6MTU5NzE0MTI1NiwiZXhwIjoxNjI4Njc3MjU2LCJzdWIiOiI0Iiwic2NvcGVzIjpbXX0.b50qqv2zmNvKOJMIL7YBuzsR4_IQXZlV5kANDGMBS9xlo_7jqg5KdSO3Qk5BhTThd-xUxQvJZYHrjckZF8jmp__rMuXXbZAfgLwEAjZ8GEkMkEPoEtJr9mfVVcE_uThBlZx_ZZo_LbqZAexsocQagnSlXmldvrI2RkGGVnh7fjNZ-QB2CGvLXhTGREpygy3_mbNauSnA_5RRKGIaFr34uiRQcAGpex04vbiq_ewEXIJqltZDvcoj570KZiFxbnN0KPBviuZMDPFj_tKW73qlSIgmR3hmQRTgxSlbMD85ab2VgANhMqCJYydi2ilV2j9PZfM1M3Cw9N-KaBt4eaojUJmyadblJQ5z9X4f2VoeUdt3v3OF3r32B7uEPjHWVP3rPjtoTQS1zvT2uzwDnBZNW8JGFV8Nu1_7zTxMkUxebV9q1v_VIAlErpY-kBBfPTZ1omhS_qPVLQvNOyT0K3sTMxpaK3Wjq6kO7qeDlrBbN-Br26HBWFyg329E4f0qs_ldXt92JmJy5ntKFDkQWXZJ0MXTL7faFQUiR57sE7JeGVQZVSRn2k84gU7TvHdG-pfa_P4owEgWMyHLVOzoK6GI9XCJpmK4hwPW9plHGJvMU-k_boCWCQWQX5jvkMa2w9y-X6kAumaVFYHWuaASmNubeU6xyYYVz5CyZx9VprQ41sY
HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 57

{
  "success": true,
  "email": "dummy@dummy.dummy"
}
  • POST api/v1/password/email - Изменить почту учётной записи
POST http://localhost/api/v1/password/email
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImUyMmJjNDRjYTVhNTZmYzJjZDViZGM3ZGRkZGVmODRlZjRiODJlZDkxNzU2MmJiMDRjYzA2MzgyODUyYmI3MmZjYmM2YmYwOTIzODA4Y2Q1In0.eyJhdWQiOiIxIiwianRpIjoiZTIyYmM0NGNhNWE1NmZjMmNkNWJkYzdkZGRkZWY4NGVmNGI4MmVkOTE3NTYyYmIwNGNjMDYzODI4NTJiYjcyZmNiYzZiZjA5MjM4MDhjZDUiLCJpYXQiOjE1OTU5MjQxNjQsIm5iZiI6MTU5NTkyNDE2NCwiZXhwIjoxNjI3NDYwMTY0LCJzdWIiOiIzIiwic2NvcGVzIjpbXX0.Y2bxruGr3oumXl2vA9kBvwpl_-HvEGbyDbLPuS77B5NP_KGFjE3BH2DE8l1L9jdom_jyYOYicxfbpk_YlBcE5Y-Pas4OtoGSNatVhb9RFnYoFZJGU8rl8zDUC_3t7pXxMfe2LK40IPy-TJAf1a1MdlbvACIVtXMjYUW_3qZeFV8-WyIugT8hlGddhoMqdmXSqVW7GP57MoMfmepEhSHqs95vinxJZYx0Gy3agbRnTaz9l2tQcQOTWI-ZVNhH4yDX2Abyzzz5cOaF5cCn9ldA9Q7mQyWKqbfLlBoYfyIXdiYFw__s6PG1ArkkoU3oEb3gdFiDTJmTLr1omux7dzG01ylW6-4idP47uV83RH30vz9IkBzKCLZWC7RbEveZeT0EamPq_jdevFbNbyEimSy-zRKEVVRVWjxc_0-BxjsmmbnB1vfqu8hMpYwHMDIdCJStr9cfkMO0xjo3Y5KB24dCIYcmazak9_oG3JUPRZVunM-XmAnDnT9pXB4E_dPZfmES3GTHn4mbKKeQgRMyYqtmd77iYcn5HnJiJFotbeFTWUMOZUDKOKzMpWrSGDyAci8NJoMmFh5lJ0r-w8wfCUYVDTTRE12-EammahtsH2J_SBST7gduWDh-92OVO15xpkkHs7m1Q_QrbdJBKIS6iXJkS5lW47of8A9XCW29f5HSsEU
Content-Type: application/x-www-form-urlencoded

email=dummy2%40dummy.dummy&password=123456789
HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 58

{
  "success": true
}

Tariff

  • GET api/v1/tariff - Получить все тарифы
GET http://localhost/api/v1/tariff
HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59

[
  [
    {
      "code": "base",
      "title": "Базовый",
      "remark": "Подходит для новичков с опытом работы",
      "price_monthly": "0.00",
      "price_yearly": "0.00",
      "recommended": 0,
      "social_acc_limit": 2,
      "employee_limit": 1,
      "fb_limit": 0,
      "tracking_limit": 3,
      "scheduling": 0,
      "cooperate": 0,
      "social_tracking": 0,
      "trend_tracking": 0,
      "hashtag_tracking": 0,
      "email_notify": 0
    },
    {
      "code": "plan_a",
      "title": "Plan А",
      "remark": "Подходит для блогера или фрилансера",
      "price_monthly": "29.00",
      "price_yearly": "290.00",
      "recommended": 0,
      "social_acc_limit": 5,
      "employee_limit": 2,
      "fb_limit": 1,
      "tracking_limit": 10,
      "scheduling": 1,
      "cooperate": 1,
      "social_tracking": 1,
      "trend_tracking": 1,
      "hashtag_tracking": 1,
      "email_notify": 1
    },
    {
      "code": "plan_b",
      "title": "Plan B",
      "remark": "Идеально подходит для малого бизнеса",
      "price_monthly": "42.00",
      "price_yearly": "420.00",
      "recommended": 1,
      "social_acc_limit": 9,
      "employee_limit": 3,
      "fb_limit": 3,
      "tracking_limit": 20,
      "scheduling": 1,
      "cooperate": 1,
      "social_tracking": 1,
      "trend_tracking": 1,
      "hashtag_tracking": 1,
      "email_notify": 1
    },
    {
      "code": "plan_c",
      "title": "Plan C",
      "remark": "Подходит для агентств и среднего бизнеса",
      "price_monthly": "64.00",
      "price_yearly": "640.00",
      "recommended": 0,
      "social_acc_limit": 25,
      "employee_limit": 10,
      "fb_limit": 5,
      "tracking_limit": 100,
      "scheduling": 1,
      "cooperate": 1,
      "social_tracking": 1,
      "trend_tracking": 1,
      "hashtag_tracking": 1,
      "email_notify": 1
    },
    {
      "code": "individual",
      "title": "Индивидуальный",
      "remark": "Разработан специально для вас",
      "price_monthly": "64.00",
      "price_yearly": "640.00",
      "recommended": 0,
      "social_acc_limit": 25,
      "employee_limit": 10,
      "fb_limit": 5,
      "tracking_limit": 100,
      "scheduling": 1,
      "cooperate": 1,
      "social_tracking": 1,
      "trend_tracking": 1,
      "hashtag_tracking": 1,
      "email_notify": 1
    }
  ]
]
  • POST api/v1/tariff - Изменить тариф
POST http://localhost/api/v1/tariff
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImEyYjc3OGUyMDg2NDljMDgyYWI2MjZlOTkzOTcyN2FlZGVmNzg3OTVjYWFjYzk4MjA3MDIxOTZlMWI4NzZjMDUzM2ExNmY3Yjk2NTNlZjhmIn0.eyJhdWQiOiIxIiwianRpIjoiYTJiNzc4ZTIwODY0OWMwODJhYjYyNmU5OTM5NzI3YWVkZWY3ODc5NWNhYWNjOTgyMDcwMjE5NmUxYjg3NmMwNTMzYTE2ZjdiOTY1M2VmOGYiLCJpYXQiOjE1OTcxNTkyMjcsIm5iZiI6MTU5NzE1OTIyNywiZXhwIjoxNjI4Njk1MjI3LCJzdWIiOiI3Iiwic2NvcGVzIjpbXX0.qay7h8XtnpD_MZrScONHhHTHDuQobs-vh08rX_EF8qAkJT6kq64i2tTdCmJQLE3JRr9LU8mueDdFvT2KASNZXmMIoc1BoPm1Y3A2aUWqjzcfOS8VIZgnvm-BKHBO3oTgurl8v1AEy4X0T4x5xZG22JWC55vQJ2Ddfhb9vwRj0jFo2mbx_wnCW7QaZ_p3dMagWyCh7eyXSTh7gIxzrE67aP-I3gq0rtGMcVOkLsxtOvTG5g3vqMwPe5efJShU7wrhCbeJl4MS1ZP0leFPSMPbHf8d60JR0_kaNxnwTczfj_0_uvYwclyY6wv_aiPGrp_aA4mM09Sj-35iqECOy4GpbTI3Ds7oLOPXITXiZZ0BFEgSH-NTWIo9pwQtdOLA-A9zkwPw1qsJ938g0v_ehz69hkaS0BBZO0nj_F2aOIv9CQGwWkoMYfO1VUtYCkzpsbUfXTgjg5HTpS3cPpEJGUx4sKdP_s2-ADWIovOlpz8dzN9RLmeIA_W7GDYJevC91VK16qUdyxUK4zXb8FHEtcgXHWZYdGzXCdfaJ5J3RrTdIbWa12ePwK8ejdmpxE5P5uevC3vKQ6iVc9y1fXcOGKJbRYuSyV3iqDZ3agU7z_sIHR2WzC3AxnUGpUTByvBBruvIE9j70QijYWoRzXfB3w-fEUawgrxFT2nxzh0Zo0-VdcE
Content-Type: application/x-www-form-urlencoded

code=base
&price_monthly=123456
&price_yearly=123456
&recommended=-1
&social_acc_limit=55
&employee_limit=55
&fb_limit=55
&tracking_limit=55
&scheduling=-1
&cooperate=-1
&social_tracking=-1
&trend_tracking=-1
&hashtag_tracking=-1
&email_notify=-1
HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 58

{
  "success": true
}

Translations

  • GET api/v1/translation/context/{locale}/{group} - Получить переводы для контекста (группы переводов)
GET http://localhost/api/v1/translation/context/en/home
HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59

{
  "success": true,
  "data": {
    "farewell": "goodbye",
    "greeting": "HW"
  }
}

Catalog

  • GET api/v1/catalog/timezone - Получить каталог часовых поясов
GET http://localhost/api/v1/catalog/timezone
HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59

[
  [
    {
      "code": "YEKT",
      "title": "Yekaterinburg Time"
    },
    {
      "code": "SAMT",
      "title": "Samara Time"
    },
    {
      "code": "MSK",
      "title": "Moscow Standard Time"
    }
  ]
]
  • GET api/v1/catalog/locale - Получить каталог локализаций для подписей и текстов на веб страницах
GET http://localhost/api/v1/catalog/locale
HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59

[
  [
    {
      "code": "en",
      "title": "English"
    },
    {
      "code": "de",
      "title": "Deutsche"
    },
    {
      "code": "he",
      "title": "עִברִית"
    },
    {
      "code": "ru",
      "title": "Русский"
    }
  ]
]
  • GET api/v1/catalog/skin - Получить каталог тем оформления
GET http://localhost/api/v1/catalog/skin
HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59

[
  [
    {
      "code": "day",
      "title": "Daylight"
    },
    {
      "code": "night",
      "title": "Nighttime"
    }
  ]
]
  • GET api/v1/catalog/tariff - Получить каталог тарифов
GET http://localhost/api/v1/catalog/tariff
HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59

[
  [
    {
      "code": "base",
      "title": "Базовый",
      "remark": "Подходит для новичков с опытом работы"
    },
    {
      "code": "plan_a",
      "title": "Plan А",
      "remark": "Подходит для блогера или фрилансера"
    },
    {
      "code": "plan_b",
      "title": "Plan B",
      "remark": "Идеально подходит для малого бизнеса"
    },
    {
      "code": "plan_c",
      "title": "Plan C",
      "remark": "Подходит для агентств и среднего бизнеса"
    },
    {
      "code": "individual",
      "title": "Индивидуальный",
      "remark": "Разработан специально для вас"
    }
  ]
]
  • GET api/v1/catalog/duration - Получить каталог периодов подписки
GET http://localhost/api/v1/catalog/duration
HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 58

[
  [
    {
      "code": "yearly",
      "title": "На год"
    },
    {
      "code": "monthly",
      "title": "На месяц"
    }
  ]
]

Project

  • GET api/v1/project/list - Получить список проектов
GET http://localhost/api/v1/project/list
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImQ0N2QyZGI2YmI0Y2Y2NWE5YWJmNDk3NDYwOGZlODExZWY4MmQzNGZmOWNlZWMwOWI1ZmVlMjMzMzcyMmI4NDA2MDcwNGMyNDA1OThlNmQ4In0.eyJhdWQiOiIxIiwianRpIjoiZDQ3ZDJkYjZiYjRjZjY1YTlhYmY0OTc0NjA4ZmU4MTFlZjgyZDM0ZmY5Y2VlYzA5YjVmZWUyMzMzNzIyYjg0MDYwNzA0YzI0MDU5OGU2ZDgiLCJpYXQiOjE2MDE1MTEwMDgsIm5iZiI6MTYwMTUxMTAwOCwiZXhwIjoxNjMzMDQ3MDA4LCJzdWIiOiI2MyIsInNjb3BlcyI6W119.OiWqRdcveksPzfmb8HmCYR5L9tIC2lqUYL1js0RUoC44MFuFcw0c8MrgZ7Rouy56OHTBifBHwbERA2P5c4LwSuJRRUUcAwPAQQgRlM8Y6I2gbE5wCSMsXOLTak5Joz_moP7MzRjvvPl1HxTtI2RpnnQLJHlDj8CFRMZJV_Mh6oY5p2HbdG5allPYjXZ6hcnhv7U4UG-7hcRmpv035FpKJIGPDK_MX7RnsPKaMT5RZ0sh9lx6fwelMqUG5zJBgfolW63r0e79IU4ZAhmHodbKHgh4K9g1FAVXOBnpb0bhnhRTY6rPyPBWxqMzpveI0ILI4uph7gKUce1vICiOPzIKKhC6f8ldEUbYHfjbWsDXbZkn98FlwaaQOVOgQ8UmvthNaqPs-eP4RPCvmhd-EZ3MeyqW39pcSKnHQXDJ5_uNVhHE5RrqgEU4JIwyAdalnW7R8H6t8kF1n3BtnIHe1JNb6qcVPDeTDz2MsrYrquQn2GDxXf6kp62j1sT_ppA9x_zS8dHWSJ7RjSxDNhA1lEPFbYbTGQkyOBJ7HQUOBZW_Uu4EuUWkV-8TIkPBPGLAMz9ArP4MD9CkWQ2-ojN_wgVLfa_uYDCkaTNONbOaQWH3GUQqcM2aC4_ziJpSWRSsYJQjBxHp7Tj5UlMhCS8yUmSs36iaRZN_62DTEfIPwVd-cfE
HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 240
X-RateLimit-Remaining: 239

[
  {
    "id": 1,
    "title": "Magnam nemo aliquid nobis voluptatibus nulla.",
    "remark": "Consequatur amet cupiditate est cupiditate quas odio eum earum. Molestiae hic consequatur delectus officiis eum vel aut commodi. Et aspernatur pariatur aperiam quam eveniet."
  }
]
  • POST api/v1/project - Создать проект
POST http://localhost/api/v1/project
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImEyYjc3OGUyMDg2NDljMDgyYWI2MjZlOTkzOTcyN2FlZGVmNzg3OTVjYWFjYzk4MjA3MDIxOTZlMWI4NzZjMDUzM2ExNmY3Yjk2NTNlZjhmIn0.eyJhdWQiOiIxIiwianRpIjoiYTJiNzc4ZTIwODY0OWMwODJhYjYyNmU5OTM5NzI3YWVkZWY3ODc5NWNhYWNjOTgyMDcwMjE5NmUxYjg3NmMwNTMzYTE2ZjdiOTY1M2VmOGYiLCJpYXQiOjE1OTcxNTkyMjcsIm5iZiI6MTU5NzE1OTIyNywiZXhwIjoxNjI4Njk1MjI3LCJzdWIiOiI3Iiwic2NvcGVzIjpbXX0.qay7h8XtnpD_MZrScONHhHTHDuQobs-vh08rX_EF8qAkJT6kq64i2tTdCmJQLE3JRr9LU8mueDdFvT2KASNZXmMIoc1BoPm1Y3A2aUWqjzcfOS8VIZgnvm-BKHBO3oTgurl8v1AEy4X0T4x5xZG22JWC55vQJ2Ddfhb9vwRj0jFo2mbx_wnCW7QaZ_p3dMagWyCh7eyXSTh7gIxzrE67aP-I3gq0rtGMcVOkLsxtOvTG5g3vqMwPe5efJShU7wrhCbeJl4MS1ZP0leFPSMPbHf8d60JR0_kaNxnwTczfj_0_uvYwclyY6wv_aiPGrp_aA4mM09Sj-35iqECOy4GpbTI3Ds7oLOPXITXiZZ0BFEgSH-NTWIo9pwQtdOLA-A9zkwPw1qsJ938g0v_ehz69hkaS0BBZO0nj_F2aOIv9CQGwWkoMYfO1VUtYCkzpsbUfXTgjg5HTpS3cPpEJGUx4sKdP_s2-ADWIovOlpz8dzN9RLmeIA_W7GDYJevC91VK16qUdyxUK4zXb8FHEtcgXHWZYdGzXCdfaJ5J3RrTdIbWa12ePwK8ejdmpxE5P5uevC3vKQ6iVc9y1fXcOGKJbRYuSyV3iqDZ3agU7z_sIHR2WzC3AxnUGpUTByvBBruvIE9j70QijYWoRzXfB3w-fEUawgrxFT2nxzh0Zo0-VdcE
Content-Type: application/json

{
  "title": "project title"
  "remark": "project project"
}
HTTP/1.1 201 CREATED
Content-Type: application/json
{
  "id" => 1,
  "success" => true
}

Social

Project

  • GET api/v1/social/project/{project_id} - Получить список соц. аккаунтов
GET http://localhost/api/v1/social/project/{project_id}
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImEyYjc3OGUyMDg2NDljMDgyYWI2MjZlOTkzOTcyN2FlZGVmNzg3OTVjYWFjYzk4MjA3MDIxOTZlMWI4NzZjMDUzM2ExNmY3Yjk2NTNlZjhmIn0.eyJhdWQiOiIxIiwianRpIjoiYTJiNzc4ZTIwODY0OWMwODJhYjYyNmU5OTM5NzI3YWVkZWY3ODc5NWNhYWNjOTgyMDcwMjE5NmUxYjg3NmMwNTMzYTE2ZjdiOTY1M2VmOGYiLCJpYXQiOjE1OTcxNTkyMjcsIm5iZiI6MTU5NzE1OTIyNywiZXhwIjoxNjI4Njk1MjI3LCJzdWIiOiI3Iiwic2NvcGVzIjpbXX0.qay7h8XtnpD_MZrScONHhHTHDuQobs-vh08rX_EF8qAkJT6kq64i2tTdCmJQLE3JRr9LU8mueDdFvT2KASNZXmMIoc1BoPm1Y3A2aUWqjzcfOS8VIZgnvm-BKHBO3oTgurl8v1AEy4X0T4x5xZG22JWC55vQJ2Ddfhb9vwRj0jFo2mbx_wnCW7QaZ_p3dMagWyCh7eyXSTh7gIxzrE67aP-I3gq0rtGMcVOkLsxtOvTG5g3vqMwPe5efJShU7wrhCbeJl4MS1ZP0leFPSMPbHf8d60JR0_kaNxnwTczfj_0_uvYwclyY6wv_aiPGrp_aA4mM09Sj-35iqECOy4GpbTI3Ds7oLOPXITXiZZ0BFEgSH-NTWIo9pwQtdOLA-A9zkwPw1qsJ938g0v_ehz69hkaS0BBZO0nj_F2aOIv9CQGwWkoMYfO1VUtYCkzpsbUfXTgjg5HTpS3cPpEJGUx4sKdP_s2-ADWIovOlpz8dzN9RLmeIA_W7GDYJevC91VK16qUdyxUK4zXb8FHEtcgXHWZYdGzXCdfaJ5J3RrTdIbWa12ePwK8ejdmpxE5P5uevC3vKQ6iVc9y1fXcOGKJbRYuSyV3iqDZ3agU7z_sIHR2WzC3AxnUGpUTByvBBruvIE9j70QijYWoRzXfB3w-fEUawgrxFT2nxzh0Zo0-VdcE
Content-Type: application/json
HTTP/1.1 200 OK
Content-Type: application/json
[
  [
    {
      "id": 1,
      "name": "user name 1 page name 1"
      "social_web_code": "fb"
      "is_active": 1,
      "location_identity": "178905797956868"
    },
    {
      "id": 1,
      "name": "user name 2 page name 2"
      "social_web_code": "fb"
      "is_active": 0,
      "location_identity": "100318238130235"
    },
  ]
]

Выходные параметры запроса`

  • id - ID аккаунта
  • name - (для Facebook) наименование страницы
  • social_web_code - код социальной сети (для Facebook - 'fb')
  • is_active - признак активности аакаунта
  • location_identity - (для Facebook) ID страницы

Dashboard

  • GET api/v1/social/{social}/search/{needle}/{limit?} - Выполнить поиск страниц в соц.сети
GET http://localhost/api/v1/social/fb/search/blabla/3
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImEyYjc3OGUyMDg2NDljMDgyYWI2MjZlOTkzOTcyN2FlZGVmNzg3OTVjYWFjYzk4MjA3MDIxOTZlMWI4NzZjMDUzM2ExNmY3Yjk2NTNlZjhmIn0.eyJhdWQiOiIxIiwianRpIjoiYTJiNzc4ZTIwODY0OWMwODJhYjYyNmU5OTM5NzI3YWVkZWY3ODc5NWNhYWNjOTgyMDcwMjE5NmUxYjg3NmMwNTMzYTE2ZjdiOTY1M2VmOGYiLCJpYXQiOjE1OTcxNTkyMjcsIm5iZiI6MTU5NzE1OTIyNywiZXhwIjoxNjI4Njk1MjI3LCJzdWIiOiI3Iiwic2NvcGVzIjpbXX0.qay7h8XtnpD_MZrScONHhHTHDuQobs-vh08rX_EF8qAkJT6kq64i2tTdCmJQLE3JRr9LU8mueDdFvT2KASNZXmMIoc1BoPm1Y3A2aUWqjzcfOS8VIZgnvm-BKHBO3oTgurl8v1AEy4X0T4x5xZG22JWC55vQJ2Ddfhb9vwRj0jFo2mbx_wnCW7QaZ_p3dMagWyCh7eyXSTh7gIxzrE67aP-I3gq0rtGMcVOkLsxtOvTG5g3vqMwPe5efJShU7wrhCbeJl4MS1ZP0leFPSMPbHf8d60JR0_kaNxnwTczfj_0_uvYwclyY6wv_aiPGrp_aA4mM09Sj-35iqECOy4GpbTI3Ds7oLOPXITXiZZ0BFEgSH-NTWIo9pwQtdOLA-A9zkwPw1qsJ938g0v_ehz69hkaS0BBZO0nj_F2aOIv9CQGwWkoMYfO1VUtYCkzpsbUfXTgjg5HTpS3cPpEJGUx4sKdP_s2-ADWIovOlpz8dzN9RLmeIA_W7GDYJevC91VK16qUdyxUK4zXb8FHEtcgXHWZYdGzXCdfaJ5J3RrTdIbWa12ePwK8ejdmpxE5P5uevC3vKQ6iVc9y1fXcOGKJbRYuSyV3iqDZ3agU7z_sIHR2WzC3AxnUGpUTByvBBruvIE9j70QijYWoRzXfB3w-fEUawgrxFT2nxzh0Zo0-VdcE
Content-Type: application/json
HTTP/1.1 200 OK
Content-Type: application/json
[
  {
    "id": "960159584049151",
    "name": "BlaBla"
  },
  {
    "id": "101282508002719",
    "name": "Blabla"
  },
  {
    "id": "918067368293793",
    "name": "blabla"
  }
]

Facebook

  • POST api/v1/social/fb - Создать соц. аккаунт Facebook
POST http://localhost/api/v1/social/fb
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImEzZGUyMTk1MzQ2ZTQzYmM3MzdhMWI0YjJhOTdkNzUyY2QyMjc5OGRmNzExOGM3ZjBkOWY5YjJkNTVjNjU2Yzc3ZjMxOWI3Nzc4YjlkYWZkIn0.eyJhdWQiOiIxIiwianRpIjoiYTNkZTIxOTUzNDZlNDNiYzczN2ExYjRiMmE5N2Q3NTJjZDIyNzk4ZGY3MTE4YzdmMGQ5ZjliMmQ1NWM2NTZjNzdmMzE5Yjc3NzhiOWRhZmQiLCJpYXQiOjE2MDE2MjEyNTksIm5iZiI6MTYwMTYyMTI1OSwiZXhwIjoxNjMzMTU3MjU5LCJzdWIiOiI0Iiwic2NvcGVzIjpbXX0.Ul9So5gzsRkejg9p6QtjEFTfzTf3eQMvu89E5Irdvd1pthYRFj4TWdwU7tEPSm43iOyJnWSINiURbv-80B0uxf2-N6u-iYzYlmowP_LAop9S3Ts_u7ll4JK_6YaJ9KNr9tfyAFatTpBPP8W5BoizzsCTnZGJQ5hIekVtI5_z4AeU5zHgVfOwCbPVDn852u1q14Trwltam9eWlt4uvLiqdiY_0SGHT9N3AM2rrgRIErf6zsoLk7pRtBdXkaFVMBiXsUOnErJXud-_7ATTqiQ2I97BNgUgqjefXXlnDJ-NCdHmeZpl7xssi5rOBBijfFRRuLrZZxaDuiMQm53OBxuSPurNeQsGfj9QD0XvjJOWaEHAAmWgk5ttZf0YmEGb2VHKyjOmhmxlDDQuLJmp8Tw0aFX_b6J_mlQiFL_epl29TG3pLX3_D0fHcU6x4LAoSn9z41FLHyYZlDfDRdb8ORdXBtaZX7qYl-Qvg3_O9NggJMVvxRrya2te018DtP2T4oUeZMVLqVTpvwFNz3e--gqnJnRLOd2CwoqG3yJ5JGfSyW4llv31qG5I5ObNXl6_mLdqhZoXwEaq8HuYqv65qLnd0hyC2ZFbunPG8Hsh0FX9rhH0GCdGrDZMceZIuiAV6MZvLxmRjr5XLBEbWMAsKoutMsjx4k4YLKE-m9p9lCHYtZk
Content-Type: application/json

{
  "data": "{\"token\":\"EAAKZCY0crScIBANyYzbzxZBvNJdpqJevj21Q3iyPZBFAuqG0rm3YLZBRcPaxIIoJP1iFd6aV2414cUXJUZAOfq3IpRR0P6xD7gW1vj9ruV7Xf1Y0uoSuWUrMicquLzcWO6aek5pTRYjjZApl7nGe0PgpAmRA0YaWDRsDkPmbrAse2nxb4mowez5EdZAeWgKFJwBvESuLveIwQZDZD\"}"
  "project_id": 1
}
HTTP/1.1 201 CREATED
Content-Type: application/json
{}

Post

  • GET api/v1/post/list/{project_id} - Получить список постов в проекте
GET http://localhost/api/v1/post/list/1
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImQ0N2QyZGI2YmI0Y2Y2NWE5YWJmNDk3NDYwOGZlODExZWY4MmQzNGZmOWNlZWMwOWI1ZmVlMjMzMzcyMmI4NDA2MDcwNGMyNDA1OThlNmQ4In0.eyJhdWQiOiIxIiwianRpIjoiZDQ3ZDJkYjZiYjRjZjY1YTlhYmY0OTc0NjA4ZmU4MTFlZjgyZDM0ZmY5Y2VlYzA5YjVmZWUyMzMzNzIyYjg0MDYwNzA0YzI0MDU5OGU2ZDgiLCJpYXQiOjE2MDE1MTEwMDgsIm5iZiI6MTYwMTUxMTAwOCwiZXhwIjoxNjMzMDQ3MDA4LCJzdWIiOiI2MyIsInNjb3BlcyI6W119.OiWqRdcveksPzfmb8HmCYR5L9tIC2lqUYL1js0RUoC44MFuFcw0c8MrgZ7Rouy56OHTBifBHwbERA2P5c4LwSuJRRUUcAwPAQQgRlM8Y6I2gbE5wCSMsXOLTak5Joz_moP7MzRjvvPl1HxTtI2RpnnQLJHlDj8CFRMZJV_Mh6oY5p2HbdG5allPYjXZ6hcnhv7U4UG-7hcRmpv035FpKJIGPDK_MX7RnsPKaMT5RZ0sh9lx6fwelMqUG5zJBgfolW63r0e79IU4ZAhmHodbKHgh4K9g1FAVXOBnpb0bhnhRTY6rPyPBWxqMzpveI0ILI4uph7gKUce1vICiOPzIKKhC6f8ldEUbYHfjbWsDXbZkn98FlwaaQOVOgQ8UmvthNaqPs-eP4RPCvmhd-EZ3MeyqW39pcSKnHQXDJ5_uNVhHE5RrqgEU4JIwyAdalnW7R8H6t8kF1n3BtnIHe1JNb6qcVPDeTDz2MsrYrquQn2GDxXf6kp62j1sT_ppA9x_zS8dHWSJ7RjSxDNhA1lEPFbYbTGQkyOBJ7HQUOBZW_Uu4EuUWkV-8TIkPBPGLAMz9ArP4MD9CkWQ2-ojN_wgVLfa_uYDCkaTNONbOaQWH3GUQqcM2aC4_ziJpSWRSsYJQjBxHp7Tj5UlMhCS8yUmSs36iaRZN_62DTEfIPwVd-cfE
HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 240
X-RateLimit-Remaining: 238

[
  {
    "project_id": 1,
    "id": 1,
    "is_active": true,
    "publish_at": "2020-10-16T11:12:18.000000Z",
    "content": "Ratione incidunt facere in et sit explicabo dolores maiores. Ea nemo ipsa aperiam et pariatur. Aut harum occaecati quo natus aliquam eligendi alias inventore."
  },
  {
    "project_id": 1,
    "id": 2,
    "is_active": true,
    "publish_at": "2020-10-16T11:12:19.000000Z",
    "content": "Maxime delectus quia commodi vero quam laborum voluptas. Ut consequatur placeat error accusamus facilis esse eos. Occaecati magni quo qui vel. Deserunt et consequuntur distinctio odio earum eos."
  },
  {
    "project_id": 1,
    "id": 3,
    "is_active": true,
    "publish_at": "2020-10-18T11:12:19.000000Z",
    "content": "Tempora tempora sequi quasi. Et sunt fugiat cumque est magni rerum. Culpa culpa rerum natus ut vel non et autem. Officiis ea iusto corporis."
  }
]
  • POST api/v1/post - Добавить пост
POST http://localhost/api/v1/post
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImQ0N2QyZGI2YmI0Y2Y2NWE5YWJmNDk3NDYwOGZlODExZWY4MmQzNGZmOWNlZWMwOWI1ZmVlMjMzMzcyMmI4NDA2MDcwNGMyNDA1OThlNmQ4In0.eyJhdWQiOiIxIiwianRpIjoiZDQ3ZDJkYjZiYjRjZjY1YTlhYmY0OTc0NjA4ZmU4MTFlZjgyZDM0ZmY5Y2VlYzA5YjVmZWUyMzMzNzIyYjg0MDYwNzA0YzI0MDU5OGU2ZDgiLCJpYXQiOjE2MDE1MTEwMDgsIm5iZiI6MTYwMTUxMTAwOCwiZXhwIjoxNjMzMDQ3MDA4LCJzdWIiOiI2MyIsInNjb3BlcyI6W119.OiWqRdcveksPzfmb8HmCYR5L9tIC2lqUYL1js0RUoC44MFuFcw0c8MrgZ7Rouy56OHTBifBHwbERA2P5c4LwSuJRRUUcAwPAQQgRlM8Y6I2gbE5wCSMsXOLTak5Joz_moP7MzRjvvPl1HxTtI2RpnnQLJHlDj8CFRMZJV_Mh6oY5p2HbdG5allPYjXZ6hcnhv7U4UG-7hcRmpv035FpKJIGPDK_MX7RnsPKaMT5RZ0sh9lx6fwelMqUG5zJBgfolW63r0e79IU4ZAhmHodbKHgh4K9g1FAVXOBnpb0bhnhRTY6rPyPBWxqMzpveI0ILI4uph7gKUce1vICiOPzIKKhC6f8ldEUbYHfjbWsDXbZkn98FlwaaQOVOgQ8UmvthNaqPs-eP4RPCvmhd-EZ3MeyqW39pcSKnHQXDJ5_uNVhHE5RrqgEU4JIwyAdalnW7R8H6t8kF1n3BtnIHe1JNb6qcVPDeTDz2MsrYrquQn2GDxXf6kp62j1sT_ppA9x_zS8dHWSJ7RjSxDNhA1lEPFbYbTGQkyOBJ7HQUOBZW_Uu4EuUWkV-8TIkPBPGLAMz9ArP4MD9CkWQ2-ojN_wgVLfa_uYDCkaTNONbOaQWH3GUQqcM2aC4_ziJpSWRSsYJQjBxHp7Tj5UlMhCS8yUmSs36iaRZN_62DTEfIPwVd-cfE
Content-Type: application/x-www-form-urlencoded

project_id=1&publish_at=2020-10-04%2000:38:24%2B00:00
HTTP/1.1 201 Created
Content-Type: application/json
X-RateLimit-Limit: 240
X-RateLimit-Remaining: 239

{
  "id": 4,
  "success": true
}
  • GET api/v1/post/{id} - Получить подробную информацию по посту
GET http://localhost/api/v1/post/2
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImQ0N2QyZGI2YmI0Y2Y2NWE5YWJmNDk3NDYwOGZlODExZWY4MmQzNGZmOWNlZWMwOWI1ZmVlMjMzMzcyMmI4NDA2MDcwNGMyNDA1OThlNmQ4In0.eyJhdWQiOiIxIiwianRpIjoiZDQ3ZDJkYjZiYjRjZjY1YTlhYmY0OTc0NjA4ZmU4MTFlZjgyZDM0ZmY5Y2VlYzA5YjVmZWUyMzMzNzIyYjg0MDYwNzA0YzI0MDU5OGU2ZDgiLCJpYXQiOjE2MDE1MTEwMDgsIm5iZiI6MTYwMTUxMTAwOCwiZXhwIjoxNjMzMDQ3MDA4LCJzdWIiOiI2MyIsInNjb3BlcyI6W119.OiWqRdcveksPzfmb8HmCYR5L9tIC2lqUYL1js0RUoC44MFuFcw0c8MrgZ7Rouy56OHTBifBHwbERA2P5c4LwSuJRRUUcAwPAQQgRlM8Y6I2gbE5wCSMsXOLTak5Joz_moP7MzRjvvPl1HxTtI2RpnnQLJHlDj8CFRMZJV_Mh6oY5p2HbdG5allPYjXZ6hcnhv7U4UG-7hcRmpv035FpKJIGPDK_MX7RnsPKaMT5RZ0sh9lx6fwelMqUG5zJBgfolW63r0e79IU4ZAhmHodbKHgh4K9g1FAVXOBnpb0bhnhRTY6rPyPBWxqMzpveI0ILI4uph7gKUce1vICiOPzIKKhC6f8ldEUbYHfjbWsDXbZkn98FlwaaQOVOgQ8UmvthNaqPs-eP4RPCvmhd-EZ3MeyqW39pcSKnHQXDJ5_uNVhHE5RrqgEU4JIwyAdalnW7R8H6t8kF1n3BtnIHe1JNb6qcVPDeTDz2MsrYrquQn2GDxXf6kp62j1sT_ppA9x_zS8dHWSJ7RjSxDNhA1lEPFbYbTGQkyOBJ7HQUOBZW_Uu4EuUWkV-8TIkPBPGLAMz9ArP4MD9CkWQ2-ojN_wgVLfa_uYDCkaTNONbOaQWH3GUQqcM2aC4_ziJpSWRSsYJQjBxHp7Tj5UlMhCS8yUmSs36iaRZN_62DTEfIPwVd-cfE
HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 240
X-RateLimit-Remaining: 238

{
  "post": {
    "id": 2,
    "is_active": true,
    "publish_at": "2020-10-04T00:38:24.000000Z",
    "project_id": 1
  },
  "posting_text": [
    {
      "content": "Example of post editing",
      "version": 4
    }
  ],
  "posting_image": [
    {
      "image_path": "project-post-image\/kCfGZVccNXR81zuYjfBmTi40x4sVtrEQpo6KH7Uu.jpeg",
      "post_version_id": 4,
      "id": 1
    },
    {
      "image_path": "project-post-image\/l2Pns6BQic2z4aGCkllpmTisirC4megf8DBH99FN.jpeg",
      "post_version_id": 4,
      "id": 2
    }
  ],
  "post_version": [
    {
      "id": 4
    }
  ],
  "default_post_version": {
    "post_version_id": 4
  },
  "project_social_account_post_version": []
}
  • PUT api/v1/post/{id} - Изменить пост
PUT http://localhost/api/v1/post
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImQ0N2QyZGI2YmI0Y2Y2NWE5YWJmNDk3NDYwOGZlODExZWY4MmQzNGZmOWNlZWMwOWI1ZmVlMjMzMzcyMmI4NDA2MDcwNGMyNDA1OThlNmQ4In0.eyJhdWQiOiIxIiwianRpIjoiZDQ3ZDJkYjZiYjRjZjY1YTlhYmY0OTc0NjA4ZmU4MTFlZjgyZDM0ZmY5Y2VlYzA5YjVmZWUyMzMzNzIyYjg0MDYwNzA0YzI0MDU5OGU2ZDgiLCJpYXQiOjE2MDE1MTEwMDgsIm5iZiI6MTYwMTUxMTAwOCwiZXhwIjoxNjMzMDQ3MDA4LCJzdWIiOiI2MyIsInNjb3BlcyI6W119.OiWqRdcveksPzfmb8HmCYR5L9tIC2lqUYL1js0RUoC44MFuFcw0c8MrgZ7Rouy56OHTBifBHwbERA2P5c4LwSuJRRUUcAwPAQQgRlM8Y6I2gbE5wCSMsXOLTak5Joz_moP7MzRjvvPl1HxTtI2RpnnQLJHlDj8CFRMZJV_Mh6oY5p2HbdG5allPYjXZ6hcnhv7U4UG-7hcRmpv035FpKJIGPDK_MX7RnsPKaMT5RZ0sh9lx6fwelMqUG5zJBgfolW63r0e79IU4ZAhmHodbKHgh4K9g1FAVXOBnpb0bhnhRTY6rPyPBWxqMzpveI0ILI4uph7gKUce1vICiOPzIKKhC6f8ldEUbYHfjbWsDXbZkn98FlwaaQOVOgQ8UmvthNaqPs-eP4RPCvmhd-EZ3MeyqW39pcSKnHQXDJ5_uNVhHE5RrqgEU4JIwyAdalnW7R8H6t8kF1n3BtnIHe1JNb6qcVPDeTDz2MsrYrquQn2GDxXf6kp62j1sT_ppA9x_zS8dHWSJ7RjSxDNhA1lEPFbYbTGQkyOBJ7HQUOBZW_Uu4EuUWkV-8TIkPBPGLAMz9ArP4MD9CkWQ2-ojN_wgVLfa_uYDCkaTNONbOaQWH3GUQqcM2aC4_ziJpSWRSsYJQjBxHp7Tj5UlMhCS8yUmSs36iaRZN_62DTEfIPwVd-cfE
Content-Type: application/x-www-form-urlencoded

publish_at=2020-10-04%2000:38:24%2B00:00&id=4&versions=[{"post_version_id":4,"content":"the example of post editing","social_account_id":[1,2,3]}]
HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 240
X-RateLimit-Remaining: 237

{
  "success": true
}
  • POST api/v1/post/image - Загрузить картинку для версии поста
POST http://localhost/api/v1/post/image
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImQ0N2QyZGI2YmI0Y2Y2NWE5YWJmNDk3NDYwOGZlODExZWY4MmQzNGZmOWNlZWMwOWI1ZmVlMjMzMzcyMmI4NDA2MDcwNGMyNDA1OThlNmQ4In0.eyJhdWQiOiIxIiwianRpIjoiZDQ3ZDJkYjZiYjRjZjY1YTlhYmY0OTc0NjA4ZmU4MTFlZjgyZDM0ZmY5Y2VlYzA5YjVmZWUyMzMzNzIyYjg0MDYwNzA0YzI0MDU5OGU2ZDgiLCJpYXQiOjE2MDE1MTEwMDgsIm5iZiI6MTYwMTUxMTAwOCwiZXhwIjoxNjMzMDQ3MDA4LCJzdWIiOiI2MyIsInNjb3BlcyI6W119.OiWqRdcveksPzfmb8HmCYR5L9tIC2lqUYL1js0RUoC44MFuFcw0c8MrgZ7Rouy56OHTBifBHwbERA2P5c4LwSuJRRUUcAwPAQQgRlM8Y6I2gbE5wCSMsXOLTak5Joz_moP7MzRjvvPl1HxTtI2RpnnQLJHlDj8CFRMZJV_Mh6oY5p2HbdG5allPYjXZ6hcnhv7U4UG-7hcRmpv035FpKJIGPDK_MX7RnsPKaMT5RZ0sh9lx6fwelMqUG5zJBgfolW63r0e79IU4ZAhmHodbKHgh4K9g1FAVXOBnpb0bhnhRTY6rPyPBWxqMzpveI0ILI4uph7gKUce1vICiOPzIKKhC6f8ldEUbYHfjbWsDXbZkn98FlwaaQOVOgQ8UmvthNaqPs-eP4RPCvmhd-EZ3MeyqW39pcSKnHQXDJ5_uNVhHE5RrqgEU4JIwyAdalnW7R8H6t8kF1n3BtnIHe1JNb6qcVPDeTDz2MsrYrquQn2GDxXf6kp62j1sT_ppA9x_zS8dHWSJ7RjSxDNhA1lEPFbYbTGQkyOBJ7HQUOBZW_Uu4EuUWkV-8TIkPBPGLAMz9ArP4MD9CkWQ2-ojN_wgVLfa_uYDCkaTNONbOaQWH3GUQqcM2aC4_ziJpSWRSsYJQjBxHp7Tj5UlMhCS8yUmSs36iaRZN_62DTEfIPwVd-cfE
Content-Type: multipart/form-data
Accept: application/json

----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="image"; filename="post-image-1.jpg"
Content-Type: image/jpeg

(data)
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="post_version_id"

1
----WebKitFormBoundary7MA4YWxkTrZu0gW
HTTP/1.1 201 OK
Content-Type: application/json

{
    "id": 1,
    "path": "project-post-image/ehFpvjsin4Cm3JuFzHzLIP4jfPNQpx5VCedUnj9U.jpeg"
}
  • DELETE api/v1/post/image/{image-id} - Удаление картинки для версии поста
DELETE http://localhost/api/v1/post/image/1
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImEyYjc3OGUyMDg2NDljMDgyYWI2MjZlOTkzOTcyN2FlZGVmNzg3OTVjYWFjYzk4MjA3MDIxOTZlMWI4NzZjMDUzM2ExNmY3Yjk2NTNlZjhmIn0.eyJhdWQiOiIxIiwianRpIjoiYTJiNzc4ZTIwODY0OWMwODJhYjYyNmU5OTM5NzI3YWVkZWY3ODc5NWNhYWNjOTgyMDcwMjE5NmUxYjg3NmMwNTMzYTE2ZjdiOTY1M2VmOGYiLCJpYXQiOjE1OTcxNTkyMjcsIm5iZiI6MTU5NzE1OTIyNywiZXhwIjoxNjI4Njk1MjI3LCJzdWIiOiI3Iiwic2NvcGVzIjpbXX0.qay7h8XtnpD_MZrScONHhHTHDuQobs-vh08rX_EF8qAkJT6kq64i2tTdCmJQLE3JRr9LU8mueDdFvT2KASNZXmMIoc1BoPm1Y3A2aUWqjzcfOS8VIZgnvm-BKHBO3oTgurl8v1AEy4X0T4x5xZG22JWC55vQJ2Ddfhb9vwRj0jFo2mbx_wnCW7QaZ_p3dMagWyCh7eyXSTh7gIxzrE67aP-I3gq0rtGMcVOkLsxtOvTG5g3vqMwPe5efJShU7wrhCbeJl4MS1ZP0leFPSMPbHf8d60JR0_kaNxnwTczfj_0_uvYwclyY6wv_aiPGrp_aA4mM09Sj-35iqECOy4GpbTI3Ds7oLOPXITXiZZ0BFEgSH-NTWIo9pwQtdOLA-A9zkwPw1qsJ938g0v_ehz69hkaS0BBZO0nj_F2aOIv9CQGwWkoMYfO1VUtYCkzpsbUfXTgjg5HTpS3cPpEJGUx4sKdP_s2-ADWIovOlpz8dzN9RLmeIA_W7GDYJevC91VK16qUdyxUK4zXb8FHEtcgXHWZYdGzXCdfaJ5J3RrTdIbWa12ePwK8ejdmpxE5P5uevC3vKQ6iVc9y1fXcOGKJbRYuSyV3iqDZ3agU7z_sIHR2WzC3AxnUGpUTByvBBruvIE9j70QijYWoRzXfB3w-fEUawgrxFT2nxzh0Zo0-VdcE
Content-Type: application/json
Accept: application/json
HTTP/1.1 204 No Content
Content-Type: application/json

<Response body is empty>
  • GET http://127.0.0.1/api/v1/post/list/{project-id}/token - Получить ID и токены для проекта
GET http://127.0.0.1/api/v1/post/list/1/token
  Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImRlOGUzNWQ4ZDYyMjlhMjMzZDcxOGQzM2YwMmVmYTIwMWY2NjUzOGY5MjFiZDdlNDRlOGZhZjg0ODljYjNkYTBmMTU4ZWFmNjc5MmU5MTE2In0.eyJhdWQiOiIxIiwianRpIjoiZGU4ZTM1ZDhkNjIyOWEyMzNkNzE4ZDMzZjAyZWZhMjAxZjY2NTM4ZjkyMWJkN2U0NGU4ZmFmODQ4OWNiM2RhMGYxNThlYWY2NzkyZTkxMTYiLCJpYXQiOjE2MDM4MTU5NjgsIm5iZiI6MTYwMzgxNTk2OCwiZXhwIjoxNjM1MzUxOTY3LCJzdWIiOiIyIiwic2NvcGVzIjpbXX0.qWmf073fNu3-BHvTZPSQmK09A0Mj8oxFZe_pWa1s7TKXRYGphsn5LbiOYtHY40eParhU1mrK3ZH2Mzjn0Mif1OLLJH3bYiKz-xRNDrkcqn2_DrBJfWZK4zzcjNKzt9YUKuZd8eTQePRV1G5EW1V2Z205HRNB3nx4ioy5jTtqLkyCcm_kevrxJykPlgmudLOUwQqK_24_XXjhYDMQIwxtowtjkGssH-SaKoe2C1IdnPmBpRQ09c4lSY1kaPnBIC5mwhh3hiUUOiH3nYLE8sOMOLCkXBStSMQB74qPbqART6uSMch7qIj6CPF6chgLc2zCYKHIsdT2svEqgdvq2aWZRuqVgyd-fdT_shxRpdPXYjM0-JQhonfaVuKux-5Rc6Viu3VujX0zPUHUKum0sV9PGRIt69ieifreLroQZd9ABQbEenxTzecOk49wg4JdAv1-LgkpiffUYGDGOoRHq5zBm_uxbn2frTBy2_Xk27ngvRnVOzl4puyBqHJ3DGgACCedvv6w02pAm94HEa3ltnVx180zegSeUC88XepsLBLrLWde9R7eC37rlh-Mccl9kjrOw1ktTAwu0FymxUWbVQ0o6QSe5sRQqsNpP380-NxNwOZ0P5pLCBULD2TgEIeXxbS82Ga1KHkfgsJhVYuV_K7XmqKQ_xUHjhR6SEwGDsIPaeI
HTTP/1.1 200 OK
[
  {
    "content": "Dolores eos numquam autem aliquid. Fugiat facilis earum quo laudantium. Repudiandae laborum qui exercitationem aut maxime ad. Fugiat necessitatibus voluptatem omnis quisquam.",
    "publish_at": "2020-11-03 12:51:11+00",
    "posting_image": [
      "project-post-image\/FkEfkrNSkGts1VfiinmZ23n7SEEK746HZCwqbfC7.jpeg",
      "project-post-image\/VJJS8PC4z3bk6xa75GThTAgqUtLxU38fvVAE1Ynm.jpeg"
    ],
    "project_social_account": {
      "social_web_code": "fb",
      "post_identity": "178905797956868_475662326253280",
      "data": "t4HZl6LUng1Qj3V90ZJ4k8gEqbXbRy36PLvRExt9VzAtApTaAQIgN4mvVeTOj57yA7H9dWmCd7TqfwPq3y3PPQXLzBWM3w2LnfMyejVgiq2wcCUW89v9mvnajsqegdEOmZSBvi9Lw3aPiBuXaCoyUNMl4hV0pqmiJ69tOz8DOsbgsIHStTVoc1HFi3JInFgnmrGWCBLJWTOcK8xY5jblmgjNcSH1dwHHxd3gVpA0CsiGxvu048hGfwarebwXjclpt0s5"
    }
  }
]

Dashboard

  • POST api/v1/dashboard - Создать аккаунт для метрики
POST http://localhost/api/v1/dashboard
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImEyYjc3OGUyMDg2NDljMDgyYWI2MjZlOTkzOTcyN2FlZGVmNzg3OTVjYWFjYzk4MjA3MDIxOTZlMWI4NzZjMDUzM2ExNmY3Yjk2NTNlZjhmIn0.eyJhdWQiOiIxIiwianRpIjoiYTJiNzc4ZTIwODY0OWMwODJhYjYyNmU5OTM5NzI3YWVkZWY3ODc5NWNhYWNjOTgyMDcwMjE5NmUxYjg3NmMwNTMzYTE2ZjdiOTY1M2VmOGYiLCJpYXQiOjE1OTcxNTkyMjcsIm5iZiI6MTU5NzE1OTIyNywiZXhwIjoxNjI4Njk1MjI3LCJzdWIiOiI3Iiwic2NvcGVzIjpbXX0.qay7h8XtnpD_MZrScONHhHTHDuQobs-vh08rX_EF8qAkJT6kq64i2tTdCmJQLE3JRr9LU8mueDdFvT2KASNZXmMIoc1BoPm1Y3A2aUWqjzcfOS8VIZgnvm-BKHBO3oTgurl8v1AEy4X0T4x5xZG22JWC55vQJ2Ddfhb9vwRj0jFo2mbx_wnCW7QaZ_p3dMagWyCh7eyXSTh7gIxzrE67aP-I3gq0rtGMcVOkLsxtOvTG5g3vqMwPe5efJShU7wrhCbeJl4MS1ZP0leFPSMPbHf8d60JR0_kaNxnwTczfj_0_uvYwclyY6wv_aiPGrp_aA4mM09Sj-35iqECOy4GpbTI3Ds7oLOPXITXiZZ0BFEgSH-NTWIo9pwQtdOLA-A9zkwPw1qsJ938g0v_ehz69hkaS0BBZO0nj_F2aOIv9CQGwWkoMYfO1VUtYCkzpsbUfXTgjg5HTpS3cPpEJGUx4sKdP_s2-ADWIovOlpz8dzN9RLmeIA_W7GDYJevC91VK16qUdyxUK4zXb8FHEtcgXHWZYdGzXCdfaJ5J3RrTdIbWa12ePwK8ejdmpxE5P5uevC3vKQ6iVc9y1fXcOGKJbRYuSyV3iqDZ3agU7z_sIHR2WzC3AxnUGpUTByvBBruvIE9j70QijYWoRzXfB3w-fEUawgrxFT2nxzh0Zo0-VdcE
Content-Type: application/json
Accept: application/json

{
  "project_id": 1,
  "social": "fb",
  "identity": "918067368293793",
  "data": "{\"name\":\"blabla\"}"
}
HTTP/1.1 201 Created
Content-Type: application/json
{
  "id": 4,
}
  • GET api/v1/dashboard/project/{project_id} - Получить лист аккаунтов для метрики
GET http://localhost/api/v1/dashboard/project/1
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImEyYjc3OGUyMDg2NDljMDgyYWI2MjZlOTkzOTcyN2FlZGVmNzg3OTVjYWFjYzk4MjA3MDIxOTZlMWI4NzZjMDUzM2ExNmY3Yjk2NTNlZjhmIn0.eyJhdWQiOiIxIiwianRpIjoiYTJiNzc4ZTIwODY0OWMwODJhYjYyNmU5OTM5NzI3YWVkZWY3ODc5NWNhYWNjOTgyMDcwMjE5NmUxYjg3NmMwNTMzYTE2ZjdiOTY1M2VmOGYiLCJpYXQiOjE1OTcxNTkyMjcsIm5iZiI6MTU5NzE1OTIyNywiZXhwIjoxNjI4Njk1MjI3LCJzdWIiOiI3Iiwic2NvcGVzIjpbXX0.qay7h8XtnpD_MZrScONHhHTHDuQobs-vh08rX_EF8qAkJT6kq64i2tTdCmJQLE3JRr9LU8mueDdFvT2KASNZXmMIoc1BoPm1Y3A2aUWqjzcfOS8VIZgnvm-BKHBO3oTgurl8v1AEy4X0T4x5xZG22JWC55vQJ2Ddfhb9vwRj0jFo2mbx_wnCW7QaZ_p3dMagWyCh7eyXSTh7gIxzrE67aP-I3gq0rtGMcVOkLsxtOvTG5g3vqMwPe5efJShU7wrhCbeJl4MS1ZP0leFPSMPbHf8d60JR0_kaNxnwTczfj_0_uvYwclyY6wv_aiPGrp_aA4mM09Sj-35iqECOy4GpbTI3Ds7oLOPXITXiZZ0BFEgSH-NTWIo9pwQtdOLA-A9zkwPw1qsJ938g0v_ehz69hkaS0BBZO0nj_F2aOIv9CQGwWkoMYfO1VUtYCkzpsbUfXTgjg5HTpS3cPpEJGUx4sKdP_s2-ADWIovOlpz8dzN9RLmeIA_W7GDYJevC91VK16qUdyxUK4zXb8FHEtcgXHWZYdGzXCdfaJ5J3RrTdIbWa12ePwK8ejdmpxE5P5uevC3vKQ6iVc9y1fXcOGKJbRYuSyV3iqDZ3agU7z_sIHR2WzC3AxnUGpUTByvBBruvIE9j70QijYWoRzXfB3w-fEUawgrxFT2nxzh0Zo0-VdcE
Content-Type: application/json
Accept: application/json
HTTP/1.1 200 OK
Content-Type: application/json
[
  {
    "id": 4,
    "project_id": 1,
    "social": "fb",
    "source_identity": "918067368293793",
    "data": "{\"name\": \"blabla\"}"
  },
  {
    "id": 3,
    "project_id": 1,
    "social": "fb",
    "source_identity": "101282508002719",
    "data": "{\"name\": \"BlaBla\"}"
  },
  {
    "id": 1,
    "project_id": 1,
    "social": "fb",
    "source_identity": "960159584049151",
    "data": "{\"name\": \"BlaBla\"}"
  }
]
  • DELETE api/v1/dashboard/{account_id} - Удалить аккаунт для метрики
DELETE http://localhost/api/v1/dashboard/2
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImEyYjc3OGUyMDg2NDljMDgyYWI2MjZlOTkzOTcyN2FlZGVmNzg3OTVjYWFjYzk4MjA3MDIxOTZlMWI4NzZjMDUzM2ExNmY3Yjk2NTNlZjhmIn0.eyJhdWQiOiIxIiwianRpIjoiYTJiNzc4ZTIwODY0OWMwODJhYjYyNmU5OTM5NzI3YWVkZWY3ODc5NWNhYWNjOTgyMDcwMjE5NmUxYjg3NmMwNTMzYTE2ZjdiOTY1M2VmOGYiLCJpYXQiOjE1OTcxNTkyMjcsIm5iZiI6MTU5NzE1OTIyNywiZXhwIjoxNjI4Njk1MjI3LCJzdWIiOiI3Iiwic2NvcGVzIjpbXX0.qay7h8XtnpD_MZrScONHhHTHDuQobs-vh08rX_EF8qAkJT6kq64i2tTdCmJQLE3JRr9LU8mueDdFvT2KASNZXmMIoc1BoPm1Y3A2aUWqjzcfOS8VIZgnvm-BKHBO3oTgurl8v1AEy4X0T4x5xZG22JWC55vQJ2Ddfhb9vwRj0jFo2mbx_wnCW7QaZ_p3dMagWyCh7eyXSTh7gIxzrE67aP-I3gq0rtGMcVOkLsxtOvTG5g3vqMwPe5efJShU7wrhCbeJl4MS1ZP0leFPSMPbHf8d60JR0_kaNxnwTczfj_0_uvYwclyY6wv_aiPGrp_aA4mM09Sj-35iqECOy4GpbTI3Ds7oLOPXITXiZZ0BFEgSH-NTWIo9pwQtdOLA-A9zkwPw1qsJ938g0v_ehz69hkaS0BBZO0nj_F2aOIv9CQGwWkoMYfO1VUtYCkzpsbUfXTgjg5HTpS3cPpEJGUx4sKdP_s2-ADWIovOlpz8dzN9RLmeIA_W7GDYJevC91VK16qUdyxUK4zXb8FHEtcgXHWZYdGzXCdfaJ5J3RrTdIbWa12ePwK8ejdmpxE5P5uevC3vKQ6iVc9y1fXcOGKJbRYuSyV3iqDZ3agU7z_sIHR2WzC3AxnUGpUTByvBBruvIE9j70QijYWoRzXfB3w-fEUawgrxFT2nxzh0Zo0-VdcE
Content-Type: application/json
Accept: application/json
HTTP/1.1 204 No Content
Content-Type: application/json

<Response body is empty>

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages