This tutorial will create a custom property for a `table` entity.
Let's assume in your organization you want to keep track of table size, so to achieve that you will be creating a custom property for table entities and then providing a value to that property for each table.
### Step 1: Get the table entity type.
All OpenMetadata APIs are secured so make sure to add the proper headers.
```commandline
curl -X GET http://localhost:8585/api/v1/metadata/types/name/table
```
After the API call, you will get a response like this.
```json
{
"id": "7f0b032f-cdc8-4573-abb0-22165dcd8e07",
"name": "table",
}
```
Now take the `id` from above response `7f0b032f-cdc8-4573-abb0-22165dcd8e07`.
### Step 2: Get the field types with `category=field`
> From UI OpenMetadata only supports three field types
>
> - String
> - Markdown
> - Integer
```commandline
curl -X GET http://localhost:8585/api/v1/metadata/types?category=field
```
This API will return all the available field types, for this tutorial grab the id of the `string` field type. i.e `7531f881-c37c-4e39-9154-4bdf0802e05e`
### Step 3: Make a PUT call to create the custom property for the table entity
```commandline
curl -X PUT http://localhost:8585/api/v1/metadata/types/7f0b032f-cdc8-4573-abb0-22165dcd8e07
```
**Payload**
```json
{
"description": "Property for tracking the tableSize.",
"name": "tableSize",
"propertyType": {
"id": "7531f881-c37c-4e39-9154-4bdf0802e05e",
"type": "type"
}
}
```
### Step 4: Get the custom properties for the table entity
```commandline
curl -X GET http://localhost:8585/api/v1/metadata/types/name/table?fields=customProperties
```
**Response**
```json
{
"id": "7f0b032f-cdc8-4573-abb0-22165dcd8e07",
"name": "table",
"customProperties": [
{
"name": "tableSize",
"description": "Property for tracking the tableSize.",