feat: add endpoints desc

This commit is contained in:
2026-05-11 19:50:25 +03:00
parent 852ee9ec2e
commit 46b1e336d9
22 changed files with 236 additions and 95 deletions

View File

@@ -26,6 +26,19 @@ orders_router = APIRouter(tags=['orders'])
payment_router = APIRouter(prefix='/payment', tags=['payments'])
payments_router = APIRouter(tags=['payments'])
ERROR_RESPONSES = {
400: {'model': ErrorResponse, 'description': 'Bad Request'},
401: {'model': ErrorResponse, 'description': 'Unauthorized'},
403: {'model': ErrorResponse, 'description': 'Forbidden'},
404: {'model': ErrorResponse, 'description': 'Not Found'},
409: {'model': ErrorResponse, 'description': 'Conflict'},
422: {'model': ErrorResponse, 'description': 'Validation Error'},
429: {'model': ErrorResponse, 'description': 'Too Many Requests'},
500: {'model': ErrorResponse, 'description': 'Internal Server Error'},
502: {'model': ErrorResponse, 'description': 'Bad Gateway'},
503: {'model': ErrorResponse, 'description': 'Service Unavailable'},
}
def _payment_config_response(quote: PaymentQuote) -> PaymentConfigResponse:
return PaymentConfigResponse(
@@ -156,16 +169,7 @@ async def _websocket_auth_context(websocket: WebSocket, jwt_service: IJwtService
'/create',
response_model=CreateOrderResponse,
status_code=201,
responses={
400: {'model': ErrorResponse, 'description': 'Bad Request'},
401: {'model': ErrorResponse, 'description': 'Unauthorized'},
403: {'model': ErrorResponse, 'description': 'Forbidden'},
404: {'model': ErrorResponse, 'description': 'Not Found'},
409: {'model': ErrorResponse, 'description': 'Conflict'},
500: {'model': ErrorResponse, 'description': 'Internal Server Error'},
502: {'model': ErrorResponse, 'description': 'Bad Gateway'},
503: {'model': ErrorResponse, 'description': 'Service Unavailable'},
},
responses=ERROR_RESPONSES,
)
@csrf_protect()
async def create_order(
@@ -200,7 +204,12 @@ async def create_order(
return content
@payment_router.get('/config', response_model=PaymentConfigResponse)
@payment_router.get(
'/config',
response_model=PaymentConfigResponse,
status_code=200,
responses=ERROR_RESPONSES,
)
async def payment_config(
command: GetPaymentConfigCommand = Depends(get_payment_config_command),
) -> PaymentConfigResponse:
@@ -208,7 +217,12 @@ async def payment_config(
return _payment_config_response(quote)
@payment_router.get('/quote', response_model=PaymentQuoteResponse)
@payment_router.get(
'/quote',
response_model=PaymentQuoteResponse,
status_code=200,
responses=ERROR_RESPONSES,
)
async def payment_quote(
usdt_amount: Decimal = Query(gt=0, decimal_places=2, max_digits=20),
command: GetPaymentQuoteCommand = Depends(get_payment_quote_command),
@@ -217,7 +231,12 @@ async def payment_quote(
return _payment_quote_response(quote)
@orders_router.get('/orders', response_model=OrdersResponse)
@orders_router.get(
'/orders',
response_model=OrdersResponse,
status_code=200,
responses=ERROR_RESPONSES,
)
async def list_orders(
limit: int = Query(default=20, ge=1, le=100),
offset: int = Query(default=0, ge=0),
@@ -229,7 +248,12 @@ async def list_orders(
return OrdersResponse(status_code=200,orders=items,limit=limit,offset=offset)
@payments_router.get('/payments', response_model=PaymentsResponse)
@payments_router.get(
'/payments',
response_model=PaymentsResponse,
status_code=200,
responses=ERROR_RESPONSES,
)
async def list_payments(
limit: int = Query(default=20, ge=1, le=100),
offset: int = Query(default=0, ge=0),
@@ -245,7 +269,12 @@ async def list_payments(
)
@order_router.get('/{order_id}/status', response_model=OrderStatusResponse)
@order_router.get(
'/{order_id}/status',
response_model=OrderStatusResponse,
status_code=200,
responses=ERROR_RESPONSES,
)
async def order_status(
order_id: str,
auth: AuthContext = Depends(require_access_token),
@@ -292,7 +321,12 @@ async def order_events(
trace_id_var.reset(token)
@order_router.get('/{order_id}', response_model=OrderDetailResponse)
@order_router.get(
'/{order_id}',
response_model=OrderDetailResponse,
status_code=200,
responses=ERROR_RESPONSES,
)
async def order_detail(
order_id: str,
auth: AuthContext = Depends(require_access_token),
@@ -302,7 +336,11 @@ async def order_detail(
return _order_detail_response(result.order,result.payment)
@order_router.post('/webhook/itpay')
@order_router.post(
'/webhook/itpay',
status_code=200,
responses=ERROR_RESPONSES,
)
async def itpay_webhook(
request: Request,
payment_command: CreatePaymentCommand = Depends(get_create_payment_command),