The three endpoints
All Form endpoints are read-only. Forms are created and managed in the VOMO admin UI; volunteers submit Form Completions through the VOMO UI; partner integrations consume the data.
The Form family of resources
The Form resource family has five distinct schemas, each capturing a different layer:FormResource — the template
The top-level Form record describing the data-collection template:
FormFieldResource — the questions
Each Form has an array of Fields — the individual questions the volunteer answers:
FormFieldOptionResource — dropdown choices
For Fields with field_type of DROPDOWN or MULTIPLESELECT, the available options:
The
weight field controls display order. Lower weights appear earlier in the list.
FormCompletionResource — a volunteer’s submission
When a volunteer completes a Form, a Form Completion record is created:
This is the central “what did this volunteer say in this form” record. The
field_responses array captures the actual answers.
FormFieldResponseResource — a single answer
Each entry in field_responses represents one Field’s answer:
Even numeric or boolean Field values come back as strings. Parse them based on the Field’s
field_type when displaying or processing.
Form types
Theform_type enum determines what context the Form is used in:
Field types
Thefield_type on a Form Field determines what input the volunteer provides. Likely values (from the Form slug enum, which appears to have been miscategorized — see audit #15):
For partner integrations parsing Form completions:
JavaScript
MULTIPLESELECT (comma-separated vs. JSON array vs. something else) isn’t documented in the spec; the pattern above handles the most likely formats defensively.
Listing forms
cURL
Available filters
Common list patterns
Active Forms only:JavaScript
JavaScript
JavaScript
Reading Form completions
cURL
Available filters
Common list patterns
Completions for a specific user across one form:JavaScript
JavaScript
Fetching a single completion
cURL
FormCompletionResource with full field_responses[]:
JavaScript
Reading field responses with the Field definitions
A common pattern: display a Form completion alongside the Field definitions so the responses make sense in context.JavaScript
Common workflows
Sync Form completions to an external system
For partner integrations syncing volunteer applications, waiver acceptances, or survey responses into an external CRM:JavaScript
Build a per-user form history
For showing a single user’s full form submission history:JavaScript
Detect waiver expiration
For organizations requiring annual waiver renewal:JavaScript
Aggregate Form responses for reporting
For survey or feedback Forms:JavaScript
What can’t be done via the API
If a partner integration needs to push Form data into VOMO (e.g., importing waivers signed externally), coordinate with VOMO’s admin team for an alternative path — typically a CSV import.
See Understand Write Limitations.
A reference Forms client
JavaScript
FormResource and FormFieldResource but doesn’t reach parser logic if you treat the response as the array-of-one-record it sometimes appears as).
Where to go next
Certificates
The other read-only resource — training and achievement credentials.
Users
Users complete Forms; the user_id is the linkage to Form Completions.
Projects and Project Dates
Forms are typically attached to Projects.
The Volunteer Data Model
The full data model context for Forms.