Check team balance


Here is how to use R to check your team balance:

CONJOINTLY_TOKEN <- "YOUR_TOKEN" # Get a token from https://run.conjoint.ly/utilities/tokens

# Define the Balance class
{
  Balance <- setClass("Balance",
                      slots = c(
                        total = "list",
                        balances = "list",
                        bonuses = "list",
                        pending = "list",
                        currencies = "list"
                      ))

  setMethod("show", "Balance", function(object) {
    cat(paste0(
      "Total balance on Conjointly: ",
      toupper(object$total$currency),
      " ",
      ifelse(object$total$amount >= 0 && object$total$multicurrency, "~", ""),
      format(round(object$total$amount, 2), nsmall = 2),
      "."
    ),
        "\n")
  })

  setMethod("names", "Balance", function(object) {
    c(`Total balance` = "total",
      `Prepayments in different currencies` = "balances",
      `Bonuses` = "bonuses",
      `Pending payments` = "pending",
      `List of currencies` = "currencies")
  })

  setMethod("$", "Balance", function(x, name) {
    slot(x, name)
  })

  setAs("list", "Balance", function(from) {
    new("Balance",
        total = from$total,
        balances = from$balances,
        bonuses = from$bonuses,
        pending = from$pending,
        currencies = from$currencies
    ) })
}

getConjointlyBalance <- function(TOKEN = CONJOINTLY_TOKEN) {
  library(httr)
  library(jsonlite)
  headers <- add_headers(
    `Authorization` = paste("Bearer", TOKEN),
    `Content-Type` = "application/json",
    `Accept` = "application/json",
    `X-Requested-With` = "XMLHttpRequest"
  )

  result <- GET(
    paste0("https://api.conjoint.ly/api/account/balance"),
    headers
  ) |> content("parsed", encoding = "UTF-8")

  if (is.null(result$data)) {
    stop(result$message)
  }

  return(as(result$data, "Balance"))
}

getConjointlyBalance()$total$amount
getConjointlyBalance()