GET /api/v1/platform/receipts — Реестр актов поступления средств
Постраничный реестр актов поступления средств для финансового оператора ПИН: номера, застройщики, суммы,
сходимость и статусы (Draft / Registered / Cancelled) с фильтрами по застройщику, статусу и периоду
(domain/platform-receipt.md).
Назначение
Финансовый оператор ПИН просматривает все акты платформы: черновики в работе (сверка с платёжками),
зарегистрированные (финансовые документы) и отменённые — чтобы контролировать, по каким поступлениям гейт
получения денег ещё не пройден. Feature group — receipts.
Metadata
| Поле | Значение |
|---|---|
| Сервис/контекст | rewards |
| API area | platform |
| Feature group | receipts |
| Статус | draft |
| Документ | docs/06-services/rewards/api/platform/list-platform-receipts.md |
Актор и доступ
| Проверка | Значение |
|---|---|
| Actor type | User (финансовый оператор ПИН) |
| Auth policy / Permissions | rewards.receipts.manage |
| Scope (RBAC) | платформа |
| Tenant isolation | вне tenant-модели — платформенный реестр (ADR-0052); агентства и застройщики акты не видят |
| Audit | read-sensitive (суммы поступлений): в trace — actor + фильтры + TotalCount; суммы не логируются |
HTTP-контракт
| Поле | Значение |
|---|---|
| Method | GET |
| Route | /api/v1/platform/receipts |
| Success status | 200 |
| Correlation | сквозной trace через заголовок traceparent |
Входные данные / параметры запроса
| Поле | Источник | Тип | Обязательность | Валидация / Ограничения | Безопасность |
|---|---|---|---|---|---|
DeveloperCompanyId | query | Guid? | Нет | непустой Guid, если задан | — |
Status | query | PlatformReceiptStatus? | Нет | enum Draft/Registered/Cancelled | — |
CreatedFrom | query | DateTimeOffset? | Нет | нижняя граница CreatedAt (включительно) | — |
CreatedTo | query | DateTimeOffset? | Нет | верхняя граница CreatedAt (исключительно); > CreatedFrom, если обе заданы | — |
Page / PageSize | query | int | Нет | paging-конвенция — README.md (Page >= 1, PageSize 1..100) | — |
Модель ответа — постраничный список PlatformReceiptModel
Постраничный ответ: Items (список PlatformReceiptModel), Page, PageSize, TotalCount
(paging-конвенция — README.md). Проекция — дом
create-platform-receipt.md («PlatformReceiptModel»).
Дельта проекции для списка: Items (позиции PlatformReceiptItemModel) отдаётся пустой
коллекцией — дочерние platform_receipt_items в реестр не джойнятся; детализация состава — отдельным
запросом одного акта (см. «Смежные операции»). ItemsTotal в списке вычисляется агрегатом по позициям
(предпросмотр сходимости для Draft-строк реестра).
Алгоритм
Тривиальное постраничное чтение: проверить право rewards.receipts.manage (иначе FORBIDDEN) и параметры
фильтра (enum Status, CreatedTo > CreatedFrom, paging — иначе ValidationError); прочитать страницу
актов по фильтрам DeveloperCompanyId / Status / границы CreatedAt с сортировкой CreatedAt DESC
(свежие сверху; опорные индексы — ix_platform_receipts_developer, ix_platform_receipts_created_at);
спроецировать в PlatformReceiptModel (Items = []) и вернуть 200. Чтение строго согласовано с
записью: только что зарегистрированный акт сразу виден со статусом Registered.
Ошибки и failure modes
Специфичных REWARDS_*-кодов у read-операции нет; общие коды (ValidationError 400 — Status вне enum,
CreatedTo <= CreatedFrom, PageSize вне 1..100; FORBIDDEN 403; UNAUTHORIZED 401) — дом
README.md «Общие ошибки».
Acceptance criteria
- AC-1 (реестр). Given есть акты в разных статусах по нескольким застройщикам; When оператор
запрашивает список без фильтров; Then
200, акты поCreatedAtDESC, у каждого —Number,DeveloperCompanyId,Amount,ItemsTotal,ItemsCount,Status, даты переходов;Items = []. - AC-2 (фильтры). Given те же данные; When заданы
DeveloperCompanyIdи/илиStatus = Draftи/или границыCreatedFrom/CreatedTo; Then в выдаче только строки под все заданные условия (логическое И);CreatedFromвключителен,CreatedToисключителен. - AC-3 (пустой результат). Given нет актов под фильтр или
Pageза последней страницей; Then200,Items = [], корректныйTotalCount(не404). - AC-4 (детализация — отдельным запросом). Given строка реестра с
ItemsCount = 12; When оператор открывает акт; Then позиции загружаются запросом одного акта (getPlatformReceipt, см. «Смежные операции»), в списке они не передаются. - AC-5 (валидация фильтра). Given
Statusвне enum илиCreatedTo <= CreatedFrom; ThenValidationError(400). - AC-6 (доступ). Given актор без
rewards.receipts.manage(в т.ч. руководитель агентства, менеджер застройщика); When запрос; ThenFORBIDDEN(403) — акты видит только финансовый оператор ПИН; агентству/застройщику виден лишь эффект по своим начислениям (MoneyReceived,PlatformReceiptId). - AC-7 (свежесть). Given акт только что зарегистрирован; When сразу запрошен реестр; Then
строка уже в статусе
Registered(строгая согласованность чтения внутриrewards).
Смежные операции (тонкая дельта)
- getPlatformReceipt —
GET /api/v1/platform/receipts/{receiptId}(rewards.receipts.manage): полная проекция одного акта с позициями (PlatformReceiptModel,Itemsзаполнены — дом create-platform-receipt.md) и актуальным предпросмотромItemsTotal; не найден →REWARDS_RECEIPT_NOT_FOUND(404). Используется для сверки состава перед регистрацией (register-platform-receipt.md).
Совместимость и наблюдаемость
PlatformReceiptModel— общая проекция области (дом create-platform-receipt.md): новые optional-поля — additive; удаление/ переименование/смена типа — breaking. Новые значенияPlatformReceiptStatus— по unknown-enum-правилу.- Logs: фильтры (
DeveloperCompanyId,Status, границы дат),TotalCount(суммы не логируются); metrics:rewards_api_request_duration_seconds{route}; traces: OTel, correlation черезtraceparent; dashboardrewards-overview. - НФТ (ADR-0056): актов — единицы в неделю на застройщика, реестр измеряется сотнями строк в год; выборка без джойна позиций; целевая латентность p95 < 250 мс; частота обращений низкая (back-office оператора).
Обратные ссылки
Автоссылки: где используется этот документ.
- API (3): POST /api/v1/platform/receipts — Создание акта поступления средств (черновик), POST /api/v1/platform/receipts/{receiptId}/register — Регистрация акта поступления средств, Rewards API — реестр операций и общие контрактные модели
- Use Cases (2): UC-RWD-010. Акт поступления средств — гейт получения денег, US-реестр: Финансовый блок ПИН (US-FIN)
- registries (1): Реестр API-методов PIN
Связанные документы
- Сущность и статусная модель: domain/platform-receipt.md.
- Проекция
PlatformReceiptModelи создание: create-platform-receipt.md; регистрация: register-platform-receipt.md. - Paging-конвенция и общие ошибки: README.md.
- ADR-0067 (акт как гейт), ADR-0056 (simplicity-first).