Пинг
Просто проверка. Параметров нет.
POST /api/v3/ping
Пустой POST-запрос.
Пример запроса:
{}
Пример ответа:
{
"_time": "2.2 ms",
"ok": true,
"result": "pong"
}
GET /api/v3/ping
Пустой GET-запрос.
Если задать параметр delay_sec
, вернёт ответ не сразу, а через
указанное количество секунд. Полезно для отладки проверки пингов.
Параметр error
вернёт ошибку сервера. Полезно для отладки
обработки ошибок сервера
Пример ответа:
{
"_time": "1.8 ms",
"ok": true,
"result": "pong"
}
Время
Время сервера.
GET /api/v3/time
Пустой GET-запрос.
Пример ответа:
{
"_time": "1.6 ms",
"ok": true,
"result": "2019-09-27T00:59:50.898951Z"
}
Страны и коды
Список стран и кодов городов.
Внимание! У одной из стран есть флаг default = True!
GET /api/v3/countries
Пустой GET-запрос.
Пример ответа:
{
"_time": "3.5 ms",
"ok": true,
"result": [
{
"code": "+998",
"name": "Узбекистан"
},
{
"code": "+996",
"name": "Кыргистан"
},
{
"code": "+995",
"name": "Грузия"
},
{
"code": "+994",
"name": "Азербайджан"
},
{
"code": "+993",
"name": "Туркменистан"
},
{
"code": "+992",
"name": "Таджикистан"
},
{
"code": "+977",
"name": "Непал"
},
{
"code": "+976",
"name": "Монголия"
},
{
"code": "+975",
"name": "Бутан"
},
{
"code": "+974",
"name": "Катар"
},
{
"code": "+973",
"name": "Бахрейн"
},
{
"code": "+972",
"name": "Израиль"
},
{
"code": "+971",
"name": "ОАЭ"
},
{
"code": "+970",
"name": "Сектор Газа"
},
{
"code": "+970",
"name": "Палестина"
},
{
"code": "+968",
"name": "Оман"
},
{
"code": "+967",
"name": "Йемен"
},
{
"code": "+966",
"name": "Саудовская Аравия"
},
{
"code": "+965",
"name": "Кувейт"
},
{
"code": "+964",
"name": "Ирак"
},
{
"code": "+963",
"name": "Сирия"
},
{
"code": "+962",
"name": "Иордания"
},
{
"code": "+961",
"name": "Ливан"
},
{
"code": "+960",
"name": "Мальдивы"
},
{
"code": "+886",
"name": "Тайвань"
},
{
"code": "+880",
"name": "Бангладеш"
},
{
"code": "+870",
"name": "Острова Питкэрн"
},
{
"code": "+856",
"name": "Лаос"
},
{
"code": "+855",
"name": "Камбоджа"
},
{
"code": "+853",
"name": "Макао"
},
{
"code": "+852",
"name": "Гонконг"
},
{
"code": "+850",
"name": "Северная Корея"
},
{
"code": "+692",
"name": "Маршалловы Острова"
},
{
"code": "+691",
"name": "Микронезия"
},
{
"code": "+690",
"name": "Токелау"
},
{
"code": "+689",
"name": "Французская Полинезия"
},
{
"code": "+688",
"name": "Тувалу"
},
{
"code": "+687",
"name": "Новая Каледония"
},
{
"code": "+686",
"name": "Кирибати"
},
{
"code": "+685",
"name": "Самоа"
},
{
"code": "+683",
"name": "Ниуэ"
},
{
"code": "+682",
"name": "Острова Кука"
},
{
"code": "+681",
"name": "Уоллис и Футуна"
},
{
"code": "+680",
"name": "Палау"
},
{
"code": "+679",
"name": "Фиджи"
},
{
"code": "+678",
"name": "Вануату"
},
{
"code": "+677",
"name": "Соломоновы Острова"
},
{
"code": "+676",
"name": "Тонга"
},
{
"code": "+675",
"name": "Папуа Новая Гвинея"
},
{
"code": "+674",
"name": "Науру"
},
{
"code": "+673",
"name": "Бруней"
},
{
"code": "+672",
"name": "Антарктика"
},
{
"code": "+672",
"name": "Остров Норфолк"
},
{
"code": "+670",
"name": "Восточный Тимор"
},
{
"code": "+599",
"name": "Нидерландские Антильские острова"
},
{
"code": "+598",
"name": "Уругвай"
},
{
"code": "+597",
"name": "Суринам"
},
{
"code": "+595",
"name": "Парагвай"
},
{
"code": "+593",
"name": "Эквадор"
},
{
"code": "+592",
"name": "Гайана"
},
{
"code": "+591",
"name": "Боливия"
},
{
"code": "+590",
"name": "Сен-Бартелеми (Карибы)"
},
{
"code": "+509",
"name": "Гаити"
},
{
"code": "+508",
"name": "Сен-Пьер и Микелон"
},
{
"code": "+507",
"name": "Панама"
},
{
"code": "+506",
"name": "Коста-Рика"
},
{
"code": "+505",
"name": "Никарагуа"
},
{
"code": "+504",
"name": "Гондурас"
},
{
"code": "+503",
"name": "Сальвадор"
},
{
"code": "+502",
"name": "Гватемала"
},
{
"code": "+501",
"name": "Белиз"
},
{
"code": "+500",
"name": "Фолклендские острова"
},
{
"code": "+423",
"name": "Лихтенштейн"
},
{
"code": "+421",
"name": "Словакия"
},
{
"code": "+420",
"name": "Чехия"
},
{
"code": "+389",
"name": "Македония"
},
{
"code": "+387",
"name": "Босния и Герцеговина"
},
{
"code": "+386",
"name": "Словения"
},
{
"code": "+385",
"name": "Хорватия"
},
{
"code": "+382",
"name": "Черногория"
},
{
"code": "+381",
"name": "Косово"
},
{
"code": "+381",
"name": "Сербия"
},
{
"code": "+380",
"name": "Украина"
},
{
"code": "+378",
"name": "Сан-Марино"
},
{
"code": "+377",
"name": "Монако"
},
{
"code": "+376",
"name": "Андорра"
},
{
"code": "+375",
"name": "Белоруссия"
},
{
"code": "+374",
"name": "Армения"
},
{
"code": "+373",
"name": "Молдавия"
},
{
"code": "+372",
"name": "Эстония"
},
{
"code": "+371",
"name": "Латвия"
},
{
"code": "+370",
"name": "Литва"
},
{
"code": "+359",
"name": "Болгария"
},
{
"code": "+358",
"name": "Финляндия"
},
{
"code": "+357",
"name": "Кипр"
},
{
"code": "+356",
"name": "Мальта"
},
{
"code": "+355",
"name": "Албания"
},
{
"code": "+354",
"name": "Исландия"
},
{
"code": "+353",
"name": "Ирландия"
},
{
"code": "+352",
"name": "Люксенбург"
},
{
"code": "+351",
"name": "Португалия"
},
{
"code": "+350",
"name": "Гибралтар"
},
{
"code": "+299",
"name": "Гренландия"
},
{
"code": "+298",
"name": "Фарерские острова"
},
{
"code": "+297",
"name": "Аруба"
},
{
"code": "+291",
"name": "Эритрея"
},
{
"code": "+290",
"name": "Остров Святой Елены"
},
{
"code": "+269",
"name": "Коморы"
},
{
"code": "+268",
"name": "Эсватини"
},
{
"code": "+267",
"name": "Ботсвана"
},
{
"code": "+266",
"name": "Лесото"
},
{
"code": "+265",
"name": "Малави"
},
{
"code": "+264",
"name": "Намибия"
},
{
"code": "+263",
"name": "Зимбабве"
},
{
"code": "+262",
"name": "Майотта"
},
{
"code": "+261",
"name": "Мадагаскар"
},
{
"code": "+260",
"name": "Замбия"
},
{
"code": "+258",
"name": "Мозамбик"
},
{
"code": "+257",
"name": "Бурунди"
},
{
"code": "+256",
"name": "Уганда"
},
{
"code": "+255",
"name": "Tanzania"
},
{
"code": "+254",
"name": "Кения"
},
{
"code": "+253",
"name": "Джибути"
},
{
"code": "+252",
"name": "Сомали"
},
{
"code": "+251",
"name": "Эфиопия"
},
{
"code": "+250",
"name": "Руанда"
},
{
"code": "+249",
"name": "Судан"
},
{
"code": "+248",
"name": "Сейшельские Острова"
},
{
"code": "+245",
"name": "Гвинея-Бисау"
},
{
"code": "+244",
"name": "Ангола"
},
{
"code": "+243",
"name": "Демократическая Республика Конго"
},
{
"code": "+242",
"name": "Республика Конго"
},
{
"code": "+241",
"name": "Габон"
},
{
"code": "+240",
"name": "Экваториальная Гвинея"
},
{
"code": "+239",
"name": "Сан-Томе и Принсипи"
},
{
"code": "+238",
"name": "Кабо-Верде"
},
{
"code": "+237",
"name": "Камерун"
},
{
"code": "+236",
"name": "Центральноафриканская Республика"
},
{
"code": "+235",
"name": "Чад"
},
{
"code": "+234",
"name": "Нигерия"
},
{
"code": "+233",
"name": "Гана"
},
{
"code": "+232",
"name": "Сьерра-Леоне"
},
{
"code": "+231",
"name": "Либерия"
},
{
"code": "+230",
"name": "Маврикий"
},
{
"code": "+229",
"name": "Бенин"
},
{
"code": "+228",
"name": "Того"
},
{
"code": "+227",
"name": "Нигер"
},
{
"code": "+226",
"name": "Буркина-Фасо"
},
{
"code": "+225",
"name": "Кот-д’Ивуар"
},
{
"code": "+224",
"name": "Гвинея"
},
{
"code": "+223",
"name": "Мали"
},
{
"code": "+222",
"name": "Мавритания"
},
{
"code": "+221",
"name": "Сенегал"
},
{
"code": "+220",
"name": "Гамбия"
},
{
"code": "+218",
"name": "Ливия"
},
{
"code": "+216",
"name": "Тунис"
},
{
"code": "+213",
"name": "Алжир"
},
{
"code": "+212",
"name": "Марокко"
},
{
"code": "+98",
"name": "Иран"
},
{
"code": "+95",
"name": "Бирма (Мьянма)"
},
{
"code": "+94",
"name": "Шри-Ланка"
},
{
"code": "+93",
"name": "Афганистан"
},
{
"code": "+92",
"name": "Пакистан"
},
{
"code": "+91",
"name": "Индия"
},
{
"code": "+90",
"name": "Турция"
},
{
"code": "+86",
"name": "Китай"
},
{
"code": "+84",
"name": "Вьетнам"
},
{
"code": "+82",
"name": "Южная Корея"
},
{
"code": "+81",
"name": "Япония"
},
{
"code": "+66",
"name": "Таиланд"
},
{
"code": "+65",
"name": "Сингапур"
},
{
"code": "+64",
"name": "Новая Зеландия"
},
{
"code": "+63",
"name": "Филиппины"
},
{
"code": "+62",
"name": "Индонезия"
},
{
"code": "+61",
"name": "Австралия"
},
{
"code": "+61",
"name": "Остров Рождества (Австралия)"
},
{
"code": "+61",
"name": "Кокосовые острова"
},
{
"code": "+60",
"name": "Малайзия"
},
{
"code": "+58",
"name": "Венесуэла"
},
{
"code": "+57",
"name": "Колумбия"
},
{
"code": "+56",
"name": "Чили"
},
{
"code": "+55",
"name": "Бразилия"
},
{
"code": "+54",
"name": "Аргентина"
},
{
"code": "+53",
"name": "Куба"
},
{
"code": "+52",
"name": "Мексика"
},
{
"code": "+51",
"name": "Перу"
},
{
"code": "+49",
"name": "Германия"
},
{
"code": "+48",
"name": "Польша"
},
{
"code": "+47",
"name": "Норвегия"
},
{
"code": "+46",
"name": "Швеция"
},
{
"code": "+45",
"name": "Дания"
},
{
"code": "+44",
"name": "Остров Мэн"
},
{
"code": "+44",
"name": "Великобритания"
},
{
"code": "+43",
"name": "Австрия"
},
{
"code": "+41",
"name": "Швейцария"
},
{
"code": "+40",
"name": "Румыния"
},
{
"code": "+39",
"name": "Италия"
},
{
"code": "+39",
"name": "Ватикан"
},
{
"code": "+36",
"name": "Венгрия"
},
{
"code": "+34",
"name": "Испания"
},
{
"code": "+33",
"name": "Франция"
},
{
"code": "+32",
"name": "Бельгия"
},
{
"code": "+31",
"name": "Нидерланды"
},
{
"code": "+30",
"name": "Греция"
},
{
"code": "+27",
"name": "ЮАР"
},
{
"code": "+20",
"name": "Египет"
},
{
"code": "+7",
"name": "Казахстан"
},
{
"code": "+7",
"default": true,
"name": "Россия"
},
{
"code": "+1",
"name": "Пуэрто-Рико"
},
{
"code": "+1",
"name": "США"
},
{
"code": "+1",
"name": "Канада"
},
{
"code": "+1684",
"name": "Американское Самоа"
},
{
"code": "+1264",
"name": "Ангилья"
},
{
"code": "+1268",
"name": "Антигуа и Барбуда"
},
{
"code": "+1242",
"name": "Багамы"
},
{
"code": "+1246",
"name": "Барбадос"
},
{
"code": "+1441",
"name": "Бермудские Острова"
},
{
"code": "+1284",
"name": "Виргинские Острова (Великобритания)"
},
{
"code": "+1345",
"name": "Каймановы острова"
},
{
"code": "+1767",
"name": "Доминикана"
},
{
"code": "+1809",
"name": "Доминиканская Республика"
},
{
"code": "+1473",
"name": "Гренада"
},
{
"code": "+1671",
"name": "Гуам"
},
{
"code": "+1876",
"name": "Ямайка"
},
{
"code": "+1664",
"name": "Монтсеррат"
},
{
"code": "+1670",
"name": "Северные Марианские Острова"
},
{
"code": "+1869",
"name": "Сент-Китс и Невис"
},
{
"code": "+1758",
"name": "Сент-Люсия"
},
{
"code": "+1599",
"name": "Сен-Мартен"
},
{
"code": "+1784",
"name": "Сент-Винсент и Гренадины"
},
{
"code": "+1868",
"name": "Тринидада и Тобаго"
},
{
"code": "+1649",
"name": "Теркс и Кайкос"
},
{
"code": "+1340",
"name": "Виргинские Острова (США)"
}
]
}
Авторизация
POST /api/v3/sms-login
Вход по SMS, часть первая: высылаем код.
phone
— телефон в любом формате. Сервер уберёт пробелы, скобки, дефисы, угадает код страны, допишет плюсик и приведёт всё к виду +72348763434. Если не удалось, то выдаст ошибку. Но обычно удаётся.
Пример запроса:
{
"phone": "+7 (916) 6660002"
}
Пример ответа:
{
"_time": "58 ms",
"ok": true,
"result": {
"code_length": 4,
"code_valid_until": "2019-09-27T01:00:50.960036Z",
"phone": "+79166660002"
}
}
POST /api/v3/sms-auth
Вход по SMS, часть вторая: вводим код.
phone
— телефонcode
— код из SMStype
- тип устройства (ios, android)device_id
- id устройстваname
- название устройства
Пример запроса:
{
"code": "5555",
"device_id": "a6a6d308730f27ce32d1",
"name": "ойпад",
"phone": "+7 (916) 6660002",
"type": "ios"
}
Пример ответа:
{
"_time": "446 ms",
"ok": true,
"result": {
"me": {
"alt_send": false,
"default_lang": null,
"devices": [
{
"allowed_notifications": true,
"data_pushes": false,
"device_id": "a6a6d308730f27ce32d1",
"name": "ойпад",
"notification_token": "",
"type": "ios",
"voip_notification_token": ""
}
],
"email": null,
"phone": "+79166660002",
"teams": [],
"unread_first": false
},
"token": "WoqtDSoWibETHyZcFJvixHGbp9AdYeg0"
}
}
POST /api/v3/sms-login
Вход по SMS, часть первая: высылаем код.
phone
— телефон в любом формате. Сервер уберёт пробелы, скобки, дефисы, угадает код страны, допишет плюсик и приведёт всё к виду +72348763434. Если не удалось, то выдаст ошибку. Но обычно удаётся.
Пример запроса:
{
"phone": "+7 (916) 6660002"
}
Пример ответа:
{
"_time": "19 ms",
"ok": true,
"result": {
"code_length": 4,
"code_valid_until": "2019-09-27T01:00:51.505004Z",
"phone": "+79166660002"
}
}
POST /api/v3/sms-cookieauth
Вход по SMS, часть вторая: вводим код.
phone
— телефонcode
— код из SMS
Отличие от просто sms-auth/
: не требуется указывать устройство,
не выдаётся токен, а просто выставляется кука, с которой можно ходить
с запросами к API и коннектиться по ws.
Пример запроса:
{
"code": "5555",
"phone": "+7 (916) 6660002"
}
Пример ответа:
{
"_time": "337 ms",
"ok": true,
"result": {
"me": {
"alt_send": false,
"default_lang": null,
"devices": [
{
"allowed_notifications": true,
"data_pushes": false,
"device_id": "a6a6d308730f27ce32d1",
"name": "ойпад",
"notification_token": "",
"type": "ios",
"voip_notification_token": ""
}
],
"email": null,
"phone": "+79166660002",
"teams": [],
"unread_first": false
}
}
}
Авторизация через QR-код
GET /api/v3/qr-login.png?debug=True
Вход по QR-коду. Если открыт один клиент, например.
Возвращает картинку со значением: otv://{server}/{temp_token}
Приятная мелочь: ?value=str сгенерирует qr-код с определённым токеном. Для тестов.
Пример ответа:
{
"_time": "47 ms",
"ok": true,
"result": {
"lifetime_sec": 60,
"url": "otv://qr-login/127.0.0.1%3A8000/Sqt9O7toIgw-ud-G"
}
}
POST /api/v3/qr-auth
Вход по qr-коду (/api/v3/qr-login.png).
temp_token
— значение временного токена из qr-кодаtype
- тип устройства (ios, android)device_id
- id устройстваname
- название устройства
Пример запроса:
{
"device_id": "a6a6d308730f27ce32d1-2",
"name": "ондроед",
"temp_token": "Sqt9O7toIgw-ud-G",
"type": "android"
}
Пример ответа:
{
"_time": "117 ms",
"ok": true,
"result": {
"me": {
"alt_send": false,
"default_lang": null,
"devices": [
{
"allowed_notifications": true,
"data_pushes": false,
"device_id": "a6a6d308730f27ce32d1",
"name": "ойпад",
"notification_token": "",
"type": "ios",
"voip_notification_token": ""
},
{
"allowed_notifications": true,
"data_pushes": false,
"device_id": "a6a6d308730f27ce32d1-2",
"name": "ондроед",
"notification_token": "",
"type": "android",
"voip_notification_token": ""
}
],
"email": null,
"phone": "+79166660002",
"teams": [],
"unread_first": false
},
"token": "a0DD8hK-wkm4i2b4BP9eIRClCLpR68dV"
}
}
Выход
Выход для sms-cookieauth/
POST /api/v3/cookieauth-logout
Можно выйти, послав POST.
Пример запроса:
{}
Пример ответа:
{
"_time": "0.024 ms",
"ok": true,
"result": {
"location": "/"
}
}
GET /api/v3/cookieauth-logout
Можно выйти, послав GET.
Пример ответа:
{
"_time": "0.095 ms",
"ok": true,
"result": {
"location": "/"
}
}
Информация о себе
GET /api/v3/me
Информация о текущем пользователе. То, что возвращает
вызов sms-auth
(см. выше), только без токена.
Пример ответа:
{
"_time": "112 ms",
"ok": true,
"result": {
"alt_send": false,
"default_lang": null,
"devices": [
{
"allowed_notifications": true,
"data_pushes": false,
"device_id": "a6a6d308730f27ce32d1",
"name": "ойпад",
"notification_token": "",
"type": "ios",
"voip_notification_token": ""
},
{
"allowed_notifications": true,
"data_pushes": false,
"device_id": "a6a6d308730f27ce32d1-2",
"name": "ондроед",
"notification_token": "",
"type": "android",
"voip_notification_token": ""
}
],
"email": null,
"phone": "+79166660002",
"teams": [],
"unread_first": false
}
}
Настройки
Настройки в свободной форме. Просто словарь, куда клиент может сохранять нужные ему данные. Например, текущий чат, состояние открытости/скрытости панелек и т.п. 16кб на эти цели должно хватить каждому.
Важно: это настройки пользователя вообще, без привязки к отдельной команде. Если нужна привязка, можно делать префиксы с uid команд или вложенные структуры.
GET /api/v3/ui-settings
Получить ui настройки текущего пользователя.
Пример ответа:
{
"_time": "30 ms",
"ok": true,
"result": {
"current_team": "54b9580b-9fd8-4771-98bd-e9ca3d920017",
"zzzz": [
1,
2,
3
]
}
}
PUT /api/v3/ui-settings
Записать ui настройки текущего пользователя. Не более 16000 байт.
Рассылает события:
server.uisettings
Пример запроса:
{
"current_team": "21639e8e-5425-4ba3-b48b-b1c82af90d10",
"zzzz": [
1,
2,
3
]
}
Пример ответа:
{
"_time": "50 ms",
"ok": true,
"result": {
"current_team": "21639e8e-5425-4ba3-b48b-b1c82af90d10",
"zzzz": [
1,
2,
3
]
}
}
Устройства
Список активных устройств.
type
— строка "android", "ios", "web" (все браузеры, кроме Safari) или "safari".device_id
— id устройства. Не обязательно UUID, поэтому поле называется неuid
, как у остальных моделей.name
— необязательное название устройства.notification_token
— токен для отправки через APNs или Firebase.voip_notification_token
— токен для отправки VOIP-пушей через APNsallowed_notifications
— включены ли пуш-уведомления. Для веб-клиента (пока) смысла не имеет.data_pushes
— если true, то пуши отправляются «тихими», только с данными. Пока работает только для андроида. По умолчанию false.
POST /api/v3/devices
Cоздание устройства. Если device_id уже есть, то не создаст новое
устройство, а изменит существующее. Кроме того, в этом вызове
нельзя поменать что-то одно в устройстве (например, только name
).
Для изменения требуется каждый раз посылать все поля.
Пример запроса:
{
"allowed_notifications": true,
"device_id": "ABA-f923727d4093",
"name": "ХромЪ",
"notification_token": "2ed7b2746ffe563f5ac8658a09e02c4dfe258a6ea683ddb9638fcef89b0d703e",
"type": "web"
}
Пример ответа:
{
"_time": "82 ms",
"ok": true,
"result": {
"allowed_notifications": true,
"data_pushes": false,
"device_id": "ABA-f923727d4093",
"name": "ХромЪ",
"notification_token": "2ed7b2746ffe563f5ac8658a09e02c4dfe258a6ea683ddb9638fcef89b0d703e",
"type": "web",
"voip_notification_token": ""
}
}
GET /api/v3/devices
Cписок устройств без разбивки по страницам. То же, что и в вызове
/api/v3/me/
, только отдельно.
Пример ответа:
{
"_time": "37 ms",
"ok": true,
"result": [
{
"allowed_notifications": true,
"data_pushes": false,
"device_id": "a6a6d308730f27ce32d1",
"name": "ойпад",
"notification_token": "",
"type": "ios",
"voip_notification_token": ""
},
{
"allowed_notifications": true,
"data_pushes": false,
"device_id": "a6a6d308730f27ce32d1-2",
"name": "ондроед",
"notification_token": "",
"type": "android",
"voip_notification_token": ""
},
{
"allowed_notifications": true,
"data_pushes": false,
"device_id": "ABA-f923727d4093",
"name": "ХромЪ",
"notification_token": "2ed7b2746ffe563f5ac8658a09e02c4dfe258a6ea683ddb9638fcef89b0d703e",
"type": "web",
"voip_notification_token": ""
}
]
}
Информация об устройстве. Список устройств можно получить через
запрос /api/v3/me/
, создание устройства происходит в момент логина.
GET /api/v3/devices/{device_id}
Информация об устройстве с указанным device_id
Пример ответа:
{
"_time": "20 ms",
"ok": true,
"result": {
"allowed_notifications": true,
"data_pushes": false,
"device_id": "ABA-f923727d4093",
"name": "ХромЪ",
"notification_token": "2ed7b2746ffe563f5ac8658a09e02c4dfe258a6ea683ddb9638fcef89b0d703e",
"type": "web",
"voip_notification_token": ""
}
}
PUT /api/v3/devices/{device_id}
Изменение устройства с указанным device_id
Пример запроса:
{
"name": "ойпадище",
"notification_token": "47aba2b4b58a302ee4577ddb4183404d6367751cd427e47ecf04695227f2d92f",
"voip_notification_token": "183ec558d682f1c72cea069c1e727c5039656f54a471c8605edf46088bcdc326"
}
Пример ответа:
{
"_time": "60 ms",
"ok": true,
"result": {
"allowed_notifications": true,
"data_pushes": false,
"device_id": "ABA-f923727d4093",
"name": "ойпадище",
"notification_token": "47aba2b4b58a302ee4577ddb4183404d6367751cd427e47ecf04695227f2d92f",
"type": "web",
"voip_notification_token": "183ec558d682f1c72cea069c1e727c5039656f54a471c8605edf46088bcdc326"
}
}
DELETE /api/v3/devices/{device_id}
Удаление устройства с указанным device_id
Пример ответа:
{
"_time": "76 ms",
"ok": true,
"result": null
}
Адресная книга устройства
GET /api/v3/devices/{device_id}/address-book
Контакты адресной книги данного устройства.
Пример ответа:
{
"_time": "52 ms",
"ok": true,
"result": []
}
PUT /api/v3/devices/{device_id}/address-book
Сохраняет контакты адресной книги.
contacts
— список контактов. Если у контакта будет полеphones
, и если один из телефонов будет принадлежать пользователю системы, то в такой контакт добавится полеaccount
Пример запроса:
{
"contacts": [
{
"phones": [
"+79162255059"
]
}
]
}
Пример ответа:
{
"_time": "80 ms",
"ok": true,
"result": {
"contacts": [
{
"account": {
"family_name": "dfgdfg",
"given_name": "dfg",
"phone": "+79162255059"
},
"phones": [
"+79162255059"
]
}
]
}
}
Команды
POST /api/v3/teams
Создание команды (внутри contacts
обязательно только одно
поле — phone
). В ответе среди полей команды будет поле contacts
—
чтобы убедиться, что все переданные контакты добавились
Рассылает события:
server.contact.updated
server.team.updated
server.section.updated
Пример запроса:
{
"contacts": [
{
"phone": "+7 999 233-11-22"
},
{
"given_name": "Петя-админ",
"phone": "+7 999 233-11-44",
"role": "главный по катапультам",
"status": "admin"
},
{
"given_name": "Вася",
"phone": "+7 999 233-11-33"
}
],
"name": "третий отдельный особый конный полк Чапаевской дивизии"
}
Пример ответа:
{
"_time": "3.9 s",
"ok": true,
"result": {
"bad_profile": true,
"can_add_to_team": true,
"can_manage_integrations": true,
"can_manage_sections": true,
"changeable_statuses": [
"guest",
"member",
"admin",
"owner"
],
"contacts": [
{
"can_add_to_group": true,
"can_call": true,
"can_create_task": true,
"can_delete": true,
"can_send_message": true,
"changeable_fields": [
"add_to_team_rights",
"contact_email",
"contact_phone",
"role",
"section",
"sections",
"status"
],
"contact_email": "",
"contact_phone": "+79992331133",
"display_name": "Вася",
"icons": {
"stub": "http://127.0.0.1:8000/u/578e3c/%D0%92/256.png"
},
"jid": "d-7d09fba1-414e-47ab-ad05-6cf7fee2e081",
"last_activity": null,
"role": "",
"sections": [],
"status": "member"
},
{
"can_add_to_group": true,
"can_call": true,
"can_create_task": true,
"can_delete": true,
"can_send_message": true,
"changeable_fields": [
"add_to_team_rights",
"contact_email",
"contact_phone",
"role",
"section",
"sections",
"status"
],
"contact_email": "",
"contact_phone": "+79992331144",
"display_name": "Петя-админ",
"icons": {
"stub": "http://127.0.0.1:8000/u/f08c50/%D0%9F/256.png"
},
"jid": "d-aae1ccb0-cfd0-4d12-bb0c-3ee844f28820",
"last_activity": null,
"role": "главный по катапультам",
"sections": [],
"status": "admin"
},
{
"can_add_to_group": true,
"can_call": true,
"can_create_task": true,
"can_delete": true,
"can_send_message": true,
"changeable_fields": [
"add_to_team_rights",
"contact_email",
"contact_phone",
"role",
"section",
"sections",
"status"
],
"contact_email": "",
"contact_phone": "+79992331122",
"display_name": "+7 (999) 233-1122",
"icons": {
"stub": "http://127.0.0.1:8000/u/f0769a/22/256.png"
},
"jid": "d-9b67cf45-dbdc-4660-84d0-22ce0d2d223c",
"last_activity": null,
"role": "",
"sections": [],
"status": "member"
},
{
"alt_send": false,
"can_add_to_group": true,
"can_create_task": true,
"can_delete": true,
"changeable_fields": [
"add_to_team_rights",
"alt_send",
"contact_email",
"contact_mshort_view",
"contact_phone",
"contact_short_view",
"contact_show_archived",
"debug_show_activity",
"default_lang",
"family_name",
"given_name",
"group_mshort_view",
"group_notifications_enabled",
"group_short_view",
"icons",
"phone",
"role",
"section",
"sections",
"status",
"task_mshort_view",
"task_notifications_enabled",
"task_short_view",
"unread_first"
],
"contact_email": "",
"contact_mshort_view": false,
"contact_phone": "+79166660002",
"contact_short_view": false,
"contact_show_archived": false,
"debug_show_activity": false,
"default_lang": null,
"display_name": "+7 (916) 666-0002",
"family_name": "",
"given_name": "",
"group_mshort_view": false,
"group_notifications_enabled": true,
"group_short_view": false,
"icons": {
"stub": "http://127.0.0.1:8000/u/e36659/02/256.png"
},
"jid": "d-b7d905b3-c011-4e1d-b85a-37d822a96100",
"last_activity": null,
"role": "",
"sections": [],
"status": "owner",
"task_mshort_view": false,
"task_notifications_enabled": true,
"task_short_view": false,
"unread_first": false
}
],
"default_task_deadline": "18:00:00",
"icons": {
"stub": "http://127.0.0.1:8000/u/578e3c/%D1%82%D0%BE/256.png"
},
"last_active": false,
"max_message_update_age": 86400,
"me": {
"alt_send": false,
"can_add_to_group": true,
"can_create_task": true,
"can_delete": true,
"changeable_fields": [
"add_to_team_rights",
"alt_send",
"contact_email",
"contact_mshort_view",
"contact_phone",
"contact_short_view",
"contact_show_archived",
"debug_show_activity",
"default_lang",
"family_name",
"given_name",
"group_mshort_view",
"group_notifications_enabled",
"group_short_view",
"icons",
"phone",
"role",
"section",
"sections",
"status",
"task_mshort_view",
"task_notifications_enabled",
"task_short_view",
"unread_first"
],
"contact_email": "",
"contact_mshort_view": false,
"contact_phone": "+79166660002",
"contact_short_view": false,
"contact_show_archived": false,
"debug_show_activity": false,
"default_lang": null,
"display_name": "+7 (916) 666-0002",
"family_name": "",
"given_name": "",
"group_mshort_view": false,
"group_notifications_enabled": true,
"group_short_view": false,
"icons": {
"stub": "http://127.0.0.1:8000/u/e36659/02/256.png"
},
"jid": "d-b7d905b3-c011-4e1d-b85a-37d822a96100",
"last_activity": null,
"role": "",
"sections": [],
"status": "owner",
"task_mshort_view": false,
"task_notifications_enabled": true,
"task_short_view": false,
"unread_first": false
},
"name": "третий отдельный особый конный полк Чапаевской дивизии",
"need_confirmation": false,
"uid": "3525d76d-cfe0-469f-b46e-cbb79ae5491e",
"unread": {
"direct": {
"chats": 0,
"messages": 0
},
"group": {
"chats": 0,
"messages": 0
},
"task": {
"chats": 0,
"messages": 0
}
},
"uploads_size": 0,
"uploads_size_limit": 1073741824
}
}
GET /api/v3/teams
Список команд. Без разбивки по страницам. То же, что отдаётся внутри
вызова /api/v3/me/
, только отдельно.
Пример ответа:
{
"_time": "46 ms",
"ok": true,
"result": [
{
"bad_profile": true,
"can_add_to_team": true,
"can_manage_integrations": true,
"can_manage_sections": true,
"changeable_statuses": [
"guest",
"member",
"admin",
"owner"
],
"default_task_deadline": "18:00:00",
"icons": {
"stub": "http://127.0.0.1:8000/u/578e3c/%D1%82%D0%BE/256.png"
},
"last_active": false,
"max_message_update_age": 86400,
"me": {
"alt_send": false,
"can_add_to_group": true,
"can_create_task": true,
"can_delete": true,
"changeable_fields": [
"add_to_team_rights",
"alt_send",
"contact_email",
"contact_mshort_view",
"contact_phone",
"contact_short_view",
"contact_show_archived",
"debug_show_activity",
"default_lang",
"family_name",
"given_name",
"group_mshort_view",
"group_notifications_enabled",
"group_short_view",
"icons",
"phone",
"role",
"section",
"sections",
"status",
"task_mshort_view",
"task_notifications_enabled",
"task_short_view",
"unread_first"
],
"contact_email": "",
"contact_mshort_view": false,
"contact_phone": "+79166660002",
"contact_short_view": false,
"contact_show_archived": false,
"debug_show_activity": false,
"default_lang": null,
"display_name": "+7 (916) 666-0002",
"family_name": "",
"given_name": "",
"group_mshort_view": false,
"group_notifications_enabled": true,
"group_short_view": false,
"icons": {
"stub": "http://127.0.0.1:8000/u/e36659/02/256.png"
},
"jid": "d-b7d905b3-c011-4e1d-b85a-37d822a96100",
"last_activity": null,
"role": "",
"sections": [],
"status": "owner",
"task_mshort_view": false,
"task_notifications_enabled": true,
"task_short_view": false,
"unread_first": false
},
"name": "третий отдельный особый конный полк Чапаевской дивизии",
"need_confirmation": false,
"uid": "3525d76d-cfe0-469f-b46e-cbb79ae5491e",
"unread": {
"direct": {
"chats": 0,
"messages": 0
},
"group": {
"chats": 0,
"messages": 0
},
"task": {
"chats": 0,
"messages": 0
}
},
"uploads_size": 0,
"uploads_size_limit": 1073741824
}
]
}
Интеграции
Интеграции
POST /api/v3/teams/{team_uid}/integrations
Новая интеграция.
Пример запроса:
{
"comment": "Новая API-интеграция",
"enabled": true,
"group": "g-edb35028-b3ff-48ef-afc4-6fcd4c86b5ad",
"kind": "raw"
}
Пример ответа:
{
"_time": "52 ms",
"ok": true,
"result": {
"comment": "Новая API-интеграция",
"created": "2019-09-27T00:59:57.099755Z",
"enabled": true,
"form": {
"api_key": {
"label": "Ключ API",
"readonly": true,
"value": "BWDydgHkSQ_2JSOiBDeEoR9KILo"
},
"webhook_url": {
"label": "Webhook URL",
"readonly": false,
"value": ""
}
},
"group": "g-edb35028-b3ff-48ef-afc4-6fcd4c86b5ad",
"help": "<p>Для отправки сообщения надо сделать POST-запрос на адрес <code>http://127.0.0.1:8000/api/message</code> с параметрами:</p>\n<ul>\n <li>\n <code>key</code> API-ключ. Для этой команды и этой группы: <strong class=\"nowrap\">BWDydgHkSQ_2JSOiBDeEoR9KILo</strong>\n </li>\n <li>\n <code>message</code> само сообщение\n </li>\n</ul>\n\n<h2>Пример для командной строки</h2>\n<pre>curl http://127.0.0.1:8000/api/message \\\n -F key='BWDydgHkSQ_2JSOiBDeEoR9KILo' \\\n -F message='Ваше сообщение'</pre>\n\n<h2>Ответ</h2>\n<p>Если всё хорошо, сервер возвращает <code>{\"ok\": true}</code>. Если случается\nошибка, то <code>{\"ok\": false, \"error\": \"Описание ошибки\"}</code>.</p>\n\n<h2>Получение сообщений из чата</h2>\n<p>Если задан Webhook URL, на него при каждом новом сообщении будет отправаться POST-запрос с параметрами:\n<code>\"chat\"</code>,<code>\"chat_display_name\"</code>, <code>\"created\"</code>, <code>\"sender\"</code>,\n<code>\"sender_display_name\"</code> и, самое главное: <code>\"text\"</code>. Кроме этого,\nв запросе будет http-заголовок <code>\"key\"</code>, равный API-ключу этой группы\n(<code>BWDydgHkSQ_2JSOiBDeEoR9KILo)</code>), чтобы вы могли убедиться, что запрос\nименно от нас. Если сервер ответит кодом, отличным от 200, запрос повторится\nещё 8 раз с нарастающим интервалом.</p>",
"kind": "raw",
"uid": "59917ec7-7c7d-4906-8f06-332ae9957eb3"
}
}
GET /api/v3/teams/{team_uid}/integrations
Информация о интеграциях.
Пример ответа:
{
"_time": "52 ms",
"ok": true,
"result": {
"integrations": [
{
"comment": "Новая API-интеграция",
"created": "2019-09-27T00:59:57.099755Z",
"enabled": true,
"form": {
"api_key": {
"label": "Ключ API",
"readonly": true,
"value": "BWDydgHkSQ_2JSOiBDeEoR9KILo"
},
"webhook_url": {
"label": "Webhook URL",
"readonly": false,
"value": ""
}
},
"group": "g-edb35028-b3ff-48ef-afc4-6fcd4c86b5ad",
"help": "<p>Для отправки сообщения надо сделать POST-запрос на адрес <code>http://127.0.0.1:8000/api/message</code> с параметрами:</p>\n<ul>\n <li>\n <code>key</code> API-ключ. Для этой команды и этой группы: <strong class=\"nowrap\">BWDydgHkSQ_2JSOiBDeEoR9KILo</strong>\n </li>\n <li>\n <code>message</code> само сообщение\n </li>\n</ul>\n\n<h2>Пример для командной строки</h2>\n<pre>curl http://127.0.0.1:8000/api/message \\\n -F key='BWDydgHkSQ_2JSOiBDeEoR9KILo' \\\n -F message='Ваше сообщение'</pre>\n\n<h2>Ответ</h2>\n<p>Если всё хорошо, сервер возвращает <code>{\"ok\": true}</code>. Если случается\nошибка, то <code>{\"ok\": false, \"error\": \"Описание ошибки\"}</code>.</p>\n\n<h2>Получение сообщений из чата</h2>\n<p>Если задан Webhook URL, на него при каждом новом сообщении будет отправаться POST-запрос с параметрами:\n<code>\"chat\"</code>,<code>\"chat_display_name\"</code>, <code>\"created\"</code>, <code>\"sender\"</code>,\n<code>\"sender_display_name\"</code> и, самое главное: <code>\"text\"</code>. Кроме этого,\nв запросе будет http-заголовок <code>\"key\"</code>, равный API-ключу этой группы\n(<code>BWDydgHkSQ_2JSOiBDeEoR9KILo)</code>), чтобы вы могли убедиться, что запрос\nименно от нас. Если сервер ответит кодом, отличным от 200, запрос повторится\nещё 8 раз с нарастающим интервалом.</p>",
"kind": "raw",
"uid": "59917ec7-7c7d-4906-8f06-332ae9957eb3"
}
],
"kinds": [
{
"kind": "sentry",
"template": {
"comment": "Новая интеграция",
"enabled": true,
"form": {},
"kind": "sentry"
},
"title": "Sentry"
},
{
"kind": "bitbucket",
"template": {
"comment": "Новая интеграция",
"enabled": true,
"form": {},
"kind": "bitbucket"
},
"title": "Bitbucket"
},
{
"kind": "raw",
"template": {
"comment": "Новая интеграция",
"enabled": true,
"form": {
"webhook_url": {
"label": "Webhook URL",
"readonly": false,
"value": ""
}
},
"kind": "raw"
},
"title": "API/Webhook"
}
]
}
}
GET /api/v3/teams/{team_uid}/integrations/{integration_uid}
Пример ответа:
{
"_time": "109 ms",
"ok": true,
"result": {
"comment": "Новая API-интеграция",
"created": "2019-09-27T00:59:57.099755Z",
"enabled": true,
"form": {
"api_key": {
"label": "Ключ API",
"readonly": true,
"value": "BWDydgHkSQ_2JSOiBDeEoR9KILo"
},
"webhook_url": {
"label": "Webhook URL",
"readonly": false,
"value": ""
}
},
"group": "g-edb35028-b3ff-48ef-afc4-6fcd4c86b5ad",
"help": "<p>Для отправки сообщения надо сделать POST-запрос на адрес <code>http://127.0.0.1:8000/api/message</code> с параметрами:</p>\n<ul>\n <li>\n <code>key</code> API-ключ. Для этой команды и этой группы: <strong class=\"nowrap\">BWDydgHkSQ_2JSOiBDeEoR9KILo</strong>\n </li>\n <li>\n <code>message</code> само сообщение\n </li>\n</ul>\n\n<h2>Пример для командной строки</h2>\n<pre>curl http://127.0.0.1:8000/api/message \\\n -F key='BWDydgHkSQ_2JSOiBDeEoR9KILo' \\\n -F message='Ваше сообщение'</pre>\n\n<h2>Ответ</h2>\n<p>Если всё хорошо, сервер возвращает <code>{\"ok\": true}</code>. Если случается\nошибка, то <code>{\"ok\": false, \"error\": \"Описание ошибки\"}</code>.</p>\n\n<h2>Получение сообщений из чата</h2>\n<p>Если задан Webhook URL, на него при каждом новом сообщении будет отправаться POST-запрос с параметрами:\n<code>\"chat\"</code>,<code>\"chat_display_name\"</code>, <code>\"created\"</code>, <code>\"sender\"</code>,\n<code>\"sender_display_name\"</code> и, самое главное: <code>\"text\"</code>. Кроме этого,\nв запросе будет http-заголовок <code>\"key\"</code>, равный API-ключу этой группы\n(<code>BWDydgHkSQ_2JSOiBDeEoR9KILo)</code>), чтобы вы могли убедиться, что запрос\nименно от нас. Если сервер ответит кодом, отличным от 200, запрос повторится\nещё 8 раз с нарастающим интервалом.</p>",
"kind": "raw",
"uid": "59917ec7-7c7d-4906-8f06-332ae9957eb3"
}
}
PUT /api/v3/teams/{team_uid}/integrations/{integration_uid}
Изменение интеграции.
Пример запроса:
{
"comment": "Тест 123",
"group": "g-1b4c1070-2dfb-470e-84a4-f0017d49f1fc",
"webhook_url": "https://web.tada.team/api/webhook-test"
}
Пример ответа:
{
"_time": "268 ms",
"ok": true,
"result": {
"comment": "Тест 123",
"created": "2019-09-27T00:59:57.714882Z",
"enabled": true,
"form": {
"api_key": {
"label": "Ключ API",
"readonly": true,
"value": "BWDydgHkSQ_2JSOiBDeEoR9KILo"
},
"webhook_url": {
"label": "Webhook URL",
"readonly": false,
"value": "https://web.tada.team/api/webhook-test"
}
},
"group": "g-1b4c1070-2dfb-470e-84a4-f0017d49f1fc",
"help": "<p>Для отправки сообщения надо сделать POST-запрос на адрес <code>http://127.0.0.1:8000/api/message</code> с параметрами:</p>\n<ul>\n <li>\n <code>key</code> API-ключ. Для этой команды и этой группы: <strong class=\"nowrap\">BWDydgHkSQ_2JSOiBDeEoR9KILo</strong>\n </li>\n <li>\n <code>message</code> само сообщение\n </li>\n</ul>\n\n<h2>Пример для командной строки</h2>\n<pre>curl http://127.0.0.1:8000/api/message \\\n -F key='BWDydgHkSQ_2JSOiBDeEoR9KILo' \\\n -F message='Ваше сообщение'</pre>\n\n<h2>Ответ</h2>\n<p>Если всё хорошо, сервер возвращает <code>{\"ok\": true}</code>. Если случается\nошибка, то <code>{\"ok\": false, \"error\": \"Описание ошибки\"}</code>.</p>\n\n<h2>Получение сообщений из чата</h2>\n<p>Если задан Webhook URL, на него при каждом новом сообщении будет отправаться POST-запрос с параметрами:\n<code>\"chat\"</code>,<code>\"chat_display_name\"</code>, <code>\"created\"</code>, <code>\"sender\"</code>,\n<code>\"sender_display_name\"</code> и, самое главное: <code>\"text\"</code>. Кроме этого,\nв запросе будет http-заголовок <code>\"key\"</code>, равный API-ключу этой группы\n(<code>BWDydgHkSQ_2JSOiBDeEoR9KILo)</code>), чтобы вы могли убедиться, что запрос\nименно от нас. Если сервер ответит кодом, отличным от 200, запрос повторится\nещё 8 раз с нарастающим интервалом.</p>",
"kind": "raw",
"uid": "59917ec7-7c7d-4906-8f06-332ae9957eb3"
}
}
DELETE /api/v3/teams/{team_uid}/integrations/{integration_uid}
Удаление интеграции.
Пример ответа:
{
"_time": "30 ms",
"ok": true,
"result": null
}
Приглашение в команду
Приглашения в команду
POST /api/v3/teams/{team_uid}/invitations
Создаёт новое приглашение.
Пример запроса:
{}
Пример ответа:
{
"_time": "28 ms",
"ok": true,
"result": {
"created": "2019-09-27T00:59:57.803560Z",
"qr": "http://127.0.0.1:8000/api/v3/teams/3525d76d-cfe0-469f-b46e-cbb79ae5491e/invitations/_GPHfNsbkxiCR3jKq3CyESw8MMw.png",
"token": "_GPHfNsbkxiCR3jKq3CyESw8MMw",
"uid": "2d940647-ee41-4baa-9817-47b1a1d80ebe"
}
}
GET /api/v3/teams/{team_uid}/invitations
Информация о приглашениях.
Пример ответа:
{
"_time": "214 ms",
"ok": true,
"result": [
{
"created": "2019-09-27T00:59:57.803560Z",
"qr": "http://127.0.0.1:8000/api/v3/teams/3525d76d-cfe0-469f-b46e-cbb79ae5491e/invitations/_GPHfNsbkxiCR3jKq3CyESw8MMw.png",
"token": "_GPHfNsbkxiCR3jKq3CyESw8MMw",
"uid": "2d940647-ee41-4baa-9817-47b1a1d80ebe"
}
]
}
Приглашения в команду
GET /api/v3/teams/{team_uid}/invitations/{invitaion_uid}
Информация о приглашении.
QR-код — otv://qr-join/{host}/{token}
Токен надо отправить на {host}/api/v3/teams/join Если {host} не совпадает с текущим, пока выдавать ошибку.
Пример ответа:
{
"_time": "46 ms",
"ok": true,
"result": {
"created": "2019-09-27T00:59:57.803560Z",
"qr": "http://127.0.0.1:8000/api/v3/teams/3525d76d-cfe0-469f-b46e-cbb79ae5491e/invitations/_GPHfNsbkxiCR3jKq3CyESw8MMw.png",
"token": "_GPHfNsbkxiCR3jKq3CyESw8MMw",
"uid": "2d940647-ee41-4baa-9817-47b1a1d80ebe"
}
}
DELETE /api/v3/teams/{team_uid}/invitations/{invitaion_uid}
Удаляет приглашение.
Пример ответа:
{
"_time": "31 ms",
"ok": true,
"result": null
}
Присоединение по приглашению
POST /api/v3/teams/join
Присоединение к команде по приглашению. Принмает token
из приглашения.
Пример запроса:
{
"token": "_GPHfNsbkxiCR3jKq3CyESw8MMw"
}
Пример ответа:
{
"_time": "1.6 s",
"ok": true,
"result": {
"can_manage_sections": true,
"default_task_deadline": "18:00:00",
"icons": {
"stub": "http://127.0.0.1:8000/u/578e3c/%D1%82%D0%BE/256.png"
},
"last_active": false,
"max_message_update_age": 86400,
"me": {
"alt_send": false,
"can_add_to_group": true,
"can_create_task": true,
"can_delete": true,
"changeable_fields": [
"alt_send",
"contact_email",
"contact_mshort_view",
"contact_phone",
"contact_short_view",
"contact_show_archived",
"debug_show_activity",
"default_lang",
"family_name",
"given_name",
"group_mshort_view",
"group_notifications_enabled",
"group_short_view",
"icons",
"phone",
"role",
"task_mshort_view",
"task_notifications_enabled",
"task_short_view",
"unread_first"
],
"contact_email": "",
"contact_mshort_view": false,
"contact_phone": "+75550000001",
"contact_short_view": false,
"contact_show_archived": false,
"debug_show_activity": false,
"default_lang": null,
"display_name": "Контакт №2",
"family_name": "№2",
"given_name": "Контакт",
"group_mshort_view": false,
"group_notifications_enabled": true,
"group_short_view": false,
"icons": {
"stub": "http://127.0.0.1:8000/u/63bed3/%D0%9A%E2%84%96/256.png"
},
"jid": "d-e44a7419-1b44-4361-b994-170a37cb3325",
"last_activity": null,
"role": "",
"sections": [],
"status": "member",
"task_mshort_view": false,
"task_notifications_enabled": true,
"task_short_view": false,
"unread_first": false
},
"name": "третий отдельный особый конный полк Чапаевской дивизии",
"need_confirmation": true,
"uid": "3525d76d-cfe0-469f-b46e-cbb79ae5491e",
"unread": {
"direct": {
"chats": 0,
"messages": 0
},
"group": {
"chats": 0,
"messages": 0
},
"task": {
"chats": 0,
"messages": 0
}
}
}
}
Картинка команды.
POST /api/v3/teams/{team_uid}/icons
загрузка или замена картинки. Картинка автоматически уменьшится до нужных размеров.
Внимание! Здесь в теле запроса должен быть не json, а данные,
переданные в multipart/form-data в поле file
. Аналог для html:
<form method="post" enctype="multipart/form-data">
<input type="file" name="file">
</form>
Пример запроса:
{}
Пример ответа:
{
"_time": "2.4 s",
"ok": true,
"result": {
"lg": {
"height": 1024,
"url": "http://127.0.0.1:8000/u/65216b4f81bf470bbdf728ad971e2fd2/p/1x.jpg",
"width": 1736
},
"sm": {
"height": 256,
"url": "http://127.0.0.1:8000/u/65216b4f81bf470bbdf728ad971e2fd2/p/256.jpg",
"width": 256
}
}
}
DELETE /api/v3/teams/{team_uid}/icons
Удаление картинки, если есть
Пример ответа:
{
"_time": "732 ms",
"ok": true,
"result": {
"stub": "http://127.0.0.1:8000/u/578e3c/%D1%82%D0%BE/256.png"
}
}
name
— название команды, ничего неожиданного
GET /api/v3/teams/{team_uid}
Информация о команде.
Пример ответа:
{
"_time": "59 ms",
"ok": true,
"result": {
"bad_profile": true,
"can_add_to_team": true,
"can_manage_integrations": true,
"can_manage_sections": true,
"changeable_statuses": [
"guest",
"member",
"admin",
"owner"
],
"default_task_deadline": "18:00:00",
"icons": {
"stub": "http://127.0.0.1:8000/u/578e3c/%D1%82%D0%BE/256.png"
},
"last_active": false,
"max_message_update_age": 86400,
"me": {
"alt_send": false,
"can_add_to_group": true,
"can_create_task": true,
"can_delete": true,
"changeable_fields": [
"add_to_team_rights",
"alt_send",
"contact_email",
"contact_mshort_view",
"contact_phone",
"contact_short_view",
"contact_show_archived",
"debug_show_activity",
"default_lang",
"family_name",
"given_name",
"group_mshort_view",
"group_notifications_enabled",
"group_short_view",
"icons",
"phone",
"role",
"section",
"sections",
"status",
"task_mshort_view",
"task_notifications_enabled",
"task_short_view",
"unread_first"
],
"contact_email": "",
"contact_mshort_view": false,
"contact_phone": "+79166660002",
"contact_short_view": false,
"contact_show_archived": false,
"debug_show_activity": false,
"default_lang": null,
"display_name": "+7 (916) 666-0002",
"family_name": "",
"given_name": "",
"group_mshort_view": false,
"group_notifications_enabled": true,
"group_short_view": false,
"icons": {
"stub": "http://127.0.0.1:8000/u/e36659/02/256.png"
},
"jid": "d-b7d905b3-c011-4e1d-b85a-37d822a96100",
"last_activity": null,
"role": "",
"sections": [],
"status": "owner",
"task_mshort_view": false,
"task_notifications_enabled": true,
"task_short_view": false,
"unread_first": false
},
"name": "третий отдельный особый конный полк Чапаевской дивизии",
"need_confirmation": false,
"uid": "3525d76d-cfe0-469f-b46e-cbb79ae5491e",
"unread": {
"direct": {
"chats": 0,
"messages": 0
},
"group": {
"chats": 0,
"messages": 0
},
"task": {
"chats": 0,
"messages": 0
}
},
"uploads_size": 0,
"uploads_size_limit": 1073741824
}
}
PUT /api/v3/teams/{team_uid}
Изменение команды.
Рассылает события:
* server.team.updated
* server.contact.updated
(если изменился режим иерархии)
* server.group.updated
(если изменился режим иерархии)
Пример запроса:
{
"name": "иное название"
}
Пример ответа:
{
"_time": "450 ms",
"ok": true,
"result": {
"bad_profile": true,
"can_add_to_team": true,
"can_manage_integrations": true,
"can_manage_sections": true,
"changeable_statuses": [
"guest",
"member",
"admin",
"owner"
],
"default_task_deadline": "18:00:00",
"icons": {
"stub": "http://127.0.0.1:8000/u/578e3c/%D0%B8%D0%BD/256.png"
},
"last_active": false,
"max_message_update_age": 86400,
"me": {
"alt_send": false,
"can_add_to_group": true,
"can_create_task": true,
"can_delete": true,
"changeable_fields": [
"add_to_team_rights",
"alt_send",
"contact_email",
"contact_mshort_view",
"contact_phone",
"contact_short_view",
"contact_show_archived",
"debug_show_activity",
"default_lang",
"family_name",
"given_name",
"group_mshort_view",
"group_notifications_enabled",
"group_short_view",
"icons",
"phone",
"role",
"section",
"sections",
"status",
"task_mshort_view",
"task_notifications_enabled",
"task_short_view",
"unread_first"
],
"contact_email": "",
"contact_mshort_view": false,
"contact_phone": "+79166660002",
"contact_short_view": false,
"contact_show_archived": false,
"debug_show_activity": false,
"default_lang": null,
"display_name": "+7 (916) 666-0002",
"family_name": "",
"given_name": "",
"group_mshort_view": false,
"group_notifications_enabled": true,
"group_short_view": false,
"icons": {
"stub": "http://127.0.0.1:8000/u/e36659/02/256.png"
},
"jid": "d-b7d905b3-c011-4e1d-b85a-37d822a96100",
"last_activity": null,
"role": "",
"sections": [],
"status": "owner",
"task_mshort_view": false,
"task_notifications_enabled": true,
"task_short_view": false,
"unread_first": false
},
"name": "иное название",
"need_confirmation": false,
"uid": "3525d76d-cfe0-469f-b46e-cbb79ae5491e",
"unread": {
"direct": {
"chats": 0,
"messages": 0
},
"group": {
"chats": 0,
"messages": 0
},
"task": {
"chats": 0,
"messages": 0
}
},
"uploads_size": 0,
"uploads_size_limit": 1073741824
}
}
DELETE /api/v3/teams/{team_uid}
Удаление команды.
Рассылает события:
* server.team.deleted
Пример ответа:
{
"_time": "88 ms",
"ok": true,
"result": {
"bad_profile": true,
"can_add_to_team": true,
"can_manage_integrations": true,
"can_manage_sections": true,
"changeable_statuses": [
"guest",
"member",
"admin",
"owner"
],
"default_task_deadline": "18:00:00",
"icons": {
"stub": "http://127.0.0.1:8000/u/578e3c/%D0%B8%D0%BD/256.png"
},
"is_archive": true,
"last_active": false,
"max_message_update_age": 86400,
"me": {
"alt_send": false,
"can_add_to_group": true,
"can_create_task": true,
"can_delete": true,
"changeable_fields": [
"add_to_team_rights",
"alt_send",
"contact_email",
"contact_mshort_view",
"contact_phone",
"contact_short_view",
"contact_show_archived",
"debug_show_activity",
"default_lang",
"family_name",
"given_name",
"group_mshort_view",
"group_notifications_enabled",
"group_short_view",
"icons",
"phone",
"role",
"section",
"sections",
"status",
"task_mshort_view",
"task_notifications_enabled",
"task_short_view",
"unread_first"
],
"contact_email": "",
"contact_mshort_view": false,
"contact_phone": "+79166660002",
"contact_short_view": false,
"contact_show_archived": false,
"debug_show_activity": false,
"default_lang": null,
"display_name": "+7 (916) 666-0002",
"family_name": "",
"given_name": "",
"group_mshort_view": false,
"group_notifications_enabled": true,
"group_short_view": false,
"icons": {
"stub": "http://127.0.0.1:8000/u/e36659/02/256.png"
},
"jid": "d-b7d905b3-c011-4e1d-b85a-37d822a96100",
"last_activity": null,
"role": "",
"sections": [],
"status": "owner",
"task_mshort_view": false,
"task_notifications_enabled": true,
"task_short_view": false,
"unread_first": false
},
"name": "иное название",
"need_confirmation": false,
"uid": "3525d76d-cfe0-469f-b46e-cbb79ae5491e",
"unread": {
"direct": {
"chats": 0,
"messages": 0
},
"group": {
"chats": 0,
"messages": 0
},
"task": {
"chats": 0,
"messages": 0
}
},
"uploads_size": 0,
"uploads_size_limit": 1073741824
}
}
Место, используемое командой
Картинка команды.
GET /api/v3/teams/{team_uid}/usage
Информация о использовании места
Пример ответа:
{
"_time": "17 ms",
"ok": true,
"result": {
"by_months": [
{
"month": 10,
"uploads_size": 0,
"year": 2017
},
{
"month": 11,
"uploads_size": 0,
"year": 2017
},
{
"month": 12,
"uploads_size": 798123,
"year": 2017
},
{
"month": 1,
"uploads_size": 0,
"year": 2018
},
{
"month": 2,
"uploads_size": 0,
"year": 2018
},
{
"month": 3,
"uploads_size": 0,
"year": 2018
},
{
"month": 4,
"uploads_size": 0,
"year": 2018
},
{
"month": 5,
"uploads_size": 0,
"year": 2018
},
{
"month": 6,
"uploads_size": 0,
"year": 2018
},
{
"month": 7,
"uploads_size": 0,
"year": 2018
},
{
"month": 8,
"uploads_size": 0,
"year": 2018
},
{
"month": 9,
"uploads_size": 0,
"year": 2018
},
{
"month": 10,
"uploads_size": 0,
"year": 2018
},
{
"month": 11,
"uploads_size": 0,
"year": 2018
},
{
"month": 12,
"uploads_size": 0,
"year": 2018
},
{
"month": 1,
"uploads_size": 0,
"year": 2019
},
{
"month": 2,
"uploads_size": 0,
"year": 2019
},
{
"month": 3,
"uploads_size": 0,
"year": 2019
},
{
"month": 4,
"uploads_size": 0,
"year": 2019
},
{
"month": 5,
"uploads_size": 0,
"year": 2019
},
{
"month": 6,
"uploads_size": 0,
"year": 2019
},
{
"month": 7,
"uploads_size": 0,
"year": 2019
},
{
"month": 8,
"uploads_size": 0,
"year": 2019
},
{
"month": 9,
"uploads_size": 36025984,
"year": 2019
}
],
"uploads_size": 36025984,
"uploads_size_limit": 108077952
}
}
ws через http
POST /api/v3/teams/{team_uid}/ws/{client_event_name}
Отправка ws-события через api. Ответ прилетит по ws.
Пример запроса:
{
"content": {
"text": "пыщ!",
"type": "plain"
},
"to": "d-a2d94e8e-74aa-4b0b-b55d-0b4fc1ce07f4"
}
Пример ответа:
{
"_time": "425 ms",
"ok": true,
"result": {
"chat": "d-a2d94e8e-74aa-4b0b-b55d-0b4fc1ce07f4",
"chat_type": "direct",
"content": {
"text": "пыщ!",
"type": "plain"
},
"created": "2019-09-27T01:00:04.005231Z",
"editable_until": "2019-09-27T01:00:04.005231Z",
"from": "d-0b1b2362-fb69-4dd6-8bfb-90c89517168d",
"gentime": 1569546004009720191,
"message_id": "1c932181-aece-4f11-8d36-757bc478d86e",
"prev": "0a78549a-ea3a-4fba-8fa7-a72c8261b9b8",
"to": "d-a2d94e8e-74aa-4b0b-b55d-0b4fc1ce07f4"
}
}