API Документация
Полное описание REST API платформы "Мои Закупки" для интеграции с внешними системами
Обзор API
API платформы "Мои Закупки" предоставляет программный доступ к справочникам ОКПД-2 и КТРУ, каталогу товаров, а также функционалу создания технических заданий.
Base URL
https://moy-zakupki.ru/api Формат
JSON (REST API) Аутентификация
Для доступа к приватным эндпоинтам используется JWT (JSON Web Token) аутентификация.
Получение токена
/auth/jwt/create/Request body:
{
"email": "user@example.com",
"password": "your_password"
}Response:
{
"access": "eyJ0eXAiOiJKV1QiLCJhbGc...",
"refresh": "eyJ0eXAiOiJKV1QiLCJhbGc..."
}Использование токена
Добавьте заголовок Authorization к запросам:
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGc...ОКПД-2 (Классификатор)
/okpd2/Получить список всех кодов ОКПД-2 с пагинацией
Query параметры:
pageНомер страницы (по умолчанию: 1)page_sizeКоличество записей на страницеsearchПоиск по коду или названиюПример ответа:
{
"count": 20372,
"next": "https://moy-zakupki.ru/api/okpd2/?page=2",
"previous": null,
"results": [
{
"code": "01.11.11.110",
"name": "Пшеница твердая",
"is_actual": true,
"parent_code": "01.11.11",
"level": 4
}
]
}/okpd2/{'{code}'}/ Получить детальную информацию о коде ОКПД-2
Пример ответа:
{
"code": "01.11.11.110",
"name": "Пшеница твердая",
"is_actual": true,
"parent_code": "01.11.11",
"level": 4,
"children": [],
"ktru_codes": [
{
"code": "26.20.11.110-00000001",
"name": "Пшеница продовольственная..."
}
],
"limitations": [
{
"type": "44-ФЗ",
"description": "Описание ограничения..."
}
]
}КТРУ (Каталог товаров)
/ktru/Получить список позиций КТРУ с характеристиками
Query параметры:
okpd_codeФильтр по коду ОКПД-2searchПоиск по коду или названиюis_consolidatedФильтр укрупненных позиций (true/false)Пример ответа:
{
"count": 77000,
"results": [
{
"code": "26.20.11.110-00000165",
"name": "Компьютеры портативные...",
"okpd_code": "26.20.11.110",
"is_last_version": true,
"is_consolidated": false,
"characteristics": [
{
"name": "Диагональ экрана",
"type": "обязательная",
"value_type": "число",
"unit": "дюймы",
"values": ["15.6", "17.3"]
}
]
}
]
}/ktru/{'{code}'}/Получить детальную информацию о позиции КТРУ
Пример ответа:
{
"code": "26.20.11.110-00000165",
"name": "Компьютеры портативные массой не более 10 кг...",
"okpd_code": "26.20.11.110",
"is_last_version": true,
"is_consolidated": false,
"characteristics": [
{
"id": 12345,
"name": "Диагональ экрана",
"type": "обязательная",
"value_type": "число",
"unit": "дюймы",
"min_value": "13.0",
"max_value": "17.3",
"values": ["13.3", "15.6", "17.3"]
}
],
"limitations": [...],
"products_count": 156
}Каталог товаров
/products/Поиск товаров с фильтрацией по характеристикам КТРУ
Query параметры:
ktru_codeКод КТРУ для фильтрацииcharacteristicsJSON с характеристиками для фильтрацииsearchПоиск по названиюПример ответа:
{
"count": 156,
"results": [
{
"id": "uuid-here",
"name": "Ноутбук Dell Latitude 15.6\"",
"seo_url": "noutbuk-dell-latitude-156",
"ktru_code": "26.20.11.110-00000165",
"characteristics": {
"Диагональ экрана": "15.6",
"Процессор": "Intel Core i5",
"ОЗУ": "16"
},
"price": 65000,
"currency": "RUB"
}
]
}/products/{'{id}'}/Получить детальную информацию о товаре
Технические задания
/tech-specs/Получить список технических заданий пользователя
Требуется аутентификация: JWT токен в заголовке Authorization
Пример ответа:
{
"count": 5,
"results": [
{
"id": 123,
"name": "Закупка оргтехники 2026",
"products_count": 15,
"created_at": "2025-01-15T10:30:00Z",
"updated_at": "2025-01-20T14:45:00Z",
"is_deleted": false
}
]
}/tech-specs/Создать новое техническое задание
Request body:
{
"name": "Закупка оргтехники 2026",
"products": [
{
"ktru_code": "26.20.11.110-00000165",
"quantity": 10,
"characteristics": {
"Диагональ экрана": "15.6",
"Процессор": "Intel Core i5"
}
}
]
}/tech-specs/{'{id}'}/export/Экспортировать техническое задание
Query параметры:
formatФормат экспорта: docx, pdf, xlsxКоды ошибок
400Bad Request
Некорректные параметры запроса
401Unauthorized
Требуется аутентификация или токен истек
403Forbidden
Недостаточно прав доступа
404Not Found
Ресурс не найден
429Too Many Requests
Превышен лимит запросов (rate limit)
500Internal Server Error
Внутренняя ошибка сервера
Ограничения
Для обеспечения стабильности сервиса действуют ограничения на частоту запросов:
Анонимные запросы
запросов в час с одного IP
Аутентифицированные
запросов в час для пользователя
Заголовки ответа при rate limiting:
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 995
X-RateLimit-Reset: 1642345678Примеры кода
JavaScript (Fetch API)
// Получение JWT токена
async function getAuthToken(email, password) {
const response = await fetch('https://moy-zakupki.ru/api/auth/jwt/create/', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ email, password })
});
const data = await response.json();
return data.access; // JWT токен
}
// Получение списка КТРУ
async function getKtruList(token) {
const response = await fetch('https://moy-zakupki.ru/api/ktru/?page=1', {
headers: {
'Authorization': `Bearer ${token}`
}
});
return await response.json();
}
// Использование
const token = await getAuthToken('user@example.com', 'password');
const ktruData = await getKtruList(token);
console.log(ktruData);Python (requests)
import requests
# Получение JWT токена
def get_auth_token(email, password):
url = 'https://moy-zakupki.ru/api/auth/jwt/create/'
data = {'email': email, 'password': password}
response = requests.post(url, json=data)
return response.json()['access']
# Получение списка КТРУ
def get_ktru_list(token, page=1):
url = f'https://moy-zakupki.ru/api/ktru/?page={page}'
headers = {'Authorization': f'Bearer {token}'}
response = requests.get(url, headers=headers)
return response.json()
# Использование
token = get_auth_token('user@example.com', 'password')
ktru_data = get_ktru_list(token)
print(ktru_data)cURL
# Получение JWT токена
curl -X POST https://moy-zakupki.ru/api/auth/jwt/create/ \
-H "Content-Type: application/json" \
-d '{"email": "user@example.com", "password": "your_password"}'
# Получение списка КТРУ с токеном
curl -X GET "https://moy-zakupki.ru/api/ktru/?page=1" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
# Поиск товаров по характеристикам
curl -X GET "https://moy-zakupki.ru/api/products/?ktru_code=26.20.11.110-00000165" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"