# Proof type JSON format [No-code proof types](/hypersync-sdk/sdk-006-proof-types) are stored in a package's `/json/proof` directory. There should be one `.json` file in this directory for each proof type that is visible to the Hypersync app user. Each proof type file exposes a JSON object with these properties: | Property | Required? | Description | | --- | --- | --- | | `description` | Yes | This is the description of the proof type. | | `criteria` | Yes | This is an array of criteria fields that are required by the proof type. | | `proofSpec` | Yes | An object that specifies how the proof type should be rendered. | | `overrides` | No | These are proof specs that override the base proof spec based on a particular condition. | ## criteria The `criteria` property is an array of JSON objects. Each element in the array represents a criteria field that the user must specify when configuring the proof type. If a proof type does not require any criteria, the criteria property should be defined as an empty array.(i.e. []). Each object in the array has two required properties: `name` and `page`: | Property | Description | | --- | --- | | `name` | This identifies the criteria field in the [criteria provider](/hypersync-sdk/sdk-007-criteria). | | `page` | A zero-based index of the page on which the criterion should be shown. | ## proofSpec The `proofSpec` property is a JSON object that specifies how the proof type should be rendered. | Property | Required? | Description | | --- | --- | --- | | `period` | Yes | Determines the default synchronization schedule. Acceptable values are `daily`, `weekly`, `monthly`, `quarterly`, and `yearly`. | | `useVersioning` | Yes | Determines whether or not to use versioning by default. | | `suggestedName` | Yes | Determines the suggested name for new Hypersyncs using this proof type. | | `format` | Yes | The format of the fields on the page. Acceptable values are `tabular` (fields that are side by side) and `stacked` (fields stacked vertically) | | `orientation` | Yes | For PDF proof types. This property determines the orientation of the generated PDF. Acceptable values are `portrait` and `landscape`. | | `title` | Yes | Determines the text to be rendered at the top of the generated proof. | | `subtitle` | Yes | Determines the text to be rendered below the title. | | `dataSet` | Yes | Determines the name of the dataset to which the proof type is bound. | | `dataSetParams` | No | The parameters provided to the data source when retrieving the dataset. | | `noResultsMessage` | No | Determines the text to be rendered if no items are found in the dataset. | | `fields` | Yes | An array of fields to include with the generated proof. | | `webPageUrl` | No | The URL shown at the bottom of the generated proof. | | `autoLayout` | No | Determines if the fields within the specification are automatically laid out. Acceptable values are `true` and `false`. The default value is `false`. | ## overrides The `overrides` property is optional and allows you to define alternative proof specs that replace the default proof spec under certain conditions. For example, if you have a criteria field that lets the user select a group by name — and that control includes an “All Groups” option — you can use an override to change the layout of the generated proof when the user selects “All Groups". When specified, the `overrides` property must be an array of objects. Each object must include two properties: - `condition` — Defines when the override should apply. - `proofSpec` — Specifies the proof spec to use when the condition is met. ## Example ``` { "description": "{{messages.PROOF_TYPE_USER_LIST}}", "criteria": [{ "name": "group", "page": 0 }], "proofSpec": { "period": "monthly", "useVersioning": true, "suggestedName": "{{messages.PROOF_TYPE_USER_LIST}}", "format": "tabular", "orientation": "landscape", "title": "{{messages.CONNECTOR_NAME}}", "subtitle": "{{messages.PROOF_TYPE_USER_LIST}}", "dataSet": "users", "dataSetParams": { "group": "{{criteria.group}}" }, "noResultsMessage": "{{messages.NO_USERS}}", "fields": [ { "property": "firstName", "label": "{{messages.LABEL_FIRST_NAME}}", "width": "400px", "type": "text" }, { "property": "lastName", "label": "{{messages.LABEL_LAST_NAME}}", "width": "400px", "type": "text" }, { "property": "email", "label": "{{messages.LABEL_EMAIL_ADDRESS}}", "width": "200px", "type": "text" }, { "property": "status", "label": "{{messages.LABEL_STATUS}}", "width": "200px", "type": "text" } ], "webPageUrl": "https://myservice.com/users" } } ```