Status: Approved · v2 · SPEC-API-ENGAGEMENT-001
depends_on: SPEC-DOMAIN-FEED-001, SPEC-DOMAIN-NOTIFICATION-001, SPEC-DOMAIN-SHARE-001
used_by: IS-MVP-11.1, IS-MVP-11.2, IS-MVP-11.3, IS-MVP-11.4, IS-MVP-12.3
API de feed, notificações, push pago e cards
Conteúdo oficial e compartilhamento externo sem transformar o MVP em rede social de posts livres.
Princípios e padrões
- Base path
/api/v1; JSON UTF-8; chaves em camelCase. - Toda resposta usa
ApiResponse<T>comok,data|erroremetacontendorequestIdetimestamp. - IDs são strings opacas; datas são ISO-8601 UTC; dinheiro é inteiro em centavos com moeda BRL.
- Listas usam
pageepageSizeno MVP; default 20, máximo 100; metadados ficam emmeta.pagination. - Endpoints públicos usam DTOs públicos específicos; entidades internas, memberships, saldos e dados privados nunca vazam.
- Erros de domínio são estáveis e acionáveis; stack traces e detalhes internos não são retornados.
- Alterações sensíveis usam
Idempotency-Key, confirmação recente quando necessário e audit log. - Uploads usam fluxo presigned; o backend valida propósito, MIME, tamanho e ownership antes de confirmar o asset.
Endpoints
| Método | Rota | Acesso | Request | Response | Regras principais |
|---|---|---|---|---|---|
| GET | /feed | Público/auth opcional | FeedQuery | FeedResponse | Ordenação e reasons. |
| POST | /feed/posts | Entity permission | CreateFeedPostRequest | FeedPostResponse | Official/template only. |
| PATCH | /feed/posts/:postId | Entity permission | UpdateFeedPostRequest | FeedPostResponse | Draft/published rules. |
| POST | /feed/suggestions/:id/approve | Entity permission | ApproveSuggestionRequest | FeedPostResponse | Publica/agenda conforme escolha. |
| POST | /feed/suggestions/:id/reject | Entity permission | RejectSuggestionRequest | OperationResponse | Motivo opcional. |
| POST | /feed/posts/:postId/hide | Autenticado | — | OperationResponse | Preferência pessoal. |
| POST | /feed/mutes | Autenticado | CreateMuteRequest | MuteResponse | 7/30/forever. |
| GET | /notifications | Autenticado | NotificationQuery | NotificationsResponse | Personal/management. |
| POST | /notifications/read | Autenticado | ReadNotificationsRequest | OperationResponse | Batch. |
| POST | /notifications/:id/archive | Autenticado | — | OperationResponse | Own. |
| PATCH | /notification-settings | Autenticado | UpdateNotificationSettingsRequest | NotificationSettingsResponse | Categorias/canais. |
| POST | /paid-push-campaigns | Entity permission | CreatePaidPushCampaignRequest | PaidPushCampaignResponse | Preview de audience/custo. |
| POST | /paid-push-campaigns/:id/confirm | Entity permission | ConfirmPaidPushCampaignRequest | PaidPushCampaignResponse | Consome créditos. |
| POST | /shareable-cards | Contextual | CreateShareableCardRequest | ShareableCardResponse | Template/format/data snapshot. |
| POST | /shareable-cards/:id/generate | Contextual | GenerateShareableCardRequest | GeneratedCardResponse | Client-first; server future. |
| GET | /shareable-cards/templates | Público | TemplateQuery | TemplatesResponse | Templates MVP controlados. |