curl --request GET \
--url https://api.juo.io/admin/v1/subscriptions \
--header 'X-Juo-Admin-Api-Key: <api-key>' \
--header 'X-Tenant-ID: <x-tenant-id>'import requests
url = "https://api.juo.io/admin/v1/subscriptions"
headers = {
"X-Tenant-ID": "<x-tenant-id>",
"X-Juo-Admin-Api-Key": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'X-Tenant-ID': '<x-tenant-id>', 'X-Juo-Admin-Api-Key': '<api-key>'}
};
fetch('https://api.juo.io/admin/v1/subscriptions', 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",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.juo.io/admin/v1/subscriptions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Tenant-ID", "<x-tenant-id>")
req.Header.Add("X-Juo-Admin-Api-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.juo.io/admin/v1/subscriptions")
.header("X-Tenant-ID", "<x-tenant-id>")
.header("X-Juo-Admin-Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.juo.io/admin/v1/subscriptions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Tenant-ID"] = '<x-tenant-id>'
request["X-Juo-Admin-Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"resource": "list",
"hasNextPage": true,
"hasPrevPage": true,
"endCursor": "<string>",
"startCursor": "<string>",
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"resource": "subscription",
"serial": "1042",
"status": "active",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"canceledAt": "2023-11-07T05:31:56Z",
"nextBillingDate": "2024-02-15T10:00:00.000Z",
"currentCycle": 1,
"currencyCode": "USD",
"billingPolicy": {
"interval": "MONTH",
"intervalCount": 1
},
"deliveryPolicy": {
"interval": "MONTH",
"intervalCount": 1
},
"deliveryMethod": {
"type": "shipping",
"title": "<string>",
"description": "<string>"
},
"customAttributes": [
{
"key": "<string>",
"value": "<string>"
}
],
"customer": "7654321",
"items": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"resource": "subscription-item",
"title": "Monthly Coffee Blend",
"subtitle": "250g / Ground",
"quantity": 1,
"totalPrice": 24.99,
"recurringCycleLimit": 3,
"canceledAt": "2023-11-07T05:31:56Z",
"billingPolicy": {
"interval": "DAY",
"intervalCount": 183,
"anchors": [
{
"type": "WEEKDAY",
"day": 16,
"month": 6,
"cutoffDay": 16
}
],
"minCycles": 2,
"maxCycles": 2
},
"deliveryPolicy": {
"interval": "DAY",
"intervalCount": 183,
"anchors": [
{
"type": "WEEKDAY",
"day": 16,
"month": 6,
"cutoffDay": 16
}
]
},
"customAttributes": [
{
"key": "<string>",
"value": "<string>"
}
],
"variant": "<string>",
"product": "<string>"
}
],
"discounts": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"resource": "subscription-discount",
"title": "<string>",
"target": {
"type": "shipping"
},
"value": {
"amount": 123,
"type": "fixed-amount",
"appliesOnEachItem": true
},
"recurringCycleLimit": 2
}
],
"paymentMethod": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"deliveryAddress": {
"firstName": "<string>",
"lastName": "<string>",
"address1": "<string>",
"address2": "<string>",
"zip": "<string>",
"city": "<string>",
"country": "<string>",
"countryCode": "<string>",
"provinceCode": "<string>",
"province": "<string>",
"phone": "<string>",
"company": "<string>"
},
"deliveryPrice": 1
}
]
}List subscriptions
Returns a list of subscriptions.
curl --request GET \
--url https://api.juo.io/admin/v1/subscriptions \
--header 'X-Juo-Admin-Api-Key: <api-key>' \
--header 'X-Tenant-ID: <x-tenant-id>'import requests
url = "https://api.juo.io/admin/v1/subscriptions"
headers = {
"X-Tenant-ID": "<x-tenant-id>",
"X-Juo-Admin-Api-Key": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'X-Tenant-ID': '<x-tenant-id>', 'X-Juo-Admin-Api-Key': '<api-key>'}
};
fetch('https://api.juo.io/admin/v1/subscriptions', 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",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.juo.io/admin/v1/subscriptions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Tenant-ID", "<x-tenant-id>")
req.Header.Add("X-Juo-Admin-Api-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.juo.io/admin/v1/subscriptions")
.header("X-Tenant-ID", "<x-tenant-id>")
.header("X-Juo-Admin-Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.juo.io/admin/v1/subscriptions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Tenant-ID"] = '<x-tenant-id>'
request["X-Juo-Admin-Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"resource": "list",
"hasNextPage": true,
"hasPrevPage": true,
"endCursor": "<string>",
"startCursor": "<string>",
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"resource": "subscription",
"serial": "1042",
"status": "active",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"canceledAt": "2023-11-07T05:31:56Z",
"nextBillingDate": "2024-02-15T10:00:00.000Z",
"currentCycle": 1,
"currencyCode": "USD",
"billingPolicy": {
"interval": "MONTH",
"intervalCount": 1
},
"deliveryPolicy": {
"interval": "MONTH",
"intervalCount": 1
},
"deliveryMethod": {
"type": "shipping",
"title": "<string>",
"description": "<string>"
},
"customAttributes": [
{
"key": "<string>",
"value": "<string>"
}
],
"customer": "7654321",
"items": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"resource": "subscription-item",
"title": "Monthly Coffee Blend",
"subtitle": "250g / Ground",
"quantity": 1,
"totalPrice": 24.99,
"recurringCycleLimit": 3,
"canceledAt": "2023-11-07T05:31:56Z",
"billingPolicy": {
"interval": "DAY",
"intervalCount": 183,
"anchors": [
{
"type": "WEEKDAY",
"day": 16,
"month": 6,
"cutoffDay": 16
}
],
"minCycles": 2,
"maxCycles": 2
},
"deliveryPolicy": {
"interval": "DAY",
"intervalCount": 183,
"anchors": [
{
"type": "WEEKDAY",
"day": 16,
"month": 6,
"cutoffDay": 16
}
]
},
"customAttributes": [
{
"key": "<string>",
"value": "<string>"
}
],
"variant": "<string>",
"product": "<string>"
}
],
"discounts": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"resource": "subscription-discount",
"title": "<string>",
"target": {
"type": "shipping"
},
"value": {
"amount": 123,
"type": "fixed-amount",
"appliesOnEachItem": true
},
"recurringCycleLimit": 2
}
],
"paymentMethod": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"deliveryAddress": {
"firstName": "<string>",
"lastName": "<string>",
"address1": "<string>",
"address2": "<string>",
"zip": "<string>",
"city": "<string>",
"country": "<string>",
"countryCode": "<string>",
"provinceCode": "<string>",
"province": "<string>",
"phone": "<string>",
"company": "<string>"
},
"deliveryPrice": 1
}
]
}Authorizations
Long-lived Admin API key issued from the Juo merchant portal. Pass as the X-Juo-Admin-Api-Key header.
Headers
Unique identifier of the tenant in the system (usually a store identifier)
Query Parameters
Search query. Terms are field:value; comparisons field:>value, :<, :>=, :<=. A bare value without a field is a full-text prefix search. Several bare words in a row are one phrase, as if quoted: the words next to each other, in that order. Quote values in single or double quotes unless they are only letters and digits, with single dots between them, or a UUID as a filter value. Combine terms with AND (binds tighter) and OR, group with parentheses, negate a term or group with NOT or a leading -. status values are case-insensitive. Fields: id, serial, status, createdAt, updatedAt, nextBillingDate, canceledAt, customer. Example: status:active AND nextBillingDate:>="2026-01-01". See search query language and the field reference.
See pagination for more details on how to paginate the results.
1 <= x <= 100See pagination for more details on how to paginate the results.
1See pagination for more details on how to paginate the results.
1Specify which related resources to include in the response. Supports 'customer' and 'paymentMethod'.
customer, paymentMethod Whether to include canceled subscriptions in the results.