Questionnaire Submit
Overview
Submitting a questionnaire creates a tenant response through POST /api/mobile/surveys/{surveyId}/submissions. A response may optionally reference a field task, but a task is not required for direct authenticated survey submission.
Before You Submit
Make sure you have:
- Loaded an active survey through
GET /api/mobile/surveys/{surveyId}and verified that the runtime permits a new authenticated response. - Supplied a stable, client-generated
clientSubmissionIdso retries are idempotent. - Read any instructions displayed at the beginning of the questionnaire.
Filling In the Questionnaire
Work through each question one at a time:
- Read each question carefully before selecting or typing your answer.
- Required questions are marked with an asterisk (*). You must answer all required questions in a section before advancing.
- Optional questions may be skipped, but answer them if you have relevant information.
- Use the Next button to move to the next section after completing all questions on the current page.
- Use the Back button to review or correct answers on a previous section.
Answer Types
| Question Type | How to Answer |
|---|---|
| Single choice | Tap the radio button next to your chosen option. |
| Multiple choice | Tap the checkboxes next to all options that apply. |
| Text entry | Tap the text field and type your response. |
| Rating scale | Tap the number or label that best represents your rating. |
| Yes / No | Tap Yes or No. |
| Date / Time | Tap the field and use the calendar or clock widget to select. |
| File | Select one or more explicitly allowed files. Each file uploads first; final submission sends only opaque UploadId values, never file bytes or storage paths. |
Drafts and Offline Work
The backend does not auto-save merely because the user changes sections or backgrounds the app. A client that offers drafts or offline work must implement that behavior explicitly:
- Keep unsent work in client storage when offline.
- Submit a request with the intended
statuswhen server persistence is required. - Reuse the same
clientSubmissionIdwhen retrying an uncertain create request.
Do not promise automatic local persistence or synchronization unless the specific client implements and tests it.
Reviewing Your Answers Before Submission
On the final section of the questionnaire, the app may display a Summary screen showing all your answers grouped by section. Use this screen to:
- Verify that all required questions are answered.
- Spot any responses you want to revisit.
- Use Edit next to a section to go back and change an answer.
Submitting
When you are satisfied with your answers:
- Tap the Submit button on the final section or summary screen.
- Send the runtime-compatible
QuestionnaireInstanceViewModel; the route value is authoritative forsurveyIdand public token ids are cleared. - Include GPS fields when the survey requires completed-location metadata, and upload File answers first so final JSON contains opaque
UploadIdvalues.
After successful submission:
- A Submission Successful message is displayed.
- The persisted questionnaire uses the submitted
QuestionnaireInstanceStatus, normallyCompletedfor a final response. - If
fieldTaskIdis supplied, task effects are determined by the server; task completion is also exposed separately atPOST /api/mobile/tasks/{id}/complete.
After Submission
- You can view current file descriptors and download authorized files without seeing storage paths or internal metadata ids.
- An attributed authenticated response can be edited only when the survey remains active, response editing is enabled, the response is Completed, the current user is the original submitter, and the origin-specific acceptance control still permits editing. Anonymous public submissions remain immutable.
- Editing a File answer uploads replacements first and sends retained current
AnswerFileIdvalues plus newUploadIdvalues. Successful replacement creates new association ids, so the client must reload current response details. - The submitted data is securely stored and used for reporting and analysis by your organization.
Troubleshooting
- "Required questions not answered" error: Return to the section indicated and fill in the missing answers.
- Submission failed — network error: Retry with the same
clientSubmissionIdto receive the previously accepted instance instead of creating a duplicate. response_limit_reached: The tenant has no remaining response capacity; retrying unchanged will not bypass the limit.- A completed response needs correction: Load the owned response and honor
canEdit; usePATCH /api/mobile/submissions/{instanceId}only when permitted.
Subscription requirement
Submission requires an active organization subscription. While it is expired the request is refused with errorCode 1001 / code "SubscriptionExpired", and the server creates no response and no answers — and does not consume the clientSubmissionId.
A queued offline submission must therefore be kept, not discarded: keep the same clientSubmissionId, the original SurveyVersionId and answers, and retry the identical payload after renewal. It is then accepted exactly once, and a further retry returns the canonical already-accepted result.
The file-upload retry key clientUploadId is a different key for a different operation; do not substitute one for the other. See Mobile Offline Work and Operations.