# Criteria fields JSON format The `/json/criteriaFields.json` file in your package defines the criteria fields available to users when configuring a Hypersync. These fields can be reused across multiple proof types to provide consistent configuration options. The `criteriaFields.json` file must expose a single JSON object. Each property in this object represents one criteria field used by your custom app. The value of each property is an object that contains metadata describing the field. This metadata object includes a required `type` property, which specifies the type of form field displayed to the user. Additional properties may be included depending on the field type. ## Proof category field If your app has many proof types, consider adding a criteria field called `proofCategory`. When a criteria field is found with this name, it's automatically selected as the first criteria field shown to the user. Once the user has chosen a category value from this field, the set of proof types are filtered to match that category. See the [Proof types JSON](/hypersync-sdk/sdk-015-proof-types-json) article for more information. ### Example ``` { "$schema": "https://cdn.jsdelivr.net/gh/Hyperproof/hypersync-sdk/schema/criteriaFields.schema.json", "proofCategory": { "type": "select", "property": "proofCategory", "label": "{{messages.LABEL_PROOF_CATEGORY}}", "isRequired": true, "fixedValues": [ { "value": "users", "label": "{{messages.LABEL_USERS}}" }, { "value": "devices", "label": "{{messages.LABEL_DEVICES}}" } ] }, "groupId": { "type": "select", "property": "group", "label": "{{messages.LABEL_GROUP_NAME}}", "isRequired": true, "dataSet": "groups", "valueProperty": "id", "labelProperty": "groupName", "fixedValues": [ { "value": "{{constants.ID_ALL}}", "label": "{{messages.LABEL_ALL_GROUPS}}" } ] }, "userStatus": { "type": "select", "property": "userStatus", "label": "{{messages.LABEL_USER_STATUS}}", "isRequired": true, "fixedValues": [ { "value": "active", "label": "{{messages.LABEL_USER_STATUS_ACTIVE}}" }, { "value": "inactive", "label": "{{messages.LABEL_USER_STATUS_INACTIVE}}" } ] }, "search": { "type": "text", "property": "search", "label": "{{messages.LABEL_SEARCH}}", "placeholder": "{{messages.PLACEHOLDER_SEARCH}}", "isRequired": true } } ```