# Function: makeObjectSchema()

> **makeObjectSchema**\<`K`, `L`, `T`>(`schemaDef`): `T` & `object`

Defined in: [schema.ts:2055](https://github.com/coda/packs-sdk/blob/b2b4c9dba5ca748bdbb94481cc13b5ca3c328ef6/schema.ts#L2055)

A wrapper for creating a schema definition for an object value.

It is always recommended to use wrapper functions for creating top-level schema objects rather than specifying object literals. Wrappers validate your schemas at creation time, provide better TypeScript type inference, and can reduce boilerplate.

## Example

```
sdk.makeObjectSchema({
  id: "email",
  primary: "name",
  properties: {
    email: {type: sdk.ValueType.String, required: true},
    name: {type: sdk.ValueType.String, required: true},
  },
});
```

## Type Parameters

| Type Parameter | | --- | | `K` *extends* `string` | | `L` *extends* `string` | | `T` *extends* `Omit`\<[`ObjectSchemaDefinition`](../../interfaces/ObjectSchemaDefinition/)\<`K`, `L`>, `"type"`> & [`ObjectSchemaProperty`](../../interfaces/ObjectSchemaProperty/) |

## Parameters

| Parameter | Type | | --- | --- | | `schemaDef` | `Exact`\<`T`, `Omit`\<[`ObjectSchemaDefinition`](../../interfaces/ObjectSchemaDefinition/)\<`K`, `L`>, `"type"`> & [`ObjectSchemaProperty`](../../interfaces/ObjectSchemaProperty/) & `object`> |

## Returns

`T` & `object`
