# Export Technical Reference

Canonical page: https://www.adaptabletools.com/docs/technical-reference-exporting

## Export State

| Property | Type | Description |
| --- | --- | --- |
| [CurrentFormat](https://www.adaptabletools.com/docs/reference/exportstate.md#currentformat) | [`ReportFormatType`](https://www.adaptabletools.com/docs/reference/reportformattype.md) | Selected Report Format - in Export Toolbar &amp; Tool Panel |
| [CurrentReport](https://www.adaptabletools.com/docs/reference/exportstate.md#currentreport) | [`ReportNameType`](https://www.adaptabletools.com/docs/reference/reportnametype.md) | Selected Report Type - in Export Toolbar &amp; Tool Panel |
| [Reports](https://www.adaptabletools.com/docs/reference/exportstate.md#reports) | [`Report`](https://www.adaptabletools.com/docs/reference/report.md)`[]` | User-created Reports; each has Name and Row and Column Scope |
| [ReportSchedules](https://www.adaptabletools.com/docs/reference/exportstate.md#reportschedules) | [`ReportSchedule`](https://www.adaptabletools.com/docs/reference/reportschedule.md)`[]` | Scheduled Exports for System and Custom Reports |

### Report

| Property | Type | Description |
| --- | --- | --- |
| [Expression](https://www.adaptabletools.com/docs/reference/report.md#expression) | `string` | AdapTableQL boolean expression selecting the rows to export; only required if `ReportRowScope` is &#39;ExpressionRows&#39; |
| [Name](https://www.adaptabletools.com/docs/reference/report.md#name) | [`ReportNameType`](https://www.adaptabletools.com/docs/reference/reportnametype.md) | Name of the Report as displayed in the Export toolbar and tool panel |
| [ReportColumnScope](https://www.adaptabletools.com/docs/reference/report.md#reportcolumnscope) | [`ReportColumnScope`](https://www.adaptabletools.com/docs/reference/reportcolumnscope.md) | Columns to display: `AllColumns`, `VisibleColumns`, `SelectedColumns`, `ScopeColumns` |
| [ReportRowScope](https://www.adaptabletools.com/docs/reference/report.md#reportrowscope) | [`ReportRowScope`](https://www.adaptabletools.com/docs/reference/reportrowscope.md) | Rows to export: `AllRows`, `VisibleRows`, `SelectedRows`, `ExpressionRows` |
| [Scope](https://www.adaptabletools.com/docs/reference/report.md#scope) | [`ColumnScope`](https://www.adaptabletools.com/docs/reference/columnscope.md) | Columns Scope; only required if `ReportColumnScope` is &#39;ScopeColumns&#39; |
| [IsReadOnly](https://www.adaptabletools.com/docs/reference/report.md#isreadonly) | `boolean` | Sets Entity to ReadOnly (overwriting a Strategy Entitlement of &#39;Full&#39;) |

`ReportColumnScope` is a [`ReportColumnScope`](https://www.adaptabletools.com/docs/reference/reportcolumnscope.md):

[See API: reportcolumnscope](https://www.adaptabletools.com/docs/reference/reportcolumnscope.md)

`ReportRowScope` is a [`ReportRowScope`](https://www.adaptabletools.com/docs/reference/reportrowscope.md):

[See API: reportrowscope](https://www.adaptabletools.com/docs/reference/reportrowscope.md)

`Scope` is a [Column Scope](https://www.adaptabletools.com/docs/technical-reference-column-scope/index.md):

<ApiTypeCard name="ColumnScope" href="/docs/reference/columnscope" choice>

Which columns an object applies to. Set exactly one shape.

<ApiMember name="{ All: true }" href="/docs/reference/columnscope">

<ApiMemberType>

`true`

</ApiMemberType>

Matches every column. `All` must be `true`.

</ApiMember>

<ApiMember name="{ DataTypes }" href="/docs/reference/columnscope">

<ApiMemberType>

`('text' | 'number' | 'boolean' | 'date' | 'textArray' | 'numberArray')[]`

</ApiMemberType>

Data types to match, for example `['number']` or `['text', 'textArray']`. Object, tuple and unknown columns are not scope data types. Name those columns with `ColumnIds`.

</ApiMember>

<ApiMember name="{ ColumnIds }" href="/docs/reference/columnscope">

<ApiMemberType>

`string[]`

</ApiMemberType>

Column ids to match. These are AG Grid `colId` values.

</ApiMember>

<ApiMember name="{ ColumnTypes }" href="/docs/reference/columnscope">

<ApiMemberType>

`string[]`

</ApiMemberType>

AG Grid column type names, the strings set on `colDef.type`.

</ApiMember>

</ApiTypeCard>

### Schedules

| Property | Type | Description |
| --- | --- | --- |
| [ExportDestination](https://www.adaptabletools.com/docs/reference/reportschedule.md#exportdestination) | [`ExportDestinationType`](https://www.adaptabletools.com/docs/reference/exportdestinationtype.md) | Destination of Report to run on Schedule |
| [Name](https://www.adaptabletools.com/docs/reference/reportschedule.md#name) | `string` | Unique display name for this scheduled report |
| [ReportFormat](https://www.adaptabletools.com/docs/reference/reportschedule.md#reportformat) | [`ReportFormatType`](https://www.adaptabletools.com/docs/reference/reportformattype.md) | Format of Report to run on Schedule |
| [ReportName](https://www.adaptabletools.com/docs/reference/reportschedule.md#reportname) | [`ReportNameType`](https://www.adaptabletools.com/docs/reference/reportnametype.md) | Name of Report to export |
| [Schedule](https://www.adaptabletools.com/docs/reference/reportschedule.md#schedule) | [`Schedule`](https://www.adaptabletools.com/docs/reference/schedule.md) | When the export should run |
| [IsReadOnly](https://www.adaptabletools.com/docs/reference/reportschedule.md#isreadonly) | `boolean` | Sets Entity to ReadOnly (overwriting a Strategy Entitlement of &#39;Full&#39;) |
| [IsSuspended](https://www.adaptabletools.com/docs/reference/reportschedule.md#issuspended) | `boolean` | Suspends (i.e. turns off) an Adaptable Object |

| Property | Type | Description |
| --- | --- | --- |
| [CronExpression](https://www.adaptabletools.com/docs/reference/schedule.md#cronexpression) | `string` | Standard 5-field cron (minute hour day-of-month month day-of-week); e.g. weekdays at 09:30 → `30 9 * * 1-5` |
| [IsOneOff](https://www.adaptabletools.com/docs/reference/schedule.md#isoneoff) | `boolean` | `true` runs once, at `RunAt`. `false` repeats on `CronExpression`. |
| [RunAt](https://www.adaptabletools.com/docs/reference/schedule.md#runat) | `string` | ISO datetime for a one-off run (local time); set when IsOneOff is true |

---------------------

## Export Options

| Property | Type | Description | Default |
| --- | --- | --- | --- |
| [appendFileTimestamp](https://www.adaptabletools.com/docs/reference/exportoptions.md#appendfiletimestamp) | `boolean` | Whether to add a timestamp as a suffix to exported file name | false |
| [csvSeparator](https://www.adaptabletools.com/docs/reference/exportoptions.md#csvseparator) | `string \| ((csvSeparatorContext: `[`BaseExportContext`](https://www.adaptabletools.com/docs/reference/baseexportcontext.md)`) => string)` | Separator for CSV exports | &#39;,&#39; |
| [customDestinations](https://www.adaptabletools.com/docs/reference/exportoptions.md#customdestinations) | [`CustomDestination`](https://www.adaptabletools.com/docs/reference/customdestination.md)`[] \| ((context: `[`CustomDestinationsContext`](https://www.adaptabletools.com/docs/reference/customdestinationscontext.md)`) => `[`CustomDestination`](https://www.adaptabletools.com/docs/reference/customdestination.md)`[])` | User-provided Report Destinations (in addition to those shipped in AdapTable) |   |
| [excelSheetName](https://www.adaptabletools.com/docs/reference/exportoptions.md#excelsheetname) | `string \| ((excelSheetNameContext: `[`BaseExportContext`](https://www.adaptabletools.com/docs/reference/baseexportcontext.md)`) => string)` | Provides a custom name for the Excel sheet when exporting to Excel | &#39;Sheet 1&#39; |
| [exportDataFormat](https://www.adaptabletools.com/docs/reference/exportoptions.md#exportdataformat) | [`DataFormatType`](https://www.adaptabletools.com/docs/reference/dataformattype.md)` \| `[`DataFormatDataType`](https://www.adaptabletools.com/docs/reference/dataformatdatatype.md)` \| ((context: `[`ExportDataFormatContext`](https://www.adaptabletools.com/docs/reference/exportdataformatcontext.md)`<TData>) => `[`DataFormatType`](https://www.adaptabletools.com/docs/reference/dataformattype.md)`)` | Sets &#39;rawValue&#39; or &#39;formattedValue&#39; as Data format in Reports; can be set for whole grid, per Data Type, or per Column (via a function) | rawValue |
| [exportDateFormat](https://www.adaptabletools.com/docs/reference/exportoptions.md#exportdateformat) | `string \| ((context: `[`ExportDateFormatContext`](https://www.adaptabletools.com/docs/reference/exportdateformatcontext.md)`<TData>) => string)` | Optional custom format for Date columns when exporting | undefined |
| [getDetailRows](https://www.adaptabletools.com/docs/reference/exportoptions.md#getdetailrows) | `(context: `[`GetDetailRowsContext`](https://www.adaptabletools.com/docs/reference/getdetailrowscontext.md)`<TData>) => CsvDetailRow[] \| ExcelDetailRow[] \| undefined` | Function to provide the Detail Rows when exporting in Master-Detail grids. This function will be invoked for each master row node. |   |
| [isColumnExportable](https://www.adaptabletools.com/docs/reference/exportoptions.md#iscolumnexportable) | `(context: `[`AdaptableColumnContext`](https://www.adaptabletools.com/docs/reference/adaptablecolumncontext.md)`) => boolean` | Whether a Column is included in System Reports and available in UI for selection | true |
| [processExport](https://www.adaptabletools.com/docs/reference/exportoptions.md#processexport) | `(processExportContext: `[`ProcessExportContext`](https://www.adaptabletools.com/docs/reference/processexportcontext.md)`) => Promise<`[`ExportResultData`](https://www.adaptabletools.com/docs/reference/exportresultdata.md)` \| boolean>` | Provides custom handling of the Export process before the default export is executed. |   |
| [reportFilename](https://www.adaptabletools.com/docs/reference/exportoptions.md#reportfilename) | `(reportFileNameContext: `[`ReportFileNameContext`](https://www.adaptabletools.com/docs/reference/reportfilenamecontext.md)`) => string` | Provide a bespoke file name for the Report |   |
| [skipColumnHeaders](https://www.adaptabletools.com/docs/reference/exportoptions.md#skipcolumnheaders) | `boolean \| ((skipColumnHeadersContext: `[`BaseExportContext`](https://www.adaptabletools.com/docs/reference/baseexportcontext.md)`) => boolean)` | Whether to exclude Column Headers from the exported data | false |
| [systemExportDestinations](https://www.adaptabletools.com/docs/reference/exportoptions.md#systemexportdestinations) | [`SystemExportDestination`](https://www.adaptabletools.com/docs/reference/systemexportdestination.md)`[] \| ((context: `[`SystemExportDestinationsContext`](https://www.adaptabletools.com/docs/reference/systemexportdestinationscontext.md)`) => `[`SystemExportDestination`](https://www.adaptabletools.com/docs/reference/systemexportdestination.md)`[])` | Export destinations to use; leave unset for all, empty array for none | &#39;Download&#39;, &#39;Clipboard&#39; |
| [systemReportFormats](https://www.adaptabletools.com/docs/reference/exportoptions.md#systemreportformats) | [`SystemReportFormat`](https://www.adaptabletools.com/docs/reference/systemreportformat.md)`[] \| ((context: `[`SystemReportFormatsContext`](https://www.adaptabletools.com/docs/reference/systemreportformatscontext.md)`) => `[`SystemReportFormat`](https://www.adaptabletools.com/docs/reference/systemreportformat.md)`[])` | System Report Formats to use; leave unset for all, empty array for none | &#39;Excel&#39;, &#39;VisualExcel&#39;, &#39;CSV&#39;, &#39;JSON&#39; |
| [systemReportNames](https://www.adaptabletools.com/docs/reference/exportoptions.md#systemreportnames) | [`SystemReportName`](https://www.adaptabletools.com/docs/reference/systemreportname.md)`[] \| ((context: `[`SystemReportNamesContext`](https://www.adaptabletools.com/docs/reference/systemreportnamescontext.md)`) => `[`SystemReportName`](https://www.adaptabletools.com/docs/reference/systemreportname.md)`[])` | System Reports to use; leave unset for all, empty array for none | &#39;All Data&#39;, &#39;Current Layout&#39;, &#39;Selected Data&#39;, |

`systemReportFormats` values are `Excel`, `VisualExcel`, `CSV`, and `JSON`.

`systemReportNames` values are `All Data`, `Current Layout`, and `Selected Data`.

`systemExportDestinations` values are `Download` and `Clipboard`.

`exportDataFormat` is `'rawValue'` or `'formattedValue'`.

`customDestinations` entries are a [`CustomDestination`](https://www.adaptabletools.com/docs/reference/customdestination.md):

| Property | Type | Description |
| --- | --- | --- |
| [form](https://www.adaptabletools.com/docs/reference/customdestination.md#form) | [`AdaptableForm`](https://www.adaptabletools.com/docs/reference/adaptableform.md)`<`[`ExportFormContext`](https://www.adaptabletools.com/docs/reference/exportformcontext.md)`>` | Optional Adaptable Form; if provided, it must include Buttons that will execute the Export |
| [name](https://www.adaptabletools.com/docs/reference/customdestination.md#name) | `string` | Name of Custom Destination (mandatory) |
| [onExport](https://www.adaptabletools.com/docs/reference/customdestination.md#onexport) | `(reportContext: `[`ReportContext`](https://www.adaptabletools.com/docs/reference/reportcontext.md)`) => void` | Optional Function invoked when Export is applied (used if no form is supplied) |

`form` on a custom destination is an [`AdaptableForm`](https://www.adaptabletools.com/docs/reference/adaptableform.md):

Defines the form. `fields` is a list of fields, rows of fields, or field groups. `buttons` are the form buttons. `layout` is `rows` (the default) or `inline`.

| Property | Type | Description | Default |
| --- | --- | --- | --- |
| [buttons](https://www.adaptabletools.com/docs/reference/adaptableform.md#buttons) | [`AdaptableButton`](https://www.adaptabletools.com/docs/reference/adaptablebutton.md)`<T>[]` | Buttons to include in the Form |   |
| [description](https://www.adaptabletools.com/docs/reference/adaptableform.md#description) | `string` | Additional information to appear in the Form |   |
| [fields](https://www.adaptabletools.com/docs/reference/adaptableform.md#fields) | `(`[`AdaptableFormField`](https://www.adaptabletools.com/docs/reference/adaptableformfield.md)` \| `[`AdaptableFormField`](https://www.adaptabletools.com/docs/reference/adaptableformfield.md)`[] \| `[`AdaptableFormFieldGroup`](https://www.adaptabletools.com/docs/reference/adaptableformfieldgroup.md)`)[]` | Collection of Dynamic Fields and Field Groups to display.<br/><br/>Items can be:<br/>- a single  (rendered on its own row in the<br/> default `rows` layout, or as one cell in the `inline` layout),<br/>- an array of  (rendered side-by-side on the<br/> same row in the `rows` layout), or<br/>- an  (a labelled section that<br/> visually groups related fields). |   |
| [layout](https://www.adaptabletools.com/docs/reference/adaptableform.md#layout) | [`AdaptableFormLayout`](https://www.adaptabletools.com/docs/reference/adaptableformlayout.md) | How the form&#39;s fields are arranged on screen.<br/><br/>- `rows` (default): each field on its own row, label on the left and<br/> input on the right. Suitable for popups / wizards.<br/>- `inline`: fields are placed side-by-side on a single horizontal line,<br/> with the label rendered immediately before its input. Designed for<br/> compact contexts such as Dashboard Custom Toolbars where vertical<br/> real-estate is scarce. | &#39;rows&#39; |
| [onSubmit](https://www.adaptabletools.com/docs/reference/adaptableform.md#onsubmit) | `(formData: TData, context: T) => void` | Optional form-level submit hook.<br/><br/>Fired when the user presses `Enter` while focus is inside any field<br/>input AND the form is currently valid. The full `formData` is passed<br/>through, typed as `TData` if you&#39;ve supplied a custom shape.<br/><br/>Use this as an ergonomic shortcut to avoid wiring an explicit &quot;Submit&quot;<br/>button - or in addition to one, so power users can press Enter to<br/>commit. If the form is invalid the hook is not invoked. |   |
| [title](https://www.adaptabletools.com/docs/reference/adaptableform.md#title) | `string` | Title to appear in the Form |   |

Each field is an <ApiLink name="AdaptableFormField" link="adaptableformfield"/>:

| Property | Type | Description | Default |
| --- | --- | --- | --- |
| [clearToDefault](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#cleartodefault) | `boolean` | For single `select` fields only. When the user clears the combobox,<br/>whether to restore  instead of leaving the field empty.<br/><br/>Defaults to `true` when `defaultValue` is set, otherwise `false`.<br/>Set to `false` when an empty selection is a distinct state from the default. |   |
| [defaultValue](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#defaultvalue) | `string \| boolean \| number \| Array<string \| number \| boolean>` | Field Default Value - can be of type string, boolean, number, or for<br/>`select` fields with `multi: true` an array of those.<br/><br/>For single `select` fields, this is also the value restored when the user<br/>clears the combobox (unless  is `false`). |   |
| [disabled](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#disabled) | `boolean \| ((formData: `[`AdaptableFormData`](https://www.adaptabletools.com/docs/reference/adaptableformdata.md)`, context: `[`BaseContext`](https://www.adaptabletools.com/docs/reference/basecontext.md)`) => boolean)` | Disable the field&#39;s input. Either a boolean or a function evaluated<br/>against the current form data. Disabled fields render but the user<br/>cannot edit them. |   |
| [fieldType](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#fieldtype) | [`AdaptableFormFieldType`](https://www.adaptabletools.com/docs/reference/adaptableformfieldtype.md) | Field Type - dictates which UI control is rendered |   |
| [helpText](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#helptext) | `string` | Inline help text rendered immediately below the field&#39;s input. Useful<br/>for short explanations such as &quot;format: YYYY-MM-DD&quot; or &quot;min 3 chars&quot;. |   |
| [hidden](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#hidden) | `boolean \| ((formData: `[`AdaptableFormData`](https://www.adaptabletools.com/docs/reference/adaptableformdata.md)`, context: `[`BaseContext`](https://www.adaptabletools.com/docs/reference/basecontext.md)`) => boolean)` | Hide the field. Either a boolean or a function evaluated against the<br/>current form data. Hidden fields are not rendered and are excluded from<br/>validation. |   |
| [label](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#label) | `string` | Label to display in the Field |   |
| [max](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#max) | `number \| string` | Maximum allowed value. For `number` and `slider`: the highest accepted<br/>number. For `date`, `time` and `datetime`: the latest allowed value in<br/>ISO format. |   |
| [maxLength](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#maxlength) | `number` | Maximum length for `text` and `textarea` fields. |   |
| [min](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#min) | `number \| string` | Minimum allowed value. For `number` and `slider`: the lowest accepted<br/>number. For `date`, `time` and `datetime`: the earliest allowed value<br/>in ISO format (`YYYY-MM-DD` / `HH:mm` / `YYYY-MM-DDTHH:mm`). |   |
| [minLength](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#minlength) | `number` | Minimum length for `text` and `textarea` fields. |   |
| [multi](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#multi) | `boolean` | For `select` fields only. When `true` the field renders as a<br/>multi-select combobox; the field&#39;s value is an array of selected<br/>`option.value`s rather than a single value. | false |
| [name](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#name) | `string` | Name of the Field |   |
| [onValueChange](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#onvaluechange) | `(value: any, context: `[`BaseContext`](https://www.adaptabletools.com/docs/reference/basecontext.md)`) => void` | Optional callback invoked whenever value of this field changes |   |
| [options](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#options) | [`AdaptableFormFieldOption`](https://www.adaptabletools.com/docs/reference/adaptableformfieldoption.md)`[] \| ((formData: `[`AdaptableFormData`](https://www.adaptabletools.com/docs/reference/adaptableformdata.md)`, context: `[`BaseContext`](https://www.adaptabletools.com/docs/reference/basecontext.md)`) => `[`AdaptableFormFieldOption`](https://www.adaptabletools.com/docs/reference/adaptableformfieldoption.md)`[] \| Promise<`[`AdaptableFormFieldOption`](https://www.adaptabletools.com/docs/reference/adaptableformfieldoption.md)`[]>)` | Items to populate the `select` and `radio` fieldTypes.<br/><br/>Either a static array, or a function that derives the options from the<br/>current form data and Adaptable context. The function form may return<br/>a Promise for asynchronously-loaded options - the form will render the<br/>field with no items until the promise resolves. |   |
| [pattern](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#pattern) | `string` | Regular expression that the value of a `text` field must match. |   |
| [placeholder](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#placeholder) | `string` | Placeholder text shown inside `text`, `textarea`, `number`, `date`,<br/>`time` and `datetime` inputs when empty. For `select` fields it is<br/>rendered as the empty-state label when no value is selected.<br/><br/>When omitted on a `select` field with a , the label of<br/>the matching `options` entry is used as the empty-state label. |   |
| [render](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#render) | `(params: `[`AdaptableFormFieldRenderParams`](https://www.adaptabletools.com/docs/reference/adaptableformfieldrenderparams.md)`) => React.ReactNode` | For `custom` fields only. Renders an arbitrary React node as the<br/>field&#39;s input. Receives the current value, a `setValue` setter<br/>(controlled), the current form data, the Adaptable context and the<br/>resolved `disabled` state.<br/><br/>Use this as an escape hatch when none of the built-in `fieldType`s<br/>fit - e.g. to render a star-rating widget, a tag editor or any<br/>bespoke control. |   |
| [required](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#required) | `boolean` | If `true` the field is treated as required. An empty value (`''`,<br/>`null`, `undefined`, or unchecked checkbox) will produce a validation<br/>error. |   |
| [rows](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#rows) | `number` | For `textarea` fields: the visible number of text rows. | 3 |
| [step](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#step) | `number` | Stepping interval for `number`, `slider`, `time` and `datetime`<br/>fields. |   |
| [tooltip](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#tooltip) | `string` | Tooltip shown when hovering the field&#39;s label. |   |
| [validate](https://www.adaptabletools.com/docs/reference/adaptableformfield.md#validate) | `(value: any, formData: `[`AdaptableFormData`](https://www.adaptabletools.com/docs/reference/adaptableformdata.md)`, context: `[`BaseContext`](https://www.adaptabletools.com/docs/reference/basecontext.md)`) => string \| null \| undefined` | Custom field-level validation. Return an error message string to mark<br/>the field invalid, or `null`/`undefined` if the value is valid.<br/><br/>Custom validation runs *after* built-in checks (`required`, `min`,<br/>`max`, `pattern`, etc.) - the first failing check wins. |   |

`fieldType` is an <ApiLink name="AdaptableFormFieldType" link="adaptableformfieldtype"/>:

[See API: adaptableformfieldtype](https://www.adaptabletools.com/docs/reference/adaptableformfieldtype.md)

Select and radio `options` are <ApiLink name="AdaptableFormFieldOption" link="adaptableformfieldoption"/> objects:

| Property | Type | Description |
| --- | --- | --- |
| [label](https://www.adaptabletools.com/docs/reference/adaptableformfieldoption.md#label) | `string` | Text shown for this choice. |
| [value](https://www.adaptabletools.com/docs/reference/adaptableformfieldoption.md#value) | `any` | Value written into the form data when this choice is selected. |

`layout` is an <ApiLink name="AdaptableFormLayout" link="adaptableformlayout"/>:

[See API: adaptableformlayout](https://www.adaptabletools.com/docs/reference/adaptableformlayout.md)

`buttons` are <ApiLink name="AdaptableButton" link="adaptablebutton"/> objects:

| Property | Type | Description | Default |
| --- | --- | --- | --- |
| [buttonStyle](https://www.adaptabletools.com/docs/reference/adaptablebutton.md#buttonstyle) | [`ButtonStyle`](https://www.adaptabletools.com/docs/reference/buttonstyle.md)` \| ((button: `[`AdaptableButton`](https://www.adaptabletools.com/docs/reference/adaptablebutton.md)`<CONTEXT_TYPE>, context: CONTEXT_TYPE) => `[`ButtonStyle`](https://www.adaptabletools.com/docs/reference/buttonstyle.md)`)` | Style for Button - can be object or function that provides a `ButtonStyle` object |   |
| [disabled](https://www.adaptabletools.com/docs/reference/adaptablebutton.md#disabled) | `(button: `[`AdaptableButton`](https://www.adaptabletools.com/docs/reference/adaptablebutton.md)`<CONTEXT_TYPE>, context: CONTEXT_TYPE) => boolean` | Function that disables / enables the button based on its evaluation result |   |
| [hidden](https://www.adaptabletools.com/docs/reference/adaptablebutton.md#hidden) | `(button: `[`AdaptableButton`](https://www.adaptabletools.com/docs/reference/adaptablebutton.md)`<CONTEXT_TYPE>, context: CONTEXT_TYPE) => boolean` | Function which sets whether Button is hidden |   |
| [icon](https://www.adaptabletools.com/docs/reference/adaptablebutton.md#icon) | [`AdaptableIcon`](https://www.adaptabletools.com/docs/reference/adaptableicon.md)` \| ((button: `[`AdaptableButton`](https://www.adaptabletools.com/docs/reference/adaptablebutton.md)`<CONTEXT_TYPE>, context: CONTEXT_TYPE) => `[`AdaptableIcon`](https://www.adaptabletools.com/docs/reference/adaptableicon.md)`)` | Icon for Button - can be object or function that provides a `AdaptableIcon` object |   |
| [iconPosition](https://www.adaptabletools.com/docs/reference/adaptablebutton.md#iconposition) | `'start' \| 'end'` | Where the icon appears relative to the label | &#39;start&#39; |
| [label](https://www.adaptabletools.com/docs/reference/adaptablebutton.md#label) | `string \| ((button: `[`AdaptableButton`](https://www.adaptabletools.com/docs/reference/adaptablebutton.md)`<CONTEXT_TYPE>, context: CONTEXT_TYPE) => string)` | Label for Button - can be string or function that provides string |   |
| [onClick](https://www.adaptabletools.com/docs/reference/adaptablebutton.md#onclick) | `(button: `[`AdaptableButton`](https://www.adaptabletools.com/docs/reference/adaptablebutton.md)`<CONTEXT_TYPE>, context: CONTEXT_TYPE) => void` | Function to invoke when button is clicked |   |
| [tooltip](https://www.adaptabletools.com/docs/reference/adaptablebutton.md#tooltip) | `string \| ((button: `[`AdaptableButton`](https://www.adaptabletools.com/docs/reference/adaptablebutton.md)`<CONTEXT_TYPE>, context: CONTEXT_TYPE) => string)` | Tooltip for Button - can be string or function that provides string |   |

`buttonStyle` is a <ApiLink name="ButtonStyle" link="buttonstyle"/>:

| Property | Type | Description | Default |
| --- | --- | --- | --- |
| [className](https://www.adaptabletools.com/docs/reference/buttonstyle.md#classname) | `string` | CSS Classname to use for the Button |   |
| [tone](https://www.adaptabletools.com/docs/reference/buttonstyle.md#tone) | `'success' \| 'error' \| 'neutral' \| 'none' \| 'warning' \| 'info' \| 'accent'` | Button&#39;s Tone - values: &#39;success&#39;, &#39;error&#39;, &#39;neutral&#39;, &#39;none&#39;, &#39;warning&#39;, &#39;info&#39;, &#39;accent&#39; | &#39;neutral&#39; |
| [variant](https://www.adaptabletools.com/docs/reference/buttonstyle.md#variant) | `'text' \| 'outlined' \| 'raised'` | How Button appears - values: &#39;text&#39;, &#39;outlined&#39;, &#39;raised&#39; | &#39;outlined&#39; |

`getDetailRows` receives a [`GetDetailRowsContext`](https://www.adaptabletools.com/docs/reference/getdetailrowscontext.md):

| Property | Type | Description |
| --- | --- | --- |
| [adaptableColumn](https://www.adaptabletools.com/docs/reference/getdetailrowscontext.md#adaptablecolumn) | [`AdaptableColumn`](https://www.adaptabletools.com/docs/reference/adaptablecolumn.md)`<TData>` | Column of Master Row Node |
| [createCellCsv](https://www.adaptabletools.com/docs/reference/getdetailrowscontext.md#createcellcsv) | `(cellContent: any) => CsvCell` | Factory function to create a CSV Cell |
| [createCellExcel](https://www.adaptabletools.com/docs/reference/getdetailrowscontext.md#createcellexcel) | `(cellContent: any, cellType: ExcelDataType) => ExcelCell` | Factory function to create an Excel Cell |
| [createCellHeader](https://www.adaptabletools.com/docs/reference/getdetailrowscontext.md#createcellheader) | `(cellContent: any) => ExcelCell` | Factory function to create an Header Cell (either CSV or Excel) |
| [isExpanded](https://www.adaptabletools.com/docs/reference/getdetailrowscontext.md#isexpanded) | `boolean` | Whether the Master Row Node is expanded |
| [masterRowData](https://www.adaptabletools.com/docs/reference/getdetailrowscontext.md#masterrowdata) | `TData` | Data of Master Row Node |
| [masterRowNode](https://www.adaptabletools.com/docs/reference/getdetailrowscontext.md#masterrownode) | `IRowNode<TData>` | Master Row Node |
| [adaptableContext](https://www.adaptabletools.com/docs/reference/getdetailrowscontext.md#adaptablecontext) | `any` | Custom application Context provided in `AdaptableOptions.adaptableContext` |

`processExport` receives a [`ProcessExportContext`](https://www.adaptabletools.com/docs/reference/processexportcontext.md):

| Property | Type | Description |
| --- | --- | --- |
| [convertToCsv](https://www.adaptabletools.com/docs/reference/processexportcontext.md#converttocsv) | `(reportData: `[`ReportData`](https://www.adaptabletools.com/docs/reference/reportdata.md)`) => string` | Converts the Report Data to CSV format |
| [convertToExcel](https://www.adaptabletools.com/docs/reference/processexportcontext.md#converttoexcel) | `(reportData: `[`ReportData`](https://www.adaptabletools.com/docs/reference/reportdata.md)`) => Blob` | Converts the Report Data to Excel format |
| [getReportColumns](https://www.adaptabletools.com/docs/reference/processexportcontext.md#getreportcolumns) | `() => `[`ReportColumn`](https://www.adaptabletools.com/docs/reference/reportcolumn.md)`[]` | Returns Columns to export based on Report&#39;s `ReportColumnScope` |
| [adaptableContext](https://www.adaptabletools.com/docs/reference/processexportcontext.md#adaptablecontext) | `any` | Custom application Context provided in `AdaptableOptions.adaptableContext` |

`reportFilename` receives a [`ReportFilenameContext`](https://www.adaptabletools.com/docs/reference/reportfilenamecontext.md):

| Property | Type | Description |
| --- | --- | --- |
| [fileName](https://www.adaptabletools.com/docs/reference/reportfilenamecontext.md#filename) | `string` | Default File Name to use |
| [adaptableContext](https://www.adaptabletools.com/docs/reference/reportfilenamecontext.md#adaptablecontext) | `any` | Custom application Context provided in `AdaptableOptions.adaptableContext` |

-------

## Export API

| Method | Returns | Description |
| --- | --- | --- |
| [addScheduledReport(reportSchedule)](https://www.adaptabletools.com/docs/reference/exportapi.md#addscheduledreport) | `void` | Adds a schedule that runs a report on a cron expression or at one time. |
| [applyScheduledReport(reportSchedule)](https://www.adaptabletools.com/docs/reference/exportapi.md#applyscheduledreport) | `void` | Runs a scheduled export now and records that the job ran. |
| [canExportToCsv()](https://www.adaptabletools.com/docs/reference/exportapi.md#canexporttocsv) | `boolean` | Whether this instance can export to CSV. |
| [canExportToExcel()](https://www.adaptabletools.com/docs/reference/exportapi.md#canexporttoexcel) | `boolean` | Whether this instance can export to Excel. |
| [clearFormat()](https://www.adaptabletools.com/docs/reference/exportapi.md#clearformat) | `void` | Sets the Report Format to null |
| [clearReport()](https://www.adaptabletools.com/docs/reference/exportapi.md#clearreport) | `void` | Sets the Report to null |
| [deleteScheduledReport(reportSchedule)](https://www.adaptabletools.com/docs/reference/exportapi.md#deletescheduledreport) | `void` | Removes a scheduled report. |
| [editScheduledReport(reportSchedule)](https://www.adaptabletools.com/docs/reference/exportapi.md#editscheduledreport) | `void` | Replaces a scheduled report already in state. |
| [ensureScheduledReportUuids()](https://www.adaptabletools.com/docs/reference/exportapi.md#ensurescheduledreportuuids) | `void` | Ensures every scheduled report has a unique Uuid (legacy state may omit them). |
| [exportReport(reportName, format, destination, exportConfig)](https://www.adaptabletools.com/docs/reference/exportapi.md#exportreport) | `Promise<void>` | Exports the Report with the given Name and Format to the given Destination |
| [getActiveScheduledReports()](https://www.adaptabletools.com/docs/reference/exportapi.md#getactivescheduledreports) | [`ReportSchedule`](https://www.adaptabletools.com/docs/reference/reportschedule.md)`[]` | Scheduled reports that are not suspended. |
| [getAllExportDestinations()](https://www.adaptabletools.com/docs/reference/exportapi.md#getallexportdestinations) | [`ExportDestinationType`](https://www.adaptabletools.com/docs/reference/exportdestinationtype.md)`[]` | Retrieves the available export destinations |
| [getAllFormats()](https://www.adaptabletools.com/docs/reference/exportapi.md#getallformats) | [`ReportFormatType`](https://www.adaptabletools.com/docs/reference/reportformattype.md)`[]` | Every report format that can be selected, system and custom. |
| [getAllReports()](https://www.adaptabletools.com/docs/reference/exportapi.md#getallreports) | [`Report`](https://www.adaptabletools.com/docs/reference/report.md)`[]` | Retrieves all available Reports - System and User-created Reports |
| [getAvailableCustomDestinations()](https://www.adaptabletools.com/docs/reference/exportapi.md#getavailablecustomdestinations) | [`CustomDestination`](https://www.adaptabletools.com/docs/reference/customdestination.md)`[]` | Custom destinations supplied in Export Options. |
| [getAvailableSystemDestinations()](https://www.adaptabletools.com/docs/reference/exportapi.md#getavailablesystemdestinations) | [`SystemExportDestination`](https://www.adaptabletools.com/docs/reference/systemexportdestination.md)`[]` | System destinations that Export Options allow. |
| [getAvailableSystemFormats()](https://www.adaptabletools.com/docs/reference/exportapi.md#getavailablesystemformats) | [`SystemReportFormat`](https://www.adaptabletools.com/docs/reference/systemreportformat.md)`[]` | System report formats that Export Options allow. |
| [getAvailableSystemReports()](https://www.adaptabletools.com/docs/reference/exportapi.md#getavailablesystemreports) | [`SystemReportName`](https://www.adaptabletools.com/docs/reference/systemreportname.md)`[]` | System report names that Export Options allow. |
| [getCurrentReport()](https://www.adaptabletools.com/docs/reference/exportapi.md#getcurrentreport) | [`Report`](https://www.adaptabletools.com/docs/reference/report.md)` \| undefined` | Retrieves currently selected Report in Adaptable State |
| [getCurrentReportFormat()](https://www.adaptabletools.com/docs/reference/exportapi.md#getcurrentreportformat) | [`ReportFormatType`](https://www.adaptabletools.com/docs/reference/reportformattype.md)` \| undefined` | Format currently selected for export. |
| [getCurrentReportName()](https://www.adaptabletools.com/docs/reference/exportapi.md#getcurrentreportname) | [`ReportNameType`](https://www.adaptabletools.com/docs/reference/reportnametype.md)` \| undefined` | Name of the report currently selected for export. |
| [getCustomReports()](https://www.adaptabletools.com/docs/reference/exportapi.md#getcustomreports) | [`Report`](https://www.adaptabletools.com/docs/reference/report.md)`[]` | Reports created by the user. System reports are not included. |
| [getDestinationByName(destinationName)](https://www.adaptabletools.com/docs/reference/exportapi.md#getdestinationbyname) | [`SystemExportDestination`](https://www.adaptabletools.com/docs/reference/systemexportdestination.md)` \| `[`CustomDestination`](https://www.adaptabletools.com/docs/reference/customdestination.md)` \| undefined` | Retrieves Destination with the given name |
| [getExportDestinationForm(destinationName)](https://www.adaptabletools.com/docs/reference/exportapi.md#getexportdestinationform) | [`AdaptableForm`](https://www.adaptabletools.com/docs/reference/adaptableform.md)`<`[`ExportFormContext`](https://www.adaptabletools.com/docs/reference/exportformcontext.md)`> \| undefined` | The form a custom destination shows before export. |
| [getExportState()](https://www.adaptabletools.com/docs/reference/exportapi.md#getexportstate) | [`ExportState`](https://www.adaptabletools.com/docs/reference/exportstate.md) | The Export section of Adaptable State. |
| [getReportById(id)](https://www.adaptabletools.com/docs/reference/exportapi.md#getreportbyid) | [`Report`](https://www.adaptabletools.com/docs/reference/report.md) | Retrieves Report by Id |
| [getReportByName(reportName)](https://www.adaptabletools.com/docs/reference/exportapi.md#getreportbyname) | [`Report`](https://www.adaptabletools.com/docs/reference/report.md)` \| undefined` | Retrieves Report with the given name |
| [getReportData(reportName, format, config)](https://www.adaptabletools.com/docs/reference/exportapi.md#getreportdata) | `Promise<`[`ExportResultData`](https://www.adaptabletools.com/docs/reference/exportresultdata.md)`>` | Gets the data for the Report with the given Name in the given Format |
| [getScheduledReportById(reportScheduleId)](https://www.adaptabletools.com/docs/reference/exportapi.md#getscheduledreportbyid) | [`ReportSchedule`](https://www.adaptabletools.com/docs/reference/reportschedule.md)` \| undefined` | A scheduled report looked up by its id. |
| [getScheduledReports()](https://www.adaptabletools.com/docs/reference/exportapi.md#getscheduledreports) | [`ReportSchedule`](https://www.adaptabletools.com/docs/reference/reportschedule.md)`[]` | Every scheduled report, including suspended ones. |
| [getSupportedExportDestinations(reportFormat)](https://www.adaptabletools.com/docs/reference/exportapi.md#getsupportedexportdestinations) | [`ExportDestinationType`](https://www.adaptabletools.com/docs/reference/exportdestinationtype.md)`[]` | Retrieves the Export Destinations that are supported for the given Report Format |
| [isColumnExportable(adaptablColumn)](https://www.adaptabletools.com/docs/reference/exportapi.md#iscolumnexportable) | `boolean` | Whether a column is included in an export. |
| [isExportDestinationSystem(destinationName)](https://www.adaptabletools.com/docs/reference/exportapi.md#isexportdestinationsystem) | `boolean` | Whether the destination is one AdapTable provides (`Download` or `Clipboard`) rather than a custom destination. |
| [openExportSettingsPanel()](https://www.adaptabletools.com/docs/reference/exportapi.md#openexportsettingspanel) | `void` | Open Settings Panel with Export section selected |
| [selectFormat(reportFormat)](https://www.adaptabletools.com/docs/reference/exportapi.md#selectformat) | `void` | Selects the report format used by the next export. |
| [selectReport(reportName)](https://www.adaptabletools.com/docs/reference/exportapi.md#selectreport) | `void` | Selects the Report in the Adaptable State |
| [suspendScheduledReport(reportSchedule)](https://www.adaptabletools.com/docs/reference/exportapi.md#suspendscheduledreport) | `void` | Stops a schedule from running until it is unsuspended. |
| [unSuspendScheduledReport(reportSchedule)](https://www.adaptabletools.com/docs/reference/exportapi.md#unsuspendscheduledreport) | `void` | Makes a suspended schedule run again. |
| [updateReport(report)](https://www.adaptabletools.com/docs/reference/exportapi.md#updatereport) | [`Report`](https://www.adaptabletools.com/docs/reference/report.md) | Updates an existing report |
| [updateReports(reports)](https://www.adaptabletools.com/docs/reference/exportapi.md#updatereports) | [`Report`](https://www.adaptabletools.com/docs/reference/report.md)`[]` | Replaces the given custom reports in Export State. |

-------

## Report Schedule Ran Event

The Report Schedule Ran Event is published whenever any report runs on a Schedule.

The [`ReportScheduleRanInfo`](https://www.adaptabletools.com/docs/reference/reportscheduleraninfo.md) provides full information on the Report and the Schedule:

| Property | Type | Description |
| --- | --- | --- |
| [RanAt](https://www.adaptabletools.com/docs/reference/reportscheduleraninfo.md#ranat) | `string` | When this run started, as an ISO datetime (`new Date().toISOString()`). |
| [reportSchedule](https://www.adaptabletools.com/docs/reference/reportscheduleraninfo.md#reportschedule) | [`ReportSchedule`](https://www.adaptabletools.com/docs/reference/reportschedule.md) | The schedule that just ran. |
| [adaptableContext](https://www.adaptabletools.com/docs/reference/reportscheduleraninfo.md#adaptablecontext) | `any` | Custom application Context provided in `AdaptableOptions.adaptableContext` |

-------

## Live Data Changed Event

The Live Data Changed Event is published when a live report for the [ipushpull](https://www.adaptabletools.com/docs/integrations-ipushpull/index.md) or [OpenFin](https://www.adaptabletools.com/docs/integrations-openfin/index.md) plugins connects, disconnects, sends a snapshot, or starts, stops or updates.

The payload is a [`LiveDataChangedInfo`](https://www.adaptabletools.com/docs/reference/livedatachangedinfo.md) object:

| Property | Type | Description |
| --- | --- | --- |
| [liveDataTrigger](https://www.adaptabletools.com/docs/reference/livedatachangedinfo.md#livedatatrigger) | `'Connected' \| 'Disconnected' \| 'SnapshotSent' \| 'LiveDataStarted' \| 'LiveDataStopped' \| 'LiveDataUpdated'` | What happened:<br/>- `Connected` — the destination session started. `liveReport` is omitted.<br/>- `Disconnected` — the destination session ended. `liveReport` is omitted.<br/>- `SnapshotSent` — a one-off snapshot was sent. `liveReport` is omitted.<br/>- `LiveDataStarted` — a report started streaming. `liveReport` is that report.<br/>- `LiveDataStopped` — streaming stopped. `liveReport` is the report that was live.<br/>- `LiveDataUpdated` — a new snapshot of the live report was pushed. `liveReport` is that report. |
| [liveReport](https://www.adaptabletools.com/docs/reference/livedatachangedinfo.md#livereport) | `any` | The ipushpull or OpenFin report this change is about.<br/><br/>Set for `LiveDataStarted`, `LiveDataStopped` and `LiveDataUpdated`. Omitted for `Connected`, `Disconnected` and `SnapshotSent`.<br/><br/>This is the plugin report (an ipushpull report or an OpenFin report), not a . |
| [reportDestination](https://www.adaptabletools.com/docs/reference/livedatachangedinfo.md#reportdestination) | `'OpenFin' \| 'ipushpull'` | Destination this change belongs to: `OpenFin` or `ipushpull`. |
| [adaptableContext](https://www.adaptabletools.com/docs/reference/livedatachangedinfo.md#adaptablecontext) | `any` | Custom application Context provided in `AdaptableOptions.adaptableContext` |

### Live Report

The [`Live Report`](https://www.adaptabletools.com/docs/reference/livereport.md) defines which Adaptable Reports are 'Live' (i.e. they will update the destination as the data in Adaptable ticks or changes):

When Adaptable creates a Live Report it will take care of updating the destination as the data in the Report changes (based on the throttle time it is given).

| Property | Type | Description |
| --- | --- | --- |
| [pageName](https://www.adaptabletools.com/docs/reference/livereport.md#pagename) | `string` | For OpenFin this is the workbook name; for iPushpull the page name |
| [report](https://www.adaptabletools.com/docs/reference/livereport.md#report) | [`Report`](https://www.adaptabletools.com/docs/reference/report.md) | The underlying Report |
| [reportDestination](https://www.adaptabletools.com/docs/reference/livereport.md#reportdestination) | `'OpenfinExcel' \| 'ipushpull'` | Where the live data is being sent.<br/><br/>`OpenfinExcel` is the OpenFin value on this object.  uses `OpenFin` for the same destination. |
