curl --request GET \
--url https://api.scrip.dev/v1/programs/{programId}/tiers/{key} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.scrip.dev/v1/programs/{programId}/tiers/{key}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.scrip.dev/v1/programs/{programId}/tiers/{key}', 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.scrip.dev/v1/programs/{programId}/tiers/{key}",
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-API-Key: <api-key>"
],
]);
$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.scrip.dev/v1/programs/{programId}/tiers/{key}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-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.scrip.dev/v1/programs/{programId}/tiers/{key}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.scrip.dev/v1/programs/{programId}/tiers/{key}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"archived_at": "2024-03-01T00:00:00Z",
"created_at": "2024-01-15T10:30:00Z",
"display_name": "Loyalty Status",
"id": "550e8400-e29b-41d4-a716-446655440000",
"key": "status",
"levels": [
{
"benefits": {},
"color": "#FFD700",
"created_at": "2024-01-15T10:30:00Z",
"display_name": "Gold",
"icon_url": "https://example.com/icons/gold.png",
"id": "550e8400-e29b-41d4-a716-446655440002",
"key": "gold",
"qualification": {
"criteria": [
{
"counter": "nights",
"operator": ">=",
"threshold": 25
}
],
"mode": "ALL"
},
"qualification_condition": "participant.counter.nights >= 25",
"rank": 2,
"updated_at": "2024-01-15T10:30:00Z"
}
],
"lifecycle": {
"counters": {
"qualifying": [
"<string>"
],
"rollover": "EXCESS"
},
"downgrade_policy": {
"mode": "DROP_ONE",
"grace_days": 30,
"min_level": "silver"
},
"qualification_period": {
"type": "FIXED_YEAR",
"start_day": 1,
"start_month": 2
},
"retention": {
"mode": "ACTIVITY_REFRESH",
"duration": "90d"
},
"status_validity": {
"extend_months": 1
}
},
"program_id": "550e8400-e29b-41d4-a716-446655440001",
"status": "ACTIVE",
"updated_at": "2024-01-15T10:30:00Z"
}{
"code": "unauthorized",
"details": {
"expected": "<string>",
"field": "<string>",
"fields": [
{
"expected": "<unknown>",
"field": "<string>",
"message": "This field is required",
"reason": "required",
"received": "<string>"
}
],
"reason": "invalid",
"received": "<string>"
},
"message": "Missing or invalid credentials"
}{
"code": "not_found",
"details": {
"expected": "<string>",
"field": "<string>",
"fields": [
{
"expected": "<unknown>",
"field": "<string>",
"message": "This field is required",
"reason": "required",
"received": "<string>"
}
],
"reason": "invalid",
"received": "<string>"
},
"message": "Resource not found"
}{
"code": "internal_error",
"message": "An internal error occurred"
}Get a tier
Returns a tier and all its levels, looked up by the tier’s key.
curl --request GET \
--url https://api.scrip.dev/v1/programs/{programId}/tiers/{key} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.scrip.dev/v1/programs/{programId}/tiers/{key}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.scrip.dev/v1/programs/{programId}/tiers/{key}', 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.scrip.dev/v1/programs/{programId}/tiers/{key}",
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-API-Key: <api-key>"
],
]);
$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.scrip.dev/v1/programs/{programId}/tiers/{key}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-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.scrip.dev/v1/programs/{programId}/tiers/{key}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.scrip.dev/v1/programs/{programId}/tiers/{key}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"archived_at": "2024-03-01T00:00:00Z",
"created_at": "2024-01-15T10:30:00Z",
"display_name": "Loyalty Status",
"id": "550e8400-e29b-41d4-a716-446655440000",
"key": "status",
"levels": [
{
"benefits": {},
"color": "#FFD700",
"created_at": "2024-01-15T10:30:00Z",
"display_name": "Gold",
"icon_url": "https://example.com/icons/gold.png",
"id": "550e8400-e29b-41d4-a716-446655440002",
"key": "gold",
"qualification": {
"criteria": [
{
"counter": "nights",
"operator": ">=",
"threshold": 25
}
],
"mode": "ALL"
},
"qualification_condition": "participant.counter.nights >= 25",
"rank": 2,
"updated_at": "2024-01-15T10:30:00Z"
}
],
"lifecycle": {
"counters": {
"qualifying": [
"<string>"
],
"rollover": "EXCESS"
},
"downgrade_policy": {
"mode": "DROP_ONE",
"grace_days": 30,
"min_level": "silver"
},
"qualification_period": {
"type": "FIXED_YEAR",
"start_day": 1,
"start_month": 2
},
"retention": {
"mode": "ACTIVITY_REFRESH",
"duration": "90d"
},
"status_validity": {
"extend_months": 1
}
},
"program_id": "550e8400-e29b-41d4-a716-446655440001",
"status": "ACTIVE",
"updated_at": "2024-01-15T10:30:00Z"
}{
"code": "unauthorized",
"details": {
"expected": "<string>",
"field": "<string>",
"fields": [
{
"expected": "<unknown>",
"field": "<string>",
"message": "This field is required",
"reason": "required",
"received": "<string>"
}
],
"reason": "invalid",
"received": "<string>"
},
"message": "Missing or invalid credentials"
}{
"code": "not_found",
"details": {
"expected": "<string>",
"field": "<string>",
"fields": [
{
"expected": "<unknown>",
"field": "<string>",
"message": "This field is required",
"reason": "required",
"received": "<string>"
}
],
"reason": "invalid",
"received": "<string>"
},
"message": "Resource not found"
}{
"code": "internal_error",
"message": "An internal error occurred"
}key. The response includes all levels with their rank, qualification criteria, and benefits, along with the tier’s lifecycle configuration.
For a listing of all tiers in a program, use the list endpoint instead.
Authorizations
API key passed in the X-API-Key header.
Response
Tier with levels
A tier definition with its levels, lifecycle configuration, and metadata
When the tier was archived (RFC 3339); absent while the tier is ACTIVE
"2024-03-01T00:00:00Z"
When this tier was created (RFC 3339)
"2024-01-15T10:30:00Z"
Human-readable name
"Loyalty Status"
Unique identifier for this tier
"550e8400-e29b-41d4-a716-446655440000"
Tier key used in API calls and rule actions
"status"
Ordered list of levels within this tier
Show child attributes
Show child attributes
Lifecycle configuration (retention mode, qualification period, downgrade policy, counter rollover)
Show child attributes
Show child attributes
Program this tier belongs to
"550e8400-e29b-41d4-a716-446655440001"
Lifecycle status: ACTIVE, or ARCHIVED once the tier has been archived
"ACTIVE"
When this tier was last modified (RFC 3339)
"2024-01-15T10:30:00Z"