flow

Publish Collection To Portal

api-v1 publishes ProjectCollection snapshots to Postgres; api-v2 portal-read serves the client portal.

FlowStatus: Implemented in api-v1

Overview

This flow is the portal write path owned by design-management in api-v1, plus the existing api-v2 read path. It is not a new System. Both deployables already sit in Backend Platform.

There are no domain events on this path. PublishToPortalUseCase returns an application result (publishedCollectionIds, message).

Unpublish is the inverse: POST /api/v1/design/projects/:projectId/actions/unpublish-from-portalUnpublishFromPortalUseCaseProjectCollection.unpublishFromPortalForSyncingPortalData.unpublishPortalCollections (sets draft in Postgres) → Airtable save.

HTTP

  • Write: POST /api/v1/design/projects/:projectId/actions/publish-to-portal
  • Unpublish: POST /api/v1/design/projects/:projectId/actions/unpublish-from-portal
  • Read: GET /api/v2/client-portal/projects/:projectId/project-collections
  • Read (product model): GET /api/v2/client-portal/product-models/:productModelId

No OpenAPI operationId is registered for the api-v1 portal routes yet.

Code References

  • apps/api-v1/src/modules/design-management/core/application/use-cases/PublishToPortalUseCase.ts
  • apps/api-v1/src/modules/design-management/core/application/use-cases/UnpublishFromPortalUseCase.ts
  • apps/api-v1/src/modules/design-management/core/application/ports/outbound/ForSyncingPortalData.ts
  • apps/api-v1/src/modules/design-management/adapters/outbound/persistence/portal/PrismaPortalSyncAdapter.ts
  • apps/api-v2/src/modules/portal-read
  • apps/api-v2/src/apps/client-portal-api