create_rules_wizard
Generate official sweepstakes rules via the 14-step wizard. BEFORE CALLING: 1) fetch_sweepstakes to get token, dates, name. 2) get_business + get_profile to pre-fill sponsor fields. 3) fetch_rules to check for existing primary rules — if primary exists, warn user new rules will be SECONDARY. Ask wizard questions in order (steps A-N), one at a time or in small groups. Only ask for data you cannot get from API calls. PRIMARY RULES LINK: If result is_primary=true, give user the URL: https://swpp.me/r/[handler] (handler in lowercase from fetch_sweepstakes). RULES LANGUAGE: Always set rules_language="en". The wizard generates ALL legal text server-side — NEVER compose rules language yourself. AMOE URL: The AMOE URL is NOT the entry page URL — the wizard handles AMOE language automatically based on method_of_entry. AGE GATE: Only activate Age Gate when min_age=2 (21+). NEVER for min_age=1 (18+) or min_age=3 (13+). GEOLOCATION: Use the states parameter for geographic eligibility. NEVER use GeoLocation entry settings for state restrictions — GeoLocation is for GPS/IP boundaries only.
create_rules_wizard
When to use
Generate official sweepstakes rules via the 14-step wizard. BEFORE CALLING: 1) fetch_sweepstakes to get token, dates, name. 2) get_business + get_profile to pre-fill sponsor fields. 3) fetch_rules to check for existing primary rules — if primary exists, warn user new rules will be SECONDARY. Ask wizard questions in order (steps A-N), one at a time or in small groups. Only ask for data you cannot get from API calls. PRIMARY RULES LINK: If result is_primary=true, give user the URL: https://swpp.me/r/[handler] (handler in lowercase from fetch_sweepstakes). RULES LANGUAGE: Always set rules_language="en". The wizard generates ALL legal text server-side — NEVER compose rules language yourself. AMOE URL: The AMOE URL is NOT the entry page URL — the wizard handles AMOE language automatically based on method_of_entry. AGE GATE: Only activate Age Gate when min_age=2 (21+). NEVER for min_age=1 (18+) or min_age=3 (13+). GEOLOCATION: Use the states parameter for geographic eligibility. NEVER use GeoLocation entry settings for state restrictions — GeoLocation is for GPS/IP boundaries only.
Pre-calls required
fetch_sweepstakesif the user gave you a sweepstakes name instead of a tokenfetch_rules(sweepstakes_token)— if primary rules already exist, WARN that new rules will be SECONDARY (not published)get_business— auto-populate sponsor info (legal name, address)get_entry_settings— confirm AMOE state matches the entry method
Parameters to validate before calling
sweepstakes_token(string, required) — Sweepstakes token (UUID). Get via fetch_sweepstakes.arv(number, required) — one of:1,2— Approximate Retail Value threshold. 1 = ARV >= $5,000. 2 = ARV < $5,000.alcohol_sweeps(number, required) — one of:1,2— Does the SPONSOR produce or manufacture alcoholic products? 1 = Yes, 2 = No. Only producers/manufacturers count: a retailer, store, supermarket, bar or restaurant that merely sells alcohol is NOT an alcohol sponsor and should be 2. The trigger is who the sponsor is, not what the prize is — a brewery giving away concert tickets is 1. When 1, min_age must be 2 (21+).sweepstakes_name(string, required) — Official promotional name (6-60 characters).start_date(string, required) — Start date (YYYY-MM-DD).start_time(string, required) — Start time (e.g. "09:00 AM" or "14:00").start_timezone(string, required) — Start timezone (e.g. "US/Eastern", "EST", "CST").end_date(string, required) — End date (YYYY-MM-DD).end_time(string, required) — End time (e.g. "11:59 PM" or "23:59").end_timezone(string, required) — End timezone.prize_description(string, required) — Detailed prize description (max 5000 chars).prize_include_travel(boolean, required) — Does the prize include travel?prize_is_vehicle(boolean, required) — Is the prize a vehicle?prize_value(number, required) — Total prize value in USD. Must be > 0.entry_period_selector(number, required) — one of:1,2— 1 = single drawing period, 2 = multiple entry periods.sponsor_name(string, required) — Legal sponsor name. Pre-fill from get_business.sponsor_address(string, required) — Sponsor street address. Pre-fill from get_business.sponsor_city(string, required) — Sponsor city. Pre-fill from get_business.sponsor_state(string, required) — Sponsor state or abbreviation. Pre-fill from get_business.sponsor_zip_code(string, required) — Sponsor zip code (5 digits). Pre-fill from get_business.method_of_entry(number, required) — one of:1,2,3,4,5,6,7,8— Entry method: 1=Website, 2=SMS, 3=Social Media, 4=Other, 5=Purchase ($1=1 entry), 6=Purchase (1 order=1 entry), 7=Donation, 8=Subscription.min_age(number, required) — one of:1,2,3— Minimum age: 1=18+, 2=21+, 3=13+ with parental consent.states(number, required) — one of:1,2,3,4,5,6,7,8,9,10— Geographic eligibility. 1 = 48 contiguous US + DC. 2 = 50 US + DC. 3 = 50 US + DC + US Virgin Islands + Puerto Rico. 4 = specific states (requires list_of_states). 5 = 50 US + DC excluding FL and NY. 6 = 50 US + DC excluding FL, NY and RI. 7 = 50 US + DC + Canada. 8 = 50 US + DC + Canada excluding FL and NY. 9 = 50 US + DC + Canada excluding FL, NY and RI. 10 = Canada only. Values 5, 6, 8 and 9 exist to avoid the registration/bonding requirements of FL, NY and RI. Values 7-10 include Canada: the rules must state that Canadian winners answer a mathematical skill-testing question to receive the prize.privacy_policy_url(string, required) — Privacy policy URL (min 11 chars, must include http/https).sweeppea_entry_page(number, required) — one of:1,2,3— 1 = Sweeppea hosted page, 2 = custom URL, 3 = none.winners_to_draw(number, optional) — Number of winners to draw (>= 1). Required when entry_period_selector = 1.winner_drawing_date(string, optional) — Drawing date (YYYY-MM-DD). Required when entry_period_selector = 1.winner_drawing_time(string, optional) — Drawing time. Required when entry_period_selector = 1.winner_drawing_timezone(string, optional) — Drawing timezone. Required when entry_period_selector = 1.winner_notification_date(string, optional) — Winner notification date (YYYY-MM-DD). Required when entry_period_selector = 1.winner_notification_time(string, optional) — Winner notification time. Required when entry_period_selector = 1.winner_notification_timezone(string, optional) — Winner notification timezone. Required when entry_period_selector = 1.entry_period_items(array, optional) — Array of period objects. Required when entry_period_selector = 2. Each object: { start_date, start_time, end_date, end_time, drawing_date, winners_drawn, notification_date, prize_description, prize_value }.sponsor_telephone(string, optional) — Sponsor phone number (optional). Pre-fill from get_profile.sponsor_email(string, optional) — Sponsor email (optional). Pre-fill from get_profile.social_media_entry_description(string, optional) — Social media entry details. Required when method_of_entry = 3.other_description(string, optional) — Other entry method description. Required when method_of_entry = 4.sponsor_ecommerce_store_url_a(string, optional) — Ecommerce store URL. Required when method_of_entry = 5.sponsor_ecommerce_store_url_b(string, optional) — Ecommerce store URL. Required when method_of_entry = 6.sponsor_donations_acceptance_page_url(string, optional) — Donations acceptance page URL. Required when method_of_entry = 7.sponsor_ecommerce_store_url_c(string, optional) — Ecommerce/subscription store URL. Required when method_of_entry = 8.total_number_of_entries_awarded_amoe(number, optional) — Total entries awarded via AMOE (>= 1). Required when method_of_entry is 5, 6, 7, or 8.limit_or_max_number_of_entries_amoe(number, optional) — Max entries via AMOE (>= 1). Required when method_of_entry is 5, 6, 7, or 8.list_of_states(array, optional) — Array of state names. Required when states = 4.custom_entry_page(string, optional) — Custom entry page URL (min 11 chars). Required when sweeppea_entry_page = 2.sponsor_offering_multiplier(number, optional) — one of:1,2— Is sponsor offering entry multiplier? 1=Yes, 2=No. Default: 2.sponsor_awarding_bonus_email_social(number, optional) — one of:1,2— Awarding bonus for email/social? 1=Yes, 2=No. Default: 2.sponsor_asking_to_submit_video(number, optional) — one of:1,2— Asking for video submission? 1=Yes, 2=No. Default: 2.rules_language(string, optional) — Rules language code. MUST always be "en" (English). The wizard generates all legal text server-side using its own templates — NEVER compose or modify rules language yourself.
Notes
Compliance pre-checks: ARV > $5,000 + FL/NY not excluded → WARN about bonding/registration
ARV > $500 + sponsor is an RI retailer + entry requires a store visit → WARN about RI registration (all three conditions must be met)
Purchase/donation/subscription entry → VERIFY AMOE is configured
alcohol_sweeps=1 ONLY when the SPONSOR produces/manufactures alcoholic products — a retailer, store, bar or restaurant that merely sells alcohol is 2; the prize is irrelevant (a brewery giving away concert tickets is 1)
Alcohol = yes → VERIFY min_age=21 and Age Gate active; in AL, IN, ME, MD, NC, VT and WV, State Alcohol Board approval is required before launch — warn the user
states 5/6/8/9 exist to exclude the FL/NY/RI registration-and-bonding states; 7-10 include Canada (10 is Canada ONLY)
Open to Canada (states 7-10) → the rules must state the mathematical skill-testing question for Canadian winners; Quebec-only or Quebec-designated prizes → RACJ registration + French translation of the rules (Canada-wide needs neither)
Age < 13 → REFUSE (COPPA violation)
After creation: call
fetch_rulesto verify; useupdate_rulefor correctionsat the end of the Official Rules document always include a copyright notice that say "All rights reserved."
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| arv | Yes | Approximate Retail Value threshold. 1 = ARV >= $5,000. 2 = ARV < $5,000. | |
| states | Yes | Geographic eligibility. 1 = 48 contiguous US + DC. 2 = 50 US + DC. 3 = 50 US + DC + US Virgin Islands + Puerto Rico. 4 = specific states (requires list_of_states). 5 = 50 US + DC excluding FL and NY. 6 = 50 US + DC excluding FL, NY and RI. 7 = 50 US + DC + Canada. 8 = 50 US + DC + Canada excluding FL and NY. 9 = 50 US + DC + Canada excluding FL, NY and RI. 10 = Canada only. Values 5, 6, 8 and 9 exist to avoid the registration/bonding requirements of FL, NY and RI. Values 7-10 include Canada: the rules must state that Canadian winners answer a mathematical skill-testing question to receive the prize. | |
| min_age | Yes | Minimum age: 1=18+, 2=21+, 3=13+ with parental consent. | |
| end_date | Yes | End date (YYYY-MM-DD). | |
| end_time | Yes | End time (e.g. "11:59 PM" or "23:59"). | |
| start_date | Yes | Start date (YYYY-MM-DD). | |
| start_time | Yes | Start time (e.g. "09:00 AM" or "14:00"). | |
| prize_value | Yes | Total prize value in USD. Must be > 0. | |
| end_timezone | Yes | End timezone. | |
| sponsor_city | Yes | Sponsor city. Pre-fill from get_business. | |
| sponsor_name | Yes | Legal sponsor name. Pre-fill from get_business. | |
| sponsor_email | No | Sponsor email (optional). Pre-fill from get_profile. | |
| sponsor_state | Yes | Sponsor state or abbreviation. Pre-fill from get_business. | |
| alcohol_sweeps | Yes | Does the SPONSOR produce or manufacture alcoholic products? 1 = Yes, 2 = No. Only producers/manufacturers count: a retailer, store, supermarket, bar or restaurant that merely sells alcohol is NOT an alcohol sponsor and should be 2. The trigger is who the sponsor is, not what the prize is — a brewery giving away concert tickets is 1. When 1, min_age must be 2 (21+). | |
| list_of_states | No | Array of state names. Required when states = 4. | |
| rules_language | No | Rules language code. MUST always be "en" (English). The wizard generates all legal text server-side using its own templates — NEVER compose or modify rules language yourself. | en |
| start_timezone | Yes | Start timezone (e.g. "US/Eastern", "EST", "CST"). | |
| method_of_entry | Yes | Entry method: 1=Website, 2=SMS, 3=Social Media, 4=Other, 5=Purchase ($1=1 entry), 6=Purchase (1 order=1 entry), 7=Donation, 8=Subscription. | |
| sponsor_address | Yes | Sponsor street address. Pre-fill from get_business. | |
| winners_to_draw | No | Number of winners to draw (>= 1). Required when entry_period_selector = 1. | |
| prize_is_vehicle | Yes | Is the prize a vehicle? | |
| sponsor_zip_code | Yes | Sponsor zip code (5 digits). Pre-fill from get_business. | |
| sweepstakes_name | Yes | Official promotional name (6-60 characters). | |
| custom_entry_page | No | Custom entry page URL (min 11 chars). Required when sweeppea_entry_page = 2. | |
| other_description | No | Other entry method description. Required when method_of_entry = 4. | |
| prize_description | Yes | Detailed prize description (max 5000 chars). | |
| sponsor_telephone | No | Sponsor phone number (optional). Pre-fill from get_profile. | |
| sweepstakes_token | Yes | Sweepstakes token (UUID). Get via fetch_sweepstakes. | |
| entry_period_items | No | Array of period objects. Required when entry_period_selector = 2. Each object: { start_date, start_time, end_date, end_time, drawing_date, winners_drawn, notification_date, prize_description, prize_value }. | |
| privacy_policy_url | Yes | Privacy policy URL (min 11 chars, must include http/https). | |
| sweeppea_entry_page | Yes | 1 = Sweeppea hosted page, 2 = custom URL, 3 = none. | |
| winner_drawing_date | No | Drawing date (YYYY-MM-DD). Required when entry_period_selector = 1. | |
| winner_drawing_time | No | Drawing time. Required when entry_period_selector = 1. | |
| prize_include_travel | Yes | Does the prize include travel? | |
| entry_period_selector | Yes | 1 = single drawing period, 2 = multiple entry periods. | |
| winner_drawing_timezone | No | Drawing timezone. Required when entry_period_selector = 1. | |
| winner_notification_date | No | Winner notification date (YYYY-MM-DD). Required when entry_period_selector = 1. | |
| winner_notification_time | No | Winner notification time. Required when entry_period_selector = 1. | |
| sponsor_offering_multiplier | No | Is sponsor offering entry multiplier? 1=Yes, 2=No. Default: 2. | |
| winner_notification_timezone | No | Winner notification timezone. Required when entry_period_selector = 1. | |
| sponsor_ecommerce_store_url_a | No | Ecommerce store URL. Required when method_of_entry = 5. | |
| sponsor_ecommerce_store_url_b | No | Ecommerce store URL. Required when method_of_entry = 6. | |
| sponsor_ecommerce_store_url_c | No | Ecommerce/subscription store URL. Required when method_of_entry = 8. | |
| social_media_entry_description | No | Social media entry details. Required when method_of_entry = 3. | |
| sponsor_asking_to_submit_video | No | Asking for video submission? 1=Yes, 2=No. Default: 2. | |
| limit_or_max_number_of_entries_amoe | No | Max entries via AMOE (>= 1). Required when method_of_entry is 5, 6, 7, or 8. | |
| sponsor_awarding_bonus_email_social | No | Awarding bonus for email/social? 1=Yes, 2=No. Default: 2. | |
| total_number_of_entries_awarded_amoe | No | Total entries awarded via AMOE (>= 1). Required when method_of_entry is 5, 6, 7, or 8. | |
| sponsor_donations_acceptance_page_url | No | Donations acceptance page URL. Required when method_of_entry = 7. |