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

# Custom Property Definitions

To be able to add custom properties to an Entity, you first need to create a
custom property definition for the specific Entity type. This tutorial will
walk you through the flow for an Employee, but the process is <b>similar for
other Entity types</b>.

## Allowed Types

Custom property definitions ensure that a custom property is consistent over
all entities of that type. Using an inconsistent data type will result in
a `HTTP 400: Bad Request`.

An Employee can have custom properties of the following types:

* `number`: Must be an integer or float (without double quotes)
* `text`: Must be an empty or non-empty string
* `boolean`: Must be a Boolean value true or false (without double quotes)
* `datetime`: Must be an ISO8601-formatted datetime string (supported
  formats: `["%Y-%m-%dT%H:%M:%S.%f", "%Y-%m-%d"]`).
* `list[text]`: Must be a list of strings

## Example

If you want for example to indicate that an Employee is a freelancer, you can
create a Boolean custom property definition `freelancer`.

```json theme={null}
{
  "property_name": "freelancer",
  "property_type": "boolean"
}
```

In order to create the definition use the following flow:

```mermaid Creation theme={null}
sequenceDiagram
    participant Your System
    participant Skill Engine API
    Your System->>Skill Engine API: POST /employees/custom_properties
    activate Your System
    alt Creation Successful
        rect rgba(0, 255, 0, .15)
            Skill Engine API-->>Your System: ✅ HTTP 204 No Content
        end
    else Custom Property Definition Already Exists
        rect rgba(255, 0, 0, .15)
            Skill Engine API-->>Your System: ❌ HTTP 409 Conflict
        end
    end
```

You can retrieve, update, and delete all the custom property definitions for an
Employee using the endpoint `/employees/custom_properties`. For more details on
how to do this, please head over to the [API Reference](/reference/).
