# Indexes

## Get Index

`IndexGetResponse Beta.Indexes.Get(IndexGetParamsparameters, CancellationTokencancellationToken = default)`

**get** `/api/v1/indexes/{index_id}`

Get an index by ID.

### Parameters

- `IndexGetParams parameters`

  - `required string indexID`

  - `string? organizationID`

  - `string? projectID`

### Returns

- `class IndexGetResponse:`

  A searchable index over a directory of documents.

  - `required string ID`

    Unique identifier

  - `required string ExportConfigID`

    ID of the export configuration.

  - `required string Name`

    Index name.

  - `required string OutputDirectoryID`

    ID of the output directory holding the indexed files.

  - `required string ProjectID`

    Project this index belongs to.

  - `required string SourceDirectoryID`

    ID of the source directory.

  - `required string SyncConfigID`

    ID of the sync configuration.

  - `DateTimeOffset? CreatedAt`

    Creation datetime

  - `string? Description`

    Index description.

  - `DateTimeOffset? LastExportedAt`

    Last export time.

  - `DateTimeOffset? LastSyncedAt`

    Last sync time.

  - `IReadOnlyDictionary<string, JsonElement> Metadata`

    Build state and diagnostic info.

  - `DateTimeOffset? UpdatedAt`

    Update datetime

### Example

```csharp
IndexGetParams parameters = new() { IndexID = "index_id" };

var index = await client.Beta.Indexes.Get(parameters);

Console.WriteLine(index);
```

#### Response

```json
{
  "id": "id",
  "export_config_id": "export_config_id",
  "name": "name",
  "output_directory_id": "output_directory_id",
  "project_id": "project_id",
  "source_directory_id": "source_directory_id",
  "sync_config_id": "sync_config_id",
  "created_at": "2019-12-27T18:11:19.117Z",
  "description": "description",
  "last_exported_at": "2019-12-27T18:11:19.117Z",
  "last_synced_at": "2019-12-27T18:11:19.117Z",
  "metadata": {
    "foo": "bar"
  },
  "updated_at": "2019-12-27T18:11:19.117Z"
}
```

## Delete Index

`Beta.Indexes.Delete(IndexDeleteParamsparameters, CancellationTokencancellationToken = default)`

**delete** `/api/v1/indexes/{index_id}`

Delete an index.

### Parameters

- `IndexDeleteParams parameters`

  - `required string indexID`

  - `string? organizationID`

  - `string? projectID`

### Example

```csharp
IndexDeleteParams parameters = new() { IndexID = "index_id" };

await client.Beta.Indexes.Delete(parameters);
```

## Create Index

`IndexCreateResponse Beta.Indexes.Create(IndexCreateParamsparameters, CancellationTokencancellationToken = default)`

**post** `/api/v1/indexes`

Create a searchable index over a source directory.

### Parameters

- `IndexCreateParams parameters`

  - `required string sourceDirectoryID`

    Body param: ID of the source directory containing your documents.

  - `string? organizationID`

    Query param

  - `string? projectID`

    Query param

  - `string? description`

    Body param: Optional description of the index.

  - `string? name`

    Body param: Optional display name for the index. If omitted, the index is named after the source directory.

  - `IReadOnlyList<Product>? products`

    Body param: Product configurations for syncing. Omit to use a default parse configuration. Include an explicit entry per product type (e.g. parse, extract) to override the default.

    - `required string ProductConfigID`

      ID of the product configuration.

    - `required string ProductType`

      Product type. One of: parse, extract.

  - `IReadOnlyList<string>? storeAttachments`

    Body param: Attachment kinds to store alongside parsed output. Each entry must be one of: screenshots, items. For example, ['screenshots'] renders and stores per-page screenshots; ['items'] stores structured items with bounding boxes. Omit or pass an empty list to skip attachments.

  - `string syncFrequency`

    Body param: How often to re-run the sync. One of: manual, daily, on_source_change. Defaults to manual.

  - `VectorTarget vectorTarget`

    Body param: Vector export destination for the index. 'DEFAULT' exports to the managed vector DB destination resolved from configuration. 'DISABLED' skips vector export — the export destination falls back to 'Download'.

    - `"DEFAULT"Default`

    - `"DISABLED"Disabled`

### Returns

