> ## Documentation Index
> Fetch the complete documentation index at: https://knowledge.cloudquant.com/llms.txt
> Use this file to discover all available pages before exploring further.

# C# SDK Getting Started

> Installation guide and prerequisites for using the CloudQuant Data Liberator C# API.

# C# SDK getting started

The CloudQuant Data Liberator C# SDK streams data as Arrow Record Batches, which can be converted to Microsoft DataFrames.

## Required security files

You need the following files from your Downloads ZIP, placed in your working directory:

* **`liberator.json`** — Contains your Username and Token
* **`liberator.pfx`** — Security certificate (only required for releases prior to 2.0)

<Warning>
  `liberator.json` must be in your working directory.
</Warning>

<Note>
  As of release version 2.0, `liberator.pfx` is no longer required. If you are on a release prior to 2.0, you must also include `liberator.pfx` in your working directory.
</Note>

## Quick start

### Query and iterate record batches

```csharp theme={null}
Liberator liberator;
var res = liberator.query(new Dictionary<string, dynamic>() {
    {"name", "daily_bars"},
    {"as_of", "2021-04-10"},
    {"back_to", "2021-03-10"},
    {"symbols", "ES"}
});

foreach (RecordBatch batch in res())
{
    var df = DataFrame.FromArrowRecordBatch(batch);
    Console.WriteLine(DateTime.Now.ToString("hh:mm:ss.fff") + " " + DataFrameUtils.PrettyPrint(df));
}
```

### Get DataFrame directly

```csharp theme={null}
var res = liberator.query(new Dictionary<string, dynamic>() {
    {"name", "daily_bars"},
    {"as_of", "2021-04-10"},
    {"back_to", "2021-03-10"},
    {"symbols", "ES"}
});

var df = liberator.get_dataframe(res);
Console.WriteLine(DataFrameUtils.PrettyPrint(df));
```
