package roomescape.payment.docs import io.swagger.v3.oas.annotations.Operation import io.swagger.v3.oas.annotations.responses.ApiResponse import io.swagger.v3.oas.annotations.responses.ApiResponses import jakarta.validation.Valid import org.springframework.http.ResponseEntity import org.springframework.web.bind.annotation.RequestBody import org.springframework.web.bind.annotation.RequestParam import roomescape.auth.web.support.CurrentUser import roomescape.auth.web.support.UserOnly import roomescape.common.dto.CurrentUserContext import roomescape.common.dto.response.CommonApiResponse import roomescape.payment.web.PaymentCancelRequest import roomescape.payment.web.PaymentConfirmRequest import roomescape.payment.web.PaymentCreateResponse interface PaymentAPI { @UserOnly @Operation(summary = "결제 승인", tags = ["로그인이 필요한 API"]) @ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true)) fun confirmPayment( @RequestParam(required = true) reservationId: Long, @Valid @RequestBody request: PaymentConfirmRequest ): ResponseEntity> @UserOnly @Operation(summary = "결제 취소", tags = ["로그인이 필요한 API"]) @ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true)) fun cancelPayment( @CurrentUser user: CurrentUserContext, @Valid @RequestBody request: PaymentCancelRequest ): ResponseEntity> }