TenderPoint API · справочная стартовая страница · backend for procurement intelligence by mars

TenderPoint API

Материал из технической справки TenderPoint. API предназначен для поиска, импорта, хранения и анализа сведений о государственных закупках ЕИС.

TenderPoint API — backend-сервис для приложения TenderPoint, предназначенный для работы с данными государственных закупок из Единой информационной системы в сфере закупок, включая поиск закупок, импорт XML/ZIP, извлечение документов, хранение карточек закупок и передачу данных в iOS-приложение.

Система построена на FastAPI, использует PostgreSQL для хранения данных и поддерживает два источника информации: живой поиск по ЕИС и локальную базу, сформированную из XML/ZIP-выгрузок.

Базовый адрес API: https://tenderpoint-api.ru. Интерактивная документация доступна по адресу /docs.

Общее описание

TenderPoint API решает задачу агрегации закупочной информации из ЕИС и подготовки её к удобному использованию в мобильном приложении. API умеет получать сведения о закупках, объединять данные из разных источников, сохранять файлы закупки и отдавать карточку закупки единым JSON-ответом.

Сервис ориентирован на читающий сценарий: получение, структурирование и анализ данных. Отправка документов в ЕИС, работа с электронной подписью и SOAP-интеграцией относятся ко второму этапу развития проекта.

Архитектура

Общая схема работы:

iOS-приложение TenderPoint
        ↓
Tenderpoint-API backend
        ↓
PostgreSQL
        ↓
Парсеры XML/ZIP ЕИС
        ↓
Карточка закупки · документы · жизненный цикл

Backend использует несколько логических контуров:

  • живой поиск ЕИС — получение данных с публичных страниц zakupki.gov.ru;
  • локальная XML-база — импорт XML/ZIP и сохранение данных в PostgreSQL;
  • карточка закупки — объединение сведений о закупке и файлов;
  • избранное — сохранение закупок пользователем;
  • API-ключи — авторизация внешних клиентов.

Авторизация

Для защищённых API-запросов используется заголовок:

X-API-Key: ВАШ_API_КЛЮЧ

API-ключ создаётся в личном кабинете пользователя. Старые ключи после сброса пользователей становятся недействительными.

Основные endpoints

Метод Endpoint Назначение
GET /health Проверка работоспособности сервера.
GET /docs Swagger-документация FastAPI.
GET /api/v1/search/procurements Единый поиск закупок для iOS: local, eis или all.
GET /api/v1/search/procurements/{purchase_number}/card Единая карточка закупки: данные закупки и файлы.
GET /api/v1/contracts/search Живой поиск по данным ЕИС.
GET /api/v1/contracts/{purchase_number}/files Получение файлов закупки из HTML/ XML-источников.
GET /procurements/search Поиск по локальной базе импортированных XML-закупок.
GET /procurements/{purchase_number}/card Карточка закупки из локальной XML-базы.
POST /eis/import/xml Импорт одного XML-файла ЕИС.
POST /eis/import/zip Импорт ZIP-архива с XML-файлами ЕИС.
GET /api/v1/favorites Получение избранных закупок пользователя.
POST /api/v1/favorites Добавление закупки в избранное.
DELETE /api/v1/favorites/{favorite_id} Удаление закупки из избранного.

Импорт XML/ZIP ЕИС

TenderPoint API поддерживает импорт XML-документов ЕИС и ZIP-архивов, содержащих несколько XML-файлов. При импорте система определяет номер закупки, название, заказчика, ИНН, цену, статус, регион, закон, способ закупки и список файлов.

Данные сохраняются в таблицы:

  • procurements — карточки закупок;
  • procurement_files — файлы закупок;
  • raw_eis_xml — исходные XML-документы.

Использование в iOS

Для iOS-приложения рекомендуется использовать единый API-контур:

Экран iOS Endpoint
Проверка сервера GET /health
Поиск закупок GET /api/v1/search/procurements
Карточка закупки GET /api/v1/search/procurements/{purchase_number}/card
Избранное GET /api/v1/favorites

Примеры запросов

Проверка API

curl https://tenderpoint-api.ru/health

Поиск закупок

curl -G "https://tenderpoint-api.ru/api/v1/search/procurements" \
  --data-urlencode "source=local" \
  --data-urlencode "query=бумага" \
  -H "X-API-Key: ВАШ_API_КЛЮЧ"

Получение карточки закупки

curl "https://tenderpoint-api.ru/api/v1/search/procurements/0373100001026000001/card" \
  -H "X-API-Key: ВАШ_API_КЛЮЧ"

Импорт XML

curl -X POST "https://tenderpoint-api.ru/eis/import/xml" \
  -F "file=@notice.xml"

Текущее состояние

Статус сервера: работает. Основной публичный адрес: https://tenderpoint-api.ru. Доступ к API осуществляется через HTTPS.