Wiki

Clone wiki

darudar-backend / Группы

[TOC] #Формат группы ##В списке

#!json
    {
        "pk_group": 649,
        "fk_user": 171452,
        "type": 1,
        "visibility": 1,
        "status": 2,
        "is_approved": 1,
        "alias": "testgroup",
        "title": "Test group",
        "count_users": 0,
        "count_gifts": 0,
        "avatar": {
            "uri_c100": "http:\/\/img38.static.darudar.org\/c100\/00\/00\/92\/40\/9240c72e81b676d786479be26f3e56943797db32.jpg",
            "uri_c300": "http:\/\/img38.static.darudar.org\/c300\/00\/00\/92\/40\/9240c72e81b676d786479be26f3e56943797db32.jpg",
            "uri_c600": "http:\/\/img38.static.darudar.org\/c600\/00\/00\/92\/40\/9240c72e81b676d786479be26f3e56943797db32.jpg"
        },
        "relations:me": {
            "subscription": {
                "pk_gtu": 75003,
                "dtime": 1525446520
            }
        }
##Полный
#!json
    {
        "pk_group": 649, <-- Уникальный ID группы
        "fk_user": 171452, <-- ID пользователя - владельца (создателя) группы
        "type": 1, <-- Тип группы
        "visibility": 1, <-- Видимость группы
        "status": 2, <-- Статус
        "is_approved": 1, <-- флаг проверки
        "alias": "testgroup", <-- Уникальный псевдоним группы
        "title": "Test group", <-- Название группы
        "description": "This is the test group", <-- Описание группы
        "tags": "aaa, bbb, ccc", <-- Теги группы
        "score_limit": 1, <-- ...
        "count_users": 0, <-- Количество пользователей
        "count_gifts": 0, <-- Количество даров
        "dtime": 1525446520, <-- время создания группы
        "dtime_updated": 1525447785, <-- время последнего обновления данных группы
        "avatar": { <-- аватар группы
            "uri_c100": "http:\/\/img38.static.darudar.org\/c100\/00\/00\/92\/40\/9240c72e81b676d786479be26f3e56943797db32.jpg",
            "uri_c300": "http:\/\/img38.static.darudar.org\/c300\/00\/00\/92\/40\/9240c72e81b676d786479be26f3e56943797db32.jpg",
            "uri_c600": "http:\/\/img38.static.darudar.org\/c600\/00\/00\/92\/40\/9240c72e81b676d786479be26f3e56943797db32.jpg"
        },
        "relations:me": { <-- подписка текущего пользователя на группу
            "subscription": {
                "pk_gtu": 75003,
                "dtime": 1525446520
            }
        }
    }

Поле type может принимать следующие значения:

  • 1 - публичная группа (вступают как хотят),
  • 2 - открытая группа (вступают только с подтверждения или приглашения участников)
  • 3 - закрытая группа (вступают только с подтверждения создателя)

Поле visibility может принимать следующие значения:

  • 1 - публичная группа (видна всем)
  • 2 - скрытая-приватная (видят только участники)

Поле status может принимать следующие значения:

  • 1 - ожидающая,
  • 2 - подтвержденная (разрешена),
  • 3 - "замороженная" (отклонена),
  • 4 - забаненая,
  • 5 - удаленная,

#Ресурсы группы

Добавление группы

URI: POST ~/groups

Создание группы.

Параметр Тип Значение
title string Название группы. Обязательное поле.
avatar image Файл-изображение
description text Описание группы
tags string Ключевые слова. Разделитель запятая ","
alias string Псевдоним. Обязательное поле.
type int Тип группы
visibility int Видимость группы
score_limit int ???
allow_add_gifts int Кто может добавлять дар в группу

Поле type может принимать следующие значения:

  • 1 - публичная группа (вступают как хотят),
  • 2 - открытая группа (вступают только с подтверждения или приглашения участников)
  • 3 - закрытая группа (вступают только с подтверждения создателя)

Поле visibility может принимать следующие значения:

  • 1 - публичная группа (видна всем)
  • 2 - скрытая-приватная (видят только участники)

Поле allow_add_gifts может принимать следующие значения:

  • 0 - дары может добавлять любой участник группы (по умолчанию)
  • 1 - дары может добавлять только владелец группы

Пример запроса:

POST /groups HTTP/1.1
HOST: api.brutto.dev.darudar.com
content-type: application/json
authorization: <token>

{
    "title":"Test group",
    "alias":"testgroup",
    "tags":"AAA,BBB,CCC",
    "description":"This is the test group",
    "type": 2,
    "visibility": 0,
    "score_limit": 100,
    "allow_add_gifts": 1
}

Пример ответа:

#!json
{
    "saved": "ok",
    "group": {
        "pk_group": 649
    }
}

Редактирование группы

URI: PUT ~/groups/<groupAlias>

Редактирование группы с указателем <groupAlias>. Параметры и ответы все те же, что и в методе создания (см. выше).

Подписка на группу

URI: POST ~/groups/<groupAlias>/subscribe Пример ответа:

#!json
{
    "subscribe": "ok"
}

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

Отписка от группы

URI: DELETE ~/groups/<groupAlias>/subscribe

Пример ответа:

#!json
{
    "unsubscribe": "ok"
}

Удаление подписки текущего пользователя на группу с указателем <groupAlias>. В случае, если пользователь является владельцем-создателем группы, или подписка не обнаружена, будет выведена ошибка.

Профиль группы

URI: GET ~/groups/<groupAlias>

Получает данные о группе с указанным уникальным псевдонимом группы <groupAlias>

Пример запроса:

GET /groups/testalias HTTP/1.1
HOST: api.brutto.dev.darudar.com
content-type: application/json
accept: application/json
authorization: <токен>

В ответе в свойстве group приходит JSON-объект группы. Пример ответа:

#!json
{
  "group": {...} <-- Группа в полном формате (см. в начало документа)
}

Поиск групп

URI: GET ~/search/groups

Поиск публичных групп

Параметр Тип Описание
q (обязательный) string Полнотекстовый запрос

Пример запроса:

GET /search/groups/%D1%88%D1%82%D0%B0%D0%BD%D1%8B%20%D0%BD%D0%B0%20%D0%BB%D1%8F%D0%BC%D0%BA%D0%B0%D1%85 HTTP/1.1
HOST: api.brutto.dev.darudar.com
content-type: application/json
authorization: <token>
accept: application/json

Пример ответа:

#!json

{
  "groups": [
    {...}, <-- Группа (см. вывод группы на списке)
    {...}
  ],
  "paginator": {...}, <-- см. постраничный вывод
  "search": { <-- мета по поиску
    "time": 0.011, <-- время затраченное на поиск
    "total_found": 2 <-- общее кол-во похожих объектов (групп etc)
  }
}
Доступна постраничная навигация.

Список системных групп

URI: GET ~/groups

Выводит список системных групп

Пример запроса:

GET /groups HTTP/1.1
HOST: api.brutto.dev.darudar.com
content-type: application/json
authorization: <token>
accept: application/json

Пример ответа:

#!json

{
  "groups": [
    {...}, <-- Группа (см. вывод группы на списке)
    {...}
  ]
}

Дары группы

URI: GET ~/groups/{alias}/gifts

Выводит список даров группы

Пример запроса:

GET /groups/{alias}/gifts HTTP/1.1
HOST: api.brutto.dev.darudar.com
content-type: application/json
authorization: <token>
accept: application/json

Пример ответа:

#!json

{
  "gifts": [
    {...}, <-- Дар (см. вывод дара на списке)
    {...}
  ],
  "paginator": {...}, <-- см. постраничный вывод
}
Доступна постраничная навигация.

Добавление дара к группе

URI: POST ~/groups/{alias}/gifts

Добавляет к группе дар с указанным идентификатором

Параметр Тип Описание
gift (обязательный) int Идентификатор дара

Пример запроса:

POST /groups/{alias}/gifts HTTP/1.1
HOST: api.brutto.dev.darudar.com
content-type: application/json
authorization: <token>
accept: application/json

{"gift":12345}

Пример ответа:

#!json

{
  "added": "ok"
}

Благодарности группы

URI: /groups/<alias>/thanks

Поток благодарностей группы по её алиасу.

Пример запроса:

GET /groups/daritorg1/thanks HTTP/1.1
HOST: api.brutto.dev.darudar.com
content-type: application/json
authorization: <token>
accept: application/json

В ответе будет стандартный список благодарностей thanks по дате их публикации. Пример ответа:

#!json
{
  "thanks": [
    {...}, <-- Благодарность (см. вывод благодарности в списке)
    {...},
    {...}
  ],
  "paginator": {...} <-- см. постраничная навигация
}

Updated