## Get definitions for a custom object type

`object.definitions(strentity_slug)  -> ObjectDefinitionsResponse`

**get** `/v1/objects/{entitySlug}/definitions`

Returns field and relationship definitions for the specified custom object type.

### Parameters

- `entity_slug: str`

  The slug of the custom object type.

### Returns

- `class ObjectDefinitionsResponse: …`

  - `field_definitions: Dict[str, FieldDefinitions]`

    Map of field keys to their definitions, including both system and custom fields.

    - `description: Optional[str]`

      Description of the field, or null.

    - `label: str`

      Human-readable display name of the field.

    - `type_configuration: FieldDefinitionsTypeConfiguration`

      Type-specific configuration (e.g. select options, currency code).

      - `currency: Optional[str]`

        ISO 4217 3-letter currency code.

      - `handle_service: Optional[Literal["TWITTER", "LINKEDIN", "FACEBOOK", "INSTAGRAM"]]`

        Social platform associated with this handle field.

        - `"TWITTER"`

        - `"LINKEDIN"`

        - `"FACEBOOK"`

        - `"INSTAGRAM"`

      - `multiple_values: Optional[bool]`

        Whether this field accepts multiple values.

      - `options: Optional[List[FieldDefinitionsTypeConfigurationOption]]`

        Available options for select fields.

        - `id: str`

          Unique identifier of the select option.

        - `label: str`

          Human-readable display name of the option.

        - `description: Optional[str]`

          Description of the option, or null.

        - `parent_id: Optional[str]`

          For a dependent select, the ID of the option in the parent field named by `typeConfiguration.parentFieldKey` that owns this option. Absent for ordinary selects.

      - `parent_field_key: Optional[str]`

        For a dependent select, the field key whose selected option determines which of this field's options apply. Absent for ordinary selects.

      - `unique: Optional[bool]`

        Whether values for this field must be unique.

    - `value_type: Literal["ADDRESS", "CHECKBOX", "CURRENCY", 12 more]`

      Data type of the field.

      - `"ADDRESS"`

      - `"CHECKBOX"`

      - `"CURRENCY"`

      - `"DATETIME"`

      - `"EMAIL"`

      - `"FULL_NAME"`

      - `"MARKDOWN"`

      - `"MULTI_SELECT"`

      - `"NUMBER"`

      - `"SINGLE_SELECT"`

      - `"SOCIAL_HANDLE"`

      - `"TELEPHONE"`

      - `"TEXT"`

      - `"URL"`

      - `"HTML"`

    - `id: Optional[str]`

      Unique identifier of the field definition.

    - `read_only: Optional[bool]`

      `true` for fields that are not writable via the API (e.g. AI-generated summaries). `false` or absent for writable fields.

  - `object_type: str`

    The object type these definitions belong to (e.g. `account`).

  - `relationship_definitions: Dict[str, RelationshipDefinitions]`

    Map of relationship keys to their definitions. Self-referential relationships include optional directional metadata on the bare definition.

    - `cardinality: Literal["HAS_ONE", "HAS_MANY"]`

      Whether this is a `has_one` or `has_many` relationship.

      - `"HAS_ONE"`

      - `"HAS_MANY"`

    - `description: Optional[str]`

      Description of the relationship, or null.

    - `label: str`

      Human-readable display name of the relationship.

    - `object_type: str`

      The type of the related object (e.g. `account`, `contact`).

    - `id: Optional[str]`

      Unique identifier of the relationship definition.

    - `directions: Optional[RelationshipDefinitionsDirections]`

      Directional metadata for a self-referential relationship. List filters use the relationship key with `:asSource` or `:asDestination`; writes continue to use the bare key.

      - `as_destination: RelationshipDefinitionsDirectionsAsDestination`

        The current record is the destination (incoming) endpoint.

        - `cardinality: Literal["HAS_ONE", "HAS_MANY"]`

          Whether this endpoint direction is `HAS_ONE` or `HAS_MANY`.

          - `"HAS_ONE"`

          - `"HAS_MANY"`

        - `label: str`

          Human-readable display name for this endpoint direction.

      - `as_source: RelationshipDefinitionsDirectionsAsSource`

        The current record is the source (outgoing) endpoint.

        - `cardinality: Literal["HAS_ONE", "HAS_MANY"]`

          Whether this endpoint direction is `HAS_ONE` or `HAS_MANY`.

          - `"HAS_ONE"`

          - `"HAS_MANY"`

        - `label: str`

          Human-readable display name for this endpoint direction.

### Example

```python
from lightfield import Lightfield

client = Lightfield(
    api_key="My API Key",
)
object_definitions_response = client.object.definitions(
    "entitySlug",
)
print(object_definitions_response.field_definitions)
```

#### Response

```json
{
  "fieldDefinitions": {
    "foo": {
      "description": "description",
      "label": "label",
      "typeConfiguration": {
        "currency": "currency",
        "handleService": "TWITTER",
        "multipleValues": true,
        "options": [
          {
            "id": "id",
            "label": "label",
            "description": "description",
            "parentId": "parentId"
          }
        ],
        "parentFieldKey": "parentFieldKey",
        "unique": true
      },
      "valueType": "ADDRESS",
      "id": "id",
      "readOnly": true
    }
  },
  "objectType": "objectType",
  "relationshipDefinitions": {
    "foo": {
      "cardinality": "HAS_ONE",
      "description": "description",
      "label": "label",
      "objectType": "objectType",
      "id": "id",
      "directions": {
        "asDestination": {
          "cardinality": "HAS_ONE",
          "label": "label"
        },
        "asSource": {
          "cardinality": "HAS_ONE",
          "label": "label"
        }
      }
    }
  }
}
```
