765cc632d5
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.
256 lines
6.0 KiB
JSON
256 lines
6.0 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://127.0.0.1:5082"
|
|
}
|
|
],
|
|
"paths": {
|
|
"/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"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"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
|
|
]
|
|
},
|
|
"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"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"securitySchemes": {
|
|
"Bearer": {
|
|
"type": "http",
|
|
"description": "Enter JWT Token ONLY",
|
|
"name": "Authorization",
|
|
"in": "header",
|
|
"scheme": "Bearer"
|
|
}
|
|
}
|
|
}
|
|
} |