- `class IndexCreateResponse:`

  A searchable index over a directory of documents.

  - `required string ID`

    Unique identifier

  - `required string ExportConfigID`

    ID of the export configuration.

  - `required string Name`

    Index name.

  - `required string OutputDirectoryID`

    ID of the output directory holding the indexed files.

  - `required string ProjectID`

    Project this index belongs to.

  - `required string SourceDirectoryID`

    ID of the source directory.

  - `required string SyncConfigID`

    ID of the sync configuration.

  - `DateTimeOffset? CreatedAt`

    Creation datetime

  - `string? Description`

    Index description.

  - `DateTimeOffset? LastExportedAt`

    Last export time.

  - `DateTimeOffset? LastSyncedAt`

    Last sync time.

  - `IReadOnlyDictionary<string, JsonElement> Metadata`

    Build state and diagnostic info.

  - `DateTimeOffset? UpdatedAt`

    Update datetime

### Example

```csharp
IndexCreateParams parameters = new() { SourceDirectoryID = "dir-abc123" };

var index = await client.Beta.Indexes.Create(parameters);

Console.WriteLine(index);
```

#### Response

```json
{
  "id": "id",
  "export_config_id": "export_config_id",
  "name": "name",
  "output_directory_id": "output_directory_id",
  "project_id": "project_id",
  "source_directory_id": "source_directory_id",
  "sync_config_id": "sync_config_id",
  "created_at": "2019-12-27T18:11:19.117Z",
  "description": "description",
  "last_exported_at": "2019-12-27T18:11:19.117Z",
  "last_synced_at": "2019-12-27T18:11:19.117Z",
  "metadata": {
    "foo": "bar"
  },
  "updated_at": "2019-12-27T18:11:19.117Z"
}
```

## Sync Index

`JsonElement Beta.Indexes.Sync(IndexSyncParamsparameters, CancellationTokencancellationToken = default)`

**post** `/api/v1/indexes/{index_id}/sync`

Trigger a sync and export for an existing index, re-parsing changed files and exporting updated chunks.

### Parameters

- `IndexSyncParams parameters`

  - `required string indexID`

  - `string? organizationID`

  - `string? projectID`

### Example

```csharp
IndexSyncParams parameters = new() { IndexID = "index_id" };

var response = await client.Beta.Indexes.Sync(parameters);

Console.WriteLine(response);
```

#### Response

```json
{}
```

## List Indexes

`IndexListPageResponse Beta.Indexes.List(IndexListParams?parameters, CancellationTokencancellationToken = default)`

**get** `/api/v1/indexes`

List indexes for the current project.

### Parameters

- `IndexListParams parameters`

  - `string? organizationID`

  - `Long? pageSize`

  - `string? pageToken`

  - `string? projectID`

  - `string? sourceDirectoryID`

### Returns

- `class IndexListPageResponse:`

  Paginated list of indexes.

  - `required IReadOnlyList<IndexListResponse> Items`

    The list of items.

    - `required string ID`

      Unique identifier

    - `required string ExportConfigID`

      ID of the export configuration.

    - `required string Name`

      Index name.

    - `required string OutputDirectoryID`

      ID of the output directory holding the indexed files.

    - `required string ProjectID`

      Project this index belongs to.

    - `required string SourceDirectoryID`

      ID of the source directory.

    - `required string SyncConfigID`

      ID of the sync configuration.

    - `DateTimeOffset? CreatedAt`

      Creation datetime

    - `string? Description`

      Index description.

    - `DateTimeOffset? LastExportedAt`

      Last export time.

    - `DateTimeOffset? LastSyncedAt`

      Last sync time.

    - `IReadOnlyDictionary<string, JsonElement> Metadata`

      Build state and diagnostic info.

    - `DateTimeOffset? UpdatedAt`

      Update datetime

  - `string? NextPageToken`

    A token, which can be sent as page_token to retrieve the next page. If this field is omitted, there are no subsequent pages.

  - `Long? TotalSize`

    The total number of items available. This is only populated when specifically requested. The value may be an estimate and can be used for display purposes only.

### Example

```csharp
IndexListParams parameters = new();

var page = await client.Beta.Indexes.List(parameters);
await foreach (var item in page.Paginate())
{
    Console.WriteLine(item);
}
```

#### Response

```json
{
  "items": [
    {
      "id": "id",
      "export_config_id": "export_config_id",
      "name": "name",
      "output_directory_id": "output_directory_id",
      "project_id": "project_id",
      "source_directory_id": "source_directory_id",
      "sync_config_id": "sync_config_id",
      "created_at": "2019-12-27T18:11:19.117Z",
      "description": "description",
      "last_exported_at": "2019-12-27T18:11:19.117Z",
      "last_synced_at": "2019-12-27T18:11:19.117Z",
      "metadata": {
        "foo": "bar"
      },
      "updated_at": "2019-12-27T18:11:19.117Z"
    }
  ],
  "next_page_token": "next_page_token",
  "total_size": 0
}
```
