host updates
This commit is contained in:
Executable
+247
@@ -0,0 +1,247 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
PADDLE_API_KEY="${PADDLE_API_KEY:-}"
|
||||
|
||||
if [[ -z "$PADDLE_API_KEY" ]]; then
|
||||
echo "ERROR: PADDLE_API_KEY is not set."
|
||||
echo 'Run: export PADDLE_API_KEY="pdl_sdbx_apikey_..."'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
API="https://sandbox-api.paddle.com"
|
||||
|
||||
api_post() {
|
||||
local endpoint="$1"
|
||||
local payload="$2"
|
||||
|
||||
curl --fail-with-body --silent --show-error \
|
||||
--request POST \
|
||||
--url "${API}${endpoint}" \
|
||||
--header "Authorization: Bearer ${PADDLE_API_KEY}" \
|
||||
--header "Content-Type: application/json" \
|
||||
--data "$payload"
|
||||
}
|
||||
|
||||
create_product() {
|
||||
local name="$1"
|
||||
local description="$2"
|
||||
|
||||
api_post "/products" "$(jq -n \
|
||||
--arg name "$name" \
|
||||
--arg description "$description" \
|
||||
'{
|
||||
name: $name,
|
||||
description: $description,
|
||||
type: "standard",
|
||||
tax_category: "standard"
|
||||
}'
|
||||
)"
|
||||
}
|
||||
|
||||
create_price() {
|
||||
local product_id="$1"
|
||||
local name="$2"
|
||||
local description="$3"
|
||||
local cycle="$4"
|
||||
local usd="$5"
|
||||
local gbp="$6"
|
||||
local eur="$7"
|
||||
local aud="$8"
|
||||
|
||||
api_post "/prices" "$(jq -n \
|
||||
--arg product_id "$product_id" \
|
||||
--arg name "$name" \
|
||||
--arg description "$description" \
|
||||
--arg cycle "$cycle" \
|
||||
--arg usd "$usd" \
|
||||
--arg gbp "$gbp" \
|
||||
--arg eur "$eur" \
|
||||
--arg aud "$aud" \
|
||||
'{
|
||||
product_id: $product_id,
|
||||
name: $name,
|
||||
description: $description,
|
||||
|
||||
billing_cycle: {
|
||||
interval: $cycle,
|
||||
frequency: 1
|
||||
},
|
||||
|
||||
trial_period: {
|
||||
interval: "day",
|
||||
frequency: 7
|
||||
},
|
||||
|
||||
unit_price: {
|
||||
amount: $usd,
|
||||
currency_code: "USD"
|
||||
},
|
||||
|
||||
unit_price_overrides: [
|
||||
{
|
||||
country_codes: ["GB"],
|
||||
unit_price: {
|
||||
amount: $gbp,
|
||||
currency_code: "GBP"
|
||||
}
|
||||
},
|
||||
{
|
||||
country_codes: ["IE"],
|
||||
unit_price: {
|
||||
amount: $eur,
|
||||
currency_code: "EUR"
|
||||
}
|
||||
},
|
||||
{
|
||||
country_codes: ["AU"],
|
||||
unit_price: {
|
||||
amount: $aud,
|
||||
currency_code: "AUD"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
tax_mode: "account_setting",
|
||||
|
||||
quantity: {
|
||||
minimum: 1,
|
||||
maximum: 1
|
||||
}
|
||||
}'
|
||||
)"
|
||||
}
|
||||
|
||||
echo
|
||||
echo "Creating Rsync Studio Paddle sandbox catalog..."
|
||||
echo
|
||||
|
||||
#
|
||||
# Personal
|
||||
#
|
||||
|
||||
PERSONAL_PRODUCT=$(create_product \
|
||||
"Rsync Studio Personal" \
|
||||
"Rsync Studio for personal use.")
|
||||
|
||||
PERSONAL_PRODUCT_ID=$(echo "$PERSONAL_PRODUCT" | jq -r '.data.id')
|
||||
|
||||
echo "Created Personal product: $PERSONAL_PRODUCT_ID"
|
||||
|
||||
PERSONAL_MONTHLY=$(create_price \
|
||||
"$PERSONAL_PRODUCT_ID" \
|
||||
"Personal Monthly" \
|
||||
"Rsync Studio Personal — monthly subscription with 7-day free trial." \
|
||||
"month" \
|
||||
"199" \
|
||||
"199" \
|
||||
"199" \
|
||||
"299")
|
||||
|
||||
PERSONAL_MONTHLY_ID=$(echo "$PERSONAL_MONTHLY" | jq -r '.data.id')
|
||||
|
||||
echo "Created Personal Monthly: $PERSONAL_MONTHLY_ID"
|
||||
|
||||
PERSONAL_ANNUAL=$(create_price \
|
||||
"$PERSONAL_PRODUCT_ID" \
|
||||
"Personal Annual" \
|
||||
"Rsync Studio Personal — annual subscription with 7-day free trial." \
|
||||
"year" \
|
||||
"1499" \
|
||||
"1499" \
|
||||
"1699" \
|
||||
"2499")
|
||||
|
||||
PERSONAL_ANNUAL_ID=$(echo "$PERSONAL_ANNUAL" | jq -r '.data.id')
|
||||
|
||||
echo "Created Personal Annual: $PERSONAL_ANNUAL_ID"
|
||||
|
||||
#
|
||||
# Professional
|
||||
#
|
||||
|
||||
PRO_PRODUCT=$(create_product \
|
||||
"Rsync Studio Professional" \
|
||||
"Rsync Studio for professional and commercial use.")
|
||||
|
||||
PRO_PRODUCT_ID=$(echo "$PRO_PRODUCT" | jq -r '.data.id')
|
||||
|
||||
echo "Created Professional product: $PRO_PRODUCT_ID"
|
||||
|
||||
PRO_MONTHLY=$(create_price \
|
||||
"$PRO_PRODUCT_ID" \
|
||||
"Professional Monthly" \
|
||||
"Rsync Studio Professional — monthly subscription with 7-day free trial." \
|
||||
"month" \
|
||||
"399" \
|
||||
"399" \
|
||||
"449" \
|
||||
"699")
|
||||
|
||||
PRO_MONTHLY_ID=$(echo "$PRO_MONTHLY" | jq -r '.data.id')
|
||||
|
||||
echo "Created Professional Monthly: $PRO_MONTHLY_ID"
|
||||
|
||||
PRO_ANNUAL=$(create_price \
|
||||
"$PRO_PRODUCT_ID" \
|
||||
"Professional Annual" \
|
||||
"Rsync Studio Professional — annual subscription with 7-day free trial." \
|
||||
"year" \
|
||||
"2999" \
|
||||
"2999" \
|
||||
"3499" \
|
||||
"4999")
|
||||
|
||||
PRO_ANNUAL_ID=$(echo "$PRO_ANNUAL" | jq -r '.data.id')
|
||||
|
||||
echo "Created Professional Annual: $PRO_ANNUAL_ID"
|
||||
|
||||
echo
|
||||
echo "============================================================"
|
||||
echo " RSYNC STUDIO — PADDLE SANDBOX CATALOG"
|
||||
echo "============================================================"
|
||||
echo
|
||||
echo "PERSONAL"
|
||||
echo " Product ID: $PERSONAL_PRODUCT_ID"
|
||||
echo " Monthly Price ID: $PERSONAL_MONTHLY_ID"
|
||||
echo " Annual Price ID: $PERSONAL_ANNUAL_ID"
|
||||
echo
|
||||
echo "PROFESSIONAL"
|
||||
echo " Product ID: $PRO_PRODUCT_ID"
|
||||
echo " Monthly Price ID: $PRO_MONTHLY_ID"
|
||||
echo " Annual Price ID: $PRO_ANNUAL_ID"
|
||||
echo
|
||||
echo "------------------------------------------------------------"
|
||||
echo "Pricing"
|
||||
echo "------------------------------------------------------------"
|
||||
echo
|
||||
printf "%-24s %-12s %-12s %-12s %-12s\n" \
|
||||
"Plan" "USD" "UK" "Ireland" "Australia"
|
||||
printf "%-24s %-12s %-12s %-12s %-12s\n" \
|
||||
"Personal Monthly" '$1.99' '£1.99' '€1.99' 'A$2.99'
|
||||
printf "%-24s %-12s %-12s %-12s %-12s\n" \
|
||||
"Personal Annual" '$14.99' '£14.99' '€16.99' 'A$24.99'
|
||||
printf "%-24s %-12s %-12s %-12s %-12s\n" \
|
||||
"Professional Monthly" '$3.99' '£3.99' '€4.49' 'A$6.99'
|
||||
printf "%-24s %-12s %-12s %-12s %-12s\n" \
|
||||
"Professional Annual" '$29.99' '£29.99' '€34.99' 'A$49.99'
|
||||
echo
|
||||
echo "All four prices include a 7-day FREE trial."
|
||||
echo
|
||||
echo "============================================================"
|
||||
|
||||
cat > rsync-studio-paddle-ids.env <<EOF
|
||||
RSYNC_STUDIO_PERSONAL_PRODUCT_ID=$PERSONAL_PRODUCT_ID
|
||||
RSYNC_STUDIO_PERSONAL_MONTHLY_PRICE_ID=$PERSONAL_MONTHLY_ID
|
||||
RSYNC_STUDIO_PERSONAL_ANNUAL_PRICE_ID=$PERSONAL_ANNUAL_ID
|
||||
|
||||
RSYNC_STUDIO_PROFESSIONAL_PRODUCT_ID=$PRO_PRODUCT_ID
|
||||
RSYNC_STUDIO_PROFESSIONAL_MONTHLY_PRICE_ID=$PRO_MONTHLY_ID
|
||||
RSYNC_STUDIO_PROFESSIONAL_ANNUAL_PRICE_ID=$PRO_ANNUAL_ID
|
||||
EOF
|
||||
|
||||
echo
|
||||
echo "IDs also saved to:"
|
||||
echo " $(pwd)/rsync-studio-paddle-ids.env"
|
||||
echo
|
||||
@@ -0,0 +1,7 @@
|
||||
RSYNC_STUDIO_PERSONAL_PRODUCT_ID=pro_01m22q4c3vt7yvtv3h3zw1jbn0
|
||||
RSYNC_STUDIO_PERSONAL_MONTHLY_PRICE_ID=pri_01m22q4cjx177krcpvdph7e2vy
|
||||
RSYNC_STUDIO_PERSONAL_ANNUAL_PRICE_ID=pri_01m22q4cs9sr5gshxp6j56nvmh
|
||||
|
||||
RSYNC_STUDIO_PROFESSIONAL_PRODUCT_ID=pro_01m22q4d0s6y1557wsq9s7xw8n
|
||||
RSYNC_STUDIO_PROFESSIONAL_MONTHLY_PRICE_ID=pri_01m22q4d6h1yvr1frawtx51gy8
|
||||
RSYNC_STUDIO_PROFESSIONAL_ANNUAL_PRICE_ID=pri_01m22q4dcndcdbzc20txadaz52
|
||||
Reference in New Issue
Block a user