Задание: Веб-программист. Разработка безопасного API-слоя — 7 endpoints + 4 webhook (Дистанционная работа)
Стоимость сделки: 7 000 ₽ Цель работы Разработать и протестировать безопасный API-слой для дальнейшего подключения CRM и AI-продавца. CRM/AI-продавец не должен иметь прямого доступа к базе данных. Все взаимодействие должно выполняться только через подготовленный и защищённый API-слой. Объём работ 1. API - 7 endpoints Реализовать и протестировать согласованные 7 API endpoints. До начала разработки необходимо согласовать со мной по каждому endpoint: - назначение; - HTTP-метод; - параметры запроса; - формат ответа; - передаваемые данные; - права доступа. CRM должна получать только необходимые ей данные. 2. Webhooks - 4 шт. Реализовать 4 webhook для передачи событий из сайта CRM. Для каждого webhook согласовать: - событие-триггер; - структуру данных; - формат запроса; - формат ответа; - обработку ошибок; - защиту от повторной обработки одинаковых запросов. 3. Безопасность и авторизация Реализовать: - API Token; - защиту внешних endpoints; - запрет неавторизованных запросов; - возможность отзыва/замены доступа; - безопасное хранение токенов; - защиту webhook; - HMAC-подпись, если предусмотрена схемой; - Rate Limiting; - Scopes и разграничение прав доступа. Прямой доступ CRM/AI-продавца к БД сайта не допускается. 4. Логирование и ошибки Реализовать: - логирование API-запросов; - логирование ошибок; - корректные HTTP-коды; - понятные сообщения об ошибках; - защиту от повторной обработки webhook при необходимости. 5. Staging и тестирование Вся разработка сначала выполняется на staging. Production до завершения тестирования и моего подтверждения не изменяется. На staging проверить: - авторизованные запросы; - неавторизованные запросы; - все 7 endpoints; - все 4 webhook; - API responses; - ошибки и HTTP-коды; - ограничения доступа; - Rate Limiting; - защиту webhook; - корректность передачи данных. После успешного тестирования подготовить результат к переносу на production. 6. Swagger / OpenAPI Предоставить актуальную Swagger/OpenAPI документацию: - endpoints; - HTTP-методы; - параметры; - ответы; - авторизация; - webhook; - возможные ошибки; - примеры запросов и ответов. 7. Передача результата заказчику После полного завершения работы исполнитель обязан передать заказчику: 1. Полный актуальный исходный код всех реализованных в рамках сделки функций. 2. Все необходимые конфигурационные данные для дальнейшей эксплуатации. 3. Swagger/OpenAPI документацию. 4. Описание API endpoints и webhook. 5. Данные, необходимые для дальнейшего подключения CRM и AI-продавца. 6. Инструкцию по запуску и развёртыванию. 7. Информацию о необходимых environment variables и настройках. 8. Все созданные в рамках работы API-токены/ключи либо безопасный способ их дальнейшего создания и управления. 9. Необходимые доступы к staging, репозиторию и связанным сервисам, созданным или настроенным в рамках данной работы. Все логины, пароли, токены и доступы, которые принадлежат или были созданы специально для проекта в рамках данной работы, после завершения должны быть полностью переданы заказчику либо переданы через безопасный способ смены владельца/пароля. После передачи заказчик должен иметь полный контроль над результатом работы и возможность самостоятельно продолжить эксплуатацию и дальнейшую разработку без обязательной зависимости от исполнителя. 8. Приёмка Работа считается выполненной только после: - демонстрации работающего результата на staging; - проверки 7 API endpoints; - проверки 4 webhook; - проверки авторизации и защиты; - проверки основных сценариев тестирования; - передачи актуальной документации; - передачи исходного кода; - передачи необходимых доступов и данных для дальнейшей эксплуатации; - подтверждения результата заказчиком. Если обнаружены ошибки или несоответствия согласованному ТЗ, относящиеся к заявленному объёму работ, исполнитель исправляет их в рамках данной сделки. 9. Ограничения В данную сделку не входит разработка самой CRM и AI-продавца. Дополнительные endpoints, webhook или другой функционал, не входящий в согласованный объём, оформляются отдельной сделкой. Исполнитель не должен самостоятельно добавлять, удалять или изменять функционал без согласования с заказчиком. Все изменения сначала выполняются на staging. Production изменяется только после успешного тестирования и подтверждения заказчиком.