Skip to main content
POST
/
markets
/
creditbook
/
refinance
Refinance loan
curl --request POST \
  --url https://tars.loopscale.com/v1/markets/creditbook/refinance \
  --header 'Content-Type: application/json' \
  --header 'user-wallet: <user-wallet>' \
  --data '
{
  "loan": "<string>",
  "oldStrategy": "<string>",
  "newStrategy": "<string>",
  "refinanceParams": {
    "ledgerIndex": 123,
    "durationIndex": 123
  }
}
'
import requests

url = "https://tars.loopscale.com/v1/markets/creditbook/refinance"

payload = {
"loan": "<string>",
"oldStrategy": "<string>",
"newStrategy": "<string>",
"refinanceParams": {
"ledgerIndex": 123,
"durationIndex": 123
}
}
headers = {
"user-wallet": "<user-wallet>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {'user-wallet': '<user-wallet>', 'Content-Type': 'application/json'},
body: JSON.stringify({
loan: '<string>',
oldStrategy: '<string>',
newStrategy: '<string>',
refinanceParams: {ledgerIndex: 123, durationIndex: 123}
})
};

fetch('https://tars.loopscale.com/v1/markets/creditbook/refinance', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://tars.loopscale.com/v1/markets/creditbook/refinance",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'loan' => '<string>',
'oldStrategy' => '<string>',
'newStrategy' => '<string>',
'refinanceParams' => [
'ledgerIndex' => 123,
'durationIndex' => 123
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"user-wallet: <user-wallet>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://tars.loopscale.com/v1/markets/creditbook/refinance"

payload := strings.NewReader("{\n \"loan\": \"<string>\",\n \"oldStrategy\": \"<string>\",\n \"newStrategy\": \"<string>\",\n \"refinanceParams\": {\n \"ledgerIndex\": 123,\n \"durationIndex\": 123\n }\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("user-wallet", "<user-wallet>")
req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://tars.loopscale.com/v1/markets/creditbook/refinance")
.header("user-wallet", "<user-wallet>")
.header("Content-Type", "application/json")
.body("{\n \"loan\": \"<string>\",\n \"oldStrategy\": \"<string>\",\n \"newStrategy\": \"<string>\",\n \"refinanceParams\": {\n \"ledgerIndex\": 123,\n \"durationIndex\": 123\n }\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://tars.loopscale.com/v1/markets/creditbook/refinance")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["user-wallet"] = '<user-wallet>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"loan\": \"<string>\",\n \"oldStrategy\": \"<string>\",\n \"newStrategy\": \"<string>\",\n \"refinanceParams\": {\n \"ledgerIndex\": 123,\n \"durationIndex\": 123\n }\n}"

response = http.request(request)
puts response.read_body
{
  "transactions": [
    {
      "message": "<string>",
      "signatures": [
        {
          "publicKey": "<string>",
          "signature": "<string>"
        }
      ]
    }
  ],
  "expectedLoanInfo": {
    "loan": {
      "address": "<string>"
    }
  }
}
"Something went wrong: You have an error in your SQL syntax."
"Failed to deserialize the JSON body into the target type: missing field `mints` at line 1 column 1."

Headers

user-wallet
string
required

Wallet address of the borrowing user

Body

application/json
loan
string
required

Loan address to refinance

oldStrategy
string
required

Strategy address to refinance from.

newStrategy
string
required

Strategy address to refinance to, can be the same as old if just updating duration or start time.

refinanceParams
object
required

Response

Serialized transaction

transactions
object[]
expectedLoanInfo
object

Loan post transaction state used for verification