#!/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 SonarDesk Paddle sandbox catalog..." echo # # Personal # PERSONAL_PRODUCT=$(create_product \ "SonarDesk Personal" \ "SonarDesk 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" \ "SonarDesk Personal — monthly subscription with 7-day free trial." \ "month" \ "299" \ "299" \ "349" \ "499") 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" \ "SonarDesk Personal — annual subscription with 7-day free trial." \ "year" \ "2499" \ "2499" \ "2899" \ "4199") PERSONAL_ANNUAL_ID=$(echo "$PERSONAL_ANNUAL" | jq -r '.data.id') echo "Created Personal Annual: $PERSONAL_ANNUAL_ID" # # Professional # PRO_PRODUCT=$(create_product \ "SonarDesk Professional" \ "SonarDesk 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" \ "SonarDesk Professional — monthly subscription with 7-day free trial." \ "month" \ "499" \ "499" \ "599" \ "849") 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" \ "SonarDesk Professional — annual subscription with 7-day free trial." \ "year" \ "4499" \ "4499" \ "5199" \ "7499") 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" '$2.99' '£2.99' '€3.49' 'A$4.99' printf "%-24s %-12s %-12s %-12s %-12s\n" \ "Personal Annual" '$24.99' '£24.99' '€28.99' 'A$41.99' printf "%-24s %-12s %-12s %-12s %-12s\n" \ "Professional Monthly" '$4.99' '£4.99' '€5.99' 'A$8.49' printf "%-24s %-12s %-12s %-12s %-12s\n" \ "Professional Annual" '$44.99' '£44.99' '€51.99' 'A$74.99' echo echo "All four prices include a 7-day FREE trial." echo echo "============================================================" cat > sonardesk-paddle-ids.env <