# Fields

## Create a field

 - [POST /v1/fields](https://developer.iclosed.io/openapi/v1/openapi/fields/createcustomfield.md): Create a new custom field. Body: name (required), inputType (required), type (required), and optional identifier, description, configuration, options (array of option objects).

## Update a field

 - [PUT /v1/fields](https://developer.iclosed.io/openapi/v1/openapi/fields/updatecustomfield.md): Update an existing custom field. Body: id (required), and optional name, identifier, description, inputType, type, configuration, options (array of option objects), hidden.

## Upsert Field Answer

 - [POST /v1/fields/answer](https://developer.iclosed.io/openapi/v1/openapi/fields/createcustomfieldanswer.md): Create or update a custom field answer for a contact (type CONTACT) or event call (type CALL). Provide exactly one of customFieldId or identifier. For CONTACT custom fields send contactId; for CALL send eventCallId. The answer array format depends on inputType: TEXT/TEXT_AREA = string(s), NUMBER/RATING/USER = numeric string(s), DATE = ISO date string, EMAIL = email string, URL = https URL, SINGLE_SELECT/MULTIPLE_SELECT = option name(s), USERS_MULTIPLE = user ID(s) as strings.

## Insert Invitee Answers

 - [POST /v1/fields/inviteeAnswers](https://developer.iclosed.io/openapi/v1/openapi/fields/insertinviteeanswers.md): Insert invitee question answers and secondary (custom field) answers for a contact on an event (disqualified lead flow). Secondary questions can be identified by customFieldId or identifier; answer is always an array. Backend resolves secondary answers to the event's custom fields and computes disqualifyingCondition and conditionalUsers from event logic (disqualification and conditional routing).

## Get Contact Stages

 - [GET /v1/fields/contact-stage](https://developer.iclosed.io/openapi/v1/openapi/fields/getcontactstage.md): Retrieve the Contact Stages (lifecycle stages) custom field for the authenticated account.

## Get Object and Fields

 - [GET /v1/fields/objects](https://developer.iclosed.io/openapi/v1/openapi/fields/getcustomfieldsbyobjecttype.md): Get paginated custom fields for a specific object type. Query: objectType (required), page, limit, search, inputType, hidden, showSystemFields, allFields, forFilters, inviteeQuestions, includeRelations, identifiers.

## Get All Objects and Fields

 - [GET /v1/fields/objects/all](https://developer.iclosed.io/openapi/v1/openapi/fields/getallobjecttypescustomfields.md): Get custom fields for all object types (CONTACT, CALL, EVENT, DEAL, USER, etc.) in one response. Query: page, limit, search, inputType, hidden, showSystemFields, allFields, forFilters, inviteeQuestions.

