Files
baya-monorepo/dev/contracts/openapi/swagger.v1.json
T
hamid 3a51305343 backend phase 2: identity — phone-OTP auth, sessions & roles (REST)
- six REST endpoints (auth/request_otp, verify_otp, refresh, logout, me,
  me/select_role) wrapping the existing JWE/TOTP/RBAC engine
- usr.UserSessions with refresh-token rotation + stolen-token (replay)
  detection → revoke-all + 401; logout rotates the security stamp
- users extended: gender, national_id (enc, NULL until KYC),
  shahkar_verified_at (auto-reset on phone change), phone_hash UNIQUE,
  is_active, deleted_at + soft-delete filter; phone/email/national_id
  encrypted at rest via IFieldEncryptor value converter
- user_roles grant/revoke audit trail + global revoked filter; 7 roles
  seeded; admin sub-roles never self-assignable (403)
- ISmsSender seam (mock logs the OTP code) replaces the TODO log lines
- OperationResult/BaseController learned enveloped 401/403
- auth knobs as platform_configs rows (resend/attempts/session TTL)
- migration IdentitySessionsAndUserExtensions applied to the dev DB
- 24 new tests incl. Baya.Test.Api (WebApplicationFactory over SQLite);
  47 total green, zero new build warnings; swagger snapshot + contract
  (identity-auth.md), handoff, report, mocks-registry updated

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 02:34:11 +03:30

2673 lines
65 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": "http://localhost:5188"
}
],
"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/auth/request_otp": {
"post": {
"tags": [
"Auth"
],
"operationId": "Auth_RequestOtp",
"requestBody": {
"x-name": "command",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RequestOtpCommand"
}
}
},
"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/ApiResultOfRequestOtpResult"
}
}
}
}
}
}
},
"/api/v1/auth/verify_otp": {
"post": {
"tags": [
"Auth"
],
"operationId": "Auth_VerifyOtp",
"requestBody": {
"x-name": "command",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VerifyOtpCommand"
}
}
},
"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/ApiResultOfAuthTokensResult"
}
}
}
}
}
}
},
"/api/v1/auth/refresh": {
"post": {
"tags": [
"Auth"
],
"operationId": "Auth_Refresh",
"requestBody": {
"x-name": "command",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RefreshTokenCommand"
}
}
},
"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/ApiResultOfAuthTokensResult"
}
}
}
}
},
"security": [
{
"bearer": []
}
]
}
},
"/api/v1/auth/logout": {
"post": {
"tags": [
"Auth"
],
"operationId": "Auth_Logout",
"requestBody": {
"x-name": "command",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LogoutCommand"
}
}
},
"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/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/me": {
"get": {
"tags": [
"Me"
],
"summary": "Retrieves a Me by unique id",
"operationId": "Me_GetMe",
"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/ApiResultOfMeResult"
}
}
}
}
},
"security": [
{
"Bearer": []
}
]
}
},
"/api/v1/me/select_role": {
"post": {
"tags": [
"Me"
],
"description": "Role claims live inside the access token — after selecting a role the client should\n refresh its tokens to pick the new role up.",
"operationId": "Me_SelectRole",
"requestBody": {
"x-name": "command",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SelectRoleCommand"
}
}
},
"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/ApiResultOfMeResult"
}
}
}
}
},
"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"
}
}
},
"ApiResultOfRequestOtpResult": {
"allOf": [
{
"$ref": "#/components/schemas/ApiResult"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"data": {
"nullable": true,
"oneOf": [
{
"$ref": "#/components/schemas/RequestOtpResult"
}
]
}
}
}
]
},
"RequestOtpResult": {
"type": "object",
"additionalProperties": false,
"properties": {
"otpSent": {
"type": "boolean"
},
"resendAvailableInSeconds": {
"type": "integer",
"format": "int32"
}
}
},
"RequestOtpCommand": {
"type": "object",
"additionalProperties": false,
"properties": {
"phone": {
"type": "string"
}
}
},
"ApiResultOfAuthTokensResult": {
"allOf": [
{
"$ref": "#/components/schemas/ApiResult"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"data": {
"nullable": true,
"oneOf": [
{
"$ref": "#/components/schemas/AuthTokensResult"
}
]
}
}
}
]
},
"AuthTokensResult": {
"type": "object",
"additionalProperties": false,
"properties": {
"accessToken": {
"type": "string"
},
"refreshToken": {
"type": "string"
},
"accessExpiresAt": {
"type": "string",
"format": "date-time"
},
"refreshExpiresAt": {
"type": "string",
"format": "date-time"
},
"isNewUser": {
"type": "boolean"
},
"roles": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"VerifyOtpCommand": {
"type": "object",
"additionalProperties": false,
"properties": {
"phone": {
"type": "string"
},
"code": {
"type": "string"
},
"deviceInfo": {
"type": "string",
"nullable": true
}
}
},
"RefreshTokenCommand": {
"type": "object",
"additionalProperties": false,
"properties": {
"refreshToken": {
"type": "string"
},
"deviceInfo": {
"type": "string",
"nullable": true
}
}
},
"LogoutCommand": {
"type": "object",
"additionalProperties": false,
"properties": {
"refreshToken": {
"type": "string",
"nullable": true
},
"everywhere": {
"type": "boolean"
}
}
},
"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"
}
}
},
"ApiResultOfMeResult": {
"allOf": [
{
"$ref": "#/components/schemas/ApiResult"
},
{
"type": "object",
"additionalProperties": false,
"properties": {
"data": {
"nullable": true,
"oneOf": [
{
"$ref": "#/components/schemas/MeResult"
}
]
}
}
}
]
},
"MeResult": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"type": "integer",
"format": "int32"
},
"phone": {
"type": "string"
},
"firstName": {
"type": "string",
"nullable": true
},
"lastName": {
"type": "string",
"nullable": true
},
"gender": {
"type": "string",
"nullable": true
},
"isActive": {
"type": "boolean"
},
"roles": {
"type": "array",
"items": {
"type": "string"
}
},
"hasCustomerProfile": {
"type": "boolean"
},
"hasNurseProfile": {
"type": "boolean"
},
"nurseVerificationStatus": {
"type": "string"
}
}
},
"SelectRoleCommand": {
"type": "object",
"additionalProperties": false,
"properties": {
"role": {
"type": "string",
"nullable": true
}
}
},
"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"
}
}
}
}