API Legal Profiles - rubyhat/fastyshop-backend GitHub Wiki
🏛️ Юридический профиль продавца (LegalProfiles API)
Контроллер: Api::V1::LegalProfilesController
Версия: v1
Слой: Аутентифицированный API
Все методы требуют access-токен. Некоторые действия доступны только администраторам.
📘 Общая логика
- Каждый
SellerProfileможет иметь до двух юридических профилей (LegalProfile) - Профиль используется при создании магазина
- Юр. лица подтверждаются администратором вручную (
is_verified) - Только владелец
SellerProfileили администратор может редактировать или просматривать юр. профиль
📄 Методы
🆕 POST /api/v1/legal_profiles
Создание юридического профиля
🔹 Входные параметры
| Поле | Тип | Обязательный | Пример |
|---|---|---|---|
| company_name | string | ✅ | ИП Иванов И.И. |
| tax_id | string | ✅ | 123456789012 |
| country_code | string | ✅ | KZ |
| legal_address | string | ✅ | г. Алматы, ул. Абая, д. 10 |
| legal_form | string | ✅ | Индивидуальный предприниматель |
| seller_profile_id | UUID | ✅ | UUID seller-профиля |
✅ Ответ (201 Created)
{
"id": "lp-uuid",
"company_name": "ИП Иванов И.И.",
"is_verified": false
}
✅ Чек-лист
| Пункт | Значение |
|---|---|
| 🔒 Требуется access token | ✅ Да |
| 🔐 Политики доступа | Только владелец SellerProfile |
| 🔗 Зависимости | Продавец должен иметь SellerProfileИметь < 2 юридических профилей |
📋 Валидации
- Только страны KZ и RU
tax_id— уникален- Максимум два юридических профиля на один
SellerProfile - Все поля обязательны, кроме верификации
- Если профиль был верифицирован
is_verified: true, то пользователь не может редактировать профиль. Он должен сначала сбросить верификацию при помощи метода/unverify - Пользователь может редактировать профиль только при
is_verified: false - Пользователь не может сам себе установить
is_verified: true
💼 Бизнес-логика
- Проверка уникальности ИНН
- Проверка количества существующих юридических профилей
- Новый профиль автоматически
is_verified: false - Может быть использован при создании магазина
📚 Кейсы использования
🏢 Кейс 1: Продавец добавляет юр. лицо
После создания профиля продавца он добавляет данные юр. лица для использования в магазине.
🚫 Кейс 2: Превышен лимит в 2 профиля
При попытке создать 3-й юридический профиль — ошибка 422.
📂 GET /api/v1/legal_profiles
Получение всех юр. профилей текущего пользователя
✅ Ответ
[
{
"id": "lp-uuid",
"company_name": "ИП Иванов И.И.",
"is_verified": false
}
]
🔍 GET /api/v1/legal_profiles/:id
Получение одного юр. профиля
✅ Ответ
{
"id": "lp-uuid",
"company_name": "ИП Иванов И.И.",
"tax_id": "123456789012",
"country_code": "KZ",
"legal_form": "ИП",
"is_verified": true
}
✏️ PATCH /api/v1/legal_profiles/:id
Редактирование профиля (если is_verified = false)
🔹 Поля для редактирования:
company_nametax_idcountry_codelegal_addresslegal_form
✅ Ответ
{
"id": "lp-uuid",
"company_name": "ИП Обновлённый"
}
✅ Чек-лист
| Пункт | Значение |
|---|---|
| 🔒 Требуется access token | ✅ Да |
| 🔐 Политики доступа | Только владелец |
| 🔗 Зависимости | Только если не подтверждён |
📚 Кейсы использования
- Продавец исправляет адрес юр. лица до верификации
- Админ вручную верифицирует через админку
🔁 PATCH /api/v1/legal_profiles/:id/unverify
Сброс верификации админом
✅ Ответ
{
"id": "lp-uuid",
"is_verified": false
}
📚 Кейсы использования
- Админ снимает верификацию перед повторной проверкой
- Продавец вновь получает возможность редактирования
🧩 Связанные сущности
| Сущность | Назначение |
|---|---|
LegalProfile |
Юр. лицо продавца |
SellerProfile |
Продавец-владелец |
User |
Через SellerProfile |
Shop |
Связан с LegalProfile при создании |
📄 TODO / Идеи
- Интеграция с базой налоговых для автоподтверждения
- Визуальный статус верификации
- Уведомление администратора о новых заявках
- Загрузка PDF документов
- Поддержка юр. форм по странам