Files
baya-monorepo/dev/contracts/openapi/swagger.v1.json
T
hamid 2f2aec61a2 backend phase 1: config, reference & platform signals
Lay the cross-cutting platform backbone every later phase reads from. Adds
the first marketplace EF migration baseline (new `ops` schema) and the
mechanisms b2..b15 reuse: typed runtime config, an append-only audit trail,
an analytics event log, the holiday/bank-closure calendar, in-app
notifications, and the internal support-alert worklist.

Schema & migration
- New `ops` schema + migration InitialMarketplaceBaseline with 6 tables:
  PlatformConfigs (IAuditable), AuditLogs (append-only), SystemEvents,
  IranianHolidays, Notifications, SupportAlerts — with indexes/uniques and
  FKs to usr.Users. Seeded 12 config keys + 7 sample holidays via HasData.

Domain / Application
- IAuditable marker + [AuditRedacted] attribute; entities + string-code
  constant holders (config data_type, holiday type, alert type/severity/status).
- Facade contracts: IPlatformConfig, IHolidayCalendar, IAnalyticsSink,
  IAuditLogger, INotificationService, ISupportAlertService; DTOs +
  PagedResult<T>; evolved the INotificationDispatcher.Notification record to
  carry Type + DataJson; Pagination helper.
- 14 CQRS commands/queries (+ validators) wiring the endpoints to the facades.

Infrastructure
- DB-backed facade implementations in Persistence/Services/; real in-app
  INotificationDispatcher (removes the b0 log stub); notification-retention
  hosted service (purge is_read=1 AND age>90d).
- Extended AuditFieldInterceptor to also append an old/new-diff audit_logs row
  for every IAuditable change in the same transaction (PII redacted).
- Registered all facades + hosted service in AddPersistenceServices; removed
  the dispatcher registration from AddCrossCuttingSeams.

API
- 5 controllers: admin PlatformConfig/Holidays/Audit/SupportAlerts
  ([Authorize(DynamicPermission)]) + current-user Notifications ([Authorize]),
  all tenant-scoped and paginated. 16 Swagger paths total.

Money-correctness & safety rules honoured
- Config read at compute time (cached, parsed by data_type), never hardcoded;
  every config change is audited in the same transaction; audit_logs is
  append-only (no update/delete path); support alerts are admin-only;
  notifications are tenant-scoped; analytics is fire-and-forget.

Tests & docs
- 18 new foundation tests over in-memory SQLite (config typing + audit,
  holidays, notifications + tenancy + retention, support alerts, analytics);
  build clean (0 new code warnings), 22 tests green; migration applied to the
  dev DB and swagger.v1.json refreshed.
- Updated server Project map + CONVENTIONS, product data-model doc 12 (seeded
  config defaults), config-reference contract, mock registry, backend handoff/
  STATUS/report.

Follow-ups: add FK constraints for SupportAlerts.BookingId (b9) and ReviewId
(b14) when those tables land.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 01:18:00 +03:30

2022 lines
49 KiB
JSON

