List form submission rows
Módulo Workforce
GET/form-submissionsformSubmissions.list
A submitted form: answers against one template version, score, GPS stamp, signature and approval. Returns a cursor page of form submission rows the caller may see. The default order is `created_at` ascending. Supports sparse fieldsets and the filter grammar.
- Requiere la capacidad knowledge.sop.read.
- Alcances de OAuth: knowledge.
- Paginación por cursor: se aplican limit, cursor, fields, sort y filter.
- Estados de error: 400, 401, 429. Los errores son detalles de problema RFC 9457.
Parámetros de ruta y de consulta
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| limit | Limit | No | Page size. Default 50, maximum 200.Restricciones: range 1 to 200 |
| cursor | Cursor | No | Opaque cursor from `next_cursor` of the previous page.Restricciones: length 1 to any |
| fields | Fields | No | Sparse fieldset: a comma-separated list of top-level fields to return. `id` is always returned.Restricciones: pattern ^[a-z_][a-z0-9_]*(,[a-z_][a-z0-9_]*)*$ |
| sort | Sort | No | Sort keys, comma-separated; a leading `-` sorts descending. Without `sort`, the documented default order applies (coded lists sort in numeric code order).Restricciones: pattern ^-?[a-z_][a-z0-9_]*(,-?[a-z_][a-z0-9_]*)*$ |
| filter | Filter | No | Filter grammar `filter[field][op]=value`. Operators: eq, ne, lt, lte, gt, gte, in (comma-separated values), is_null (true or false) and contains. Conditions combine with AND. |
Respuesta 200: una página de FormSubmission
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| id | string (uuid) | Sí | Identifier of the form submission. |
| org_id | string (uuid) | Sí | Identifier of the owning organization, derived from the parent row and never accepted from the caller. |
| created_at | string (date-time) | Sí | When the row was created. |
| created_by | string (uuid) | null | Sí | Person who created the row; null for seed, platform or system writes. |
| updated_at | string (date-time) | Sí | When the row was last updated. |
| updated_by | string (uuid) | null | Sí | Person who last updated the row; null for seed, platform or system writes. |
| form_template_id | string (uuid) | Sí | Identifier of the form answered. |
| form_template_version_id | string (uuid) | Sí | Identifier of the version answered. |
| project_id | string (uuid) | null | Sí | Identifier of the project the submission belongs to. |
| record_id | string (uuid) | null | Sí | Identifier of the record the project submission became. |
| submitted_by_membership_id | string (uuid) | Sí | Identifier of the member who submitted. |
| answers | object | Sí | Answers keyed by field key. |
| score | number | null | Sí | Points earned. |
| max_score | number | null | Sí | Points available on the shown fields. |
| passed | boolean | null | Sí | Whether the pass score was met. |
| latitude | number | null | Sí | WGS 84 latitude.Restricciones: range -90 to 90 |
| longitude | number | null | Sí | WGS 84 longitude.Restricciones: range -180 to 180 |
| accuracy_m | number | null | No | GPS accuracy in metres.Restricciones: range 0 to any |
| signer_name | string | null | Sí | Name of the signer.Restricciones: length 1 to 200 |
| signature_path | string | null | Sí | Signature image path in the field-media bucket.Restricciones: length 1 to 500 |
| signed_at | string (date-time) | null | Sí | When it was signed. |
| submission_state | "Submitted" | "Approved" | "Rejected" | "Recorded" | Sí | Submission state. |
| decided_by_membership_id | string (uuid) | null | Sí | Identifier of the approver who decided. |
| decision_note | string | null | Sí | Approver's note.Restricciones: length 1 to 1000 |
{
"data": [
{
"id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
"org_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
"created_at": "2026-10-08T14:30:00Z",
"created_by": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
"updated_at": "2026-10-08T14:30:00Z",
"updated_by": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
"form_template_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
"form_template_version_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
"project_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
"record_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
"submitted_by_membership_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
"answers": {
"hoist_ok": true
},
"score": 3,
"max_score": 3,
"passed": true,
"latitude": 25.7617,
"longitude": -80.1918,
"accuracy_m": 8,
"signer_name": "Frank Adeyemi",
"signature_path": "org/forms/sig.png",
"signed_at": "2026-10-08T14:30:00Z",
"submission_state": "Submitted",
"decided_by_membership_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
"decision_note": "Good to lift."
}
],
"next_cursor": null
}Ejemplos de código
curl -X GET "$XOS_BASE_URL/form-submissions" \
-H "Authorization: Bearer $XOS_API_KEY"for await (const row of xos.formSubmissions.listAll()) {
console.log(row);
}for row in xos.form_submissions.list_all():
print(row)xos form-submissions list --all