Skip to main content
POST
/
subscriptions
/
{subscriptionId}
/
discounts
Add a discount to a subscription
curl --request POST \
  --url https://api.juo.io/admin/v1/subscriptions/{subscriptionId}/discounts \
  --header 'Content-Type: application/json' \
  --header 'X-Juo-Admin-Api-Key: <api-key>' \
  --header 'X-Tenant-ID: <x-tenant-id>' \
  --data '
{
  "code": "<string>"
}
'
import requests

url = "https://api.juo.io/admin/v1/subscriptions/{subscriptionId}/discounts"

payload = { "code": "<string>" }
headers = {
"X-Tenant-ID": "<x-tenant-id>",
"X-Juo-Admin-Api-Key": "<api-key>",
"Content-Type": "application/json"
}

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

print(response.text)
const options = {
method: 'POST',
headers: {
'X-Tenant-ID': '<x-tenant-id>',
'X-Juo-Admin-Api-Key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({code: '<string>'})
};

fetch('https://api.juo.io/admin/v1/subscriptions/{subscriptionId}/discounts', 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://api.juo.io/admin/v1/subscriptions/{subscriptionId}/discounts",
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([
'code' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Juo-Admin-Api-Key: <api-key>",
"X-Tenant-ID: <x-tenant-id>"
],
]);

$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://api.juo.io/admin/v1/subscriptions/{subscriptionId}/discounts"

payload := strings.NewReader("{\n \"code\": \"<string>\"\n}")

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

req.Header.Add("X-Tenant-ID", "<x-tenant-id>")
req.Header.Add("X-Juo-Admin-Api-Key", "<api-key>")
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://api.juo.io/admin/v1/subscriptions/{subscriptionId}/discounts")
.header("X-Tenant-ID", "<x-tenant-id>")
.header("X-Juo-Admin-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"code\": \"<string>\"\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.juo.io/admin/v1/subscriptions/{subscriptionId}/discounts")

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

request = Net::HTTP::Post.new(url)
request["X-Tenant-ID"] = '<x-tenant-id>'
request["X-Juo-Admin-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"code\": \"<string>\"\n}"

response = http.request(request)
puts response.read_body
{
  "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "resource": "subscription-discount",
  "title": "<string>",
  "target": {
    "type": "shipping"
  },
  "value": {
    "amount": 123,
    "type": "fixed-amount",
    "appliesOnEachItem": true
  },
  "recurringCycleLimit": 2
}

Authorizations

X-Juo-Admin-Api-Key
string
header
required

Long-lived Admin API key issued from the Juo merchant portal. Pass as the X-Juo-Admin-Api-Key header.

Headers

X-Tenant-ID
string
required

Unique identifier of the tenant in the system (usually a store identifier)

Path Parameters

subscriptionId
string<uuid>
required

The subscription identifier

Body

application/json
code
string
required

Discount code to apply

Response

Default Response

id
string<uuid>
required
resource
enum<string>
required
Available options:
subscription-discount
title
null | string
required

The title of the discount shown to customers, typically displayed as a discount code.

Minimum string length: 1
target
object
required
value
object
required
recurringCycleLimit
null | integer
required

The number of billing cycles for which this discount will be applied. After the recurring cycle limit is met the discount will be removed from the subscription.

Required range: x >= 1