---
title: "Getting Form Schema Fields"
method: GET
path: "/v1/projects/{projectId}/forms/{xmlFormId}/fields"
tags: ["Individual Form"]
---

# Getting Form Schema Fields

`GET /v1/projects/{projectId}/forms/{xmlFormId}/fields`

_(introduced: version 0.8)_

For applications that do not rely on JavaRosa, it can be challenging to parse XForms XML into a simple schema structure. Because Central Backend already implements and performs such an operation for its own internal purposes, we also expose this utility for any downstream consumers which wish to make use of it.

While this may eventually overlap with the new OData JSON CSDL specification, we are likely to maintain this API as it more closely mirrors the original XForms data types and structure.

Central internally processes the XForms schema tree into a flat list of fields, and this is how the data is returned over this endpoint as well. It will always return fields in a _depth-first traversal order_ of the original `<instance>` XML block in the XForm.

You may optionally add the querystring parameter `?odata=true` to sanitize the field names and paths to match the way they will be outputted for OData. While the original field names as given in the XForms definition may be used as-is for CSV output, OData has some restrictions related to the domain-qualified identifier syntax it uses.

## Path parameters

- `projectId` number, required
- `xmlFormId` string, required

## Query parameters

- `odata` boolean

## Response `200`

OK

- object[]
  - `name` string, required
  - `path` string, required
  - `type` string, required
  - `binary` boolean

## Changes

- **2025-12-20** `022694254f0d` — 1 info
  - api operation id `Getting Form Schema Fields` removed and replaced with `getFormSchemaFields`
- **2025-10-27** `b11b54eea487` — 1 info
  - removed the non-success response with the status `403`
- **2025-03-13** `e8c2858fd4eb` — 2 info
  - api operation id `getFormSchemaFields` removed and replaced with `Getting Form Schema Fields`
  - added the non-success response with the status `403`

[Change history](https://skmtc.dev/getodk/apis/odk-central-api/changes/v1/projects/:projectId/forms/:xmlFormId/fields/get.md)

---

[API](https://skmtc.dev/getodk/apis/odk-central-api.md) · [All operations](https://skmtc.dev/getodk/apis/odk-central-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/getodk/odk-central-api/revisions/d4f5ba77f644/schema)
