API Reference
Schema
Retrieve object definitions, field metadata, enums, and relation configurations from your CRM schema.
The Schema endpoints let you inspect your CRM's data model programmatically. Use them to discover available objects, their fields, types, constraints, and relations.
List all objects
GET /api/v1/schemaReturns every object in your organization along with its fields and all enum definitions.
Query parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
include_hidden | boolean | false | Include hidden (system-internal) objects in the response |
Response
{
"objects": [
{
"name": "contacts",
"label": "Contacts",
"icon": "Users",
"isHidden": false,
"fields": [
{
"name": "first_name",
"label": "First Name",
"type": "TEXT",
"isRequired": true,
"isReadonly": false,
"isSearchable": true,
"isUnique": false,
"defaultValue": null,
"enumName": null,
"relationConfig": null
},
{
"name": "email",
"label": "Email",
"type": "EMAIL",
"isRequired": false,
"isReadonly": false,
"isSearchable": true,
"isUnique": true,
"defaultValue": null,
"enumName": null,
"relationConfig": null
},
{
"name": "company",
"label": "Company",
"type": "RELATION",
"isRequired": false,
"isReadonly": false,
"isSearchable": false,
"isUnique": false,
"defaultValue": null,
"enumName": null,
"relationConfig": {
"relationType": "BELONGS_TO_ONE",
"targetObjectName": "companies"
}
}
]
}
],
"enums": [
{
"name": "contact_status",
"values": ["lead", "qualified", "customer", "churned"]
}
]
}Field properties
| Property | Type | Description |
|---|---|---|
name | string | Column name in the database |
label | string | Human-readable display label |
type | string | Field type (TEXT, NUMBER, EMAIL, SELECT, RELATION, etc.) |
isRequired | boolean | Whether the field must have a value when creating a record |
isReadonly | boolean | Whether the field is computed or system-managed |
isSearchable | boolean | Whether the field is included in full-text search |
isUnique | boolean | Whether a unique constraint is enforced |
defaultValue | string | null | Default value applied on creation |
enumName | string | null | Name of the linked enum (for SELECT and MULTI_SELECT fields) |
relationConfig | object | null | Relation details (see below) |
Relation config
Present on RELATION fields. Describes how two objects are linked.
| Property | Type | Description |
|---|---|---|
relationType | string | One of BELONGS_TO_ONE, HAS_MANY, MANY_TO_MANY, MORPH_RELATION |
targetObjectName | string | The related object's name |
Example
curl -X GET "https://kasar.app/api/v1/schema" \
-H "Authorization: Bearer YOUR_API_TOKEN"To include hidden objects:
curl -X GET "https://kasar.app/api/v1/schema?include_hidden=true" \
-H "Authorization: Bearer YOUR_API_TOKEN"Get a single object schema
GET /api/v1/schema/:objectReturns the full schema for one object, including all fields and their configurations.
Path parameters
| Parameter | Type | Description |
|---|---|---|
object | string | The object name (e.g., contacts, companies, opportunities) |
Response
{
"name": "opportunities",
"label": "Opportunities",
"icon": "Target",
"isHidden": false,
"fields": [
{
"name": "name",
"label": "Name",
"type": "TEXT",
"isRequired": true,
"isReadonly": false,
"isSearchable": true,
"isUnique": false,
"defaultValue": null,
"enumName": null,
"relationConfig": null
},
{
"name": "amount",
"label": "Amount",
"type": "CURRENCY",
"isRequired": false,
"isReadonly": false,
"isSearchable": false,
"isUnique": false,
"defaultValue": null,
"enumName": null,
"relationConfig": null
},
{
"name": "status",
"label": "Status",
"type": "SELECT",
"isRequired": true,
"isReadonly": false,
"isSearchable": false,
"isUnique": false,
"defaultValue": "open",
"enumName": "opportunity_status",
"relationConfig": null
},
{
"name": "pipeline_step_id",
"label": "Pipeline Step",
"type": "PIPELINE",
"isRequired": false,
"isReadonly": false,
"isSearchable": false,
"isUnique": false,
"defaultValue": null,
"enumName": null,
"relationConfig": null
},
{
"name": "company",
"label": "Company",
"type": "RELATION",
"isRequired": false,
"isReadonly": false,
"isSearchable": false,
"isUnique": false,
"defaultValue": null,
"enumName": null,
"relationConfig": {
"relationType": "BELONGS_TO_ONE",
"targetObjectName": "companies"
}
},
{
"name": "close_date",
"label": "Close Date",
"type": "DATE",
"isRequired": false,
"isReadonly": false,
"isSearchable": false,
"isUnique": false,
"defaultValue": null,
"enumName": null,
"relationConfig": null
}
]
}Errors
| Status | Code | Description |
|---|---|---|
| 400 | INVALID_OBJECT | The object name does not exist in your schema |
Example
curl -X GET "https://kasar.app/api/v1/schema/contacts" \
-H "Authorization: Bearer YOUR_API_TOKEN"