{
"x-generator": "NSwag v14.7.1.0 (NJsonSchema v11.6.1.0 (Newtonsoft.Json v13.0.0.0))",
"openapi": "3.0.0",
"info": {
"title": "Clean Architecture OpenAPI docs",
"version": "v1"
},
"servers": [
{
"url": "https://localhost:5002"
}
],
"paths": {
"/api/v1/audit/get_audit_trail": {
"get": {
"tags": [
"Audit"
],
"operationId": "Audit_GetAuditTrail",
"parameters": [
{
"name": "EntityType",
"in": "query",
"schema": {
"type": "string",
"nullable": true
},
"x-position": 1
},
{
"name": "EntityId",
"in": "query",
"schema": {
"type": "string",
"nullable": true
},
"x-position": 2
},
{
"name": "Page",
"in": "query",
"schema": {
"type": "integer",
"format": "int32"
},
"x-position": 3
},
{
"name": "PageSize",
"in": "query",
"schema": {
"type": "integer",
"format": "int32"
},
"x-position": 4
}
],
"responses": {
"400": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString"
}
}
}
},
"401": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"403": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"500": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResultOfPagedResultOfAuditLogDto"
}
}
}
}
},
"security": [
{
"Bearer": []
}
]
}
},
"/api/v1/holidays/get_holidays": {
"get": {
"tags": [
"Holidays"
],
"summary": "Returns all Holidays",
"operationId": "Holidays_GetHolidays",
"parameters": [
{
"name": "From",
"in": "query",
"schema": {
"type": "string",
"format": "date",
"nullable": true
},
"x-position": 1
},
{
"name": "To",
"in": "query",
"schema": {
"type": "string",
"format": "date",
"nullable": true
},
"x-position": 2
},
{
"name": "Page",
"in": "query",
"schema": {
"type": "integer",
"format": "int32"
},
"x-position": 3
},
{
"name": "PageSize",
"in": "query",
"schema": {
"type": "integer",
"format": "int32"
},
"x-position": 4
}
],
"responses": {
"400": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString"
}
}
}
},
"401": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"403": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"500": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResultOfPagedResultOfHolidayDto"
}
}
}
}
},
"security": [
{
"Bearer": []
}
]
}
},
"/api/v1/holidays/upsert_holiday": {
"post": {
"tags": [
"Holidays"
],
"operationId": "Holidays_UpsertHoliday",
"requestBody": {
"x-name": "command",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpsertHolidayCommand"
}
}
},
"required": true,
"x-position": 1
},
"responses": {
"400": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString"
}
}
}
},
"401": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"403": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"500": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
}
},
"security": [
{
"Bearer": []
}
]
}
},
"/api/v1/holidays/delete_holiday": {
"post": {
"tags": [
"Holidays"
],
"summary": "Deletes a Holiday by unique id",
"operationId": "Holidays_DeleteHoliday",
"requestBody": {
"x-name": "command",
"description": "A unique id for the Holiday",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteHolidayCommand"
}
}
},
"required": true,
"x-position": 1
},
"responses": {
"400": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString"
}
}
}
},
"401": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"403": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"500": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
}
},
"security": [
{
"Bearer": []
}
]
}
},
"/api/v1/notifications/get_notifications": {
"get": {
"tags": [
"Notifications"
],
"summary": "Returns all Notifications",
"operationId": "Notifications_GetNotifications",
"parameters": [
{
"name": "Page",
"in": "query",
"schema": {
"type": "integer",
"format": "int32"
},
"x-position": 1
},
{
"name": "PageSize",
"in": "query",
"schema": {
"type": "integer",
"format": "int32"
},
"x-position": 2
}
],
"responses": {
"400": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString"
}
}
}
},
"401": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"403": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"500": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResultOfPagedResultOfNotificationDto"
}
}
}
}
},
"security": [
{
"Bearer": []
}
]
}
},
"/api/v1/notifications/get_unread_count": {
"get": {
"tags": [
"Notifications"
],
"operationId": "Notifications_GetUnreadCount",
"responses": {
"400": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString"
}
}
}
},
"401": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"403": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"500": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResultOfUnreadCountResult"
}
}
}
}
},
"security": [
{
"Bearer": []
}
]
}
},
"/api/v1/notifications/mark_notification_read": {
"post": {
"tags": [
"Notifications"
],
"operationId": "Notifications_MarkNotificationRead",
"requestBody": {
"x-name": "command",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MarkNotificationReadCommand"
}
}
},
"required": true,
"x-position": 1
},
"responses": {
"400": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString"
}
}
}
},
"401": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"403": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"500": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
}
},
"security": [
{
"Bearer": []
}
]
}
},
"/api/v1/notifications/mark_all_read": {
"post": {
"tags": [
"Notifications"
],
"operationId": "Notifications_MarkAllRead",
"responses": {
"400": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString"
}
}
}
},
"401": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"403": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"500": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
}
},
"security": [
{
"Bearer": []
}
]
}
},
"/api/v1/ping/get_status": {
"get": {
"tags": [
"Ping"
],
"operationId": "Ping_GetStatus",
"responses": {
"400": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString"
}
}
}
},
"401": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"403": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"500": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResultOfPingQueryResult"
}
}
}
}
}
}
},
"/api/v1/ping/get_status_rate_limited": {
"get": {
"tags": [
"Ping"
],
"operationId": "Ping_GetStatusRateLimited",
"responses": {
"400": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString"
}
}
}
},
"401": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"403": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"500": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResultOfPingQueryResult"
}
}
}
}
}
}
},
"/api/v1/platform_config/get_platform_configs": {
"get": {
"tags": [
"PlatformConfig"
],
"summary": "Returns all PlatformConfigs",
"operationId": "PlatformConfig_GetPlatformConfigs",
"parameters": [
{
"name": "Page",
"in": "query",
"schema": {
"type": "integer",
"format": "int32"
},
"x-position": 1
},
{
"name": "PageSize",
"in": "query",
"schema": {
"type": "integer",
"format": "int32"
},
"x-position": 2
}
],
"responses": {
"400": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString"
}
}
}
},
"401": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"403": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"500": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResultOfPagedResultOfPlatformConfigDto"
}
}
}
}
},
"security": [
{
"Bearer": []
}
]
}
},
"/api/v1/platform_config/update_platform_config": {
"post": {
"tags": [
"PlatformConfig"
],
"summary": "Updates a PlatformConfig by unique id",
"operationId": "PlatformConfig_UpdatePlatformConfig",
"requestBody": {
"x-name": "command",
"description": "A PlatformConfig representation",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdatePlatformConfigCommand"
}
}
},
"required": true,
"x-position": 1
},
"responses": {
"400": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString"
}
}
}
},
"401": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"403": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"500": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
}
},
"security": [
{
"Bearer": []
}
]
}
},
"/api/v1/platform_config/get_config_change_history": {
"get": {
"tags": [
"PlatformConfig"
],
"operationId": "PlatformConfig_GetConfigChangeHistory",
"parameters": [
{
"name": "Key",
"in": "query",
"schema": {
"type": "string",
"nullable": true
},
"x-position": 1
},
{
"name": "Page",
"in": "query",
"schema": {
"type": "integer",
"format": "int32"
},
"x-position": 2
},
{
"name": "PageSize",
"in": "query",
"schema": {
"type": "integer",
"format": "int32"
},
"x-position": 3
}
],
"responses": {
"400": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString"
}
}
}
},
"401": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"403": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"500": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResultOfPagedResultOfConfigChangeDto"
}
}
}
}
},
"security": [
{
"Bearer": []
}
]
}
},
"/api/v1/support_alerts/get_support_alerts": {
"get": {
"tags": [
"SupportAlerts"
],
"summary": "Returns all SupportAlerts",
"operationId": "SupportAlerts_GetSupportAlerts",
"parameters": [
{
"name": "Type",
"in": "query",
"schema": {
"type": "string",
"nullable": true
},
"x-position": 1
},
{
"name": "Status",
"in": "query",
"schema": {
"type": "string",
"nullable": true
},
"x-position": 2
},
{
"name": "OwnerUserId",
"in": "query",
"schema": {
"type": "integer",
"format": "int32",
"nullable": true
},
"x-position": 3
},
{
"name": "Page",
"in": "query",
"schema": {
"type": "integer",
"format": "int32"
},
"x-position": 4
},
{
"name": "PageSize",
"in": "query",
"schema": {
"type": "integer",
"format": "int32"
},
"x-position": 5
}
],
"responses": {
"400": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString"
}
}
}
},
"401": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"403": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"500": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResultOfPagedResultOfSupportAlertDto"
}
}
}
}
},
"security": [
{
"Bearer": []
}
]
}
},
"/api/v1/support_alerts/assign_support_alert": {
"post": {
"tags": [
"SupportAlerts"
],
"operationId": "SupportAlerts_AssignSupportAlert",
"requestBody": {
"x-name": "command",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssignSupportAlertCommand"
}
}
},
"required": true,
"x-position": 1
},
"responses": {
"400": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString"
}
}
}
},
"401": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"403": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"500": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
}
},
"security": [
{
"Bearer": []
}
]
}
},
"/api/v1/support_alerts/resolve_support_alert": {
"post": {
"tags": [
"SupportAlerts"
],
"operationId": "SupportAlerts_ResolveSupportAlert",
"requestBody": {
"x-name": "command",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResolveSupportAlertCommand"
}
}
},
"required": true,
"x-position": 1
},
"responses": {
"400": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResultOfDictionaryOfStringAndListOfString"
}
}
}
},
"401": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"403": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"500": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
},
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResult"
}
}
}
}
},
"security": [
{
"Bearer": []
}
]
}
}
},
"components": {
"schemas": {
"ApiResultOfDictionaryOfStringAndListOfString": {
"allOf": [
{
"$ref": "#/components/schemas/ApiResult"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"data": {
"type": "object",
"nullable": true,
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
]
},
"ApiResult": {
"type": "object",
"additionalProperties": false,
"properties": {
"isSuccess": {
"type": "boolean"
},
"statusCode": {
"$ref": "#/components/schemas/ApiResultStatusCode"
},
"message": {
"type": "string",
"nullable": true
},
"requestId": {
"type": "string",
"nullable": true
}
}
},
"ApiResultStatusCode": {
"type": "integer",
"description": "",
"x-enumNames": [
"Success",
"BadRequest",
"UnAuthorized",
"Forbidden",
"NotFound",
"NotAcceptable",
"EntityProcessError",
"FailedDependency",
"ServerError"
],
"enum": [
200,
400,
401,
403,
404,
406,
422,
424,
500
]
},
"ApiResultOfPagedResultOfAuditLogDto": {
"allOf": [
{
"$ref": "#/components/schemas/ApiResult"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"data": {
"nullable": true,
"oneOf": [
{
"$ref": "#/components/schemas/PagedResultOfAuditLogDto"
}
]
}
}
}
]
},
"PagedResultOfAuditLogDto": {
"type": "object",
"additionalProperties": false,
"properties": {
"items": {
"type": "array",
"nullable": true,
"items": {
"$ref": "#/components/schemas/AuditLogDto"
}
},
"total": {
"type": "integer",
"format": "int32"
},
"page": {
"type": "integer",
"format": "int32"
},
"pageSize": {
"type": "integer",
"format": "int32"
}
}
},
"AuditLogDto": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"entityType": {
"type": "string"
},
"entityId": {
"type": "string"
},
"action": {
"type": "string"
},
"changedFieldsJson": {
"type": "string",
"nullable": true
},
"actorUserId": {
"type": "integer",
"format": "int32",
"nullable": true
},
"occurredAt": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResultOfPagedResultOfHolidayDto": {
"allOf": [
{
"$ref": "#/components/schemas/ApiResult"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"data": {
"nullable": true,
"oneOf": [
{
"$ref": "#/components/schemas/PagedResultOfHolidayDto"
}
]
}
}
}
]
},
"PagedResultOfHolidayDto": {
"type": "object",
"additionalProperties": false,
"properties": {
"items": {
"type": "array",
"nullable": true,
"items": {
"$ref": "#/components/schemas/HolidayDto"
}
},
"total": {
"type": "integer",
"format": "int32"
},
"page": {
"type": "integer",
"format": "int32"
},
"pageSize": {
"type": "integer",
"format": "int32"
}
}
},
"HolidayDto": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"holidayDate": {
"type": "string",
"format": "date"
},
"nameFa": {
"type": "string",
"nullable": true
},
"type": {
"type": "string",
"nullable": true
},
"isBankClosed": {
"type": "boolean"
}
}
},
"UpsertHolidayCommand": {
"type": "object",
"additionalProperties": false,
"properties": {
"holidayDate": {
"type": "string",
"format": "date"
},
"nameFa": {
"type": "string",
"nullable": true
},
"type": {
"type": "string",
"nullable": true
},
"isBankClosed": {
"type": "boolean"
}
}
},
"DeleteHolidayCommand": {
"type": "object",
"additionalProperties": false,
"properties": {
"holidayDate": {
"type": "string",
"format": "date"
}
}
},
"ApiResultOfPagedResultOfNotificationDto": {
"allOf": [
{
"$ref": "#/components/schemas/ApiResult"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"data": {
"nullable": true,
"oneOf": [
{
"$ref": "#/components/schemas/PagedResultOfNotificationDto"
}
]
}
}
}
]
},
"PagedResultOfNotificationDto": {
"type": "object",
"additionalProperties": false,
"properties": {
"items": {
"type": "array",
"nullable": true,
"items": {
"$ref": "#/components/schemas/NotificationDto"
}
},
"total": {
"type": "integer",
"format": "int32"
},
"page": {
"type": "integer",
"format": "int32"
},
"pageSize": {
"type": "integer",
"format": "int32"
}
}
},
"NotificationDto": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"type": {
"type": "string"
},
"title": {
"type": "string"
},
"body": {
"type": "string",
"nullable": true
},
"dataJson": {
"type": "string",
"nullable": true
},
"isRead": {
"type": "boolean"
},
"readAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"createdAt": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResultOfUnreadCountResult": {
"allOf": [
{
"$ref": "#/components/schemas/ApiResult"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"data": {
"nullable": true,
"oneOf": [
{
"$ref": "#/components/schemas/UnreadCountResult"
}
]
}
}
}
]
},
"UnreadCountResult": {
"type": "object",
"additionalProperties": false,
"properties": {
"count": {
"type": "integer",
"format": "int32"
}
}
},
"MarkNotificationReadCommand": {
"type": "object",
"additionalProperties": false,
"properties": {
"notificationId": {
"type": "integer",
"format": "int64"
}
}
},
"ApiResultOfPingQueryResult": {
"allOf": [
{
"$ref": "#/components/schemas/ApiResult"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"data": {
"nullable": true,
"oneOf": [
{
"$ref": "#/components/schemas/PingQueryResult"
}
]
}
}
}
]
},
"PingQueryResult": {
"type": "object",
"additionalProperties": false,
"properties": {
"service": {
"type": "string",
"nullable": true
},
"status": {
"type": "string",
"nullable": true
},
"serverTimeUtc": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResultOfPagedResultOfPlatformConfigDto": {
"allOf": [
{
"$ref": "#/components/schemas/ApiResult"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"data": {
"nullable": true,
"oneOf": [
{
"$ref": "#/components/schemas/PagedResultOfPlatformConfigDto"
}
]
}
}
}
]
},
"PagedResultOfPlatformConfigDto": {
"type": "object",
"additionalProperties": false,
"properties": {
"items": {
"type": "array",
"nullable": true,
"items": {
"$ref": "#/components/schemas/PlatformConfigDto"
}
},
"total": {
"type": "integer",
"format": "int32"
},
"page": {
"type": "integer",
"format": "int32"
},
"pageSize": {
"type": "integer",
"format": "int32"
}
}
},
"PlatformConfigDto": {
"type": "object",
"additionalProperties": false,
"properties": {
"key": {
"type": "string"
},
"value": {
"type": "string"
},
"dataType": {
"type": "string"
},
"description": {
"type": "string",
"nullable": true
}
}
},
"UpdatePlatformConfigCommand": {
"type": "object",
"additionalProperties": false,
"properties": {
"key": {
"type": "string",
"nullable": true
},
"value": {
"type": "string",
"nullable": true
}
}
},
"ApiResultOfPagedResultOfConfigChangeDto": {
"allOf": [
{
"$ref": "#/components/schemas/ApiResult"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"data": {
"nullable": true,
"oneOf": [
{
"$ref": "#/components/schemas/PagedResultOfConfigChangeDto"
}
]
}
}
}
]
},
"PagedResultOfConfigChangeDto": {
"type": "object",
"additionalProperties": false,
"properties": {
"items": {
"type": "array",
"nullable": true,
"items": {
"$ref": "#/components/schemas/ConfigChangeDto"
}
},
"total": {
"type": "integer",
"format": "int32"
},
"page": {
"type": "integer",
"format": "int32"
},
"pageSize": {
"type": "integer",
"format": "int32"
}
}
},
"ConfigChangeDto": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"action": {
"type": "string"
},
"changedFieldsJson": {
"type": "string",
"nullable": true
},
"actorUserId": {
"type": "integer",
"format": "int32",
"nullable": true
},
"occurredAt": {
"type": "string",
"format": "date-time"
}
}
},
"ApiResultOfPagedResultOfSupportAlertDto": {
"allOf": [
{
"$ref": "#/components/schemas/ApiResult"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"data": {
"nullable": true,
"oneOf": [
{
"$ref": "#/components/schemas/PagedResultOfSupportAlertDto"
}
]
}
}
}
]
},
"PagedResultOfSupportAlertDto": {
"type": "object",
"additionalProperties": false,
"properties": {
"items": {
"type": "array",
"nullable": true,
"items": {
"$ref": "#/components/schemas/SupportAlertDto"
}
},
"total": {
"type": "integer",
"format": "int32"
},
"page": {
"type": "integer",
"format": "int32"
},
"pageSize": {
"type": "integer",
"format": "int32"
}
}
},
"SupportAlertDto": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"type": {
"type": "string"
},
"severity": {
"type": "string"
},
"status": {
"type": "string"
},
"entityType": {
"type": "string"
},
"entityId": {
"type": "string"
},
"bookingId": {
"type": "integer",
"format": "int64",
"nullable": true
},
"reviewId": {
"type": "integer",
"format": "int64",
"nullable": true
},
"ownerUserId": {
"type": "integer",
"format": "int32",
"nullable": true
},
"resolutionNote": {
"type": "string",
"nullable": true
},
"resolvedAt": {
"type": "string",
"format": "date-time",
"nullable": true
},
"createdAt": {
"type": "string",
"format": "date-time"
}
}
},
"AssignSupportAlertCommand": {
"type": "object",
"additionalProperties": false,
"properties": {
"alertId": {
"type": "integer",
"format": "int64"
},
"ownerUserId": {
"type": "integer",
"format": "int32"
}
}
},
"ResolveSupportAlertCommand": {
"type": "object",
"additionalProperties": false,
"properties": {
"alertId": {
"type": "integer",
"format": "int64"
},
"note": {
"type": "string",
"nullable": true
}
}
}
},
"securitySchemes": {
"Bearer": {
"type": "http",
"description": "Enter JWT Token ONLY",
"name": "Authorization",
"in": "header",
"scheme": "Bearer"
}
}
}
}