# Create

Use this endpoint to define the columns, types, and other properties for a new dataset tailored to your needs.

### Create a Dataset

To create a new dataset, follow these steps:

```python
url = 'https://app.graphite-note.com/api/dataset-create'
```

1. To create a new dataset, make a POST request to `/dataset-create` with the required parameters in the request body.
2. To specify the dataset structure, include an array of column definitions with each column's name, alias, type, subtype, and optional format.

* **Type** can be:
  * `measure`
  * `dimension`
* **Subtype** can be:
  * `text`
  * `numeric`
  * `date`
  * `datetime`

The response will include key details about the created dataset, including the dataset code, table name, and the number of columns.

***

### **Example Usage**

**Creating a New Dataset**

For example, making a POST request to the following URL with the provided JSON body would result in the response below:\
\
**Request**

```json
POST /dataset-create
Authorization: Bearer YOUR-TENANT-TOKEN

{
  "user-code": "0f02b4d4f9ae",
  "columns": [
    {
      "name": "InvoiceNo",
      "alias": "InvoiceNo",
      "type": "dimension",
      "subtype": "text"
    },
    {
      "name": "StockCode",
      "alias": "StockCode",
      "type": "dimension",
      "subtype": "text"
    },
    {
      "name": "Description",
      "alias": "Description",
      "type": "dimension",
      "subtype": "text"
    },
    {
      "name": "Quantity",
      "alias": "Quantity",
      "type": "measure",
      "subtype": "numeric",
      "format": "#,###.##"
    },
    {
      "name": "InvoiceDate",
      "alias": "InvoiceDate",
      "type": "dimension",
      "subtype": "datetime",
      "format": "Y-d-m H:i:s"
    },
    {
      "name": "UnitPrice",
      "alias": "UnitPrice",
      "type": "measure",
      "subtype": "numeric",
      "format": "#,###.##"
    },
    {
      "name": "CustomerID",
      "alias": "CustomerID",
      "type": "measure",
      "subtype": "numeric",
      "format": "#,###.##"
    }
  ],
  "name": "Client onboarding dataset creation"
}

```

**Response**

```json
{
  "data": {
    "dataset-code": "eca2ad3940e3",
    "table-name": "dataset_csv_eca2ad3940e3",
    "columns": 7
  }
}

```

This request creates a dataset with the specified columns, each having unique names, types, and formats tailored to client onboarding requirements.

### Example Python Implementation

```python
import requests

# Replace with your actual tenant token
tenant_token = YOUR-TOKEN

# Replace with your actual endpoint URL
url = 'https://app.graphite-note.com/api/dataset-create'

# Payload for dataset creation
payload = {
    "user-code": YOUR-CODE,
    "columns": [
        {
            "name": "order",
            "alias": "order",
            "type": "dimension",
            "subtype": "text"
        },
        {
            "name": "customer_id",
            "alias": "customer_id",
            "type": "dimension",
            "subtype": "text"
        },
        {
            "name": "number_of_items",
            "alias": "number_of_items",
            "type": "measure",
            "subtype": "numeric",
            "format": "#,###.##"
        }
    ],
    "name": "API dataset test"
}

# Headers with the bearer token
headers = {
    "Authorization": f"Bearer {tenant_token}",
    "Content-Type": "application/json"
}

# Send the POST request
response = requests.post(url, json=payload, headers=headers)

# Print response
print("Status code:", response.status_code)
print("Response body:", response.json())

```
