> ## Documentation Index
> Fetch the complete documentation index at: https://api-docs-dev.iclosed.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Custom Field

> Update an existing custom field



## OpenAPI

````yaml PUT /v1/fields
openapi: 3.0.0
info:
  title: iClosed.io V1 API
  description: >-
    V1 Public API with organization-based rate limiting. All requests require
    X-Org-Id header from API Gateway authorizer. This spec is generated from v1
    module schemas (Zod).
  version: 1.0.0
  contact:
    name: iClosed.io Support
    url: https://app.iclosed.io/support
  license:
    name: Proprietary
    url: https://app.iclosed.io/terms
servers:
  - url: http://localhost:4000
    description: local
  - url: https://public.api.iclosed.io
    description: V1 APIs (public)
  - url: https://api-dev.iclosed.io
    description: Development
  - url: https://api.iclosed.io
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Contacts
    description: Contact management
  - name: Deals
    description: Deal management
  - name: Events
    description: Event dates and time slots
  - name: Products
    description: Product listing
  - name: Outcomes
    description: Call outcomes
paths:
  /v1/fields:
    put:
      tags:
        - Fields
      summary: Update a field
      description: >-
        Update an existing custom field. Body: id (required), and optional name,
        identifier, description, inputType, type, configuration, options,
        hidden.
      operationId: updateCustomField
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  minimum: 1
                name:
                  type: string
                  maxLength: 1000
                identifier:
                  type: string
                  maxLength: 1000
                description:
                  type: string
                  maxLength: 1000
                defaultStatement:
                  type: string
                  maxLength: 1000
                inputType:
                  type: string
                  enum:
                    - NUMBER
                    - TEXT
                    - TEXT_AREA
                    - DATE
                    - USER
                    - USERS_MULTIPLE
                    - URL
                    - SINGLE_SELECT
                    - MULTIPLE_SELECT
                    - EMAIL
                    - RATING
                type:
                  type: string
                  enum:
                    - CONTACT
                    - CALL
                    - EVENT
                    - DEAL
                    - USER
                    - ISCORE
                    - UNIFIED_INBOX
                    - INVITEE_QUESTION
                configuration:
                  description: >-
                    Optional configuration object. Shape depends on inputType:
                    DATE (dateType, includedTime, optionally dateTimeFormat),
                    SINGLE_SELECT/MULTIPLE_SELECT (isColorCodeOptions),
                    USER/USERS_MULTIPLE (isMultipleUsers), RATING (maxRating,
                    ratingStyle).
                  nullable: true
                  anyOf:
                    - type: object
                      properties:
                        dateTimeFormat:
                          type: string
                          enum:
                            - 12Hour
                            - 24Hour
                          description: >-
                            Time format: "12Hour" or "24Hour". Required when
                            includedTime is true.
                        dateType:
                          type: string
                          enum:
                            - US
                            - EU
                            - ISO
                            - FRIENDLY
                          description: >-
                            Date display format: "US", "EU", "ISO", or
                            "FRIENDLY".
                        includedTime:
                          type: boolean
                          enum:
                            - true
                          description: When true, time is shown and dateTimeFormat applies.
                      required:
                        - dateTimeFormat
                        - dateType
                        - includedTime
                      additionalProperties: false
                      description: Date field configuration when time is selected.
                    - type: object
                      properties:
                        dateType:
                          type: string
                          enum:
                            - US
                            - EU
                            - ISO
                            - FRIENDLY
                          description: >-
                            Date display format: "US", "EU", "ISO", or
                            "FRIENDLY".
                        includedTime:
                          type: boolean
                          enum:
                            - false
                          description: When false, only date is shown; no dateTimeFormat.
                      required:
                        - dateType
                        - includedTime
                      additionalProperties: false
                      description: Date field configuration when time is not selected.
                    - type: object
                      properties:
                        isColorCodeOptions:
                          type: boolean
                          description: >-
                            True if options have colors; false if colors are not
                            selected for options.
                      required:
                        - isColorCodeOptions
                      additionalProperties: false
                      description: Single Select or Multi Select field configuration.
                    - type: object
                      properties:
                        isMultipleUsers:
                          type: boolean
                          description: >-
                            True to allow multiple users; false for single user
                            selection.
                      required:
                        - isMultipleUsers
                      additionalProperties: false
                      description: User field configuration.
                    - type: object
                      properties:
                        maxRating:
                          type: string
                          description: Maximum rating value as string (e.g. "3").
                        ratingStyle:
                          type: string
                          enum:
                            - STAR
                          description: Display style for the rating (e.g. "STAR").
                      required:
                        - maxRating
                        - ratingStyle
                      additionalProperties: false
                      description: Rating field configuration.
                  type: object
                options:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: number
                      name:
                        type: string
                      color:
                        nullable: true
                        type: string
                      isArchived:
                        type: boolean
                      displayIndex:
                        type: number
                      actionId:
                        nullable: true
                        type: number
                      category:
                        nullable: true
                        type: string
                      icon:
                        nullable: true
                        type: string
                      isDefault:
                        type: boolean
                      badge:
                        nullable: true
                        type: string
                      tooltip:
                        nullable: true
                        type: string
                    required:
                      - name
                    additionalProperties: false
                hidden:
                  type: boolean
              required:
                - id
              additionalProperties: false
      responses:
        '200':
          description: Custom field updated successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                  data:
                    type: object
                    properties:
                      id:
                        type: number
                      name:
                        type: string
                      identifier:
                        nullable: true
                        type: string
                      description:
                        nullable: true
                        type: string
                      inputType:
                        type: string
                      options:
                        nullable: true
                        type: string
                      optionsAttributes:
                        nullable: true
                        type: string
                      type:
                        type: string
                      defaultStatement:
                        nullable: true
                        type: string
                      configuration:
                        description: >-
                          Optional configuration object. Shape depends on
                          inputType: DATE (dateType, includedTime, optionally
                          dateTimeFormat), SINGLE_SELECT/MULTIPLE_SELECT
                          (isColorCodeOptions), USER/USERS_MULTIPLE
                          (isMultipleUsers), RATING (maxRating, ratingStyle).
                        nullable: true
                        anyOf:
                          - type: object
                            properties:
                              dateTimeFormat:
                                type: string
                                enum:
                                  - 12Hour
                                  - 24Hour
                                description: >-
                                  Time format: "12Hour" or "24Hour". Required
                                  when includedTime is true.
                              dateType:
                                type: string
                                enum:
                                  - US
                                  - EU
                                  - ISO
                                  - FRIENDLY
                                description: >-
                                  Date display format: "US", "EU", "ISO", or
                                  "FRIENDLY".
                              includedTime:
                                type: boolean
                                enum:
                                  - true
                                description: >-
                                  When true, time is shown and dateTimeFormat
                                  applies.
                            required:
                              - dateTimeFormat
                              - dateType
                              - includedTime
                            additionalProperties: false
                            description: Date field configuration when time is selected.
                          - type: object
                            properties:
                              dateType:
                                type: string
                                enum:
                                  - US
                                  - EU
                                  - ISO
                                  - FRIENDLY
                                description: >-
                                  Date display format: "US", "EU", "ISO", or
                                  "FRIENDLY".
                              includedTime:
                                type: boolean
                                enum:
                                  - false
                                description: >-
                                  When false, only date is shown; no
                                  dateTimeFormat.
                            required:
                              - dateType
                              - includedTime
                            additionalProperties: false
                            description: >-
                              Date field configuration when time is not
                              selected.
                          - type: object
                            properties:
                              isColorCodeOptions:
                                type: boolean
                                description: >-
                                  True if options have colors; false if colors
                                  are not selected for options.
                            required:
                              - isColorCodeOptions
                            additionalProperties: false
                            description: Single Select or Multi Select field configuration.
                          - type: object
                            properties:
                              isMultipleUsers:
                                type: boolean
                                description: >-
                                  True to allow multiple users; false for single
                                  user selection.
                            required:
                              - isMultipleUsers
                            additionalProperties: false
                            description: User field configuration.
                          - type: object
                            properties:
                              maxRating:
                                type: string
                                description: Maximum rating value as string (e.g. "3").
                              ratingStyle:
                                type: string
                                enum:
                                  - STAR
                                description: Display style for the rating (e.g. "STAR").
                            required:
                              - maxRating
                              - ratingStyle
                            additionalProperties: false
                            description: Rating field configuration.
                        type: object
                      isSystemField:
                        type: boolean
                      hidden:
                        type: boolean
                      accountId:
                        type: number
                      userId:
                        type: number
                      createdAt:
                        type: string
                        format: date-time
                      updatedAt:
                        type: string
                        format: date-time
                      deletedAt:
                        nullable: true
                        type: string
                        format: date-time
                      associationCount:
                        type: number
                      CustomFieldOptions:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: number
                            name:
                              type: string
                            color:
                              nullable: true
                              type: string
                            isArchived:
                              type: boolean
                            displayIndex:
                              type: number
                            actionId:
                              nullable: true
                              type: number
                            category:
                              nullable: true
                              type: string
                            icon:
                              nullable: true
                              type: string
                            isDefault:
                              type: boolean
                            badge:
                              nullable: true
                              type: string
                            tooltip:
                              nullable: true
                              type: string
                          required:
                            - name
                          additionalProperties: false
                      CustomFieldEventMap:
                        type: array
                        items:
                          type: object
                          properties:
                            event:
                              type: object
                              properties:
                                name:
                                  type: string
                                color:
                                  type: string
                                linkPrefix:
                                  type: string
                                internalDescription:
                                  type: string
                              additionalProperties: false
                          additionalProperties: false
                      user:
                        type: object
                        properties:
                          firstName:
                            nullable: true
                            type: string
                          lastName:
                            nullable: true
                            type: string
                        additionalProperties: false
                    required:
                      - id
                      - name
                      - inputType
                      - type
                      - createdAt
                      - updatedAt
                    additionalProperties: false
                required:
                  - data
                additionalProperties: false
        '400':
          description: >-
            Bad request or validation failed (V1 Zod:
            message.details.fieldErrors/formErrors; or express-validator:
            message + errors array/object)
          content:
            application/json:
              schema:
                anyOf:
                  - type: object
                    properties:
                      message:
                        type: string
                        description: Always "Invalid request" when errors is an array
                      errors:
                        type: array
                        items:
                          type: string
                        description: List of validation error messages
                    required:
                      - message
                      - errors
                    additionalProperties: false
                  - type: object
                    properties:
                      message:
                        type: string
                        description: e.g. "Invalid request" or custom message
                      errors:
                        type: object
                        additionalProperties:
                          type: array
                          items:
                            type: string
                        description: >-
                          Field name to list of validation error messages for
                          that field
                    required:
                      - message
                      - errors
                    additionalProperties: false
                  - type: object
                    properties:
                      message:
                        type: object
                        properties:
                          status:
                            type: number
                            enum:
                              - 400
                          details:
                            type: object
                            properties:
                              formErrors:
                                type: array
                                items:
                                  type: string
                                description: Global form-level error messages
                              fieldErrors:
                                type: object
                                additionalProperties:
                                  type: array
                                  items:
                                    type: string
                                description: >-
                                  Field name to list of validation error
                                  messages
                            required:
                              - formErrors
                              - fieldErrors
                            additionalProperties: false
                          body:
                            type: object
                            additionalProperties: {}
                          query:
                            type: object
                            additionalProperties: {}
                          endpoint:
                            type: string
                          method:
                            type: string
                          token:
                            type: string
                        required:
                          - status
                          - details
                        additionalProperties: false
                    required:
                      - message
                    additionalProperties: false
              examples:
                validationZodDetails:
                  summary: >-
                    V1 Zod validation (body/query) – message contains status,
                    details, request context
                  value:
                    message:
                      status: 400
                      details:
                        formErrors: []
                        fieldErrors:
                          eventCallId:
                            - 'Invalid input: expected number, received undefined'
                      body: {}
                      query: {}
                      endpoint: /v1/deals
                      method: POST
                      token: Bearer iclosed_***
                validationArray:
                  summary: Validation errors (array)
                  value:
                    message: Invalid request
                    errors:
                      - email must be an email
                      - name is required
                validationObject:
                  summary: Validation errors (by field)
                  value:
                    message: Invalid request
                    errors:
                      email:
                        - Invalid email
                      name:
                        - Required
        '401':
          description: Unauthorized – missing or invalid API key (Bearer token required)
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: e.g. "API key is required" or "Invalid API key"
                  code:
                    description: >-
                      Optional code e.g. MISSING_API_KEY when rate limiter runs
                      before valid auth
                    type: string
                required:
                  - message
                additionalProperties: false
              examples:
                missing:
                  summary: Missing API key
                  value:
                    message: API key is required
                invalid:
                  summary: Invalid API key
                  value:
                    message: Invalid API key
                missingFromRateLimiter:
                  summary: Missing auth when rate limiter runs first
                  value:
                    code: MISSING_API_KEY
                    message: API key is required for this endpoint
        '403':
          description: Forbidden – insufficient permissions
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
                additionalProperties: false
              example:
                message: Forbidden access
        '404':
          description: >-
            Resource not found (e.g. NOT_FOUND, RECORD_NOT_FOUND,
            EVENT_NOT_FOUND)
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: e.g. "Resource not found!" or "Record not found!"
                required:
                  - message
                additionalProperties: false
              examples:
                generic:
                  summary: Generic not found
                  value:
                    message: Resource not found!
                record:
                  summary: Record not found
                  value:
                    message: Record not found!
        '429':
          description: >-
            Rate limit exceeded. Per-account, per-action limits apply. Response
            may include RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset,
            and Retry-After headers.
          headers:
            RateLimit-Limit:
              description: Maximum requests allowed in the current window
              schema:
                type: string
            RateLimit-Remaining:
              description: Requests remaining in the current window
              schema:
                type: string
            RateLimit-Reset:
              description: ISO 8601 timestamp when the rate limit window resets
              schema:
                type: string
                format: date-time
            Retry-After:
              description: Seconds until the client can retry (when applicable)
              schema:
                type: string
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                      - RATE_LIMIT_EXCEEDED
                    description: Fixed code for rate limit responses
                  message:
                    type: string
                    description: e.g. "Too many requests, please try again later."
                  retryAfter:
                    description: Seconds until the rate limit window resets
                    type: number
                  limit:
                    description: Configured limit (when using account-based rate limiter)
                    type: object
                    properties:
                      points:
                        type: number
                      windowSec:
                        type: number
                    required:
                      - points
                      - windowSec
                    additionalProperties: false
                required:
                  - code
                  - message
                additionalProperties: false
              example:
                code: RATE_LIMIT_EXCEEDED
                message: Too many requests, please try again later.
        '500':
          description: >-
            Internal server error. Prisma and unhandled errors return a generic
            message; stack is only included in non-production.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: >-
                      Generic: "Something went wrong" for Prisma errors, or
                      error message
                  stack:
                    description: Present only in non-production
                    type: string
                required:
                  - message
                additionalProperties: false
              examples:
                generic:
                  summary: Generic (e.g. Prisma errors)
                  value:
                    message: Something went wrong
                withMessage:
                  summary: Error with message
                  value:
                    message: Database connection failed
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'API key required in Authorization header. Format: `iclosed-<token>`'

````