Перейти к основному содержимому

Примеры использования

Практические примеры работы с 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.


Что дальше?