Files
baya-monorepo/dev/contracts/openapi
hamid 765cc632d5 backend phase 0: foundation, cross-cutting seams & starter cleanup
Remove the Order demo (entity/feature/repo/config/gRPC/proto) and the three
pre-marketplace migrations; regenerate a fresh InitialBaseline migration.

Stand up the REST surface (PingController + System/Ping CQRS) proving the
Mediator -> behaviors -> OperationResult -> ApiResult envelope end to end.

Close wiring gaps: register LoggingBehavior (outermost) and add the built-in
rate limiter (per-IP global + otp/auth/sensitive policies), placed before
authentication.

Add current-user + audit plumbing: ICurrentUser (HttpContext + null impls),
rename BaseEntity audit fields to CreatedAt/ModifiedAt (DateTimeOffset) +
CreatedById/ModifiedById, stamped by a new AuditFieldInterceptor.

Introduce five cross-cutting seams (IDateTimeProvider, IFieldEncryptor,
ICacheService, IObjectStorage, INotificationDispatcher) with in-memory/local
mocks registered via AddCrossCuttingSeams.

Add Baya.Test.Foundation (encryptor, audit interceptor, ping handler) and
update docs, contracts (swagger.v1.json), handoff, report, and mocks registry.
2026-06-30 22:48:41 +03:30
..
2026-06-28 21:59:59 +03:30

OpenAPI snapshots

The server already generates OpenAPI via NSwag (Swagger UI at /swagger, documents v1, v1.1). This folder holds the published swagger.json snapshot(s) so the frontend can generate/verify types without running the backend.

Backend: publish on every API-shipping phase

After adding/changing endpoints and confirming the build, export the OpenAPI document and commit it here as swagger.v1.json (overwrite — git history is the version trail). Typical options:

  • Run the API and save GET /swagger/v1/swagger.json to dev/contracts/openapi/swagger.v1.json, or
  • Use the NSwag CLI / build target the server already wires to emit the document.

Record in your handoff that the snapshot was refreshed. Keep it in sync with ../domains/*.md — the markdown is the human contract, this JSON is the machine contract; they must agree.

Frontend: consume

Generate types from swagger.v1.json (e.g. an openapi-typescript-style step) or hand-write src/services/{domain}/types.ts to match it. Either way, the wire shapes come from here — not from guessing. Casing/format questions are resolved by this file.

Until the first API-shipping backend phase runs, this folder is empty by design.