in handlers/product-move-api/src/main/scala/com/gu/productmove/endpoint/cancel/SubscriptionCancelEndpoint.scala [67:132]
def main(args: Array[String]): Unit = LambdaEndpoint.runTest(
run(() => LocalDate.now)(
"A-S00878246",
ExpectedInput(
"mma_value_for_money", // valid pick list value
),
IdentityId("200235444"),
),
)
val server: sttp.tapir.server.ServerEndpoint.Full[
Unit,
Unit,
(String, ExpectedInput, IdentityId),
Unit,
OutputBody,
Any,
Task,
] = {
val subscriptionNameCapture: EndpointInput.PathCapture[String] =
EndpointInput.PathCapture[String](
Some("subscriptionName"),
implicitly,
EndpointIO.Info.empty.copy(
description = Some("Name of subscription to cancel."),
examples = List(Example("A-S000001", None, None)),
),
)
val endpointDescription: PublicEndpoint[(String, ExpectedInput, IdentityId), Unit, OutputBody, Any] =
endpoint.post
.in("supporter-plus-cancel")
.in(subscriptionNameCapture)
.in(
jsonBody[ExpectedInput].copy(info =
EndpointIO.Info
.empty[ExpectedInput]
.copy(description = Some("Information to describe the nature of the cancellation")),
),
)
.in(header[IdentityId]("x-identity-id"))
.out(
oneOf(
oneOfVariant(
sttp.model.StatusCode.Ok,
jsonBody[Success]
.copy(info = EndpointIO.Info.empty.copy(description = Some("Successfully cancelled the subscription."))),
),
oneOfVariant(
sttp.model.StatusCode.InternalServerError,
jsonBody[InternalServerError]
.copy(info = EndpointIO.Info.empty.copy(description = Some("InternalServerError."))),
),
oneOfVariant(
sttp.model.StatusCode.BadRequest,
jsonBody[BadRequest]
.copy(info = EndpointIO.Info.empty.copy(description = Some("Bad request."))),
),
),
)
.summary("Cancels the subscription at the soonest possible date based on the subscription type.")
.description(
"""Cancels the existing subscription at the default/soonest date.
|Also manages all the service comms associated with the cancellation.""".stripMargin,
)
endpointDescription.serverLogic[Task](run(() => LocalDate.now()))
}