KasarKasar Docs
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/schema

Returns every object in your organization along with its fields and all enum definitions.

Query parameters

ParameterTypeDefaultDescription
include_hiddenbooleanfalseInclude 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

PropertyTypeDescription
namestringColumn name in the database
labelstringHuman-readable display label
typestringField type (TEXT, NUMBER, EMAIL, SELECT, RELATION, etc.)
isRequiredbooleanWhether the field must have a value when creating a record
isReadonlybooleanWhether the field is computed or system-managed
isSearchablebooleanWhether the field is included in full-text search
isUniquebooleanWhether a unique constraint is enforced
defaultValuestring | nullDefault value applied on creation
enumNamestring | nullName of the linked enum (for SELECT and MULTI_SELECT fields)
relationConfigobject | nullRelation details (see below)

Relation config

Present on RELATION fields. Describes how two objects are linked.

PropertyTypeDescription
relationTypestringOne of BELONGS_TO_ONE, HAS_MANY, MANY_TO_MANY, MORPH_RELATION
targetObjectNamestringThe 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/:object

Returns the full schema for one object, including all fields and their configurations.

Path parameters

ParameterTypeDescription
objectstringThe 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

StatusCodeDescription
400INVALID_OBJECTThe 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"

On this page