in src/main/scala/ZuoraService.scala [281:295]
def cancelSubscription(accountId: String, subscriptionNumber: String): String \/ Unit = {
logInfo(accountId, s"attempting to cancel $subscriptionNumber")
val json = Json.obj(
"cancellationPolicy" -> "SpecificDate",
"cancellationEffectiveDate" -> LocalDate.now(),
"invoiceCollect" -> false
)
val body = RequestBody.create(MediaType.parse("application/json"), json.toString)
val request = buildRequest(config, s"subscriptions/$subscriptionNumber/cancel").put(body).build()
val call = restClient.newCall(request)
val response = call.execute
convertResponseToCaseClass[CancelResult](accountId, response) match {
case \/-(result) => if (result.success) { \/-(()) } else { -\/(s"Zuora result indicated a failure when attempting to cancel subscription $subscriptionNumber") }
case -\/(error) => -\/(error)
}