Registration Configuration API
Overview
GET /api/utilities/registration-configuration
Returns a complete snapshot of all configuration values that affect the registration form for the current LEAD instance. This is useful for understanding which registration features are active and what data drives the form, without needing SSH access to read .env values.
Auth: Requires an authenticated admin user (non-admins receive 403).
Response Structure
The response is a flat JSON object combining three categories of data:
Registration Config Variables
These come from config('fivable.registration.*') and are driven by .env values.
Key | Type | Default | Description |
|---|---|---|---|
|
|
| Whether an "Other" option appears in the city dropdown |
|
|
| Whether an "Other" option appears in the role dropdown |
|
|
| Whether the form asks for additional languages spoken |
|
|
| Whether the form collects a full address |
|
|
| Whether only a state field is shown (instead of full address) |
|
|
| Whether city selection appears before place selection (city drives available places) |
|
|
| Whether the form asks for a preferred language |
|
|
| Whether the form asks for an organization name |
|
|
| Whether the form collects a phone number |
|
|
| Auto-assigns registrants to this group (skips group selection) |
|
|
| Auto-assigns registrants to this learning path |
|
|
| Minimum age in years for date-of-birth validation |
|
|
| Whether to skip collecting date of birth entirely |
|
|
| Custom label text for the email field (e.g., "Work Email") |
|
|
| Whether an "Outside" / not-affiliated option appears in the first place selection |
|
|
| Location type IDs shown in the first place-selection step |
|
|
| HTML content displayed above group/place selection |
|
|
| HTML content displayed at the top of the registration form |
|
|
| Configured place-selection prompt steps (see Place Selection Prompts below) |
|
|
| Available role options in registration (null = no role selection) |
|
|
| Indicates if the instance uses Mailtrap (vs sending real mail or logging) |
Basic Config Variables
These come from config('fivable.*').
Key | Type | Default | Description |
|---|---|---|---|
|
|
| Extra profile fields added to registration (custom per instance) |
|
|
| Label text used for Flodesk opt-in checkbox |
|
|
| Whether Flodesk email integration is configured (drives opt-in checkbox) |
|
|
| Whether Twilio SMS is configured |
|
|
| Whether Twilio premium SMS is enabled |
|
|
| Available salutation/honorific options |
|
|
| URL to terms & conditions (if set, a T&C checkbox appears) |
Dynamic Form Data
These are computed from the database at request time.
Key | Type | Description |
|---|---|---|
|
| Available cities derived from groups with locations. Empty if |
|
| Group types marked |
|
| All groups eligible for registration that have a physical location. |
|
| Learning paths with |
|
| IDs of learning paths with |
|
| Resolved place-selection prompts with actual group data. Each prompt has |
|
| Resolved role options from config, with "Other" appended if |
|
| Available languages based on |
Example Request
curl -X GET https://<instance>/api/utilities/registration-configuration \
-H "Authorization: Bearer <token>"Example Response (Abbreviated)
{
"allow_city_other": false,
"allow_role_other": true,
"ask_additional_languages": false,
"ask_address": false,
"ask_address_state_only": false,
"ask_city_first": true,
"ask_language": true,
"ask_organization_name": false,
"ask_phone": true,
"default_group_id": null,
"default_lp_id": 42,
"dob_min_age": 13,
"dont_collect_date_of_birth": false,
"email_label": "Work Email",
"first_group_with_location_add_outside": false,
"first_location_type_ids": [1, 3],
"group_intro_html": "<p>Select your parish below</p>",
"intro_html": null,
"place_selection_prompts": [],
"role_options": ["Teacher", "Catechist", "Parent"],
"additional_registration_profile_fields": [],
"flodesk_opt_in_label": null,
"has_flodesk": false,
"has_twilio": true,
"has_twilio_premium": false,
"honorifics": ["Dr.", "Mr.", "Mrs.", "Ms.", "Sr.", "Fr.", "Br.", "Msgr.", "Deacon"],
"terms_conditions_url": "https://example.com/terms",
"cities": ["Chicago", "Milwaukee", "Other"],
"group_types": [],
"groups_with_location": [],
"learningPathOptions": [],
"marriagePrepIds": [],
"roles": ["Teacher", "Catechist", "Parent", "Other"],
"language_options": [
{"label": "English", "value": "en-US"},
{"label": "Spanish (Spain)", "value": "es-ES"}
]
}Field Visibility & Behavior Matrix
This section documents exactly which config values control the visibility, behavior, and preset values of each form field. Use this to understand what the registration form looks like for a given configuration.
Always-Visible Fields
These fields are always present on the registration form regardless of configuration:
Field | Config Interactions |
|---|---|
First Name | None — always shown, always required |
Last Name | None — always shown, always required |
Label text changes if | |
Password | None — always shown, always required, minimum 8 characters |
Fivable Terms of Service | None — always shown, always required |
Conditionally-Visible Fields
Field | Visible When | Preset Value / Special Behavior |
|---|---|---|
Title / Salutation |
| Options populated from |
Date of Birth |
| Validates against |
Age Confirmation Checkbox |
| Replaces DOB field. Text reads "I confirm that I am {dob_min_age} years of age or older". Required. |
Language |
| Dropdown populated from |
Additional Languages |
| Multi-select dropdown. Shows all |
Street Address 1 & 2 |
| Two text fields. Not required. |
City (text input) |
| Free-text city field as part of the full address. Not required. |
City (dropdown) |
| Dropdown populated from |
State |
| Dropdown of US states. Not required. |
ZIP Code |
| Text field. Not required. Only shown with full address, not with state-only. |
Place (dropdown) |
| Dropdown populated from |
Place (manual text input) |
| Replaces the Place dropdown. Label is "City, State, Workplace". Free-text entry. Required. |
Role |
| Dropdown populated from |
Specify Role (text input) |
| Free-text entry for custom role. Required. |
Mobile Number |
| Phone input with country code selector. Not required. |
Organization Name |
| Text field. Not required. |
Additional Profile Fields |
| One field per entry. Each has its own |
Group Type Dropdowns |
| One dropdown per group type. Label comes from the group type's |
Learning Path |
| Dropdown populated from |
Place Selection Prompts |
| Each prompt renders as a separate place-selection step. Prompts only appear if their |
SMS Opt-In Checkbox |
| Text: "I would like to receive text reminders and updates regarding my learning requirements (Data rates may apply, reply STOP to opt out)". Not required. |
Flodesk Opt-In Checkbox |
| Label text comes from |
Terms & Conditions Checkbox |
| Text includes a link to the T&C URL. Required. |
Marriage Prep Acknowledgment | The selected learning path's ID is in | Checkbox acknowledging marriage prep registration. Required when visible. |
Preset / Default Values
Field | Config Key | Behavior |
|---|---|---|
Place dropdown |
| When set, the Place dropdown is pre-selected to this group ID. |
Learning Path dropdown |
| When set, the Learning Path dropdown is pre-selected to this LP ID. |
Language dropdown | (browser default) | Always pre-selected to the user's browser language ( |
Email label |
| When set, replaces the default "Email" label. When null, label is "Email". |