Примеры использования
Практические примеры работы с API EMD Cloud для типичных задач.
примечание
В примерах используется {app-id} как плейсхолдер для идентификатора вашего пространства. Замените его на реальный ID из URL вашего пространства.
Базовая настройка
Получение токена авторизации
Перед работой с API необходимо получить JWT токен:
curl -X POST https://api.emd.one/api/app/{app-id}/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"password": "your-password"
}'
Ответ:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"_id": "507f1f77bcf86cd799439011",
"email": "user@example.com",
"name": "Иван Петров"
}
}
Используйте полученный token в заголовке Authorization: Bearer {token} для всех последующих запросов.
Работа с базой данных
Создание записи
// JavaScript (fetch)
const response = await fetch(
'https://api.emd.one/api/app/{app-id}/database/users',
{
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Анна Смирнова',
email: 'anna@example.com',
age: 28,
role: 'manager'
})
}
);
const newUser = await response.json();
console.log('Создан пользователь:', newUser._id);
Получение списка записей с фильтрацией
# Python (requests)
import requests
url = 'https://api.emd.one/api/app/{app-id}/database/users'
headers = {
'Authorization': 'Bearer YOUR_TOKEN'
}
params = {
'filter[age][$gte]': 18, # Возраст >= 18
'filter[role]': 'manager', # Роль = manager
'sort': '-createdAt', # Сортировка по дате создания (новые первые)
'limit': 20
}
response = requests.get(url, headers=headers, params=params)
users = response.json()
for user in users['data']:
print(f"{user['name']} - {user['email']}")
Обновление записи
# cURL
curl -X PUT \
https://api.emd.one/api/app/{app-id}/database/users/507f1f77bcf86cd799439011 \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Анна Смирнова-Иванова",
"age": 29
}'
Удаление записи
// JavaScript (fetch)
await fetch(
'https://api.emd.one/api/app/{app-id}/database/users/507f1f77bcf86cd799439011',
{
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_TOKEN'
}
}
);
Работа с файлами
Загрузка файла
// JavaScript (FormData)
const formData = new FormData();
formData.append('file', fileInput.files[0]);
const response = await fetch(
'https://api.emd.one/api/app/{app-id}/storage/upload',
{
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_TOKEN'
},
body: formData
}
);
const fileData = await response.json();
console.log('Файл загружен:', fileData.url);
Получение списка файлов
# Python
import requests
url = 'https://api.emd.one/api/app/{app-id}/storage'
headers = {'Authorization': 'Bearer YOUR_TOKEN'}
response = requests.get(url, headers=headers)
files = response.json()
for file in files['data']:
print(f"{file['name']} - {file['size']} bytes")
Скачивание файла
# cURL
curl -X GET \
https://api.emd.one/api/app/{app-id}/storage/FILE_ID/download \
-H "Authorization: Bearer YOUR_TOKEN" \
-o downloaded_file.pdf
Работа с чатами
Отправка сообщения
// JavaScript
const response = await fetch(
'https://api.emd.one/api/app/{app-id}/chats/CHANNEL_ID/messages',
{
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
text: 'Привет! Как дела?',
type: 'text'
})
}
);
const message = await response.json();
Получение истории сообщений
# Python
import requests
url = 'https://api.emd.one/api/app/{app-id}/chats/CHANNEL_ID/messages'
headers = {'Authorization': 'Bearer YOUR_TOKEN'}
params = {
'limit': 50,
'offset': 0
}
response = requests.get(url, headers=headers, params=params)
messages = response.json()
for msg in messages['data']:
print(f"{msg['author']['name']}: {msg['text']}")
Создание канала
# cURL
curl -X POST \
https://api.emd.one/api/app/{app-id}/chats/channels \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Общий чат",
"type": "group",
"members": ["USER_ID_1", "USER_ID_2"]
}'
Управление пользователями
Создание пользователя (администратор)
// JavaScript
const response = await fetch(
'https://api.emd.one/api/app/{app-id}/users',
{
method: 'POST',
headers: {
'Authorization': 'Bearer ADMIN_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
email: 'newuser@example.com',
password: 'secure-password',
name: 'Новый Пользователь',
role: 'user'
})
}
);
Получение списка пользователей
# Python
import requests
url = 'https://api.emd.one/api/app/{app-id}/users'
headers = {'Authorization': 'Bearer ADMIN_TOKEN'}
params = {
'limit': 100,
'sort': 'name'
}
response = requests.get(url, headers=headers, params=params)
users = response.json()
Работа с вебхуками
Создание вебхука
// JavaScript
const response = await fetch(
'https://api.emd.one/api/app/{app-id}/webhooks',
{
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Уведомление о новом пользователе',
url: 'https://your-service.com/webhook',
events: ['user.created'],
active: true
})
}
);
Управление сценариями
Запуск сценария
# cURL
curl -X POST \
https://api.emd.one/api/app/{app-id}/scenarios/SCENARIO_ID/activate \
-H "Authorization: Bearer YOUR_TOKEN"
Остановка сценария
// JavaScript
await fetch(
'https://api.emd.one/api/app/{app-id}/scenarios/SCENARIO_ID/deactivate',
{
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_TOKEN'
}
}
);
Обработка ошибок
Пример обработки ошибок
// JavaScript
async function createUser(userData) {
try {
const response = await fetch(
'https://api.emd.one/api/app/{app-id}/database/users',
{
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify(userData)
}
);
if (!response.ok) {
const error = await response.json();
if (response.status === 401) {
console.error('Ошибка авторизации:', error.message);
// Обновить токен или перенаправить на логин
} else if (response.status === 422) {
console.error('Ошибка валидации:', error.details);
// Показать пользователю ошибки валидации
} else {
console.error('Ошибка API:', error.message);
}
throw new Error(error.message);
}
return await response.json();
} catch (error) {
console.error('Ошибка запроса:', error);
throw error;
}
}
Использование SDK
Для упрощения работы с API рекомендуется использовать официальный SDK:
// JavaScript SDK
import { EMDClient } from '@emd-cloud/sdk';
const client = new EMDClient({
appId: 'your-app-id',
token: 'your-jwt-token'
});
// Создание записи
const user = await client.database('users').create({
name: 'Иван Петров',
email: 'ivan@example.com'
});
// Получение записей с фильтрацией
const managers = await client.database('users')
.filter({ role: 'manager' })
.sort('-createdAt')
.limit(20)
.get();
// Загрузка файла
const file = await client.storage.upload(fileBlob);
Подробнее о SDK читайте в разделе SDK.
Что дальше?
- Интерактивная документация — протестируйте методы в браузере
- Обзор методов — изучите все доступные группы методов
- JavaScript SDK — используйте готовую библиотеку